View difference between Paste ID: UEvYVqYy and WtLeLVbn
SHOW: | | - or go back to the newest paste.
1
local playersConnecting = {}
2-
local playersBanned = {"10.10.10.10", "10.10.10.11"}
2+
local playersBanned = {"ip:10.10.10.10", "ip:10.10.10.11"}
3
4
AddEventHandler( "playerConnecting", function( playerName, setCallback )
5
	table.insert( playersConnecting, bit32.band( source, 0xFFFF ) + 1 )
6
end)
7
8
-- GetPlayerEP does not handle NetIDs, only PlayerIDs. Server LUA does not have Citizen.CreateThread nor Wait
9
-- so we use this method to periodically check NetIDs converted to PlayerIDs (NetID & 0xFFFF + 1).
10
-- Usually triggered when the PlayerID is actually added to the server ~600ms after connecting.
11
local function checkPlayersConnecting()
12
	if #playersConnecting > 0 then
13
		local EP = GetPlayerEP( playersConnecting[1] )
14
		
15
		if EP ~= nil then
16
			EP = "ip:" .. EP:Split( ":" )[0]
17
			
18
			for k,v in pairs( playersBanned ) do
19
				if v == EP then
20
					DropPlayer( playersConnecting[1], "You are banned." )
21
					break
22
				end
23
			end
24
			
25
			table.remove( playersConnecting, 1 )
26
		end
27
	end
28
	
29
	SetTimeout( 175, checkPlayersConnecting )
30
end
31
32
SetTimeout( 1, checkPlayersConnecting )