Created
August 5, 2024 00:14
-
-
Save ImXirvin/91776f2a439ac57efdd9907f7124fe5a to your computer and use it in GitHub Desktop.
QB Doorlock ps housing edit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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