View Single Post
sPed
Member
Join Date: May 2017
Location: Algeria
Old 12-15-2022 , 14:41   Re: Server Side Anticheat
Reply With Quote #2

use this to figure if someone using cheat's
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
 
#define PLUGIN "Cerere wCD"
#define VERSION "1.1"
#define AUTHOR "DanN / LiOn"
 
#define TAG "WarGods"
 
#define MOTD_LOCATION "addons/amxmodx/configs/wcdinfo.html"
 
new bool:hascan[33], cvars[3]
new 
store_team
 
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
 
    
register_clcmd("say""cmd_say")
    
register_clcmd("say_team""cmd_say")
 
    
cvars[0] = register_cvar("wcd_disconnect_ban""1")
    
cvars[1] = register_cvar("wcd_minim_acces_flag""c"// kick acces
    
cvars[2] = register_cvar("wcd_time_for_ban""2")
 
    
register_dictionary("wcd_scan.txt")
}
 
public 
client_connect(id)
{
    
hascan[id] = false
}
 
public 
client_disconnect(id)
{
    if(
hascan[id] && get_pcvar_num(cvars[0]) == 1)
    {
        new 
ip[32]
        
get_user_ip(idipcharsmax(ip), 1)
 
        
hascan[id] = false
        server_print
("%s"ip)
        
client_cmd(0"spk ^"vox/bizwarn eliminated") 
        server_cmd("
addip %%s;writeip",get_pcvar_num(cvars[2]), ip)
        server_exec()
    }
}
 
 
public cmd_say(id)
{
    new szSaid[192]
    read_args(szSaid, charsmax(szSaid))
    remove_quotes(szSaid)
 
    if(contain(szSaid, "
/scan") != -1)
    {
        if(get_user_flags(id) & get_pcvar_flags(cvars[1]))
        {
            new target[32]
            copy(target, sizeof(target) -1, szSaid[6])
            new player = cmd_target(id, target, 2)
 
            if(player)
            {
                new pname[32], admin[32]
                get_user_name(player, pname, charsmax(pname))
                get_user_name(id, admin, charsmax(admin))
 
                if(hascan[player])
                {
                    ColorChat(id, "
!g[%s]!y You already requested a scan for this player!", TAG)
                    return PLUGIN_HANDLED
                }
                else
                {
                    new timer[64]
                    get_time("
%d/%m/%- %H:%M:%S", timer, charsmax(timer))
                    hascan[player] = true
                    store_team = get_user_team(player)
                    user_silentkill(player)
                    cs_set_user_team(player, CS_TEAM_SPECTATOR)
                    ColorChat(0, "
!g[%s]!y Admin !g[%s]!y requests an WCD scan for player !g[%s]!yDate : !g%s", TAG, admin, pname, timer)
                    ColorChat(0, "
!g[%s]!y Download link !gwww.wargods.ro/wcd/download.php", TAG)
                    ColorChat(0, "
!g[%s]!If you don't know how to do an WCD scan, type in chat !g/wcd!y or !g/infowcd!y !", TAG)
                    client_cmd(id, "snapshot")
                    return PLUGIN_CONTINUE
                }
            }
            else
            {
                ColorChat(id, "!g[%s]!y The specified player is inexistent!", TAG)
                return PLUGIN_HANDLED
            }
        }
    }
    else if(contain(szSaid, "/clean") != -1)
    {
        if(get_user_flags(id) & get_pcvar_flags(cvars[1]))
        {
            new target[32]
            copy(target, charsmax(target), szSaid[7])
            new player = cmd_target(id, target, 2)
 
            if(player)
            {
                new pname[32]
                get_user_name(player, pname, charsmax(pname))
                cs_set_user_team(player, store_team)
                hascan[player] = false
 
                ColorChat(0, "!g[%s]!y The player !g[%s]!y is clean after WCD scan !", TAG, pname)
                return PLUGIN_CONTINUE
            }
            else
            {
                ColorChat(id, "!g[%s]!y The specified player is inexistent!", TAG)
                return PLUGIN_HANDLED
            }
        }
    }
    else if(equal(szSaid, "/infowcd") || equal(szSaid, "/wcd"))
    {
        show_motd(id, MOTD_LOCATION)
    }
 
    return PLUGIN_CONTINUE
}
 
 
 
stock ColorChat(const id, const input[], any:...)
{
    new Count = 1, Players[32];
    static Msg[191];
    vformat(Msg, 190, input, 3);
 
    replace_all(Msg, 190, "!g", "^4");
    replace_all(Msg, 190, "!y", "^1");
    replace_all(Msg, 190, "!t", "^3");
 
    if(id) Players[0] = id; else get_players(Players, Count, "ch");
    {
        for (new i = 0; i < Count; i++)
        {
            if (is_user_connected(Players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, Players[i]);
                write_byte(Players[i]);
                write_string(Msg);
                message_end();
            }
        }
    }
    return PLUGIN_HANDLED


Last edited by sPed; 12-15-2022 at 14:41.
sPed is offline