Спустя 8-с-лишним лет, откопал эту фигню у себя на харде и нашел этот форум.
Чуваки из этой темы могут наконец убедиться, что я(я создал ту тему под ником Pazzo) не врал им, и это действительно другой способ.
На сегодняшний день тот вариант крашера неактуален, но фильтрскрипт по-прежнему может обнаружить игроков, использующих некоторые виды loading, Ultra-fake kill, лаггер и прочие читы, использующие телепорт в транспорт и не только. Я сам писал такие читы когда-то, поэтому знаю, о чем говорю(да, я свинья: продавал читы на одних сайтах, а затем античиты к ним на других, но что поделать - все мы не без грешка, пусть публикация этого хоть немного отмоет мою совесть).
Возможно, какие-то участки кода уже неактуальны. Я забросил кодинг для SAMP, и уже давно не слежу за обновлениями.
Код:
//-------------------------------------------------
//
// Anti-Crasher Filterscript
// Shaggy 2011
//
//-------------------------------------------------
#pragma tabsize 0
#include <a_samp>
#include <core>
#define COLOR_RED 0xAA3333AA
#define COLOR_BLUE 0x0000FFAA
new CrEnter[MAX_PLAYERS] = 0;
new CrNotCr[MAX_PLAYERS] = 0;
new CrWasInCar[MAX_PLAYERS] = 0;
forward IsPlayerCrasher();
//-------------------------------------------------
public OnFilterScriptInit()
{
SetTimer("IsPlayerCrasher", 10, true);
}
public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys == 16 || oldkeys == 16 )
{
CrEnter[playerid] = 1;
CrNotCr[playerid] = 0;
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(playerid == killerid || playerid == INVALID_PLAYER_ID)
{
new string[256];
new CrpName[MAX_PLAYER_NAME];
GetPlayerName(playerid,CrpName,24);
SendClientMessage(playerid, COLOR_BLUE, "Ты кикнут за использование читов!");
Kick(playerid);
format(string,sizeof(string), "%s [ID:%d] кикнут(а) за Gay-kill!",CrpName,playerid);
SendClientMessageToAll(COLOR_RED,string);
}
}
public IsPlayerCrasher()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerInAnyVehicle(i))
{
CrWasInCar[i] = 1;
if(CrEnter[i] == 1)
{
CrEnter[i] = 0;
CrNotCr[i] = 1;
}
if(CrEnter[i] == 0)
{
if(CrNotCr[i] == 0)
{
new string[256];
new CrpName[MAX_PLAYER_NAME];
GetPlayerName(i,CrpName,24);
CrNotCr[i] = 1;
SendClientMessage(i, COLOR_BLUE, "Ты кикнут за использование читов!");
Kick(i);
format(string,sizeof(string), "%s [ID:%d] кикнут(а) за использования Crasher или Loading!",CrpName,i);
SendClientMessageToAll(COLOR_RED,string);
}
}
}
else
{
if(CrWasInCar[i] == 1)
{
CrWasInCar[i] = 0;
CrEnter[i] = 0;
CrNotCr[i] = 0;
}
}
}
return 1;
}
public OnPlayerEnterVehicle (playerid)
{
CrEnter[playerid] = 1;
CrNotCr[playerid] = 0;
new Float:crpX,Float:crpY,Float:crpZ;
GetPlayerPos(playerid,crpX,crpY,crpZ);
return 1;
}