Eisenhower
Новичок
Мой первый Anti NOP (в виде filterscript'а).
Проверки на АФК и т.д. доделывайте уже сами, я вырезал это, оставив основной код.
Критика приветствуется.
Что думаете?
Проверки на АФК и т.д. доделывайте уже сами, я вырезал это, оставив основной код.
Критика приветствуется.
Код:
#if defined __anti_nop_spawnplayer_defined
#endinput
#endif
#define __anti_nop_spawnplayer_defined
#include <a_samp>
static
gNopSpawnPlayerTimer [ MAX_PLAYERS ],
gPlayerSpawn [ MAX_PLAYERS char ];
stock spawnPlayer( const playerid )
{
gPlayerSpawn{ playerid } = 1;
gNopSpawnPlayerTimer[ playerid ] = SetTimerEx( !"OnPlayerSpawnEx", GetPlayerPing( playerid ) + 1000, 0, !"i", playerid );
SpawnPlayer( playerid );
return 1;
}
#define SpawnPlayer spawnPlayer
forward OnPlayerSpawnEx( const playerid );
public OnPlayerSpawnEx( const playerid )
{
if( gPlayerSpawn{ playerid } == 1 && gNopSpawnPlayerTimer[ playerid ] != 0 )
{
KillTimer( gNopSpawnPlayerTimer[ playerid ] );
gNopSpawnPlayerTimer[ playerid ] = 0;
// если выявлен NOP...
}
return 1;
}
public OnPlayerConnect( playerid )
{
KillTimer( gNopSpawnPlayerTimer[ playerid ] );
gNopSpawnPlayerTimer[ playerid ] =
gPlayerSpawn{ playerid } = 0;
#if defined ansp__OnPlayerConnect
ansp__OnPlayerConnect( playerid );
#endif
return 1;
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect ansp__OnPlayerConnect
#if defined ansp__OnPlayerConnect
forward ansp__OnPlayerConnect( playerid );
#endif
public OnPlayerDisconnect( playerid, reason )
{
KillTimer( gNopSpawnPlayerTimer[ playerid ] );
gNopSpawnPlayerTimer[ playerid ] =
gPlayerSpawn{ playerid } = 0;
#if defined ansp__OnPlayerDisconnect
ansp__OnPlayerDisconnect( playerid );
#endif
return 1;
}
#if defined _ALS_OnPlayerDisconnect
#undef OnPlayerDisconnect
#else
#define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect ansp__OnPlayerDisconnect
#if defined ansp__OnPlayerDisconnect
forward ansp__OnPlayerDisconnect( playerid, reason );
#endif
public OnPlayerSpawn( playerid )
{
KillTimer( gNopSpawnPlayerTimer[ playerid ] );
gNopSpawnPlayerTimer[ playerid ] =
gPlayerSpawn{ playerid } = 0;
#if defined ansp__OnPlayerSpawn
ansp__OnPlayerSpawn( playerid );
#endif
return 1;
}
#if defined _ALS_OnPlayerSpawn
#undef OnPlayerSpawn
#else
#define _ALS_OnPlayerSpawn
#endif
#define OnPlayerSpawn ansp__OnPlayerSpawn
#if defined ansp__OnPlayerSpawn
forward ansp__OnPlayerSpawn( playerid );
#endif
