Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.41 KB | None | 0 0
  1. /*
  2. *
  3. * "fuckCleo.inc" - #1 Anti-cleo mod include
  4. * Created/Debugged most by Lorenc_
  5. *
  6. * Thanks to:
  7. * Cessil, Infamous and [FeK]Drakins, JernejL
  8. *
  9. */
  10.  
  11. /* ** Stop Duplicating Code! ** */
  12. #if defined _fcleo_included
  13. #endinput
  14. #endif
  15. #pragma tabsize 0
  16. #define _fcleo_included
  17.  
  18. /* ** Includes ** */
  19. #include < a_samp >
  20.  
  21. /* ** Configuration ** */
  22. #define FC_FILE_VERSION "0.3.5" // Added the FC_
  23.  
  24. #define CLEO_FAKEKILL ( 1 )
  25. #define CLEO_CARWARP ( 2 )
  26. #define CLEO_PLAYERBUGGER ( 3 ) // This number will never be called from OnPlayerCleoDetected
  27. #define CLEO_CARSWING ( 4 )
  28. #define CLEO_CAR_PARTICLE_SPAM ( 5 )
  29.  
  30. /* ** Variables ** */
  31. enum E_CLEO_DATA
  32. {
  33. E_FK_LASTDEATH, E_FK_DEATHSPAM,
  34. E_CW_TIME, E_CW_VEHID,
  35. Float: E_PB_X, Float: E_PB_Y, Float: E_PB_Z,
  36. E_CPS_SPAMCOUNT, E_CPS_TICK
  37. };
  38.  
  39. static stock
  40. g_cleoData [ MAX_PLAYERS ] [ E_CLEO_DATA ],
  41.  
  42. bool: FC_OPU,
  43. bool: FC_OPD,
  44. bool: FC_OPSC,
  45. bool: FC_OVDSU,
  46. bool: FC_OPDC
  47. ;
  48.  
  49. /* ** Forwards ** */
  50. forward OnPlayerCleoDetected ( playerid, cleoid );
  51. forward fc_RepairVehicle ( vehicleid );
  52.  
  53. public fc_RepairVehicle( vehicleid )
  54. {
  55. #if defined _FOREACH_LOCAL_VERSION // I guess this is always defined in foreach.inc
  56. foreach(Player, playerid)
  57. {
  58. if( GetPlayerVehicleID( playerid ) == vehicleid ) {
  59. g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
  60. g_cleoData[ playerid ] [ E_CPS_TICK ] = 0;
  61. }
  62. }
  63. #else
  64. for( new playerid; playerid < MAX_PLAYERS; playerid++ )
  65. {
  66. if( IsPlayerConnected( playerid ) )
  67. {
  68. if( GetPlayerVehicleID( playerid ) == vehicleid ) {
  69. g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
  70. g_cleoData[ playerid ] [ E_CPS_TICK ] = 0;
  71. }
  72. }
  73. }
  74. #endif
  75. return RepairVehicle( vehicleid );
  76. }
  77. #define RepairVehicle fc_RepairVehicle
  78.  
  79. public OnVehicleDamageStatusUpdate( vehicleid, playerid )
  80. {
  81. static fc_tires, fc_lights;
  82. GetVehicleDamageStatus( vehicleid, fc_lights, fc_tires, fc_lights, fc_tires );
  83. if( GetPlayerState( playerid ) == PLAYER_STATE_DRIVER )
  84. {
  85. if( fc_lights || fc_tires )
  86. return 1;
  87.  
  88. new time = GetTickCount( );
  89. switch( time - g_cleoData[ playerid ] [ E_CPS_TICK ] )
  90. {
  91. case 0 .. 500:
  92. {
  93. g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] ++;
  94. if( g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] >= 10 )
  95. {
  96. CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_CAR_PARTICLE_SPAM );
  97. return 1;
  98. }
  99. }
  100. default: g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
  101. }
  102. g_cleoData[ playerid ] [ E_CPS_TICK ] = time;
  103. }
  104. return ( FC_OVDSU ) ? CallLocalFunction( "FC_OnVehicleDamageStatusUpdate", "dd", vehicleid, playerid ) : 1;
  105. }
  106.  
  107. #if defined ALS_OnVehicleDamageStatusUpdate
  108. #undef OnVehicleDamageStatusUpdate
  109. #else
  110. #define ALS_OnVehicleDamageStatusUpdate
  111. #endif
  112. #define OnVehicleDamageStatusUpdate FC_OnVehicleDamageStatusUpdate
  113. forward FC_OnVehicleDamageStatusUpdate( vehicleid, playerid );
  114.  
  115. public OnPlayerStateChange( playerid, newstate, oldstate )
  116. {
  117. if( newstate == PLAYER_STATE_DRIVER )
  118. {
  119. if( GetPlayerVehicleID( playerid ) != g_cleoData[ playerid ] [ E_CW_VEHID ] )
  120. {
  121. if( g_cleoData[ playerid ] [ E_CW_TIME ] > gettime( ) )
  122. {
  123. CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_CARWARP );
  124. return 1;
  125. }
  126. g_cleoData[ playerid ] [ E_CW_TIME ] = gettime( ) + 1;
  127. g_cleoData[ playerid ] [ E_CW_VEHID ] = GetPlayerVehicleID( playerid );
  128. }
  129. }
  130. return ( FC_OPSC ) ? CallLocalFunction( "FC_OnPlayerStateChange", "ddd", playerid, newstate, oldstate ) : 1;
  131. }
  132.  
  133. #if defined _ALS_OnPlayerStateChange
  134. #undef OnPlayerStateChange
  135. #else
  136. #define _ALS_OnPlayerStateChange
  137. #endif
  138. #define OnPlayerStateChange FC_OnPlayerStateChange
  139. forward FC_OnPlayerStateChange( playerid, newstate, oldstate );
  140.  
  141. public OnPlayerDeath( playerid, killerid, reason )
  142. {
  143. new time = gettime( );
  144. switch( time - g_cleoData[ playerid ] [ E_FK_LASTDEATH ] )
  145. {
  146. case 0 .. 3:
  147. {
  148. g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] ++;
  149. if( g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] >= 3 )
  150. {
  151. CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_FAKEKILL );
  152. return 1;
  153. }
  154. }
  155. default: g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] = 0;
  156. }
  157. g_cleoData[ playerid ] [ E_FK_LASTDEATH ] = time;
  158. return ( FC_OPD ) ? CallLocalFunction( "FC_OnPlayerDeath", "ddd", playerid, killerid, reason ) : 1;
  159. }
  160.  
  161. #if defined _ALS_OnPlayerDeath
  162. #undef OnPlayerDeath
  163. #else
  164. #define _ALS_OnPlayerDeath
  165. #endif
  166. #define OnPlayerDeath FC_OnPlayerDeath
  167. forward FC_OnPlayerDeath( playerid, killerid, reason );
  168.  
  169. public OnPlayerUpdate( playerid )
  170. {
  171. static
  172. Float: X, Float: Y, Float: Z,
  173. Float: vX, Float: vY, Float: vZ
  174. ;
  175. GetPlayerPos( playerid, X, Y, Z );
  176.  
  177. if( X >= 99999.0 || Y >= 99999.0 || Z >= 99999.0 || X <= -99999.0 || Y <= -99999.0 || Z <= -99999.0 ) {
  178. SendClientMessage( playerid, 0xa9c4e4ff, "Warning: Excessive X, Y, Z has been breached thus last location set." );
  179. SetPlayerPos( playerid, g_cleoData[ playerid ] [ E_PB_X ], g_cleoData[ playerid ] [ E_PB_Y ], g_cleoData[ playerid ] [ E_PB_Z ] );
  180. }
  181. else
  182. {
  183. g_cleoData[ playerid ] [ E_PB_X ] = X;
  184. g_cleoData[ playerid ] [ E_PB_Y ] = Y;
  185. g_cleoData[ playerid ] [ E_PB_Z ] = Z;
  186. }
  187.  
  188. if( IsPlayerInAnyVehicle( playerid ) && GetPlayerState( playerid ) == PLAYER_STATE_DRIVER )
  189. {
  190. GetPlayerPos( playerid, X, Y, Z );
  191. GetVehicleVelocity( GetPlayerVehicleID( playerid ), vX, vY, vZ );
  192. 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 ) )
  193. {
  194. CallLocalFunction( "OnPlayerCleoDetected", "dd", playerid, CLEO_CARSWING );
  195. }
  196. }
  197. return ( FC_OPU ) ? CallLocalFunction( "FC_OnPlayerUpdate", "d", playerid ) : 1;
  198. }
  199.  
  200. #if defined _ALS_OnPlayerUpdate
  201. #undef OnPlayerUpdate
  202. #else
  203. #define _ALS_OnPlayerUpdate
  204. #endif
  205. #define OnPlayerUpdate FC_OnPlayerUpdate
  206. forward FC_OnPlayerUpdate( playerid );
  207.  
  208. public OnPlayerDisconnect(playerid, reason)
  209. {
  210. // Pointless reseting, but just incase!
  211. g_cleoData[ playerid ] [ E_FK_LASTDEATH ] = 0;
  212. g_cleoData[ playerid ] [ E_FK_DEATHSPAM ] = 0;
  213. g_cleoData[ playerid ] [ E_CW_TIME ] = 0;
  214. g_cleoData[ playerid ] [ E_CW_VEHID ] = INVALID_VEHICLE_ID;
  215. g_cleoData[ playerid ] [ E_PB_X ] = -1;
  216. g_cleoData[ playerid ] [ E_PB_Y ] = -1;
  217. g_cleoData[ playerid ] [ E_PB_Z ] = -1;
  218. g_cleoData[ playerid ] [ E_CPS_SPAMCOUNT ] = 0;
  219. g_cleoData[ playerid ] [ E_CPS_TICK ] = 0;
  220. return ( FC_OPDC ) ? CallLocalFunction( "FC_OnPlayerDisconnect", "dd", playerid, reason ) : 1;
  221. }
  222.  
  223. #if defined _ALS_OnPlayerDisconnect
  224. #undef OnPlayerDisconnect
  225. #else
  226. #define _ALS_OnPlayerDisconnect
  227. #endif
  228. #define OnPlayerDisconnect FC_OnPlayerDisconnect
  229. forward FC_OnPlayerDisconnect( playerid, reason );
  230.  
  231. #if !defined FILTERSCRIPT
  232. public OnGameModeInit()
  233. {
  234. FC_OPU = ( funcidx( "FC_OnPlayerUpdate" ) != -1 );
  235. FC_OPD = ( funcidx( "FC_OnPlayerDeath" ) != -1 );
  236. FC_OPSC = ( funcidx( "FC_OnPlayerStateChange" ) != -1 );
  237. FC_OPDC = ( funcidx( "FC_OnPlayerDisconnect" ) != -1 );
  238. FC_OVDSU = ( funcidx( "FC_OnVehicleDamageStatusUpdate" ) != -1 );
  239. return ( funcidx( "FC_OnGameModeInit" ) != -1 ) ? CallLocalFunction( "FC_OnGameModeInit", "" ) : 1;
  240. }
  241. #if defined _ALS_OnGameModeInit
  242. #undef OnGameModeInit
  243. #else
  244. #define _ALS_OnGameModeInit
  245. #endif
  246. #define OnGameModeInit FC_OnGameModeInit
  247. forward FC_OnGameModeInit();
  248. #else
  249. public OnFilterScriptInit()
  250. {
  251. FC_OPU = ( funcidx( "FC_OnPlayerUpdate" ) != -1 );
  252. FC_OPD = ( funcidx( "FC_OnPlayerDeath" ) != -1 );
  253. FC_OPSC = ( funcidx( "FC_OnPlayerStateChange" ) != -1 );
  254. FC_OPDC = ( funcidx( "FC_OnPlayerDisconnect" ) != -1 );
  255. FC_OVDSU = ( funcidx( "FC_OnVehicleDamageStatusUpdate" ) != -1 );
  256. return ( funcidx( "FC_OnFilterScriptInit" ) != -1 ) ? CallLocalFunction( "FC_OnFilterScriptInit", "" ) : 1;
  257. }
  258. #if defined _ALS_OnFilterScriptInit
  259. #undef OnFilterScriptInit
  260. #else
  261. #define _ALS_OnFilterScriptInit
  262. #endif
  263. #define OnFilterScriptInit FC_OnFilterScriptInit
  264. forward FC_OnFilterScriptInit();
  265. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement