Code:
#define WEAPON_UNARMED ( 0 ) enum eCBugPlayerInfo { bool:isCrouched, bool:isFiring, iCrouchTime, iLastFire, iLastFiring, iLastStrafeFire }; new CBugPlayerInfo[ MAX_PLAYERS ][ eCBugPlayerInfo ]; OnGameModeInit( ) { new iTick = GetTickCount( ); for ( new i = 0; i < MAX_PLAYERS; i++ ) { CBugPlayerInfo[ i ][ isCrouched ] = false; CBugPlayerInfo[ i ][ iLastFire ] = iTick; CBugPlayerInfo[ i ][ iLastStrafeFire ] = iTick; } return 1; } OnPlayerConnect( playerid ) { new iTick = GetTickCount( ); CBugPlayerInfo[ playerid ][ isCrouched ] = false; CBugPlayerInfo[ playerid ][ isFiring ] = false; CBugPlayerInfo[ playerid ][ iLastFire ] = iTick; CBugPlayerInfo[ playerid ][ iLastFiring ] = iTick; CBugPlayerInfo[ playerid ][ iLastStrafeFire ] = iTick; return 1; } OnPlayerUpdate( playerid ) { new iTick = GetTickCount( ), iAnimationIndex = GetPlayerAnimationIndex( playerid ), iWeapon = GetPlayerWeapon( playerid ), iKeys, iKeysUD, iKeysLR ; GetPlayerKeys( playerid, iKeys, iKeysUD, iKeysLR ); if ( ( iKeys & KEY_FIRE ) || ( ( iKeys & KEY_ACTION ) && ( iKeys & KEY_AIM ) ) ) { CBugPlayerInfo[ playerid ][ iLastFire ] = iTick; if ( !CBugPlayerInfo[ playerid ][ isFiring ] ) { CBugPlayerInfo[ playerid ][ isFiring ] = true; CBugPlayerInfo[ playerid ][ iLastFiring ] = iTick; } } else if ( CBugPlayerInfo[ playerid ][ isFiring ] ) CBugPlayerInfo[ playerid ][ isFiring ] = false; switch ( iAnimationIndex ) { case 1274: // WEAPON_CROUCH { if ( !CBugPlayerInfo[ playerid ][ isCrouched ] ) { CBugPlayerInfo[ playerid ][ isCrouched ] = true; CBugPlayerInfo[ playerid ][ iCrouchTime ] = iTick; } if ( iWeapon && ( iKeys & KEY_FIRE ) && iTick - CBugPlayerInfo[ playerid ][ iCrouchTime ] > 300 ) ClearAnimations( playerid ); } case 1160 .. 1163, 1167: // GUNMOVE_L/R/FWD/BWD, GUN_STAND { if ( ( iKeys & KEY_FIRE ) ) { switch ( iWeapon ) { case WEAPON_SILENCED, WEAPON_DEAGLE, WEAPON_SHOTGUN, WEAPON_SHOTGSPA, WEAPON_MP5, WEAPON_M4, WEAPON_AK47, WEAPON_RIFLE, WEAPON_SNIPER: { CBugPlayerInfo[ playerid ][ iLastStrafeFire ] = iTick; } } } } case 1231, // RUN_PLAYER 1223, // RUN_ARMED 1141, // FIGHTA_M 478, // FIGHTB_M 489, // FIGHTC_M 500, // FIGHTD_M 759, // KNIFE_PART 27, // BAT_PART 1554 // SWORD_PART : { switch ( GetWeaponSlot( iWeapon ) ) { case 0, 1, 8, 9, 10, 11, 12: { } default: { if ( ( iKeys & KEY_AIM ) && ( iKeys & KEY_ACTION ) ) { ClearAnimations( playerid ); return 2; } else if ( CBugPlayerInfo[ playerid ][ isFiring ] && iTick - CBugPlayerInfo[ playerid ][ iLastFiring ] > 150 ) { ClearAnimations( playerid ); return 2; } } } } } if ( ( iKeys & KEY_CROUCH ) && iTick - CBugPlayerInfo[ playerid ][ iLastStrafeFire ] < 500 ) { ClearAnimations( playerid ); ApplyAnimation( playerid, "PED", "XPRESSscratch", 0.0, 1, 0, 0, 0, 500 - ( iTick - CBugPlayerInfo[ playerid ][ iLastStrafeFire ] ), 1 ); return 2; } if ( CBugPlayerInfo[ playerid ][ isCrouched ] && iAnimationIndex != 1274 ) // WEAPON_CROUCH CBugPlayerInfo[ playerid ][ isCrouched ] = false; return 1; }
Put them in your gamemode accordingly.
[FilterScript] Anti Crouch Bug
Aucun commentaire:
Enregistrer un commentaire