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

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Include] rWeapon: Weapon Hack Protection (/showthread.php?tid=369923)



rWeapon: Weapon Hack Protection - [JD]BlackFire - 18.08.2012

rWeapon Hack Protect


Simples Include que irб monitorar as armas de todos os jogadores para saber se possui hack ou nгo, vamos ao que interessa.

Sempre que usada as Funзхes nativas do SA-MP , ex: GivePlayerWeapon, irб registrar a mudanзa no sistema, autorizando o uso.

Funзхes Adicionadas:

rCheckWeapon(playerid);
Checa se a arma atual do jogador estб autorizada pelo sistema.

rCheckWeaponEx(playerid);
Checa se todas as armas do jogador estгo autorizadas pelo sistema.

Callbacks Adicionadas:

public OnPlayerWeaponHack(playerid,weaponid,ammo)
Chamada ao detectar o jogador com arma nгo autorizada(hack).

public OnPlayerGiveWeapon(playerid,weaponid,ammo)
Chamada quando o jogador ganhar uma nova arma pelo servidor.

OBS: Caso Utilize outros scripts (filterscripts), que utilize funзхes nativas do SA-MP como GivePlayerWeapon, utilize este cуdigo na filterscript para funcionar corretamente.
pawn Код:
#define GivePlayerWeapon(%1,%2,%3)\
    CallRemoteFunction("rGivePlayerWeapon","ddd",%1,%2,%3)
#define ResetPlayerWeapons(%1)\
    CallRemoteFunction("rResetPlayerWeapons","d",%1)

Simples Cуdigo para exemplo de uso.
pawn Код:
public OnPlayerSpawn(playerid)
{
    GivePlayerWeapon(playerid,24,999);//entrega uma arma ao jogador e autoriza o uso.
    return true;
}

public OnPlayerUpdate(playerid)
{
    rWeaponCheck(playerid);//checa se a arma atual estб autorizada
    //rWeaponCheckEx(playerid);//checa se todas as armas estгo autorizadas
    return true;
}

public OnPlayerWeaponHack(playerid,weaponid,ammo)
{
    SendClientMessage(playerid,-1,"HACKER DE MERDA!!!");
    //BanEx(playerid,"WeaponHack");
    return true;
}
Vнdeo usando o cуdigo acima:
http://*********/AKrvqM0f_k8

Cуdigo fonte da Include:
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;
}
Crйditos:
Grupo RocksBrasil e iPs Team
[iPs]Ivanzicco / [JD]BlackCoder


Re: rWeapon: Weapon Hack Protection - FeelLikeASir_ - 18.08.2012

Esse WeaponSlot poderia ser feito com um switch nгo? ..

Bom.


Respuesta: rWeapon: Weapon Hack Protection - Digao - 18.08.2012

Nгo testado, mais parece funcional..

vou testaar

@first

@edit

segundo ¬¬'


Re: rWeapon: Weapon Hack Protection - @Riichard - 18.08.2012

Legal. Parabйns.


Re: rWeapon: Weapon Hack Protection - paulor - 18.08.2012

Isso vai dar erros:

pawn Код:
#undef ResetPlayerWeapons
ResetPlayerWeapons(playerid);
#define ResetPlayerWeapons(%1)\
rResetPlayerWeapons(%1)
Bem legal sua logica, Parece bem funcional, REP += 5.



Respuesta: Re: rWeapon: Weapon Hack Protection - [JD]BlackFire - 18.08.2012

Quote:
Originally Posted by paulor
Посмотреть сообщение
Isso vai dar erros:

pawn Код:
#undef ResetPlayerWeapons
ResetPlayerWeapons(playerid);
#define ResetPlayerWeapons(%1)\
rResetPlayerWeapons(%1)
Bem legal sua logica, Parece bem funcional, REP += 5.
funciona, apenas ficou se a cor azul no fуrum.


Re: Respuesta: Re: rWeapon: Weapon Hack Protection - paulor - 18.08.2012

Quote:
Originally Posted by [JD]BlackFire
Посмотреть сообщение
funciona, apenas ficou se a cor azul no fуrum.
A sim, nгo vi a parte superior da include:

pawn Код:
#define ResetPlayerWeapons(%1)\
    rResetPlayerWeapons(%1)



Re: rWeapon: Weapon Hack Protection - Mr.Hardy - 18.08.2012

Jб vi lуgicas anteriores jб lanзadas. Mais o seu pareзe estar sem nenhum bug.


Respuesta: rWeapon: Weapon Hack Protection - [JD]BlackFire - 18.08.2012

sim, o principal objetivo era nгo precisar fazer grandes modificaзхes no GameMode.


Re: rWeapon: Weapon Hack Protection - Maklister - 18.08.2012

Parece ser bem funcional irei testar =)