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

134 lines
4.0 KiB
Lua

if Config.HouseScript ~= 'bcs-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
formattedHouses[#formattedHouses + 1] = {
id = house.id,
citizenid = house.citizenid,
identifier = house.identifier,
uniqueHouse = house.id,
label = house.label,
tier = house.tier,
owned = house.owned,
locked = exports.bcs_housing:isLocked(house.id),
keyholders = keys,
coords = {
x = coordsData.enter.x,
y = coordsData.enter.y
}
}
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)
exports.bcs_housing:LockHome(houseData.uniqueHouse)
return {
success = true,
locked = not houseData.locked
}
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
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 result = GetPlayerHouses()
if result.success then
for _, house in ipairs(result.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
return {
success = false,
message = "Failed to add key holder"
}
end
end