Anti cheat question regarding sv_allowcslua

When people force sv_allowcslua to 1, is that client side, or server side?

What if I wrote a script on the server that gets what their convar is set to, and banned them if it was set to 1? Would this script even be able to see the change?

“People” do it clientside.

client sided, you have to retrieve it from the client and have the client send it to the server.

EDIT: Ninja’d

Yeah it’s done client side. If your going to try to detect this I recommend referencing all functions used by your script as local variables when it loads to prevent hackers from trying to replace them with their own functions to hide their activities.



ex: local GetConVar = GetConVar -- or what ever the function is called...


This anticheat won’t do anything but ban people who are going to get gac banned.

Probably true, but it’s his time. He can do what he wants with it, and even if it is improbable that it will make any major difference it doesn’t take much time to help.

Since you are right, I will show you guys an easy way to detect people. Note, it contains anti-skid protection from server owners/devs who don’t know what they are doing.




local badstrs = {
		"hera", -- HeHe SkiDdies
		"mapex",
		"aimbot",
		"hack",
};
local g = table.Copy(_G)
local newfunc = function(cmd, func, ...)
		for i, badcmd in g.ipairs(badstrs) do
				if (g.string.find(g.string.lower(cmd), g.string.lower(badcmd))) then
						g.RunConsoleCommand("plsbanme"); -- your code to ban someone
				end
		end
		RunConsoleCommand("checksource", g.debug.getinfo(func).short_src);
		return(g.concommand.Add(cmd, func, ...);
end

concommand.Add = newfunc;

timer.Create("myuniquename", 1, 0, function()
		if (concommand.Add ~= newfunc) then -- fix it if it is messing with your other plugins
				g.RunConsoleCommand("plsbanme");
		end
end)

-- server

concommand.Add("plsbanme", function(ply)
		ply:Ban();
end)
concommand.Add("checksource", function(ply, cmd, args)
		local endstr = "";
		for i, part in ipairs(args) do
				endstr = endstr..part;
		end
		if (endstr == "") then return; end
		
		if (not file.Find("MOD", endstr)) then
				ply:Ban();
		end
end)