2026-04-14 17:41:39 +02:00

154 lines
4.4 KiB
Lua

if Config.HouseScript ~= 'ps-housing' then
return
end
local function FormatHouseData(houseList)
local formattedHouses = {}
for _, house in ipairs(houseList) do
local coordsData = type(house.coords) == "string" and json.decode(house.coords) or house.coords
local keyholdersData = type(house.keyholders) == "string" and json.decode(house.keyholders) or house.keyholders
local keys = {}
if type(keyholdersData) == "table" then
for i = 1, #keyholdersData do
keys[i] = keyholdersData[i]
end
end
local enterCoords = coordsData and coordsData.enter or { x = 0, y = 0 }
formattedHouses[#formattedHouses + 1] = {
id = house.id,
citizenid = house.citizenid,
identifier = house.property_id,
uniqueHouse = house.property_id,
label = house.label,
tier = house.tier,
owned = house.owned,
locked = house.locked or false,
keyholders = keys,
coords = {
x = enterCoords.x or 0,
y = enterCoords.y or 0
}
}
end
return {
success = true,
houses = formattedHouses
}
end
function GetPlayerHouses()
local result = RPC.execute('codem-phone:home:getHouse')
if result.success then
return FormatHouseData(result.houses or {})
end
return result
end
function GetPlayerHouseKeyHolders(keyholder)
local result = RPC.execute('codem-phone:home:getKeyHolders', keyholder)
return result
end
function SetPlayerHouseLockState(houseData)
local houseID = houseData.uniqueHouse
if not houseID then
return {
success = false,
message = "Invalid house ID"
}
end
local result = RPC.execute('codem-phone:home:toggleLock', {
houseID = houseID
})
return result
end
function AddKeyHolderHouse(data)
local targetID = data.targetId
local houseID = data.house.uniqueHouse
if not targetID or not houseID then
return {
success = false,
message = "Invalid data provided"
}
end
local result = RPC.execute('codem-phone:home:addkeyholderhouse', {
targetID = targetID,
houseID = houseID
})
if result.success then
Citizen.Wait(600)
local updatedHouses = GetPlayerHouses()
if updatedHouses.success then
for _, house in ipairs(updatedHouses.houses) do
if house.uniqueHouse == houseID then
local keyholders = GetPlayerHouseKeyHolders(house.keyholders or {})
if keyholders.success then
return {
success = true,
uniqueHouse = houseID,
keyholders = keyholders.keyholders
}
end
end
end
end
end
return {
success = false,
message = "Failed to add key holder"
}
end
function RemoveKeyHolderHouse(data)
local targetCitizenId = data.targetCitizenId
local houseID = data.house.uniqueHouse
if not targetCitizenId or not houseID then
return {
success = false,
message = "Invalid data provided"
}
end
local result = RPC.execute('codem-phone:home:removekeyholderhouse', {
targetCitizenId = targetCitizenId,
houseID = houseID
})
if result.success then
Citizen.Wait(600)
local updatedHouses = GetPlayerHouses()
if updatedHouses.success then
for _, house in ipairs(updatedHouses.houses) do
if house.uniqueHouse == houseID then
local keyholders = GetPlayerHouseKeyHolders(house.keyholders or {})
if keyholders.success then
return {
success = true,
uniqueHouse = houseID,
keyholders = keyholders.keyholders
}
end
end
end
end
end
return {
success = false,
message = "Failed to remove key holder"
}
end