Main/resources/[housing]/oph3z-motels/server/main.lua
2025-06-11 16:38:57 +02:00

1836 lines
No EOL
85 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)