18.08.2012, 15:08
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.
Simples Cуdigo para exemplo de uso.
Vнdeo usando o cуdigo acima:
http://*********/AKrvqM0f_k8
Cуdigo fonte da Include:
Crйditos: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;
}
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;
}
Grupo RocksBrasil e iPs Team
[iPs]Ivanzicco / [JD]BlackCoder