17.07.2012, 20:16
Hello Community,
Recently I've tried porting some of my anticheat functions to c++, but somehow I ran into a problem without any solution at least for the moment.
I have this code in my plugin which should communicate with the gamemode and report cheats detections:
C code that triggers cheat detection
here is my pawn callback code
When a weapon cheat is detected, I only get one warning sent to the admins in game, afther that, nothing.
This is what is printed in server_log:
playerid 14, violation 3 = weapon cheat, extrainfo 25 = weaponid 25.
Any idea why does this have a problem with passing data to the pawn public ?
Thank you in advance,
Mike.
Recently I've tried porting some of my anticheat functions to c++, but somehow I ran into a problem without any solution at least for the moment.
I have this code in my plugin which should communicate with the gamemode and report cheats detections:
pawn Код:
int eGACReport(int playerid,int violation, int extrainfo)
{
int amx_idx = 0;
for(list <AMX *>::iterator i = amx_list.begin(); i != amx_list.end(); ++i)
{
if(amx_FindPublic(*i, "EG_Detected", &amx_idx) == AMX_ERR_NONE)
{
amx_Push(* i, extrainfo);
amx_Push(* i, violation);
amx_Push(* i, playerid);
amx_Exec(* i, NULL, amx_idx);
logprintf("EG_Detected plyd: %d, violation: %d , extrainfo: %d!", playerid, violation, extrainfo);
return 1;
}
else logprintf("EG_Detected Error, function not found?");
}
return 0;
}
pawn Код:
if (weaponid == 46) continue; // parasuta
else if (WeaponSlot(weaponid) == 7 || WeaponSlot(weaponid) == 11 || GetPlayerSpecialAction(playerid) == 2) //SPECIAL_ACTION_USEJETPACK
{
eGACReport(playerid, eGAC_FORBIDDEN_WEAPON, weaponid);
break;
}
pawn Код:
forward EG_Detected(playerid,violation,extrainfo);
public EG_Detected(playerid,violation,extrainfo)
{
new string[MAXO_TEXT];
switch(violation)
{
case eGAC_FORBIDDEN_WEAPON:
{
format(string, sizeof(string), "[AdmWarn] %s has been kicked by eG-ACheat, armainterzisa: %d ", PlayerName[playerid], extrainfo);
ABroadCast(0xFFFF00AA,string,1);
}
}
return 1;
}
This is what is printed in server_log:
Код:
[23:14:48] EG_Detected Error, function not found? [23:14:48] EG_Detected Error, function not found? [23:14:48] EG_Detected plyd: 14, violation: 3 , extrainfo: 25! [23:14:53] EG_Detected Error, function not found? [23:14:53] EG_Detected Error, function not found? [23:14:53] EG_Detected plyd: 14, violation: 3 , extrainfo: 25! [23:14:58] EG_Detected Error, function not found? [23:14:58] EG_Detected Error, function not found? [23:14:58] EG_Detected plyd: 14, violation: 3 , extrainfo: 25!
Any idea why does this have a problem with passing data to the pawn public ?
Thank you in advance,
Mike.