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