if Config.Data.Framework == "OLDQBCore"then QBCore = nil Citizen.CreateThread(function() while QBCore == nil do TriggerEvent('QBCore:GetObject', function(obj) QBCore = obj end) Citizen.Wait(30) -- Saniye Bekletme end end) else QBCore = exports['qb-core']:GetCoreObject() end motelacanlar = {} motelacanlar2 = {} RegisterNetEvent("oph3z-motels:server:BossMenuAcildi", function (id, acildi) if acildi then local src = source local kayitVar = false for _, value in ipairs(motelacanlar) do if value.source == src and value.Motelno == id then kayitVar = true break end end if not kayitVar then motelacanlar[#motelacanlar+1] = { source = src, Motelno = id, } end else for index, value in ipairs(motelacanlar) do if value.source == source then table.remove(motelacanlar, index) break end end end end) RegisterNetEvent("oph3z-motels:server:RentMotelAcildi", function(id, acildi) local src = source local kayitVarMotel = false for _, value in ipairs(motelacanlar2) do if value.source == src and value.Motelno == id then kayitVarMotel = true break end end if acildi then if not kayitVarMotel then motelacanlar2[#motelacanlar2+1] = { source = src, Motelno = id, } end else for index, value in ipairs(motelacanlar2) do if value.source == src then table.remove(motelacanlar2, index) break end end end end) local KisilerinVerileri = {} ScriptLoaded = false function StartScript() Wait(200) local existingMotels = {} for motelKey, motelValue in pairs(Config.Motels) do Wait(100) local info = { Name = motelValue.Name, Owner = "", CompanyMoney = motelValue.CompanyMoney, Motelid = motelValue.Motelid, TotalRooms = motelValue.TotalRooms,--silinebilir ActiveRooms = motelValue.ActiveRooms,--silinebilir DamagedRooms = motelValue.DamagedRooms, --silinebilir } local bucketCache = {} local employees = {} local history = {} local allRooms = {} if Config.Data.Database == "ghmattimysql" then motelData = exports.ghmattimysql:executeSync('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = motelKey}) else motelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = motelKey}) end if #motelData == 0 and not existingMotels[motelKey] then for roomKey, roomValue in pairs(motelValue.Rooms) do table.insert(allRooms, roomValue) end if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('INSERT INTO `oph3z_motel` (id, info, rooms, employees, names, history, bucketcache) VALUES (@id, @info, @rooms, @employees, @names, @history, @bucketcache)', { ["@id"] = motelKey, ["@info"] = json.encode(info), ["@rooms"] = json.encode(allRooms), ["@employees"] = json.encode(employees), ["@bucketcache"] = json.encode(bucketCache), ["@history"] = json.encode(history), ["@names"] = json.encode(info.Name) }) else MySQL.Async.execute('INSERT INTO `oph3z_motel` (id, info, rooms, employees, names, history, bucketcache) VALUES (@id, @info, @rooms, @employees, @names, @history, @bucketcache)', { ["@id"] = motelKey, ["@info"] = json.encode(info), ["@rooms"] = json.encode(allRooms), ["@employees"] = json.encode(employees), ["@bucketcache"] = json.encode(bucketCache), ["@history"] = json.encode(history), ["@names"] = json.encode(info.Name) }) end existingMotels[motelKey] = true end LoadData() end end function RequestNewData() local source = source LoadData() TriggerClientEvent("oph3z-motels:Update", source, Config.Motels, ScriptLoaded) end RegisterNetEvent("oph3z-motels:ReqData", RequestNewData) function LoadData() if Config.Data.Database == "ghmattimysql" then MotelData = exports.ghmattimysql:execute('SELECT * FROM `oph3z_motel`') else MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel`') end for k, v in ipairs(MotelData) do local info = json.decode(v.info) local rooms = json.decode(v.rooms) Config.Motels[k].Owner = info.Owner Config.Motels[k].Name = info.Name Config.Motels[k].CompanyMoney = info.CompanyMoney Config.Motels[k].TotalRooms = info.TotalRooms Config.Motels[k].ActiveRooms = info.ActiveRooms Config.Motels[k].DamagedRooms = info.DamagedRooms Config.Motels[k].Employes = json.decode(v.employees) Config.Motels[k].Rooms = json.decode(v.rooms) Config.Motels[k].History = json.decode(v.history) end ScriptLoaded = true end Citizen.CreateThread(StartScript) QBCore.Functions.CreateCallback("oph3z-motels:server:RentRoom", function (source, cb, data) local current_time = os.time() local hours_to_add = data.time local future_time = current_time + (hours_to_add * 3600) local future_hour = tonumber(os.date("%H", future_time)) if future_hour >= 24 then future_time = future_time + (24 * 3600) end local NewDate = os.date("%Y-%m-%d %H:%M:%S", future_time) local id = data.motelid local Player = QBCore.Functions.GetPlayer(source) para = math.ceil(data.price) if Player then if Player.Functions.GetMoney(Config.Data.Moneytype) >= tonumber(para) then if Config.Data.Database == "ghmattimysql" then MotelData = exports.ghmattimysql:executeSync('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) else MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) end if MotelData and #MotelData > 0 then local v = MotelData[1] local rooms = json.decode(v.rooms) local Info = json.decode(v.info) local room = rooms[tonumber(data.motelno)] local ownedRooms = 0 for _, r in pairs(rooms) do if r.Owner.RoomsOwner == Player.PlayerData.citizenid then ownedRooms = ownedRooms + 1 end end if ownedRooms >= Config.Data.NoOwnedRentMotelAmount then Config.ServerNotify(Player.PlayerData.source, Config.Langue["MaxMotelRoomLimit"](Config.Data.NoOwnedRentMotelAmount)[1], Config.Langue["MaxMotelRoomLimit"](Config.Data.NoOwnedRentMotelAmount)[2], Config.Langue["MaxMotelRoomLimit"](Config.Data.NoOwnedRentMotelAmount)[3]) cb(false) return end Info.CompanyMoney = Info.CompanyMoney + tonumber(para) room.Rent = true room.Owner.RoomsOwner = Player.PlayerData.citizenid room.Owner.Name = Player.PlayerData.charinfo.firstname room.Owner.Lastname = Player.PlayerData.charinfo.lastname room.Owner.PhoneNumber = Player.PlayerData.charinfo.phone room.Owner.MyMoney = para room.Owner.Date = tostring(NewDate) room.Owner.Friends = {} Config.Motels[id].Rooms = rooms Config.Motels[id].CompanyMoney = Info.CompanyMoney if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(Info), }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(Info), }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) local mnewveri = motelacanlar2 for i = 1, #mnewveri, 1 do local motel = mnewveri[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:RentMotel", source, motelno) end end cb(true) end Player.Functions.RemoveMoney(Config.Data.Moneytype, tonumber(para)) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["NotEnoughMoney"][1], Config.Langue["NotEnoughMoney"][2], Config.Langue["NotEnoughMoney"][3]) return end end end) RegisterNetEvent("oph3z-motels:server:UpHours", function(data) local id = tonumber(data.motelno) local roomno = tonumber(data.odano) local ekhours = tonumber(data.time) local price = tonumber(data.price) local src = source if Config.Data.Database == "ghmattimysql" then MotelData = exports.ghmattimysql:executeSync('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) else MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) end local v = MotelData[1] local rooms = json.decode(v.rooms) local Info = json.decode(v.info) local room = rooms[tonumber(roomno)] local Player = QBCore.Functions.GetPlayer(src) local SonMaasTarihi = room.Owner.Date local hours_to_add = ekhours local future_time1 = os.time{year=tonumber(SonMaasTarihi:sub(1,4)), month=tonumber(SonMaasTarihi:sub(6,7)), day=tonumber(SonMaasTarihi:sub(9,10)), hour=tonumber(SonMaasTarihi:sub(12,13)), min=tonumber(SonMaasTarihi:sub(15,16)), sec=tonumber(SonMaasTarihi:sub(18,19))} future_time1 = future_time1 + (hours_to_add * 3600) local future_hour = tonumber(os.date("%H", future_time1)) if future_hour >= 24 then future_time1 = future_time1 + (24 * 3600) end kesilecekprice = tonumber(price) / (1 + tonumber(#room.Owner.Friends)) local YeniRentTime = os.date("%Y-%m-%d %H:%M:%S", future_time1) if Player.Functions.GetMoney(Config.Data.Moneytype) >= tonumber(price) then Info.CompanyMoney = Info.CompanyMoney + tonumber(data.price) room.Owner.Date = tostring(YeniRentTime) local totalFriendCount = #room.Owner.Friends if #room.Owner.Friends == 0 then Player.Functions.RemoveMoney(Config.Data.Moneytype, tonumber(kesilecekprice)) else totalFriendCount = totalFriendCount+1 local friendCut = tonumber(price) / tonumber(totalFriendCount) for _, friend in pairs(room.Owner.Friends) do local friendPlayer = QBCore.Functions.GetPlayerByCitizenId(friend.Citizenid) if friendPlayer.Offline == false then friendPlayer.Functions.RemoveMoney(Config.Data.Moneytype, tonumber(friendCut)) else local PlayerData = QBCore.Player.GetOfflinePlayer(friend.Citizenid) if PlayerData then PlayerData.money = PlayerData.PlayerData.money PlayerData.PlayerData.money.bank = PlayerData.PlayerData.money.bank - tonumber(friendCut) QBCore.Player.SaveOffline(PlayerData.PlayerData) end end Player.Functions.RemoveMoney(Config.Data.Moneytype, friendCut) end end else Config.ServerNotify(Player.PlayerData.source, Config.Langue["NotEnoughMoney"][1], Config.Langue["NotEnoughMoney"][2], Config.Langue["NotEnoughMoney"][3]) return end Config.Motels[id].Rooms = rooms Config.Motels[id].CompanyMoney = Info.CompanyMoney if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(Info), }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(Info), }) end Config.ServerNotify(src, Config.Langue["RoomTimeUp"][1], Config.Langue["RoomTimeUp"][2], Config.Langue["RoomTimeUp"][3]) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) TriggerClientEvent("oph3z-motels:OpenManagement", src) end) RegisterNetEvent("oph3z-motels:server:UpgradeRoom", function(data) print(json.encode(data)) local id = tonumber(data.motelid) local motelroom = tonumber(data.motelroom) local motelprice = tonumber(string.match(data.motelprice, "%d+")) local newmotelprice = tonumber(motelprice * 1000) local src = source local Player = QBCore.Functions.GetPlayer(src) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) if MotelData and #MotelData > 0 then local v = MotelData[1] local rooms = json.decode(v.rooms) local room = rooms[motelroom] if InfoData.CompanyMoney >= newmotelprice then room.theme = data.motelstylename if room.type == "Squatter" then if data.isupgraded then room.type = "Middle" local roomType = "Middle" Config.Motels[id].Rooms = rooms Config.ServerNotify(src, Config.Langue["UpgradeRoom"](motelroom, roomType)[1], Config.Langue["UpgradeRoom"](motelroom, roomType)[2], Config.Langue["UpgradeRoom"](motelroom, roomType)[3]) elseif data.isupgradedvip then room.type = "VIP" local roomType = "VIP" Config.Motels[id].Rooms = rooms Config.ServerNotify(src, Config.Langue["UpgradeRoom"](motelroom, roomType)[1], Config.Langue["UpgradeRoom"](motelroom, roomType)[2], Config.Langue["UpgradeRoom"](motelroom, roomType)[3]) end elseif room.type == "Middle" then if data.isupgradedvip then local roomType = "VIP" Config.ServerNotify(src, Config.Langue["UpgradeRoom"](motelroom, roomType)[1], Config.Langue["UpgradeRoom"](motelroom, roomType)[2], Config.Langue["UpgradeRoom"](motelroom, roomType)[3]) room.type = "VIP" Config.Motels[id].Rooms = rooms end end if data.motelstylename ~= nil then for index, value in ipairs(room.StyleMenu) do if value.type == "style" then if value.name == data.motelstylename then value.durum = true else value.durum = false end end end end if data.motelstyleoynadi then if data.motelstylenameextra ~= "" and data.motelstylenameextra ~= nil then for _, style in ipairs(room.StyleMenu) do if style.type == "extra" then style.durum = false -- Varsayılan olarak durumu false olarak ayarla for i = 1, #data.motelstylenameextra do local veri = data.motelstylenameextra[i] if style.name == veri then style.durum = true -- Eşleşme varsa durumu true olarak ayarla end end end end elseif data.motelstylenameextra == "[]" then for _, style in ipairs(room.StyleMenu) do if style.type == "extra" then style.durum = false end end end end Config.Motels[id].Rooms = rooms Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney - tonumber(newmotelprice) InfoData.CompanyMoney = Config.Motels[id].CompanyMoney if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(Info), }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(Info), }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end else Config.ServerNotify(src, Config.Langue["NotEnoughMoney"][1], Config.Langue["NotEnoughMoney"][2], Config.Langue["NotEnoughMoney"][3]) return end end end) RegisterNetEvent("oph3z-motels:server:AcceptRequste", function(data) local id = tonumber(data.motelid) local src = source local price = tonumber(data.price) local newprice = price * (Config.Data.AcceptYuzdelik / 100) local motelno = tonumber(data.roomno) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) if MotelData and #MotelData > 0 then if InfoData.CompanyMoney >= price then local v = MotelData[1] local rooms = json.decode(v.rooms) local room = rooms[motelno] local motelrequest = json.decode(v.request) room.type = data.roomtype room.theme = data.roomtheme if data.roomextra ~= nil then local roomExtras = {} if type(data.roomextra) == "string" then roomExtras = splitString(data.roomextra, ",") elseif type(data.roomextra) == "table" then roomExtras = data.roomextra end room.strip = false room.booze = false if roomExtras ~= nil and #roomExtras > 0 then for index, value in ipairs(roomExtras) do if value == "strip" then room.strip = true elseif value == "booze" then room.booze = true end end end if data.motelstyleoynadi then if data.roomextra and data.roomextra ~= "" then for _, style in ipairs(room.StyleMenu) do if style.type == "extra" then local extraFound = false for veri in string.gmatch(data.roomextra, "([^,]+)") do veri = veri:match("^%s*(.-)%s*$") if style.name == veri then extraFound = true break end end style.durum = extraFound end end end end Config.Motels[id].Rooms = rooms Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney + tonumber(newprice) InfoData.CompanyMoney = Config.Motels[id].CompanyMoney motelrequest[motelno] = nil if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET `request` = @request, `info` = @info, `rooms` = @rooms WHERE `id` = @id', { ["@id"] = id, ["@request"] = json.encode(motelrequest), ["@info"] = json.encode(InfoData), ["@rooms"] = json.encode(Config.Motels[id].Rooms), }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET `request` = @request, `info` = @info, `rooms` = @rooms WHERE `id` = @id', { ["@id"] = id, ["@request"] = json.encode(motelrequest), ["@info"] = json.encode(InfoData), ["@rooms"] = json.encode(Config.Motels[id].Rooms), }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end else Config.ServerNotify(src, Config.Langue["NotEnoughMoney"][1], Config.Langue["NotEnoughMoney"][2], Config.Langue["NotEnoughMoney"][3]) end end end) RegisterNetEvent("oph3z-motels:server:CancelRequest", function(data) local id = tonumber(data.motelid) local src = source local motelno = tonumber(data.roomno) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) if MotelData and #MotelData > 0 then local v = MotelData[1] local rooms = json.decode(v.rooms) local room = rooms[motelno] local motelrequest = json.decode(v.request) motelrequest[motelno] = nil local Player = QBCore.Functions.GetPlayerByCitizenId(data.owner) if Player then Player.Functions.AddMoney(Config.Data.Moneytype, tonumber(data.price)) else local citizenid = data.owner local PlayerData = QBCore.Player.GetOfflinePlayer(citizenid) if PlayerData then PlayerData.money = PlayerData.PlayerData.money PlayerData.PlayerData.money.bank = PlayerData.PlayerData.money.bank + tonumber(data.price) QBCore.Player.SaveOffline(PlayerData.PlayerData) end end if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET `request` = @request WHERE `id` = @id', { ["@id"] = id, ["@request"] = json.encode(motelrequest), }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET `request` = @request WHERE `id` = @id', { ["@id"] = id, ["@request"] = json.encode(motelrequest), }) end Config.Motels[id].Rooms = rooms TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end Config.ServerNotify(src, Config.Langue["CancelRequest"](motelno)[1], Config.Langue["CancelRequest"](motelno)[2], Config.Langue["CancelRequest"](motelno)[3]) end end) function splitString(inputString, separator) local result = {} local separatorPattern = string.format("([^%s]+)", separator) inputString:gsub(separatorPattern, function(value) table.insert(result, value) end) return result end RegisterNetEvent("oph3z-motels:server:UpgradeRoomRequest", function(data) local id = tonumber(data.motelid) local motelroom = tonumber(data.motelroom) local motelprice = tonumber(string.match(data.motelprice, "%d+")) local newmotelprice = motelprice * 1000 local src = source local Player = QBCore.Functions.GetPlayer(src) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then if Player.Functions.GetMoney(Config.Data.Moneytype) >= tonumber(newmotelprice) then Player.Functions.RemoveMoney(Config.Data.Moneytype, tonumber(newmotelprice)) local v = MotelData[1] local rooms = json.decode(v.rooms) local room = rooms[motelroom] local motelrequest = json.decode(v.request) if motelrequest[motelroom] ~= nil then motelrequest[motelroom] = nil end if room.type == "Squatter" then if data.isupgraded then asd = "Middle" -- Config.Motels[id].Rooms = rooms local roomType = "Middle" Config.ServerNotify(src, Config.Langue["UpgradeRoomRequest"](motelroom, roomType)[1], Config.Langue["UpgradeRoom"](motelroom, roomType)[2], Config.Langue["UpgradeRoom"](motelroom, roomType)[3]) elseif data.isupgradedvip then asd = "VIP" -- Config.Motels[id].Rooms = rooms local roomType = "VIP" Config.ServerNotify(src, Config.Langue["UpgradeRoomRequest"](motelroom, roomType)[1], Config.Langue["UpgradeRoom"](motelroom, roomType)[2], Config.Langue["UpgradeRoom"](motelroom, roomType)[3]) end elseif room.type == "Middle" then if data.isupgradedvip then asd = "VIP" -- Config.Motels[id].Rooms = rooms local roomType = "VIP" Config.ServerNotify(src, Config.Langue["UpgradeRoomRequest"](motelroom, roomType)[1], Config.Langue["UpgradeRoom"](motelroom, roomType)[2], Config.Langue["UpgradeRoom"](motelroom, roomType)[3]) end end if data.isupgraded == nil then asd = room.type end room.fixmoney = newmotelprice if data.motelstylename ~= nil then for index, value in ipairs(room.StyleMenu) do if value.type == "style" then if value.name == data.motelstylename then value.durum = true room.theme = value.name else value.durum = false end end end end if data.motelstyleoynadi then if data.motelstylenameextra ~= nil and #data.motelstylenameextra > 0 then for _, style in ipairs(room.StyleMenu) do if style.type == "extra" then for i = 1, #data.motelstylenameextra do local veri = data.motelstylenameextra[i] if style.name == veri then if style.durum == false then style.durum = true end else style.durum = false end end end end end end local roomveri = { motelno = motelroom, theme = data.motelstylename, extra = data.motelstylenameextra, motelstyleoynadi = data.motelstyleoynadi, type = asd, roomoowner = room.Owner.RoomsOwner, roomprice = room.fixmoney, } motelrequest[motelroom] = roomveri if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET `request` = @request WHERE `id` = @id', { ["@id"] = id, ["@request"] = json.encode(motelrequest), }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET `request` = @request WHERE `id` = @id', { ["@id"] = id, ["@request"] = json.encode(motelrequest), }) end else Config.ServerNotify(src, Config.Langue["NotEnoughMoney"][1], Config.Langue["NotEnoughMoney"][2], Config.Langue["NotEnoughMoney"][3]) end end end) function tableContainsValue(tbl, value) for _, v in ipairs(tbl) do if v == value then return true end end return false end Citizen.CreateThread(function() while true do local current_time = os.time() local NewDate = os.date("%Y-%m-%d %H:%M:%S", current_time) for k,v in pairs(Config.Motels) do for i, room in ipairs(v.Rooms) do date = room.Owner.Date if date ~= "" then if tostring(date) <= tostring(NewDate) then room.Rent = false room.Owner.RoomsOwner = "" room.Owner.Name = "" room.Owner.Lastname = "" room.Owner.PhoneNumber = "" room.Owner.MyMoney = 0 room.Owner.Date = "" room.Owner.Friends = {} Config.Motels[k].Rooms[i] = room if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET `rooms` = @rooms WHERE `id` = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[k].Rooms) }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET `rooms` = @rooms WHERE `id` = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[k].Rooms) }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) end end end end Wait(1000) end end) Citizen.CreateThread(function() while true do local current_time = os.time() local makinesaati = os.date("%Y-%m-%d %H:%M:%S", current_time) if ScriptLoaded then for k, v in pairs(Config.Motels) do for i, Employes in ipairs(v.Employes) do local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = k}) local InfoData = json.decode(MotelData[1].info) local KasaPara = InfoData.CompanyMoney local PlayerOwner = InfoData.Owner local SonMaasTarihi = Employes.Date local hours_to_add = Config.Data.EmployesSalaryTime local future_time1 = os.time{year=tonumber(SonMaasTarihi:sub(1,4)), month=tonumber(SonMaasTarihi:sub(6,7)), day=tonumber(SonMaasTarihi:sub(9,10)), hour=tonumber(SonMaasTarihi:sub(12,13)), min=tonumber(SonMaasTarihi:sub(15,16)), sec=tonumber(SonMaasTarihi:sub(18,19))} future_time1 = future_time1 + (hours_to_add * 3600) local future_hour = tonumber(os.date("%H", future_time1)) if future_hour >= 24 then future_time1 = future_time1 + (24 * 3600) end local SonMaasTarihi1 = os.date("%Y-%m-%d %H:%M:%S", future_time1) if SonMaasTarihi1 ~= "" and tostring(SonMaasTarihi1) <= tostring(makinesaati) then if KasaPara >= tonumber(Employes.Salary) then local Player = QBCore.Functions.GetPlayerByCitizenId(Employes.Citizenid) if Player then SendMail(Player.PlayerData.source, InfoData.Name.."", "Maaş Ödemesi", "Maaşınız ödendi. İyi günler dileriz.") Config.ServerNotify(Player.PlayerData.source, Config.Langue["EmployesSalary"](tonumber(Employes.Salary))[1], Config.Langue["EmployesSalary"](tonumber(Employes.Salary))[2], Config.Langue["EmployesSalary"](tonumber(Employes.Salary))[3]) Player.Functions.AddMoney(Config.Data.Moneytype, tonumber(Employes.Salary)) else if Config.Data.EmployesOfflinePayment then local citizenid = Employes.Citizenid local PlayerData = QBCore.Player.GetOfflinePlayer(citizenid) if PlayerData then PlayerData.money = PlayerData.PlayerData.money PlayerData.PlayerData.money.bank = PlayerData.PlayerData.money.bank + tonumber(Employes.Salary) QBCore.Player.SaveOffline(PlayerData.PlayerData) end end end Employes.Date = tostring(makinesaati) Config.Motels[k].Employes[i] = Employes InfoData.CompanyMoney = InfoData.CompanyMoney - tonumber(Employes.Salary) if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET employees = @employees, info = @info WHERE id = @id', { ["@id"] = k, ["@employees"] = json.encode(Config.Motels[k].Employes), ["@info"] = json.encode(InfoData), }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET employees = @employees, info = @info WHERE id = @id', { ["@id"] = k, ["@employees"] = json.encode(Config.Motels[k].Employes), ["@info"] = json.encode(InfoData), }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) else local Player = QBCore.Functions.GetPlayerByCitizenId(Employes.Citizenid) local Owner = QBCore.Functions.GetPlayerByCitizenId(PlayerOwner) SendMail(Player.PlayerData.source, InfoData.Name.."", "Maaş Ödemesi", "Maaşınız ödenemedi. Kasa yetersiz..") Config.ServerNotify(Player.PlayerData.source, Config.Langue["NotEnoughMoneySalary"][1], Config.Langue["NotEnoughMoneySalary"][2], Config.Langue["NotEnoughMoneySalary"][3]) if Owner then Config.ServerNotify(Owner.PlayerData.source, Config.Langue["NotEnoughMoneySalaryOwner"](InfoData.Name)[1], Config.Langue["NotEnoughMoneySalaryOwner"](InfoData.Name)[2], Config.Langue["NotEnoughMoneySalaryOwner"](InfoData.Name)[3]) SendMail(Owner.PlayerData.source, InfoData.Name.."", "İşciler Ayaklanıyor", "Başta Erkan Baş ve Osman Ağa ile işciler ayaklanıyor Kasaya para eklemeliyiz. Şunu diyorlar AYAKLANIN KARDEŞLERİM HEPİMİZİ BİRDEN ASAMAZLAR") end Wait(10000) end end end end end Wait(1000) end end) RegisterNetEvent("oph3z-motels:server:KickCustomer", function (data) local source = source id = data.motelno MotelNumber = tonumber(data.motelroomnumber) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local rooms = json.decode(MotelData[1].rooms) local room = rooms[MotelNumber] room.Rent = false room.Owner.RoomsOwner = "" room.Owner.Name = "" room.Owner.Lastname = "" room.Owner.PhoneNumber = "" room.Owner.MyMoney = 0 room.Owner.Date = "" room.Owner.Friends = {} Config.Motels[id].Rooms = rooms if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET rooms = @rooms WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms) }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms) }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end end) RegisterNetEvent("oph3z-motels:server:KickEmployee", function (data) local source = source id = data.motelno EmployeName = tostring(data.employeName) local Player = QBCore.Functions.GetPlayer(source) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local info = json.decode(MotelData[1].info) local employes = json.decode(MotelData[1].employees) if info.Owner ~= Player.PlayerData.citizenid then return end for k,v in pairs(employes) do if v.Name == EmployeName then table.remove(employes, k) end end Config.Motels[id].Employes = employes if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET employees = @employees WHERE id = @id', { ["@id"] = id, ["@employees"] = json.encode(Config.Motels[id].Employes) }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET employees = @employees WHERE id = @id', { ["@id"] = id, ["@employees"] = json.encode(Config.Motels[id].Employes) }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end end) RegisterNetEvent("oph3z-motels:server:RankUp", function (data) local source = source id = data.motelno EmployeName = tostring(data.employeName) local Player = QBCore.Functions.GetPlayer(source) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local info = json.decode(MotelData[1].info) local employes = json.decode(MotelData[1].employees) if info.Owner ~= Player.PlayerData.citizenid then return end for k,v in pairs(employes) do if v.Name == EmployeName then if employes[k].Rank < 2 then employes[k].Rank = employes[k].Rank + 1 Config.ServerNotify(Player.PlayerData.source, Config.Langue["RankUpSuccess"](EmployeName)[1], Config.Langue["RankUpSuccess"](EmployeName)[2], Config.Langue["RankUpSuccess"](EmployeName)[3]) end end end Config.Motels[id].Employes = employes if Config.Data.Database == "ghmattimysql" then exports.ghmattimysql:execute('UPDATE `oph3z_motel` SET employees = @employees WHERE id = @id', { ["@id"] = id, ["@employees"] = json.encode(Config.Motels[id].Employes) }) else MySQL.Async.execute('UPDATE `oph3z_motel` SET employees = @employees WHERE id = @id', { ["@id"] = id, ["@employees"] = json.encode(Config.Motels[id].Employes) }) end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end end) RegisterNetEvent("oph3z-motels:server:BuyMotel", function(MotelData) local Player = QBCore.Functions.GetPlayer(source) local id = MotelData.motel local price = MotelData.price local src = source if Player then local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) local ownedMotelCount = 0 for _, motel in pairs(Config.Motels) do if motel.Owner == Player.PlayerData.citizenid then ownedMotelCount = ownedMotelCount + 1 end end if InfoData.Owner == "" then if ownedMotelCount < Config.Data.MaxMotelBossAmount then if Config.Data.Moneytype == "bank" then if Player.Functions.GetMoney("bank") >= price then Config.Motels[id].Owner = Player.PlayerData.citizenid InfoData.Owner = Player.PlayerData.citizenid Player.Functions.RemoveMoney("bank", price, "motel-bought") MySQL.Async.execute('UPDATE `oph3z_motel` SET info = @info WHERE id = @id', {["@info"] = json.encode(InfoData), ["@id"] = id}) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["InsufficientBankFunds"][1], Config.Langue["InsufficientBankFunds"][2], Config.Langue["InsufficientBankFunds"][3]) end else if Player.Functions.GetMoney("cash") >= price then InfoData.Owner = Player.PlayerData.citizenid Config.Motels[id].Owner = Player.PlayerData.citizenid MySQL.Async.execute('UPDATE `oph3z_motel` SET info = @info WHERE id = @id', {["@info"] = json.encode(InfoData), ["@id"] = id}) Player.Functions.RemoveMoney("cash", price, "motel-bought") else Config.ServerNotify(Player.PlayerData.source, Config.Langue["InsufficientCashFunds"][1], Config.Langue["InsufficientCashFunds"][2], Config.Langue["InsufficientCashFunds"][3]) end end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) SendMail(src, "Motel İşletmesi", "Motel Satın Alımı", "Motel satın aldınız. Motel numaranız: "..id.." Motel ismi: "..InfoData.Name.." Motel sahibi: "..Player.PlayerData.charinfo.firstname.." "..Player.PlayerData.charinfo.lastname.."") Config.ServerNotify(Player.PlayerData.source, Config.Langue["PurchaseMotelSuccess"](InfoData.Name)[1], Config.Langue["PurchaseMotelSuccess"](InfoData.Name)[2], Config.Langue["PurchaseMotelSuccess"](InfoData.Name)[3]) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["MaxMotelBuznizLimit"](Config.Data.MaxMotelBossAmount)[1], Config.Langue["MaxMotelBuznizLimit"](Config.Data.MaxMotelBossAmount)[2], Config.Langue["MaxMotelBuznizLimit"](Config.Data.MaxMotelBossAmount)[3]) end end end end) function SendMail(source ,sender, subject,messege,button) TriggerClientEvent("oph3z-motels:client:SendMail", source, sender, subject,messege,button) end RegisterNetEvent("oph3z-motels:server:SaveDashboard", function (data) local id = data.motelid local Player = QBCore.Functions.GetPlayer(source) if Player then local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) Config.Motels[id].Name = data.MotelName InfoData.Name = data.MotelName MySQL.Async.execute('UPDATE `oph3z_motel` SET info = @info WHERE id = @id', {["@info"] = json.encode(InfoData), ["@id"] = id}) MySQL.Async.execute('UPDATE `oph3z_motel` SET names = @names WHERE id = @id', {["@names"] = json.encode(data.MotelName), ["@id"] = id}) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) TriggerClientEvent("oph3z-motels:client:MotelNameBlip", -1) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end Config.ServerNotify(Player.PlayerData.source, Config.Langue["SaveDashboard"](data.MotelName)[1], Config.Langue["SaveDashboard"](data.MotelName)[2], Config.Langue["SaveDashboard"](data.MotelName)[3]) end end) RegisterNetEvent("oph3z-motels:server:SellMotel", function (data) local id = tonumber(data.motelid) src = source local Player = QBCore.Functions.GetPlayer(source) if Player then local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) local Price = InfoData.CompanyMoney if Price == 0 then Price = Config.Data.SellPriceDeafult else print("Price", Price) Tax = math.ceil(Price * Config.Data.SellMotelTax) print("Tax", Tax) AddPrice = Price - Tax print("AddPrice", AddPrice) end Player.Functions.AddMoney(Config.Data.Moneytype, AddPrice, "motel-sell") InfoData.CompanyMoney = Price - AddPrice Config.Motels[id].CompanyMoney = Price - AddPrice Config.Motels[id].Owner = "" InfoData.Owner = "" SendMail(src, "Motel Business", "Motel Sale", "Motel Sold Without Tax Money: " ..Price.. " Tax: "..Tax.."".. " Total Money: "..AddPrice.."", "Sale") Config.ServerNotify(Player.PlayerData.source, Config.Langue["MotelSellSuccess"](InfoData.Name,Price,Tax,AddPrice)[1], Config.Langue["MotelSellSuccess"](InfoData.Name,Price,Tax,AddPrice)[2], Config.Langue["MotelSellSuccess"](InfoData.Name,Price,Tax,AddPrice)[3]) MySQL.Async.execute('UPDATE `oph3z_motel` SET info = @info WHERE id = @id', {["@info"] = json.encode(InfoData), ["@id"] = id}) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) end end) RegisterNetEvent("oph3z-motels:server:MotelTransferRequest", function(data) source = source local Player = QBCore.Functions.GetPlayer(source) local SenderName = { firstname = Player.PlayerData.charinfo.firstname, lastname = Player.PlayerData.charinfo.lastname, source = source } TriggerClientEvent("oph3z-motels:client:TransferMotelRequest", data.playerid, data, SenderName) end) RegisterNetEvent("oph3z-motels:server:TransferMotel", function (data) local id = tonumber(data.motelid) local PlayerNewOwner = tonumber(data.newid) local Player = QBCore.Functions.GetPlayer(tonumber(data.exowner)) local Player2 = QBCore.Functions.GetPlayer(PlayerNewOwner) if PlayerNewOwner ~= nil and PlayerNewOwner ~= 0 then if Player then local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) if Player2 then Config.Motels[id].Owner = Player2.PlayerData.citizenid InfoData.Owner = Player2.PlayerData.citizenid MySQL.Async.execute('UPDATE `oph3z_motel` SET info = @info WHERE id = @id', {["@info"] = json.encode(InfoData), ["@id"] = id}) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) SendMail(Player2.PlayerData.source, "Motel İşletmesi", "Motel Transferi", "Motel size transfer edildi. Motel numaranız: "..id.." Motel ismi: "..InfoData.Name.." Motel sahibi: "..Player2.PlayerData.charinfo.firstname.." "..Player2.PlayerData.charinfo.lastname.."", "Transfer") Config.ServerNotify(Player.PlayerData.source, Config.Langue["MotelTransferSuccess"](InfoData.Name,Player2.PlayerData.charinfo.firstname,Player2.PlayerData.charinfo.lastname)[1], Config.Langue["MotelTransferSuccess"](InfoData.Name,Player2.PlayerData.charinfo.firstname,Player2.PlayerData.charinfo.lastname)[2], Config.Langue["MotelTransferSuccess"](InfoData.Name,Player2.PlayerData.charinfo.firstname,Player2.PlayerData.charinfo.lastname)[3]) Config.ServerNotify(Player2.PlayerData.source, Config.Langue["MotelTransferSuccess2"](InfoData.Name)[1], Config.Langue["MotelTransferSuccess2"](InfoData.Name)[2], Config.Langue["MotelTransferSuccess2"](InfoData.Name)[3]) end end else Config.ServerNotify(Player.PlayerData.source, Config.Langue["PlayerNotFound"][1], Config.Langue["PlayerNotFound"][2], Config.Langue["PlayerNotFound"][3]) end end) RegisterNetEvent("oph3z-motels:server:CompanyMoney", function (data) local source = source local id = data.motelno local Player = QBCore.Functions.GetPlayer(source) if tonumber(data.Money) == 0 or tonumber(data.Money) == nil then return else local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) if data.Parayatirma then if Player.Functions.GetMoney(Config.Data.Moneytype) >= tonumber(data.Money) then Player.Functions.RemoveMoney(Config.Data.Moneytype, tonumber(data.Money)) AddHistory(id, "deposit", tonumber(data.Money)) Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney + tonumber(data.Money) InfoData.CompanyMoney = Config.Motels[id].CompanyMoney MySQL.Async.execute('UPDATE `oph3z_motel` SET info = @info WHERE id = @id', {["@info"] = json.encode(InfoData), ["@id"] = id}) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end else if Config.Data.Moneytype == "bank" then Config.ServerNotify(Player.PlayerData.source, Config.Langue["InsufficientBankFunds"][1], Config.Langue["InsufficientBankFunds"][2], Config.Langue["InsufficientBankFunds"][3]) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["InsufficientCashFunds"][1], Config.Langue["InsufficientCashFunds"][2], Config.Langue["InsufficientCashFunds"][3]) end end else if tonumber(data.Money) > InfoData.CompanyMoney then Config.ServerNotify(Player.PlayerData.source, Config.Langue["NotEnoughMoney"][1], Config.Langue["NotEnoughMoney"][2], Config.Langue["NotEnoughMoney"][3]) else AddHistory(id, "withdraw", tonumber(data.Money)) Player.Functions.AddMoney(Config.Data.Moneytype, tonumber(data.Money)) Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney - tonumber(data.Money) InfoData.CompanyMoney = Config.Motels[id].CompanyMoney MySQL.Async.execute('UPDATE `oph3z_motel` SET info = @info WHERE id = @id', {["@info"] = json.encode(InfoData), ["@id"] = id}) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end end end end) RegisterNetEvent("oph3z-motels:server:NearbyAccept", function(data) local patronid = tonumber(data.senderid) local id = tonumber(data.motelid) local current_time = os.time() local hours_to_add = data.time local future_time = current_time + (hours_to_add * 3600) local future_hour = tonumber(os.date("%H", future_time)) if future_hour >= 24 then future_time = future_time + (24 * 3600) end local PatronPlayer = QBCore.Functions.GetPlayer(patronid) local NewDate = os.date("%Y-%m-%d %H:%M:%S", future_time) local Player = QBCore.Functions.GetPlayer(source) if Player then local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if Player.Functions.GetMoney(Config.Data.Moneytype) >= tonumber(data.price) then if MotelData and #MotelData > 0 then local v = MotelData[1] local rooms = json.decode(v.rooms) local InfoData = json.decode(MotelData[1].info) local room = rooms[tonumber(data.room)] local ownedRooms = 0 for _, r in pairs(rooms) do if r.Rent and r.Owner.RoomsOwner == Player.PlayerData.citizenid then ownedRooms = ownedRooms + 1 end end if ownedRooms < Config.Data.OwneRentMotelAmount then room.Rent = true room.Owner.RoomsOwner = Player.PlayerData.citizenid room.Owner.Name = Player.PlayerData.charinfo.firstname room.Owner.Lastname = Player.PlayerData.charinfo.lastname room.Owner.PhoneNumber = Player.PlayerData.charinfo.phone room.Owner.MyMoney = data.price room.Owner.Date = tostring(NewDate) room.Owner.Friends = {} Config.Motels[id].Rooms = rooms if Config.Data.EmployesTax then if InfoData.Owner == PatronPlayer.PlayerData.citizenid then Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney + tonumber(data.price) InfoData.CompanyMoney = Config.Motels[id].CompanyMoney else local tax = tonumber(data.price) * Config.Data.EmployesTaxAmount / 100 Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney + tonumber(data.price) - tax InfoData.CompanyMoney = Config.Motels[id].CompanyMoney PatronPlayer.Functions.AddMoney(Config.Data.Moneytype, tonumber(tax), "motel-rent") end else Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney + tonumber(data.price) InfoData.CompanyMoney = Config.Motels[id].CompanyMoney end MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(InfoData), }) Player.Functions.RemoveMoney(Config.Data.Moneytype, tonumber(data.price), "motel-rent") TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end Config.ServerNotify(Player.PlayerData.source, Config.Langue["AcceptRoomOffer"](InfoData.Name,tonumber(data.room),tonumber(data.price))[1], Config.Langue["AcceptRoomOffer"](InfoData.Name,tonumber(data.room),tonumber(data.price))[2], Config.Langue["AcceptRoomOffer"](InfoData.Name,tonumber(data.room),tonumber(data.price))[3]) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["MaxMotelRoomLimit"](Config.Data.OwneRentMotelAmount)[1], Config.Langue["MaxMotelRoomLimit"](Config.Data.OwneRentMotelAmount)[2], Config.Langue["MaxMotelRoomLimit"](Config.Data.OwneRentMotelAmount)[3]) end end else if Config.Data.Moneytype == "bank" then Config.ServerNotify(Player.PlayerData.source, Config.Langue["InsufficientBankFunds"][1], Config.Langue["InsufficientBankFunds"][2], Config.Langue["InsufficientBankFunds"][3]) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["InsufficientCashFunds"][1], Config.Langue["InsufficientCashFunds"][2], Config.Langue["InsufficientCashFunds"][3]) end end end end) RegisterNetEvent("oph3z-motels:server:AddFriend", function (data) local id = tonumber(data.motelid) local arkid = tonumber(data.id) local evsahibi = tonumber(data.evsahhibi) local roomno = tonumber(data.odano) local Player = QBCore.Functions.GetPlayer(evsahibi) local PlayerArk = QBCore.Functions.GetPlayer(arkid) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local v = MotelData[1] local rooms = json.decode(v.rooms) local InfoData = json.decode(MotelData[1].info) local room = rooms[tonumber(roomno)] if room.type == "VIP" then MaxFriends = Config.Data.FriendLimitV elseif room.type == "Middle" then MaxFriends = Config.Data.FriendLimitM elseif room.type == "Squatter" then MaxFriends = Config.Data.FriendLimitS end if Player.PlayerData.citizenid == room.Owner.RoomsOwner then if not Config.Data.FriendSystem then return end insertveri = { Citizenid = tostring(PlayerArk.PlayerData.citizenid), Name = tostring(PlayerArk.PlayerData.charinfo.firstname), Lastname = tostring(PlayerArk.PlayerData.charinfo.lastname), } local roomOwnerFriends = room.Owner.Friends or {} local isAlreadyFriend = false for _, friend in ipairs(roomOwnerFriends) do if friend.Citizenid == insertveri.Citizenid then isAlreadyFriend = true friendname = friend.Name friendlastname = friend.Lastname break end end friendname = insertveri.Name friendlastname = insertveri.Lastname if isAlreadyFriend then Config.ServerNotify(Player.PlayerData.source, Config.Langue["AlreadyFriend"](friendname,friendlastname)[1], Config.Langue["AlreadyFriend"](friendname,friendlastname)[2], Config.Langue["AlreadyFriend"](friendname,friendlastname)[3]) else if #roomOwnerFriends >= MaxFriends then Config.ServerNotify(Player.PlayerData.source, Config.Langue["MaxMotelRoomFriendsimit"](MaxFriends)[1], Config.Langue["MaxMotelRoomFriendsimit"](MaxFriends)[2], Config.Langue["MaxMotelRoomFriendsimit"](MaxFriends)[3]) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["AddFriendsSuccess"](friendname,friendlastname)[1], Config.Langue["AddFriendsSuccess"](friendname,friendlastname)[2], Config.Langue["AddFriendsSuccess"](friendname,friendlastname)[3]) table.insert(roomOwnerFriends, insertveri) room.Owner.Friends = roomOwnerFriends Config.Motels[id].Rooms = rooms MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), }) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) TriggerClientEvent("oph3z-motels:OpenManagement",evsahibi) end end end end end) RegisterNetEvent("oph3z-motels:server:KickFriends", function (data) id = tonumber(data.motelid) local src = source local roomno = tonumber(data.odano) Citizenid = data.citizenId local Player = QBCore.Functions.GetPlayer(src) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local v = MotelData[1] local rooms = json.decode(v.rooms) local InfoData = json.decode(MotelData[1].info) local room = rooms[tonumber(roomno)] if Player.PlayerData.citizenid == room.Owner.RoomsOwner then if not Config.Data.FriendSystem then return end local roomOwnerFriends = room.Owner.Friends or {} local isAlreadyFriend = false for _, friend in ipairs(roomOwnerFriends) do if friend.Citizenid == Citizenid then isAlreadyFriend = true break end end print(json.encode(room.Owner.Friends)) if isAlreadyFriend then for i = 1, #roomOwnerFriends do if roomOwnerFriends[i].Citizenid == Citizenid then friendname = roomOwnerFriends[i].Name friendlastname = roomOwnerFriends[i].Lastname Config.ServerNotify(Player.PlayerData.source, Config.Langue["KickFriendSuccess"](friendname,friendlastname)[1], Config.Langue["KickFriendSuccess"](friendname,friendlastname)[2], Config.Langue["KickFriendSuccess"](friendname,friendlastname)[3]) table.remove(roomOwnerFriends, i) break end end room.Owner.Friends = roomOwnerFriends print(json.encode(room.Owner.Friends)) Config.Motels[id].Rooms = rooms MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), }) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) TriggerClientEvent("oph3z-motels:OpenManagement", src) else return end end end end) RegisterNetEvent("oph3z-motels:server:InviteEmployee", function(data) source = source local Player = QBCore.Functions.GetPlayer(source) local SenderName = { firstname = Player.PlayerData.charinfo.firstname, lastname = Player.PlayerData.charinfo.lastname, source = source } TriggerClientEvent("oph3z-motels:client:InviteEmployee", data.playersource, data, SenderName) end) RegisterNetEvent("oph3z-motels:server:RankDown", function (data) local source = source id = data.motelno EmployeName = tostring(data.employeName) local Player = QBCore.Functions.GetPlayer(source) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local info = json.decode(MotelData[1].info) local employes = json.decode(MotelData[1].employees) if info.Owner ~= Player.PlayerData.citizenid then return end for k,v in pairs(employes) do if v.Name == EmployeName then if employes[k].Rank >= 2 then employes[k].Rank = employes[k].Rank - 1 Config.ServerNotify(Player.PlayerData.source, Config.Langue["RankDownSuccess"](EmployeName)[1], Config.Langue["RankDownSuccess"](EmployeName)[2], Config.Langue["RankDownSuccess"](EmployeName)[3]) end end end Config.Motels[id].Employes = employes MySQL.Async.execute('UPDATE `oph3z_motel` SET employees = @employees WHERE id = @id', { ["@id"] = id, ["@employees"] = json.encode(Config.Motels[id].Employes) }) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end end) RegisterNetEvent("oph3z-motels:server:ChangeSalary", function (data) local src = source id = tonumber(data.motelno) EmployeName = tostring(data.employeName) local Player = QBCore.Functions.GetPlayer(src) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local info = json.decode(MotelData[1].info) local employes = json.decode(MotelData[1].employees) if info.Owner ~= Player.PlayerData.citizenid then return end for k,v in pairs(employes) do if v.Name == EmployeName then employes[k].Salary = tonumber(data.salary) Config.ServerNotify(Player.PlayerData.source, Config.Langue["SalaryChangeSuccess"](EmployeName,tonumber(data.salary))[1], Config.Langue["SalaryChangeSuccess"](EmployeName,tonumber(data.salary))[2], Config.Langue["SalaryChangeSuccess"](EmployeName,tonumber(data.salary))[3]) end end Config.Motels[id].Employes = employes MySQL.Async.execute('UPDATE `oph3z_motel` SET employees = @employees WHERE id = @id', { ["@id"] = id, ["@employees"] = json.encode(Config.Motels[id].Employes) }) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end end) RegisterNetEvent("oph3z-motels:server:JobOfferAccepted", function(data) local id = tonumber(data.motelid) local Player = QBCore.Functions.GetPlayer(tonumber(data.playerid)) local current_time = os.time() local NewDate = os.date("%Y-%m-%d %H:%M:%S", current_time) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local employees = json.decode(MotelData[1].employees) local InfoData = json.decode(MotelData[1].info) if InfoData.Owner == Player.PlayerData.citizenid then Config.ServerNotify(Player.PlayerData.source, Config.Langue["AlreadyOwnerEmployess"][1], Config.Langue["AlreadyOwnerEmployess"][2], Config.Langue["AlreadyOwnerEmployess"][3]) else if employees ~= nil then local playerExists = false for k,v in pairs(employees) do if v.Citizenid == Player.PlayerData.citizenid then playerExists = true employeesname = v.Name Config.ServerNotify(Player.PlayerData.source, Config.Langue["AlreadyEmployess"](employeesname)[1], Config.Langue["AlreadyEmployess"](employeesname)[2], Config.Langue["AlreadyEmployess"](employeesname)[3]) break end end if not playerExists then table.insert(employees, { Name = tostring(Player.PlayerData.charinfo.firstname.. " " .. Player.PlayerData.charinfo.lastname), Salary = tostring(1000), Rank = tonumber(1), Date = tostring(NewDate), Citizenid = tostring(Player.PlayerData.citizenid), }) end else employees = { { Name = tostring(Player.PlayerData.charinfo.firstname.. " " .. Player.PlayerData.charinfo.lastname), Salary = tostring(1000), Rank = tonumber(1), Date = tostring(NewDate), Citizenid = tostring(Player.PlayerData.citizenid), } } end end Config.Motels[id].Employes = employees MySQL.Async.execute('UPDATE `oph3z_motel` SET employees = @employees WHERE id = @id', { ["@id"] = id, ["@employees"] = json.encode(employees) }) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end SendMail(data.playerid, InfoData.Name.."", "İşe Alındın", "İşe aldındın adamım. Motel numaranız: "..id.." Motel ismi: "..InfoData.Name.."") Config.ServerNotify(Player.PlayerData.source, Config.Langue["JobOfferAccepted"](InfoData.Name)[1], Config.Langue["JobOfferAccepted"](InfoData.Name)[2], Config.Langue["JobOfferAccepted"](InfoData.Name)[3]) end end) RegisterNetEvent("oph3z-motels:server:RepairRoom", function(data) src = source local Player = QBCore.Functions.GetPlayer(src) local id = tonumber(data.motelid) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local InfoData = json.decode(MotelData[1].info) local motelfixprice = tonumber(string.match(data.motelfixprice, "%d+")) local newmotelfixprice = tonumber(motelfixprice * 1000) if InfoData.CompanyMoney >= newmotelfixprice then Config.Motels[id].CompanyMoney = Config.Motels[id].CompanyMoney - tonumber(newmotelfixprice) InfoData.CompanyMoney = Config.Motels[id].CompanyMoney local rooms = json.decode(MotelData[1].rooms) local room = rooms[tonumber(data.motelroomnumber)] room.Active = true Config.Motels[id].Rooms = rooms MySQL.Async.execute('UPDATE `oph3z_motel` SET rooms = @rooms, info = @info WHERE id = @id', { ["@id"] = id, ["@rooms"] = json.encode(Config.Motels[id].Rooms), ["@info"] = json.encode(InfoData), }) else Config.ServerNotify(Player.PlayerData.source, Config.Langue["NotEnoughMoney"][1], Config.Langue["NotEnoughMoney"][2], Config.Langue["NotEnoughMoney"][3]) end Config.ServerNotify(Player.PlayerData.source, Config.Langue["RoomRepaired"](tonumber(data.motelroomnumber))[1], Config.Langue["RoomRepaired"](tonumber(data.motelroomnumber))[2], Config.Langue["RoomRepaired"](tonumber(data.motelroomnumber))[3]) TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) for i = 1, #motelacanlar, 1 do local motel = motelacanlar[i] local motelno = motel.Motelno if id == motelno then local source = motel.source TriggerClientEvent("oph3z-motels:OpenBossMenu", source, motelno) end end end) function AddHistory(id, type, money) local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) local History = json.decode(MotelData[1].history) table.insert(History, { type = type, money = money }) MySQL.Async.execute('UPDATE `oph3z_motel` SET history = @history WHERE id = @id', {["@history"] = json.encode(History), ["@id"] = id}) Config.Motels[id].History = History TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) end QBCore.Functions.CreateCallback("oph3z-motels:server:PlayerName", function(source, cb, target) local Player = QBCore.Functions.GetPlayer(target) if Player then local NerabyPlayers = { { Name = Player.PlayerData.charinfo.firstname, Lastname = Player.PlayerData.charinfo.lastname, Citizenid = Player.PlayerData.citizenid, id = target } } cb(NerabyPlayers) else cb(nil) end end) QBCore.Functions.CreateCallback("oph3z-motels:server:RequestMotel", function(source, cb, motelid) local id = motelid local MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = id}) if MotelData and #MotelData > 0 then local v = MotelData[1] local RequestData = json.decode(v.request) if RequestData ~= nil then cb(RequestData) end end end) QBCore.Functions.CreateCallback("oph3z-motels:server:RoomInvite", function(source, cb, coords) local players = QBCore.Functions.GetPlayers() for i = 1, #players do local ped = GetPlayerPed(players[i]) local pos = GetEntityCoords(ped) local dist = #(pos - coords) if dist < 2.0 then local Player = QBCore.Functions.GetPlayer(players[i]) local RoomInviteTablo = { { sender = source, Name = Player.PlayerData.charinfo.firstname, Lastname = Player.PlayerData.charinfo.lastname, target = players[i] } } cb(RoomInviteTablo) end end end) AddEventHandler('onServerResourceStart', function(resourceName) if resourceName == 'ox_inventory' or resourceName == GetCurrentResourceName() then if Config.Data.Database == "ghmattimysql" then MotelData = exports.ghmattimysql:execute('SELECT * FROM `oph3z_motel`') else MotelData = MySQL.Sync.fetchAll('SELECT * FROM `oph3z_motel`') end for k, v in ipairs(MotelData) do local rooms = json.decode(v.rooms) if Config.Data.Inventory == "ox" then Wait(1000) for i = 1, #rooms, 1 do local motelno = Config.Motels[k].Motelid local odano = rooms[i].motelno OdaType = rooms[i].type StashSlots = tostring(OdaType.."s") exports.ox_inventory:RegisterStash("Motel_"..motelno..'_'..odano, "Motel_"..odano, Config.Data[StashSlots], Config.Data[OdaType], nil) end end end end end) RegisterNetEvent("oph3z-motels:server:OpenRoom", function (motelno, odano, odatipi, OdaType, OdaTheme, OdaStrip, OdaBooze) local src = source local user = QBCore.Functions.GetPlayer(src) local cid = user.PlayerData.citizenid if not Config.Motels[motelno].Rooms[odano].Bucketid then local bucketroomnumber = tonumber(string.format("%d%d", motelno, odano)) Config.Motels[motelno].Rooms[odano].Bucketid = bucketroomnumber end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) KisilerinVerileri[src] = { Motelno = motelno, Odano = odano, OdaTipi = odatipi, OdaType = OdaType, Odatasarimi = OdaTheme, OdaStrip = OdaStrip, OdaBooze = OdaBooze, citizenid = cid } SetPlayerRoutingBucket(src, Config.Motels[motelno].Rooms[odano].Bucketid) TriggerClientEvent("oph3z-motels:client:OpenRoom", src, motelno, odano, odatipi, OdaType,OdaTheme, OdaStrip, OdaBooze) end) RegisterNetEvent("oph3z-motels:server:InvitePlayerRequest", function(data) local src = source local misafir = tonumber(data.misafir) local evsahibi = tonumber(data.evsahibi) local PlayerE = QBCore.Functions.GetPlayer(evsahibi) local PlayerM = QBCore.Functions.GetPlayer(misafir) local odano = tonumber(data.odano) local motelno = tonumber(data.motelno) local SenderName = { firstname = PlayerE.PlayerData.charinfo.firstname, lastname = PlayerE.PlayerData.charinfo.lastname, source = source } TriggerClientEvent("oph3z-motels:client:InvitePlayerRequest", misafir, data, SenderName) end) RegisterNetEvent("oph3z-motels:server:InvitePlayerRequestFriends", function (data) local src = source local misafir = tonumber(data.misafir) local evsahibi = tonumber(data.evsahibi) local PlayerE = QBCore.Functions.GetPlayer(evsahibi) local PlayerM = QBCore.Functions.GetPlayer(misafir) local odano = tonumber(data.odano) local motelno = tonumber(data.motelno) local SenderName = { firstname = PlayerE.PlayerData.charinfo.firstname, lastname = PlayerE.PlayerData.charinfo.lastname, source = source } TriggerClientEvent("oph3z-motels:client:InvitePlayerRequestFriends", misafir, data, SenderName) end) RegisterNetEvent("oph3z-motels:server:FriendsPlayerRequest", function(data) local src = source local misafir = tonumber(data.misafir) local evsahibi = tonumber(data.evsahibi) local PlayerE = QBCore.Functions.GetPlayer(evsahibi) local PlayerM = QBCore.Functions.GetPlayer(misafir) local odano = tonumber(data.odano) local motelno = tonumber(data.motelno) local SenderName = { firstname = PlayerE.PlayerData.charinfo.firstname, lastname = PlayerE.PlayerData.charinfo.lastname, source = source } TriggerClientEvent("oph3z-motels:client:FriendsPlayerRequest", misafir, data, SenderName) end) RegisterNetEvent("oph3z-motels:server:NearbyRequest", function(data) source = source local Player = QBCore.Functions.GetPlayer(source) local SenderName = { firstname = Player.PlayerData.charinfo.firstname, lastname = Player.PlayerData.charinfo.lastname, source = source } TriggerClientEvent("oph3z-motels:client:NearbyRequest", data.playersource, data, SenderName) end) RegisterNetEvent("oph3z-motels:server:RoomInviteAccept", function (data) motelno = data.davetmotelid odano = data.davetodano odatipi = tostring(data.davetodatipi..motelno) OdaType = data.davetodatipi OdaTheme = data.davetodatheme OdaStrip = data.davetodastrip OdaBooze = data.davetodabooze local src = source local user = QBCore.Functions.GetPlayer(src) local cid = user.PlayerData.citizenid if not Config.Motels[motelno].Rooms[odano].Bucketid then local bucketroomnumber = tonumber(string.format("%d%d", motelno, odano)) Config.Motels[motelno].Rooms[odano].Bucketid = bucketroomnumber end TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) KisilerinVerileri[src] = { Motelno = motelno, Odano = odano, OdaTipi = odatipi, OdaType = OdaType, Odatasarimi = OdaTheme, OdaStrip = OdaStrip, OdaBooze = OdaBooze, citizenid = cid } SetPlayerRoutingBucket(src, Config.Motels[motelno].Rooms[odano].Bucketid) TriggerClientEvent("oph3z-motels:client:OpenRoom", src, motelno, odano, odatipi, OdaType, OdaTheme, OdaStrip, OdaBooze) end) AddEventHandler('playerDropped', function() local src = source local tablo = KisilerinVerileri[src] if tablo then if next(tablo) then local MotelData = MySQL.query.await('SELECT * FROM `oph3z_motel` WHERE id = @id', {["@id"] = tablo.Motelno}) local BucketCache = json.decode(MotelData[1].bucketcache) SetPlayerRoutingBucket(src, 0) table.insert(BucketCache, { citizenid = tablo.citizenid, Motelno = tablo.Motelno, OdaTipi = tablo.OdaTipi, Odatasarimi = tablo.Odatasarimi, OdaType = tablo.OdaType, Odano = tablo.Odano, OdaStrip = tablo.OdaStrip, OdaBooze = tablo.OdaBooze }) MySQL.Async.execute('UPDATE `oph3z_motel` SET bucketcache = @bucketcache WHERE id = @id', {["@bucketcache"] = json.encode(BucketCache), ["@id"] = tablo.Motelno}) end end end) RegisterNetEvent("QBCore:Server:OnPlayerLoaded", function () local src = source local Player = QBCore.Functions.GetPlayer(src) local cid = Player.PlayerData.citizenid local MotelData = MySQL.query.await('SELECT * FROM `oph3z_motel`') local foundRoom = false Wait(2000) for i=1, #MotelData, 1 do local newbucket = json.decode(MotelData[i].bucketcache) local room = json.decode(MotelData[i].rooms) for j=1, #room, 1 do for k=1, #newbucket, 1 do local info = json.decode(MotelData[i].info) if info.Motelid == newbucket[k].Motelno and room[j].motelno == newbucket[k].Odano and newbucket[k].citizenid and newbucket[k].citizenid == cid and room[j].Owner.RoomsOwner == cid then local bucketroomnumber = tonumber(string.format("%d%d", newbucket[k].Motelno, newbucket[k].Odano)) SetPlayerRoutingBucket(src, bucketroomnumber) TriggerClientEvent("oph3z-motels:client:AdamYoruyorsunuz", src, newbucket[k].Motelno, newbucket[k].Odano, newbucket[k].OdaType, newbucket[k].OdaTipi, newbucket[k].Odatasarimi, newbucket[k].OdaStrip, newbucket[k].OdaBooze, newbucket[k].citizenid) table.remove(newbucket, k) MySQL.Async.execute('UPDATE `oph3z_motel` SET bucketcache = @bucketcache WHERE id = @id', {["@bucketcache"] = json.encode(newbucket), ["@id"] = MotelData[i].id}) foundRoom = true break end end if foundRoom then break end end end if not foundRoom then for i=1, #MotelData, 1 do local newbucket = json.decode(MotelData[i].bucketcache) local info = json.decode(MotelData[i].info) for k=1, #newbucket, 1 do if info.Motelid == newbucket[k].Motelno and newbucket[k].citizenid == cid then TriggerClientEvent("oph3z-motels:client:OdaBitti", src, info.Motelid) Config.ServerNotify(src, Config.Langue["RoomExitExpired"][1],Config.Langue["RoomExitExpired"][2],Config.Langue["RoomExitExpired"][3]) table.remove(newbucket, k) MySQL.Async.execute('UPDATE `oph3z_motel` SET bucketcache = @bucketcache WHERE id = @id', {["@bucketcache"] = json.encode(newbucket), ["@id"] = MotelData[i].id}) break end end end end end) RegisterNetEvent("oph3z-motels:server:ExitRoom", function () local src = source SetPlayerRoutingBucket(src, 0) TriggerClientEvent("oph3z-motels:client:ExitRoom", src) KisilerinVerileri[src] = {} TriggerClientEvent("oph3z-motels:Update", -1, Config.Motels, ScriptLoaded) end)