// Anti FakeKill Flood by RuNix
#include <a_samp>
new XDeaths[MAX_PLAYERS];
new LastDeath[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n----------------------------------------");
print(" Anti FakeKill Flood FilterScript by RuNix");
print("----------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
XDeaths[playerid] = 0;
LastDeath[playerid] = 0;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(XDeaths[playerid] == 0)
{
LastDeath[playerid] = gettime();
}
XDeaths[playerid]++;
if(XDeaths[playerid] == 5)
{
if((gettime() - LastDeath[playerid]) <= 5)
{
SendClientMessage(playerid,0,"{FFBF00}Hey n0b, flood your mother!");
BanEx(playerid,"Banned for FakeKill Flood");
}else
if((gettime() - LastDeath[playerid]) > 5)
{
XDeaths[playerid]=0;
}
}
return 1;
}
new bool:PlayerShotedPlayer[MAX_PLAYERS][MAX_PLAYERS]; //> (PlayerShotedPlayer[killer][player])
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID && playerid != INVALID_PLAYER_ID)
{
PlayerShotedPlayer[issuerid][playerid] = true; //>issuerid gave damage to player id, so set variable true
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
if(PlayerShotedPlayer[killerid][playerid] == false)
{
//Kick or ban playerid (cheater) Here
}
}
//if playerid wasn't cheater so .. let's reset damage variable
for(new i = 0; i < MAX_PLAYERS; i++)
{
PlayerShotedPlayer[i][playerid] = false;
}
return 1;
}

|
you can check time between deaths with "GetTickCount()"
but for more accuracy: if i kill someone, i have to give damage to him/her ! so make a variable and check player has received any damage or no i'll give you a simple example (explained in code with comments) Код:
new bool:PlayerShotedPlayer[MAX_PLAYERS][MAX_PLAYERS]; //> (PlayerShotedPlayer[killer][player])
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID && playerid != INVALID_PLAYER_ID)
{
PlayerShotedPlayer[issuerid][playerid] = true; //>issuerid gave damage to player id, so set variable true
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
if(PlayerShotedPlayer[killerid][playerid] == false)
{
//Kick or ban playerid (cheater) Here
}
}
//if playerid wasn't cheater so .. let's reset damage variable
for(new i = 0; i < MAX_PLAYERS; i++)
{
PlayerShotedPlayer[i][playerid] = false;
}
return 1;
}
but please read code and learn Down With Cheaters ![]() Good Luck |