FiveM ConnectQueue Configuration Guide
FiveM ConnectQueue Configuration Guide
vRP = {}
[Link]("vRP",vRP)
tvRP = {}
[Link]("vRP",tvRP)
vRPclient = [Link]("vRP","vRP")
[Link] = {}
[Link] = {}
vRP.user_tables = {}
vRP.user_tmp_tables = {}
vRP.user_sources = {}
[Link](function()
local uptimeMinute, uptimeHour = 0, 0
while true do
[Link](1000 * 60)
uptimeMinute = uptimeMinute + 1
if uptimeMinute == 60 then
uptimeMinute = 0
uptimeHour = uptimeHour + 1
end
[Link](1000)
if validIds then
[Link]:insertOne({collection = "users", document =
{id = nextId, accountLicense = validIds, lastHours = 0.0, hoursPlayed = 0.0,
userJob = "Somer"}}, function(success)
if success then
task({nextId, {}})
end
end)
else
task({-1})
end
end
end)
end
end
end
function [Link](player)
return GetPlayerEndpoint(player) or "[Link]"
end
function [Link](player)
return GetPlayerName(player) or "Necunoscut"
end
function [Link](amount)
local left,num,right = [Link](tostring(amount),'^([^%d]*%d)(%d*)(.-)$')
return left..(num:reverse():gsub('(%d%d%d)','%1.'):reverse())..right
end
task({[Link], userBans})
else
task()
end
end)
end
if admin ~= 0 then
adminSrc = [Link](admin)
end
if adminSrc then
adminTag = (GetPlayerName(adminSrc) or "Necunoscut").. " ("..admin..")"
elseif admin ~= 0 then
local username = [Link]:findOne({collection = "users", query = {id =
admin}, options = { projection = {_id = 0, username = 1} }})
adminTag = ([Link] or "Necunoscut").. " ("..admin..")"
end
if banDays == -1 then
if target_src then
[Link](-1, {[Link](chatString, adminTag,
GetPlayerName(target_src) or "Necunoscut", user_id, 'permanent', banReason)})
else
local username = [Link]:findOne({collection = "users", query = {id =
user_id}, options = {projection = {_id = 0, username = 1}}})
local player_name = [Link] or "Necunoscut"
local banData = {
isBanned = true,
expire = -1,
expireDate = 'never',
bannedDate = [Link]("%d/%m/%Y %H:%M"),
bannedBy = adminTag,
banReason = banReason,
banDate = [Link](),
dreptPlata = dreptPlata,
banDays = 'permanent',
}
if target_src then
[Link](target_src, 'Ai fost banat pe server!\nMotiv: '..banReason)
end
else
local banTime = tonumber([Link]() + ((banDays or 1)*24*60*60))
if target_src then
[Link](-1, {[Link](chatString, adminTag,
GetPlayerName(target_src) or "Necunoscut", user_id, banDays, banReason)})
else
local username = [Link]:findOne({collection = "users", query = {id =
user_id}, options = {projection = {_id = 0, username = 1}}})
local player_name = [Link] or "Necunoscut"
local banData = {
isBanned = true,
expire = banTime,
expireDate = [Link]("%d/%m/%Y %H:%M", banTime),
bannedDate = [Link]("%d/%m/%Y %H:%M"),
bannedBy = adminTag,
banReason = banReason,
banDate = [Link](),
dreptPlata = dreptPlata,
banDays = banDays,
}
if target_src then
[Link](target_src, 'Ai fost banat pe server!\nMotiv: '..banReason)
end
end
end
if admin ~= 0 then
adminSrc = [Link](admin)
end
if adminSrc then
adminTag = (GetPlayerName(adminSrc) or "Necunoscut").. " ("..admin..")"
elseif admin ~= 0 then
local username = [Link]:findOne({collection = "users", query = {id =
admin}, options = { projection = {_id = 0, username = 1} }})
adminTag = ([Link] or "Necunoscut").. " ("..admin..")"
end
local userDatas = {}
local userDatasModified = {}
function [Link](user_id,key,value)
if not userDatas[user_id] then
userDatas[user_id] = {}
end
userDatasModified[user_id][key] = true
userDatas[user_id][key] = value
end
function saveUDataInDb(user_id)
if userDatas[user_id] then
for key, _ in pairs(userDatasModified[user_id] or {}) do
[Link](500)
local value = userDatas[user_id][key]
[Link]:updateOne({collection = "uData", query = {user_id = user_id,
dkey = key}, update = {['$set'] = {user_id = user_id, dkey = key, dvalue = value}},
options = {upsert = 1}})
end
end
userDatas[user_id] = nil
userDatasModified[user_id] = nil
end
function task_save_oneUser(user_id)
[Link](user_id, "vRP:datatable", [Link](vRP.user_tables[user_id]))
end
[Link] = task_save_oneUser
local saveHourNum = 0
function task_save_datatables()
TriggerEvent("vRP:save")
if saveHourNum == 4 then
saveHourNum = 0
else
saveHourNum = saveHourNum + 1
end
SetTimeout(60000, task_save_datatables)
end
task_save_datatables()
function [Link](key,value)
[Link]:updateOne({collection = "sData", query = {dkey = key}, update =
{['$set'] = {dkey = key, dvalue = value}}, options = {upsert = 1}})
end
function [Link](user_id,whitelisted)
whitelistUsers[tostring(user_id)] = true
SaveResourceFile("vrp", "[Link]", [Link](whitelistUsers), -1)
ExecuteCommand("loadwhitelist")
end
function [Link](user_id)
return vRP.user_tmp_tables[user_id]
end
function [Link](user_id)
return [Link][user_id] ~= nil
end
function [Link](user_id)
local tmp = [Link](user_id)
return tmp and [Link]
end
function [Link](user_id)
local tmp = [Link](user_id)
return tmp and [Link] == 1
end
function [Link](source)
if source then
local ids = GetPlayerIdentifiers(source)
if ids ~= nil and #ids > 0 then
return [Link][ids[1]]
end
end
end
exports("getUserId", [Link])
function [Link]()
local users = {}
for k,v in pairs(vRP.user_sources) do
users[k] = v
end
return users
end
staffUsers = {}
function [Link]()
return staffUsers
end
[Link] = [Link]
function [Link](user_id)
return vRP.user_sources[user_id]
end
exports("getUserSource", [Link])
function [Link](source,reason)
DropPlayer(source,reason)
end
function [Link](user_id)
if user_id then
if hoursInt[user_id] then
local diff = ([Link]() - hoursInt[user_id]) or 0
local hoursGained = diff / 3600
function [Link](user_id)
if user_id then
if hoursInt[user_id] then
local diff = ([Link]() - hoursInt[user_id]) or 0
local hoursGained = diff / 3600
function saveHoursPlayed(user_id)
local diff = [Link]() - (hoursInt[user_id] or [Link]())
local hoursGained = [Link]((diff / 3600) * 100) / 100
hoursInt[user_id] = [Link]()
[Link]:updateOne({collection = "users", query = {id = user_id}, update =
{
['$inc'] = {hoursPlayed = hoursGained, lastHours = hoursGained}
}})
if curDay == 0 then
if not [Link] then
[Link] = true
for i = 1, numtokens do
local token = GetPlayerToken(player, i)
if token then
[Link]:findOne({collection = "userTokens", query = {token =
token}, options = {projection = {banned = 1, _id = 0, user_id = 1}}},
function(success, result)
if result[1] then
if result[1].banned == true then
task({true, result[1].user_id})
end
else
[Link]:insertOne({collection = "userTokens", document =
{
token = token,
banned = false,
user_id = user_id
}})
end
end)
end
end
end
function [Link](source)
local playerIp = [Link](source)
local name = GetPlayerName(source)
local ids = GetPlayerIdentifiers(source)
[Link](ids, function(user_id, rows)
if user_id ~= nil then
[Link][ids[1]] = user_id
[Link][user_id] = ids[1]
vRP.user_tables[user_id] = {}
vRP.user_tmp_tables[user_id] = {}
vRP.user_sources[user_id] = source
if ([Link] or 0) > 0 then
staffUsers[user_id] = {lvl = [Link], src = source}
end
tmpdata.last_login = nowTime
[Link] = 0
RegisterNetEvent("vRP:loadPlayer")
AddEventHandler("vRP:loadPlayer", function()
local user_id = [Link](source)
if not user_id then
[Link](source)
end
end)
local connectQueue = 0
local cancelQueue = false
RegisterCommand("queue", function(src)
if src == 0 then
return print("Queue-ul este acum de "..connectQueue.." (de) secunde!")
end
RegisterCommand("cancelqueue", function(src)
if src ~= 0 then
local user_id = [Link](src)
if not [Link](user_id) then
return [Link](src)
end
end
cancelQueue = true
[Link](6500, function()
cancelQueue = false
end)
if src == 0 then
print("^5Info: ^0Queue-ul a fost anulat.")
else
[Link](src, {"Queue-ul a fost anulat."})
end
end)
AddEventHandler("playerConnecting",function(name, setMessage, game)
[Link]()
local source = source
local player = source
local playerIp = [Link](source)
local ids = GetPlayerIdentifiers(source)
if cancelQueue then
break
end
[Link](1000)
end
connectQueue = connectQueue - 1
if connectQueue < 0 then
connectQueue = 0
end
if isServerRestarting() then
[Link]("\n[FP:RP] Serverul se restarteaza, incearca sa te conectezi in
cateva momente.\n\nDiscord: [Link]/fairplay")
return
end
tmpdata.last_login = [Link]()
[Link] = 0
else
print("[FP:RP] "..name.." ("..playerIp..") rejected: fast relog
/ double account")
[Link]("FP:RP - Eroare la logare\n\nIncearca sa te conectezi
din nou in 30 de secunde.\n\nDiscord: [Link]/fairplay")
[Link](user_id)
end
else
[Link]("\n[FP:RP] Contul tau este banat.\nNu incerca sa scapi
singur de ban!\nID-ul tau original este: "..originalId.."\n\nDiscord:
[Link]/fairplay")
print("[FP:RP] "..name.." ("..playerIp..") rejected: ^3token
banat")
end
end)
else
local banReason = [Link] or ""
local bannedBy = [Link] or ""
local banDays = [Link] or 0
function [Link](user_id)
local source = [Link](user_id)
hoursInt[user_id] = nil
end
end
AddEventHandler("playerDropped",function(reason)
local source = source
local name = [Link](source)
[Link](function()
saveUDataInDb(user_id)
end)
hoursInt[user_id] = nil
end
end)
RegisterServerEvent("ples-idoverhead:setViewing")
AddEventHandler("ples-idoverhead:setViewing", function(val, activePlayers)
local player = source
for _, src in pairs(activePlayers) do
TriggerClientEvent("ples-idoverhead:setCViewing", src, player, val)
end
end)
RegisterServerEvent("vRPcli:playerSpawned")
AddEventHandler("vRPcli:playerSpawned", function()
if staffUsers[user_id] then
staffUsers[user_id].src = source
end
if first_spawn then
for k,v in pairs(vRP.user_sources) do
if user_id ~= k then
TriggerClientEvent("id:initPlayer", source, v, k)
end
end
hoursInt[user_id] = [Link]()
local loginDetail = {
hoursPlayed = hoursPlayed[user_id] or 0,
lastHours = lastHours[user_id] or 0,
time = [Link](),
date = [Link]("%d/%m/%Y %H:%M:%S"),
economy = {
cashMoney = [Link](user_id) or 0,
bankMoney = [Link](user_id) or 0,
coins = [Link](user_id) or 0
},
connectionIp = GetPlayerEndpoint(player),
user_id = user_id,
}
SetTimeout(2000, function()
if not first_spawn then
TriggerEvent("vRP:playerSpawn", user_id, player, false)
else
[Link]:findOne({collection = "users", query = {id = user_id}},
function(success, result)
if success then
TriggerEvent("vRP:playerSpawn", user_id, player, true, result[1])
[Link](10000)
[Link] = true
else
DropPlayer(player, "A aparut o eroare la incarcarea contului !\nError
Code: 408")
end
end, true)
end
SetTimeout(config.load_duration*1000, function()
[Link](player, config.global_delay)
end)
end)
end
end)
RegisterServerEvent("vRP:playerDied")
function isServerRestarting()
return restarting
end
AddEventHandler('txAdmin:events:scheduledRestart', function(eventData)
if [Link] == 60 then
[Link](function()
[Link](20000)
ExecuteCommand("kickall")
end)
end
end)
TriggerEvent("vRP:onRestartingSoon")
[Link](function()
local usrr = [Link]()
for uid, src in pairs(usrr) do
[Link](50)
saveUDataInDb(uid)
end
end)
restarting = true
SetTimeout(10000, function()
TriggerClientEvent("vRP:adminAnnouncement", -1, "SERVER", "Atentie! Serverul
se restarteaza in 20 (de) secunde, va rugam sa folositi F8-Quit pentru a evita
posibile pierderi de date.")
print("20 DE SECUNDE PANA LA RESTART!")
SetTimeout(10000, function()
TriggerClientEvent("vRP:adminAnnouncement", -1, "SERVER", "Atentie!
Serverul se restarteaza in 10 (de) secunde, va rugam sa folositi F8-Quit pentru a
evita posibile pierderi de date.")
print("10 DE SECUNDE PANA LA RESTART!")
SetTimeout(5000, function()
TriggerClientEvent("vRP:adminAnnouncement", -1, "SERVER", "Atentie!
Serverul se restarteaza in 5 (de) secunde, va rugam sa folositi F8-Quit pentru a
evita posibile pierderi de date.")
print("5 DE SECUNDE PANA LA RESTART!")
RegisterCommand("loadwhitelist", function(src)
if src == 0 then
end
end)
RegisterCommand("togwhitelist", function(src)
if src == 0 then
[Link] = not [Link]
print("[vRP] Server under maintenance: "..([Link] and "^2YES^7" or
"^1NO^7"))
end
end)
RegisterCommand("listwhitelist", function(src)
if src == 0 then
print("Pe lista alba sunt in total " .. [Link](whitelistUsers) .. " (de)
jucatori")
print("---------------")
print("Nume ID Acceptat")
for user_id, state in pairs(whitelistUsers) do
local uSrc = [Link](tonumber(user_id))
print((uSrc and GetPlayerName(uSrc) or "Necunoscut").." ["..user_id.."] -
"..(state and "Da" or "Nu"))
end
print("---------------")
end
end)
RegisterCommand("logtunnel", function(player)
local user_id = [Link](player)
if not [Link]() then
return [Link](player)
end
TriggerClientEvent("tunnel:toggleLogs", player)
end)
SetMapName("FairPlay-RP")
SetGameType("Roleplay")