Tnx for your quick reaction!
So I think the kick function is called in after a ‘if whitelist’ check.
I marked it with:
-- *****************************
-- *****************************
-- *****************************
Event handler
AddEventHandler('playerConnecting', function(playerName, setKickReason, deferrals)
deferrals.defer()
local _source = source
deferrals.update("\nChecking Username...")
local name = GetPlayerName(_source)
if(string.match(name, "[*%%'=`\"]")) then
PTCore.Functions.KickUser(_source, 'Je hebt in je naam een teken('..string.match(name, "[*%%'=`\"]")..') zitten wat niet is toegestaan.\nGelieven deze uit je steam-naam te halen.', setKickReason, deferrals)
CancelEvent()
return false
end
if(PTCore.PTShared.StringContainsWords(name:lower(), {'drop', 'table', 'database'})) then
PTCore.Functions.KickUser(_source, 'Je hebt in je naam een woord('..PTCore.PTShared.StringContainsWords(name:lower(), {'drop', 'table', 'database'})..') zitten wat niet is toegestaan.\nGelieven deze uit je steam-naam te halen.', setKickReason, deferrals)
CancelEvent()
return false
end
deferrals.update("\nChecking Steam Id...")
local identifiers = GetPlayerIdentifiers(_source)
print(json.encode(identifiers))
local steamid = PTCore.Functions.GetIdentifierFromSource(_source, "steam")
local ip = PTCore.Functions.GetIdentifierFromSource(_source, "ip")
if ((steamid:sub(1,6) == "steam:") == false) then
PTCore.Functions.KickUser(_source, 'Je moet steam open hebben om op deze server te spelen.', setKickReason, deferrals)
CancelEvent()
return false
end
if ((ip:sub(1,3) == "ip:") == false) then
PTCore.Functions.KickUser(_source, 'Je moet een ip hebben om op deze server te spelen.', setKickReason, deferrals)
CancelEvent()
return false
end
deferrals.update("\nChecking Ban Status...")
local Banned = PTCore.Functions.IsUserBanned(_source)
if(Banned ~= false) then
PTCore.Functions.KickUser(_source, 'Ban reden:\n'..Banned, setKickReason, deferrals)
CancelEvent()
return false
end
deferrals.update("\nChecking VPN status...")
if(PTCore.Functions.IsUserUsingVPN(ip) ~= false) then
PTCore.Functions.KickUser(_source, 'Je gebruikt vermoedelijk een VPN.\nGelieven deze afsluiten ivm veiligheid.', setKickReason, deferrals)
CancelEvent()
return false
end
-- *****************************
-- *****************************
-- *****************************
deferrals.update("\nChecking Whitelist status...")
if(PTCore.Functions.IsUserWhitelisted(_source) ~= true) then
PTCore.Functions.KickUser(_source, 'Je bent helaas niet gewhitelist.\nVraag een whitelist aan!', setKickReason, deferrals)
CancelEvent()
return false
end
deferrals.update("\nChecking Server status...")
if(PTCore.Functions.IsUserAllowedOnThisServer(_source) ~= true) then
PTCore.Functions.KickUser(_source, 'Dit is de development server.\nHier ben je helaast niet op toegelaten!', setKickReason, deferrals)
CancelEvent()
return false
end
deferrals.update("\nAdding to queue...")
PTCore.Queue.AddUser(_source, deferrals)
-- Setup Queue Refferals
-- deferrals.done()
end)
'kick function'
This contains a while loop to make sure the player is removed & kicked from te server
Kinda weird but it works since there was a build where it wouldn’t always kick them.
PTCore.Functions.KickUser = function(source, reden, setKickReason, deferrals) -- Kicks a user and makes sure he is kicked
local src = source
if (deferrals ~= nil) then
TriggerEvent("LOGGER:SimpleEmbedHook", "deferralskicks", "Rood", GetPlayerName(src), "Player gekicked uit het pre-laadscherm "..GetPlayerName(src).."("..GetPlayerIdentifiers(src)[1]..") voor:\n"..reden.."")
end
reden = "\n"..reden.."\n\nKijk op onze discord voor meer informatie: <discord link removed for Forums>"
-- *****************************
-- *****************************
-- *****************************
if(setKickReason ~=nil) then
setKickReason(reden)
end
Citizen.CreateThread(function()
if(deferrals ~= nil)then
deferrals.update(reden)
Citizen.Wait(2500)
end
DropPlayer(src, reden)
local i = 0
while (i <= 4) do
i = i + 1
while true do
--DropPlayer(src, string.format( strings.bannedjoin, BanDb[1].naam, BanDb[1].reden, BanDb[1].door, os.date('%d/%m/%Y %H:%M:%S', BanDb[1].verlooptseconde )))
if(GetPlayerPing(src) >= 0) then
break
end
Citizen.Wait(100)
--deferrals.update(string.format( strings.bannedjoin, BanDb[1].naam, BanDb[1].reden, BanDb[1].door, os.date('%d/%m/%Y %H:%M:%S', BanDb[1].verlooptseconde )))
Citizen.CreateThread(function()
DropPlayer(src, reden)
end)
end
Citizen.Wait(5000)
end
end)
end