43 lines
1.4 KiB
Plaintext
43 lines
1.4 KiB
Plaintext
|
/*
|
||
|
* Irresistible Gaming (c) 2018
|
||
|
* Developed by Lorenc Pekaj
|
||
|
* Module: anticheat/pickup_spam.pwn
|
||
|
* Purpose: checks if a player enters a bunch of pickups really fast
|
||
|
*/
|
||
|
|
||
|
/* ** Includes ** */
|
||
|
#include < YSI\y_hooks >
|
||
|
|
||
|
/* ** Variables ** */
|
||
|
static stock
|
||
|
LastPickupTimestamp [ MAX_PLAYERS ],
|
||
|
PreviousPickupID [ MAX_PLAYERS ],
|
||
|
Float: p_LastPickupPos [ MAX_PLAYERS ] [ 3 ];
|
||
|
|
||
|
/* ** Hooks ** */
|
||
|
hook OnPlayerPickUpDynPickup( playerid, pickupid )
|
||
|
{
|
||
|
if ( pickupid != PreviousPickupID[ playerid ] )
|
||
|
{
|
||
|
new
|
||
|
iTimestamp = gettime( ); // Call it once, because swag
|
||
|
|
||
|
if ( LastPickupTimestamp[ playerid ] > iTimestamp )
|
||
|
{
|
||
|
new
|
||
|
Float: distance = GetPlayerDistanceFromPoint( playerid, p_LastPickupPos[ playerid ] [ 0 ], p_LastPickupPos[ playerid ] [ 1 ], p_LastPickupPos[ playerid ] [ 2 ] );
|
||
|
|
||
|
//if ( distance < 50.0 ) printf( "[AC WARN] Player ID %d has entered a pickup near him really fast. (distance: %0.2fm, time: %ds)", playerid, distance, LastPickupTimestamp[ playerid ] - iTimestamp );
|
||
|
if ( distance > 50.0 )
|
||
|
{
|
||
|
CallLocalFunction( "OnPlayerCheatDetected", "ddd", playerid, CHEAT_TYPE_PICKUP_SPAM, 0 );
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
LastPickupTimestamp[ playerid ] = iTimestamp + 1;
|
||
|
PreviousPickupID[ playerid ] = pickupid;
|
||
|
}
|
||
|
GetPlayerPos( playerid, p_LastPickupPos[ playerid ] [ 0 ], p_LastPickupPos[ playerid ] [ 1 ], p_LastPickupPos[ playerid ] [ 2 ] );
|
||
|
return 1;
|
||
|
}
|