• Gmod Anti-Exploit Custom Ban help
    5 replies, posted
I am trying to override it to ban through sourcebans instead of the default gmod ban function by emulating a console command. However, it doesn't work. The original works fine. Custom Edit [lua]local e_log = true local e_filename = "ae_log.txt" local scan_interval = 0.5 local exploit = "" local name = ent:CPPIGetOwner():name() function LogExploit(pl, expl, cla) if e_log then local NAM = "" local SID = "" if pl == nil then NAM = "Unknown name" SID = "Unknown steamid" else NAM = pl:Nick( ) SID = pl:SteamID() end if file.Exists( e_filename ) then file.Write( e_filename, file.Read( e_filename ) .. "\n" .. tostring( os.date() ) .. " || " .. NAM .. " || " .. SID .. " || " .. expl .. " || " .. cla ) else file.Write( e_filename, tostring( os.date() ) .. " || " .. NAM .. " || " .. SID .. " || " .. expl .. " || " .. cla) end end end function UseTool( pl, tr, toolmode ) if CLIENT then return true end if toolmode == "material" then exploit = "Material Exploit (Material tool)" if string.find( string.lower( pl:GetInfo( "material_override" ) ), "ar2_altfire1" ) then LogExploit(pl, exploit, pl:GetInfo( "material_override" )) game.ConsoleCommand("sm_ban "..name.." 0 Exploiting. Nice Try\n") pl:Kick("Exploiting. Nice Try") return false end end if toolmode == "door" or toolmode == "wired_door" then exploit = "Door Exploit" if pl:GetInfo( "door_class" ) == "prop_dynamic" or pl:GetInfo( "door_class" ) == "prop_door_rotating" then else LogExploit(pl, exploit, pl:GetInfo( "door_class" )) game.ConsoleCommand("sm_ban "..name.." 0 Exploiting. Nice Try\n") pl:Kick("Exploiting. Nice Try, faggot.") return false end end if toolmode == "trails" then exploit = "Material Exploit (Trails tool)" if string.find( string.lower( pl:GetInfo( "trails_material" ) ), "ar2_altfire1" ) then LogExploit(pl, exploit, pl:GetInfo( "trails_material" )) game.ConsoleCommand("sm_ban "..name.." 0 Exploiting. Nice Try\n") pl:Kick("Exploiting. Nice Try") return false end end return true end hook.Add( "CanTool", "UseTool", UseTool ) timer.Create( "scan_exploit", scan_interval, 0, function() exploit = "Material Exploit (Other)" for _, ent in pairs( ents.GetAll() ) do if string.find( string.lower( ent:GetMaterial() ), "ar2_altfire1" ) then if ent:IsPlayer() then LogExploit(ent, exploit, ent:GetMaterial() .. " (Player)") game.ConsoleCommand("sm_ban "..name.." 0 Exploiting. Nice Try\n") ent:Kick("Exploiting. Nice Try") elseif ValidEntity( ent:GetOwner() ) then LogExploit(ent:GetOwner(), exploit, ent:GetMaterial() .. " (Entity ".. ent:GetClass() ..")") game.ConsoleCommand("sm_ban "..name.." 0 Exploiting. Nice Try\n") ent:CPPIGetOwner():Kick("Exploiting. Nice Try") ent:Remove() elseif SPropProtection then LogExploit(ent:CPPIGetOwner(), exploit, ent:GetMaterial() .. " (Entity ".. ent:GetClass() ..")") game.ConsoleCommand("sm_ban "..name.." 0 Exploiting. Nice Try\n") ent:CPPIGetOwner():Kick("Exploiting. Nice Try") ent:Remove() else LogExploit(nil, exploit, ent:GetMaterial() .. " (Entity ".. ent:GetClass() ..")") ent:Remove() end end end end)[/lua] Original [lua]local e_log = true local e_filename = "ae_log.txt" local scan_interval = 0.5 local exploit = "" function LogExploit(pl, expl, cla) if e_log then local NAM = "" local SID = "" if pl == nil then NAM = "Unknown name" SID = "Unknown steamid" else NAM = pl:Nick( ) SID = pl:SteamID() end if file.Exists( e_filename ) then file.Write( e_filename, file.Read( e_filename ) .. "\n" .. tostring( os.date() ) .. " || " .. NAM .. " || " .. SID .. " || " .. expl .. " || " .. cla ) else file.Write( e_filename, tostring( os.date() ) .. " || " .. NAM .. " || " .. SID .. " || " .. expl .. " || " .. cla) end end end function UseTool( pl, tr, toolmode ) if CLIENT then return true end if toolmode == "material" then exploit = "Material Exploit (Material tool)" if string.find( string.lower( pl:GetInfo( "material_override" ) ), "ar2_altfire1" ) then LogExploit(pl, exploit, pl:GetInfo( "material_override" )) pl:Ban(0,"Exploiting. Nice Try") pl:Kick("Exploiting. Nice Try") return false end end if toolmode == "door" or toolmode == "wired_door" then exploit = "Door Exploit" if pl:GetInfo( "door_class" ) == "prop_dynamic" or pl:GetInfo( "door_class" ) == "prop_door_rotating" then else LogExploit(pl, exploit, pl:GetInfo( "door_class" )) pl:Kick("Exploiting. Nice Try, faggot.") return false end end if toolmode == "trails" then exploit = "Material Exploit (Trails tool)" if string.find( string.lower( pl:GetInfo( "trails_material" ) ), "ar2_altfire1" ) then LogExploit(pl, exploit, pl:GetInfo( "trails_material" )) pl:Ban(0,"Exploiting. Nice Try") pl:Kick("Exploiting. Nice Try") return false end end return true end hook.Add( "CanTool", "UseTool", UseTool ) timer.Create( "scan_exploit", scan_interval, 0, function() exploit = "Material Exploit (Other)" for _, ent in pairs( ents.GetAll() ) do if string.find( string.lower( ent:GetMaterial() ), "ar2_altfire1" ) then if ent:IsPlayer() then LogExploit(ent, exploit, ent:GetMaterial() .. " (Player)") ent:Ban(0,"Exploiting. Nice Try") ent:Kick("Exploiting. Nice Try") elseif ValidEntity( ent:GetOwner() ) then LogExploit(ent:GetOwner(), exploit, ent:GetMaterial() .. " (Entity ".. ent:GetClass() ..")") ent:GetOwner():Ban(0,"Exploiting. Nice Try") ent:CPPIGetOwner():Kick("Exploiting. Nice Try") ent:Remove() elseif SPropProtection then LogExploit(ent:CPPIGetOwner(), exploit, ent:GetMaterial() .. " (Entity ".. ent:GetClass() ..")") ent:CPPIGetOwner():Ban(0,"Exploiting. Nice Try") ent:CPPIGetOwner():Kick("Exploiting. Nice Try") ent:Remove() else LogExploit(nil, exploit, ent:GetMaterial() .. " (Entity ".. ent:GetClass() ..")") ent:Remove() end end end end)[/lua] Anyone see the error?
how about giving us your error?
The error is simple. Nothing is returned and the exploiter isn't banned.
I thought the ar2_altfire material exploit was fixed?
[QUOTE=Kayoran;33296169]The error is simple. Nothing is returned and the exploiter isn't banned.[/QUOTE] Try game.ConsoleCommand("sm_ban "..sql.SQLStr(name).." 0 Exploiting. Nice Try\n") Pretty sure Sourcemod needs quotes around the name. EDIT: Does local name = ent:CPPIGetOwner():name() even work? You should really check your server console as it boots up, for any errors. You might be better doing: game.ConsoleCommand("sm_ban #"..pl:UserID().." 0 Exploiting. Nice Try\n") to avoid any problems with blank/duplicate names, etc.
If you are using Lexi's sourceban module this is tons easier. If you're not then why? [URL]http://lexi.org.uk/modules/sourcebans.html[/URL] [IMG]http://speedcap.net/img/Sam86/d22f7dc.png[/IMG] Makes it so damn easy to hook SourceBans into any Admin mod.
Sorry, you need to Log In to post a reply to this thread.