Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * "fuckCleo.inc" - #1 Anti-cleo mod include
- * Created/Debugged most by Lorenc_
- *
- * Thanks to:
- * Cessil, Infamous and [FeK]Drakins, JernejL
- *
- */
- /* ** Stop Duplicating Code! ** */
- #if defined _fcleo_included
- #endinput
- #endif
- #define _fcleo_included
- /* ** Includes ** */
- #include < a_samp >
- /* ** Configuration ** */
- #define FC_FILE_VERSION "0.3.5" // Added the FC_
- #define CLEO_FAKEKILL ( 1 )
- #define CLEO_CARWARP ( 2 )
- #define CLEO_PLAYERBUGGER ( 3 ) // This number will never be called from OnPlayerCleoDetected
- #define CLEO_CARSWING ( 4 )
- #define CLEO_CAR_PARTICLE_SPAM ( 5 )
- /* ** Variables ** */
- enum E_CLEO_DATA
- {
- E_FK_LASTDEATH, E_FK_DEATHSPAM,
- E_CW_TIME, E_CW_VEHID,
- Float: E_PB_X, Float: E_PB_Y, Float: E_PB_Z,
- E_CPS_SPAMCOUNT, E_CPS_TICK
- };
- static stock
- g_cleoData [ MAX_PLAYERS ] [ E_CLEO_DATA ],
- bool: FC_OPU,
- bool: FC_OPD,
- bool: FC_OPSC,
- bool: FC_OVDSU,
- bool: FC_OPDC
- ;
- /* ** Forwards ** */
- forward OnPlayerCleoDetected ( playerid, cleoid );
- forward fc_RepairVehicle ( vehicleid );
- public fc_RepairVehicle( vehicleid )
- {
- #if defined _FOREACH_LOCAL_VERSION // I guess this is always defined in foreach.inc
- foreach(Player, playerid)
- {
- if( GetPlayerVehicleID( playerid ) == vehicleid ) {
- g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
- g_cleoData[ playerid ] [ E_CPS_TICK ] = 0;
- }
- }
- #else
- for( new playerid; playerid < MAX_PLAYERS; playerid++ )
- {
- if( IsPlayerConnected( playerid ) )
- {
- if( GetPlayerVehicleID( playerid ) == vehicleid ) {
- g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
- g_cleoData[ playerid ] [ E_CPS_TICK ] = 0;
- }
- }
- }
- #endif
- return RepairVehicle( vehicleid );
- }
- #define RepairVehicle fc_RepairVehicle
- public OnVehicleDamageStatusUpdate( vehicleid, playerid )
- {
- static fc_tires, fc_lights;
- GetVehicleDamageStatus( vehicleid, fc_lights, fc_tires, fc_lights, fc_tires );
- if( GetPlayerState( playerid ) == PLAYER_STATE_DRIVER )
- {
- if( fc_lights || fc_tires )
- return 1;
- new time = GetTickCount( );
- switch( time - g_cleoData[ playerid ] [ E_CPS_TICK ] )
- {
- case 0 .. 500:
- {
- g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] ++;
- if( g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] >= 10 )
- {
- CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_CAR_PARTICLE_SPAM );
- return 1;
- }
- }
- default: g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
- }
- g_cleoData[ playerid ] [ E_CPS_TICK ] = time;
- }
- return ( FC_OVDSU ) ? CallLocalFunction( "FC_OnVehicleDamageStatusUpdate", "dd", vehicleid, playerid ) : 1;
- }
- #if defined ALS_OnVehicleDamageStatusUpdate
- #undef OnVehicleDamageStatusUpdate
- #else
- #define ALS_OnVehicleDamageStatusUpdate
- #endif
- #define OnVehicleDamageStatusUpdate FC_OnVehicleDamageStatusUpdate
- forward FC_OnVehicleDamageStatusUpdate( vehicleid, playerid );
- public OnPlayerStateChange( playerid, newstate, oldstate )
- {
- if( newstate == PLAYER_STATE_DRIVER )
- {
- if( GetPlayerVehicleID( playerid ) != g_cleoData[ playerid ] [ E_CW_VEHID ] )
- {
- if( g_cleoData[ playerid ] [ E_CW_TIME ] > gettime( ) )
- {
- CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_CARWARP );
- return 1;
- }
- g_cleoData[ playerid ] [ E_CW_TIME ] = gettime( ) + 1;
- g_cleoData[ playerid ] [ E_CW_VEHID ] = GetPlayerVehicleID( playerid );
- }
- }
- return ( FC_OPSC ) ? CallLocalFunction( "FC_OnPlayerStateChange", "ddd", playerid, newstate, oldstate ) : 1;
- }
- #if defined _ALS_OnPlayerStateChange
- #undef OnPlayerStateChange
- #else
- #define _ALS_OnPlayerStateChange
- #endif
- #define OnPlayerStateChange FC_OnPlayerStateChange
- forward FC_OnPlayerStateChange( playerid, newstate, oldstate );
- public OnPlayerDeath( playerid, killerid, reason )
- {
- new time = gettime( );
- switch( time - g_cleoData[ playerid ] [ E_FK_LASTDEATH ] )
- {
- case 0 .. 3:
- {
- g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] ++;
- if( g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] >= 3 )
- {
- CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_FAKEKILL );
- return 1;
- }
- }
- default: g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] = 0;
- }
- g_cleoData[ playerid ] [ E_FK_LASTDEATH ] = time;
- return ( FC_OPD ) ? CallLocalFunction( "FC_OnPlayerDeath", "ddd", playerid, killerid, reason ) : 1;
- }
- #if defined _ALS_OnPlayerDeath
- #undef OnPlayerDeath
- #else
- #define _ALS_OnPlayerDeath
- #endif
- #define OnPlayerDeath FC_OnPlayerDeath
- forward FC_OnPlayerDeath( playerid, killerid, reason );
- public OnPlayerUpdate( playerid )
- {
- static
- Float: X, Float: Y, Float: Z,
- Float: vX, Float: vY, Float: vZ
- ;
- GetPlayerPos( playerid, X, Y, Z );
- if( X >= 99999.0 || Y >= 99999.0 || Z >= 99999.0 || X <= -99999.0 || Y <= -99999.0 || Z <= -99999.0 ) {
- SendClientMessage( playerid, 0xa9c4e4ff, "Warning: Excessive X, Y, Z has been breached thus last location set." );
- SetPlayerPos( playerid, g_cleoData[ playerid ] [ E_PB_X ], g_cleoData[ playerid ] [ E_PB_Y ], g_cleoData[ playerid ] [ E_PB_Z ] );
- }
- else
- {
- g_cleoData[ playerid ] [ E_PB_X ] = X;
- g_cleoData[ playerid ] [ E_PB_Y ] = Y;
- g_cleoData[ playerid ] [ E_PB_Z ] = Z;
- }
- if( IsPlayerInAnyVehicle( playerid ) && GetPlayerState( playerid ) == PLAYER_STATE_DRIVER )
- {
- GetPlayerPos( playerid, X, Y, Z );
- GetVehicleVelocity( GetPlayerVehicleID( playerid ), vX, vY, vZ );
- if( ( vX > 3.0 || vY > 3.0 || vZ > 3.0 || vX < -3.0 || vY < -3.0 || vZ < -3.0 ) && ( vX != X && vY != Y && vZ != Z ) )
- {
- CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_CARSWING );
- }
- }
- return ( FC_OPU ) ? CallLocalFunction( "FC_OnPlayerUpdate", "d", playerid ) : 1;
- }
- #if defined _ALS_OnPlayerUpdate
- #undef OnPlayerUpdate
- #else
- #define _ALS_OnPlayerUpdate
- #endif
- #define OnPlayerUpdate FC_OnPlayerUpdate
- forward FC_OnPlayerUpdate( playerid );
- public OnPlayerDisconnect(playerid, reason)
- {
- // Pointless reseting, but just incase!
- g_cleoData[ playerid ] [ E_FK_LASTDEATH ] = 0;
- g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] = 0;
- g_cleoData[ playerid ] [ E_CW_TIME ] = 0;
- g_cleoData[ playerid ] [ E_CW_VEHID ] = INVALID_VEHICLE_ID;
- g_cleoData[ playerid ] [ E_PB_X ] = -1;
- g_cleoData[ playerid ] [ E_PB_Y ] = -1;
- g_cleoData[ playerid ] [ E_PB_Z ] = -1;
- g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
- g_cleoData[ playerid ] [ E_CPS_TICK ] = 0;
- return ( FC_OPDC ) ? CallLocalFunction( "FC_OnPlayerDisconnect", "dd", playerid, reason ) : 1;
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect FC_OnPlayerDisconnect
- forward FC_OnPlayerDisconnect( playerid, reason );
- #if !defined FILTERSCRIPT
- public OnGameModeInit()
- {
- FC_OPU = ( funcidx( "FC_OnPlayerUpdate" ) != -1 );
- FC_OPD = ( funcidx( "FC_OnPlayerDeath" ) != -1 );
- FC_OPSC = ( funcidx( "FC_OnPlayerStateChange" ) != -1 );
- FC_OPDC = ( funcidx( "FC_OnPlayerDisconnect" ) != -1 );
- FC_OVDSU = ( funcidx( "FC_OnVehicleDamageStatusUpdate" ) != -1 );
- return ( funcidx( "FC_OnGameModeInit" ) != -1 ) ? CallLocalFunction( "FC_OnGameModeInit", "" ) : 1;
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit FC_OnGameModeInit
- forward FC_OnGameModeInit();
- #else
- public OnFilterScriptInit()
- {
- FC_OPU = ( funcidx( "FC_OnPlayerUpdate" ) != -1 );
- FC_OPD = ( funcidx( "FC_OnPlayerDeath" ) != -1 );
- FC_OPSC = ( funcidx( "FC_OnPlayerStateChange" ) != -1 );
- FC_OPDC = ( funcidx( "FC_OnPlayerDisconnect" ) != -1 );
- FC_OVDSU = ( funcidx( "FC_OnVehicleDamageStatusUpdate" ) != -1 );
- return ( funcidx( "FC_OnFilterScriptInit" ) != -1 ) ? CallLocalFunction( "FC_OnFilterScriptInit", "" ) : 1;
- }
- #if defined _ALS_OnFilterScriptInit
- #undef OnFilterScriptInit
- #else
- #define _ALS_OnFilterScriptInit
- #endif
- #define OnFilterScriptInit FC_OnFilterScriptInit
- forward FC_OnFilterScriptInit();
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement