SA-MP Forums Archive
[Include] rWeapon: Weapon Hack Protection v1.0 - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Filterscripts (https://sampforum.blast.hk/forumdisplay.php?fid=17)
+---- Forum: Includes (https://sampforum.blast.hk/forumdisplay.php?fid=83)
+---- Thread: [Include] rWeapon: Weapon Hack Protection v1.0 (/showthread.php?tid=416962)



rWeapon: Weapon Hack Protection v1.0 - [JD]BlackFire - 19.02.2013

rWeapon Hack Protection

Hi friends, i bring this time an include to protect your server for weapon hacks.

The system is much simple, just monitor the weapons of player.


Functions
pawn Код:
rCheckWeapon(playerid);// Check the current player weapon is registered in the server
rCheckWeaponEx(playerid);//check all weapons of player
Callbacks
pawn Код:
public OnPlayerWeaponHack(playerid,weaponid,ammo)//this callback is called when the player weapon checked is invalid under the server register
public OnPlayerGiveWeapon(playerid,weaponid,ammo)// this callback is called when the server give a new weapon for player
OBS: if you use others filterscripts in the server, add this in the filterscript if case use GivePlayerWeapon
pawn Код:
#define GivePlayerWeapon(%1,%2,%3)\
    CallRemoteFunction("rGivePlayerWeapon","ddd",%1,%2,%3)
#define ResetPlayerWeapons(%1)\
    CallRemoteFunction("rResetPlayerWeapons","d",%1)
Simple script for example to use
pawn Код:
public OnPlayerSpawn(playerid)
{
    GivePlayerWeapon(playerid,24,999);//give a player weapon and register the weapon in the server
    return true;
}

public OnPlayerUpdate(playerid)
{
    rWeaponCheck(playerid);//check the current weapon is registered and autorized in the server
    //rWeaponCheckEx(playerid);//check all weapons of the player if is registered in the server
    return true;
}

public OnPlayerWeaponHack(playerid,weaponid,ammo)
{
    SendClientMessage(playerid,-1,"You has used weapon hack mother fucker!");
    //BanEx(playerid,"WeaponHack");
    return true;
}
Video for example the script function
[ame]http://www.youtube.com/watch?v=AKrvqM0f_k8[/ame]

Include script
pawn Код:
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////                                                                                           /////////////
/////////////                              rWEAPON HACK PROTECT 0.1                      /////////////
/////////////                                                                                           /////////////
/////////////                   Desenvolvido por [iPs]Ivanzicco / [JD]BlackFire          /////////////
/////////////                                                                                           /////////////
/////////////                               http://www.rocksbrasil.com.br                /////////////
/////////////                             http://www.ips-team.forumeiros.com         /////////////
/////////////                                                                                           /////////////
/////////////                                                                                           /////////////
/////////////                                                                                           /////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
#define GivePlayerWeapon(%1,%2,%3)\
    rGivePlayerWeapon(%1,%2,%3)
#define ResetPlayerWeapons(%1)\
    rResetPlayerWeapons(%1)
forward OnPlayerGiveWeapon(playerid,weaponid,ammo);
forward OnPlayerWeaponHack(playerid,weaponid,ammo);
new rWeapon[MAX_PLAYERS][13];
new rAmmo[MAX_PLAYERS][13];
stock rGivePlayerWeapon(playerid,weaponid,ammo)
{
    if(rWeapon[playerid][WeaponSlot(weaponid)] == weaponid){
        rAmmo[playerid][WeaponSlot(weaponid)] += ammo;
    }else{
        rWeapon[playerid][WeaponSlot(weaponid)] = weaponid;
        rAmmo[playerid][WeaponSlot(weaponid)] = ammo;
    }

    #undef GivePlayerWeapon
    GivePlayerWeapon(playerid,weaponid,ammo);
    #define GivePlayerWeapon(%1,%2,%3)\
        rGivePlayerWeapon(%1,%2,%3)

    CallLocalFunction("OnPlayerGiveWeapon","ddd",playerid,weaponid,ammo);
    return true;
}
stock rWeaponCheck(playerid)
{
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)){
        new ammo,weaponid = GetPlayerWeapon(playerid);
        GetPlayerWeaponData(playerid,WeaponSlot(weaponid),weaponid,ammo);
        if((weaponid != 0) && ammo > rAmmo[playerid][WeaponSlot(weaponid)] || weaponid != rWeapon[playerid][WeaponSlot(weaponid)]){
            CallLocalFunction("OnPlayerWeaponHack","ddd",playerid,weaponid,ammo);
            new string[100];
            format(string,100,"--WeaponHack: '%s', Arma:%d , Muniзгo:%d",rPlayerName(playerid),weaponid,ammo);
            print(string);
            rLOG(string);
        }
        rWeapon[playerid][WeaponSlot(weaponid)] = weaponid;
        rAmmo[playerid][WeaponSlot(weaponid)] = ammo;
    }
    return true;
}
stock rWeaponCheckEx(playerid)
{
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)){
        for(new i;i<=12;i++){
            new ammo,weaponid;
            GetPlayerWeaponData(playerid,i,weaponid,ammo);
            if((weaponid != 0) && ammo > rAmmo[playerid][WeaponSlot(weaponid)] || weaponid != rWeapon[playerid][WeaponSlot(weaponid)]){
                CallLocalFunction("OnPlayerWeaponHack","ddd",playerid,weaponid,ammo);
                new string[100];
                format(string,100,"--WeaponHack: '%s', Arma:%d , Muniзгo:%d",rPlayerName(playerid),weaponid,ammo);
                print(string);
                rLOG(string);
            }
            rWeapon[playerid][WeaponSlot(weaponid)] = weaponid;
            rAmmo[playerid][WeaponSlot(weaponid)] = ammo;
        }
    }
}
stock rResetPlayerWeapons(playerid)
{
    for(new i; i<=12; i++)
    {
        rWeapon[playerid][i] = 0;
        rAmmo[playerid][i] = 0;
    }
    #undef ResetPlayerWeapons
    ResetPlayerWeapons(playerid);
    #define ResetPlayerWeapons(%1)\
        rResetPlayerWeapons(%1)
}
stock WeaponSlot(weaponid)
{
    if(weaponid == 0){return 0;}
    else if(weaponid == 1){return 0;}
    else if(weaponid == 2){return 1;}
    else if(weaponid == 3){return 1;}
    else if(weaponid == 4){return 1;}
    else if(weaponid == 5){return 1;}
    else if(weaponid == 6){return 1;}
    else if(weaponid == 7){return 1;}
    else if(weaponid == 8){return 1;}
    else if(weaponid == 9){return 1;}
    else if(weaponid == 10){return 10;}
    else if(weaponid == 11){return 10;}
    else if(weaponid == 12){return 10;}
    else if(weaponid == 13){return 10;}
    else if(weaponid == 14){return 10;}
    else if(weaponid == 15){return 10;}
    else if(weaponid == 16){return 8;}
    else if(weaponid == 17){return 8;}
    else if(weaponid == 18){return 8;}
    else if(weaponid == 22){return 2;}
    else if(weaponid == 23){return 2;}
    else if(weaponid == 24){return 2;}
    else if(weaponid == 25){return 3;}
    else if(weaponid == 26){return 3;}
    else if(weaponid == 27){return 3;}
    else if(weaponid == 28){return 4;}
    else if(weaponid == 29){return 4;}
    else if(weaponid == 30){return 5;}
    else if(weaponid == 31){return 5;}
    else if(weaponid == 32){return 4;}
    else if(weaponid == 33){return 6;}
    else if(weaponid == 34){return 6;}
    else if(weaponid == 35){return 7;}
    else if(weaponid == 36){return 7;}
    else if(weaponid == 37){return 7;}
    else if(weaponid == 38){return 7;}
    else if(weaponid == 39){return 8;}
    else if(weaponid == 40){return 12;}
    else if(weaponid == 41){return 9;}
    else if(weaponid == 42){return 9;}
    else if(weaponid == 43){return 9;}
    else if(weaponid == 44){return 11;}
    else if(weaponid == 45){return 11;}
    else if(weaponid == 46){return 11;}
    else {return false;}
}
stock rLOG(log[])
{
    new File:file=fopen("rWeapon.log", io_append);
    if(file && strlen(log) > 1)
    {
        new dia,mes,ano,hora,minuto,segundo;
        getdate(ano,mes,dia);
        gettime(hora,minuto,segundo);
        format(log,1000,"[%02d/%02d/%04d - %02d:%02d:%02d] %s\r\n",dia,mes,ano,hora,minuto,segundo,log);
        fwrite(file,log);
    }
    fclose(file);
}
stock rPlayerName(playerid)
{
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    return name;
}
Alert:To use this script is necessary to you deactivate all forms to the player give weapons without the server using GivePlayerWeapon
To view the official post in Portuguese https://sampforum.blast.hk/showthread.php?tid=369923
Sorry for the bad english!

Credits to:
RocksBrasil Group
iPs Team
[JD]BlackFire



Re: rWeapon: Weapon Hack Protection v1.0 - freddy smyth - 21.02.2013

Your english is fine. This looks nice. I hate pesky weapon hackers.


Re: rWeapon: Weapon Hack Protection v1.0 - dEcooR - 21.07.2013

And it is works? :d im scared of this anti hacks .. im using this https://sampforum.blast.hk/showthread.php?tid=319800 and it sometimes check hack too and i dont have any sobiet or what so not 100% .. :S


Re: rWeapon: Weapon Hack Protection v1.0 - SuperViper - 21.07.2013

EDIT: Just realized that this thread was bumped from 5 months ago, nevermind.