Ban system

So i’m working on a ban system that stores all bans in a database but I am having trouble when it comes to the player joining and not being kicked for being banned.

I’m requesting the data from the database and checking if the ban is active or not and then trying to return true or false to the CheckPassword hook. Im not sure what is wrong. All help is appreciated :slight_smile:


function checkBan(sid64)	
	local Check = db:query("SELECT * FROM bans WHERE SteamID64=".. sid64 .." AND Active=1")
	function Check:onSuccess(data)
		local row = data[1]
		
		if row == nil then print("No data") return end


		if row["Active"] ~= nil then 
			return true
		end
		
	end
	function Check:onError(err)
		print("An error occured while executing the query: " .. err)
	end
	Check:start()


end


hook.Add("CheckPassword", "bans_check", function(sid64)
	if checkBan(sid64) then
		return false, "You are banned"
	end
end)

Its take some time to get values from database. Try this:


local banned = checkBan(sid64)
return not banned, "You are banned"

Also, check ULX ban system.

I changed it a bit and it still does not work.


function getBanData(sid64)
	local Check = db:query("SELECT * FROM bans WHERE SteamID64=".. sid64 .." AND Active=1")
	function Check:onSuccess(data)
		local row = data[1]

		if row == nil then return end

		return row--, "-==You have been banned!==-
 You were banned by: (Admin)
 Length: " .. banLength(row["_Time"]) .. "
 Reason: " .. row["_Reason"]
		
	end
	function Check:onError(err)
		print("An error occured while executing the query: " .. err)
	end
	Check:start()
end

function checkBan(sid64)	
	local banData, message = getBanData(sid64)

	if not banData then return end

	print(banData, message)

	return false, message

end
hook.Add("CheckPassword", "bans_check", checkBan)

Have you tried hooking it to playerauthed instead?

The query onSuccess is a second function that doesn’t return the result to the main pool naturally. You need to do what iJohnny said, and then within that Checkban function you return the function OnSuccess