Skip to content

Instantly share code, notes, and snippets.

@ImXirvin
Created August 5, 2024 00:14
Show Gist options
  • Save ImXirvin/91776f2a439ac57efdd9907f7124fe5a to your computer and use it in GitHub Desktop.
Save ImXirvin/91776f2a439ac57efdd9907f7124fe5a to your computer and use it in GitHub Desktop.
QB Doorlock ps housing edit
local function saveNewDoor(src, data, doubleDoor)
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
local configData = {}
local jobs, gangs, cids, items, doorType, identifier
if data.job then configData.authorizedJobs = { [data.job] = 0 } jobs = "['"..data.job.."'] = 0" end
if data.gang then configData.authorizedGangs = { [data.gang] = 0 } gangs = "['"..data.gang.."'] = 0" end
if data.cid then configData.authorizedCitizenIDs = { [data.cid] = true } cids = "['"..data.cid.."'] = true" end
if data.item then configData.items = { [data.item] = 1 } items = "['"..data.item.."'] = 1" end
configData.locked = data.locked
configData.pickable = data.pickable
configData.cantUnlock = data.cantunlock
configData.hideLabel = data.hidelabel
configData.distance = data.distance
configData.doorType = data.doortype
configData.doorRate = 1.0
configData.doorLabel = data.doorlabel
doorType = "'"..data.doortype.."'"
identifier = data.id or data.configfile..'-'..data.dooridentifier
if doubleDoor then
configData.doors = {
{objName = data.model[1], objYaw = data.heading[1], objCoords = data.coords[1]},
{objName = data.model[2], objYaw = data.heading[2], objCoords = data.coords[2]}
}
else
configData.objName = data.model
configData.objYaw = data.heading
configData.objCoords = data.coords
configData.fixText = false
end
local path = GetResourcePath(GetCurrentResourceName())
if data.configfile then
local tempfile, err = io.open(path:gsub('//', '/')..'/configs/'..string.gsub(data.configfile, ".lua", "")..'.lua', 'a+')
if tempfile then
tempfile:close()
path = path:gsub('//', '/')..'/configs/'..string.gsub(data.configfile, ".lua", "")..'.lua'
else
return error(err)
end
else
path = path:gsub('//', '/')..'/config.lua'
end
local file = io.open(path, 'a+')
if not file then return end
local label = ("\n\n-- %s %s %s\nConfig.DoorList['%s'] = {"):format(data.id or data.dooridentifier, Lang:t("general.created_by"), Player.PlayerData.name, identifier)
file:write(label)
for k, v in pairs(configData) do
if k == 'authorizedJobs' or k == 'authorizedGangs' or k == 'authorizedCitizenIDs' or k == 'items' then
local auth = jobs
if k == 'authorizedGangs' then
auth = gangs
elseif k == 'authorizedCitizenIDs' then
auth = cids
elseif k == 'items' then
auth = items
end
local str = ("\n %s = { %s },"):format(k, auth)
file:write(str)
elseif k == 'doors' then
local doors = {}
for i = 1, 2 do
doors[i] = (" {objName = %s, objYaw = %s, objCoords = %s}"):format(configData.doors[i].objName, configData.doors[i].objYaw, configData.doors[i].objCoords)
end
local str = ("\n %s = {\n %s,\n %s\n },"):format(k, doors[1], doors[2])
file:write(str)
elseif k == 'doorType' then
local str = ("\n %s = %s,"):format(k, doorType)
file:write(str)
elseif k == 'doorLabel' then
local str = ("\n %s = '%s',"):format(k, v)
file:write(str)
else
local str = ("\n %s = %s,"):format(k, v)
file:write(str)
end
end
file:write("\n}")
file:close()
Config.DoorList[identifier] = configData
TriggerClientEvent('qb-doorlock:client:newDoorAdded', -1, configData, identifier, src)
end
exports('getDoor', function(id)
return Config.DoorList[id]
end)
exports('updateDoor', function(id, data)
local door = Config.DoorList[id]
if not door then return end
for k,v in pairs(data) do
door[k] = v
end
TriggerClientEvent('qb-doorlock:client:newDoorAdded', -1, door, id)
end)
exports('saveNewDoor', saveNewDoor)
RegisterNetEvent('qb-doorlock:server:saveNewDoor', function(data, doubleDoor)
local src = source
if not QBCore.Functions.HasPermission(src, Config.CommandPermission) and not IsPlayerAceAllowed(src, 'command') then
if Config.Warnings then
showWarning(Lang:t("general.warn_no_permission_newdoor", {player = GetPlayerName(src), license = QBCore.Functions.GetIdentifier(src, 'license'), source = src}))
end
return
end
saveNewDoor(src, data, doubleDoor)
end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment