1836 lines
		
	
	
		
			No EOL
		
	
	
		
			85 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			1836 lines
		
	
	
		
			No EOL
		
	
	
		
			85 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
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) |