Quote:
Originally Posted by TwinkiDaBoss
Why are you making an entire callback for SendToAdmin(color,Message[]); ?
Just create it as a function...
|
All public functions are NOT callbacks. In his current code, SendToAdmin is just a function which is accesssible outside the script.
Quote:
Originally Posted by TwinkiDaBoss
You dont need both
and
Just use the != INVALID_PLAYER_ID
|
You will never reach that iteration. Read my previous reply.
Quote:
Originally Posted by TwinkiDaBoss
Also, since I see that you are using the basic method for GetPlayerHeath to detect if they have over 100 hp etc. Do something about this
pawn Code:
format(string,sizeof(string),"[ANTI-CHEAT]: %s is health-hacking. (Server health limit: 99) (Player's health: %d)",name,health); SendToAdmin(COLOR_RED,string);
|
I forgot to mention in my previous post that even if you set health to 99.0, it needn't be updated for various reasons (packet loss). The player by default gets 100.0 HP on spawn.
Quote:
Originally Posted by TwinkiDaBoss
Because if someone gets detected as a hacker, this will send like 4 messages a second since you dont have a check to see if he was already confirmed a hacker or not
You could just do something like
pawn Code:
new bool:isAHacker[MAX_PLAYERS];
public OnPlayerConnect(playerid) { isAHacker[playerid] = false; }
And then when you want to check if he is a hacking or not, check if he was already marked as a hacker
pawn Code:
if(isAHacker[playerid] == false) //now check
and when you want to set him as a hacker?
pawn Code:
isAHacker[playerid] = true;
|
He must use variables to count warnings. For every N number of warnings, a warning should be sent to the administrators. False detections happen often.