forked from Simnation/Main
1836 lines
85 KiB
Lua
1836 lines
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)
|