From 05ac015a113b0446095a92d6c6334bef68896ff9 Mon Sep 17 00:00:00 2001 From: Lorenc Date: Sat, 31 Mar 2018 01:20:37 +1100 Subject: [PATCH] boxing bug fixes --- gamemodes/sf-cnr.pwn | 2 ++ .../irresistible/features/visage/boxing.inc | 33 ++++++++++++------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/gamemodes/sf-cnr.pwn b/gamemodes/sf-cnr.pwn index c229ba5..4ed25db 100644 --- a/gamemodes/sf-cnr.pwn +++ b/gamemodes/sf-cnr.pwn @@ -14202,6 +14202,7 @@ CMD:c4( playerid, params[ ] ) if ( IsPlayerCuffed( playerid ) ) return SendError( playerid, "You cannot use this command since you're cuffed." ); if ( IsPlayerTied( playerid ) ) return SendError( playerid, "You cannot use this command since you're tied." ); if ( IsPlayerKidnapped( playerid ) ) return SendError( playerid, "You cannot use this command since you're kidnapped." ); + if ( IsPlayerInCasino( playerid ) ) return SendError( playerid, "You cannot use this command since you're in a casino." ); if ( IsPlayerInPaintBall( playerid ) ) return SendError( playerid, "You cannot use this command since you're in paintball." ); if ( p_C4Amount[ playerid ] < 1 ) return SendError( playerid, "You don't have any C4's" ); @@ -30783,6 +30784,7 @@ stock CreateLoopingAnimation( playerid, animlib[ ], animname[ ], Float:Speed, lo else if ( IsPlayerPlayingPoker( playerid ) ) return SendError( playerid, "You cannot use this command since you're playing poker." ); else if ( IsPlayerInWater( playerid ) ) return SendError( playerid, "You cannot use this command since you're in water." ); else if ( IsPlayerMining( playerid ) ) return SendError( playerid, "You cannot use this command since you're mining." ); + else if ( IsPlayerBoxing( playerid ) ) return SendError( playerid, "You cannot use this command since you're boxing." ); else if ( IsPlayerInEvent( playerid ) ) return SendError( playerid, "You cannot use this command since you're in an event." ); else if ( GetPlayerAnimationIndex( playerid ) == 1660 ) return SendError( playerid, "You cannot use this command since you're using a vending machine." ); else if ( IsPlayerAttachedObjectSlotUsed( playerid, 0 ) ) return SendError( playerid, "You cannot use this command since you're robbing." ); diff --git a/pawno/include/irresistible/features/visage/boxing.inc b/pawno/include/irresistible/features/visage/boxing.inc index 4cfa65e..b3de05b 100644 --- a/pawno/include/irresistible/features/visage/boxing.inc +++ b/pawno/include/irresistible/features/visage/boxing.inc @@ -62,9 +62,17 @@ hook OnPlayerConnect( playerid ) { } hook OnPlayerDisconnect( playerid, reason ) { - if ( g_boxingPlayerData[ playerid ] [ E_FIGHTING ] ) { - boxing_ForfeitMatch( playerid, g_boxingPlayerData[ playerid ] [ E_OPPONENT ] ); - } + boxing_ForfeitMatch( playerid, g_boxingPlayerData[ playerid ] [ E_OPPONENT ] ); + return 1; +} + +#if defined AC_INCLUDED +hook OnPlayerDeathEx( playerid, killerid, reason, Float: damage, bodypart ) +#else +hook OnPlayerDeath( playerid, killerid, reason ) +#endif +{ + boxing_ForfeitMatch( playerid, g_boxingPlayerData[ playerid ] [ E_OPPONENT ] ); return 1; } @@ -224,13 +232,10 @@ CMD:boxing( playerid, params[ ] ) { return ResetBoxingPlayerVariables( playerid, opponent ); } else if ( !strcmp( params, "forfeit", true, 7 ) ) { - - new opponent = g_boxingPlayerData[ playerid ] [ E_OPPONENT ]; - - if ( g_boxingPlayerData[ playerid ] [ E_FIGHTING ] == false ) + if ( ! boxing_ForfeitMatch( playerid, g_boxingPlayerData[ playerid ] [ E_OPPONENT ] ) ) { return SendError( playerid, "You're not fighting anyone." ); - - return boxing_ForfeitMatch( playerid, opponent ); + } + return 1; } return SendUsage( playerid, "/boxing [FIGHT/CANCEL/ACCEPT/DECLINE/FORFEIT]" ); } @@ -305,7 +310,7 @@ stock EndMatch( playerid, targetID ) { if ( g_boxingArenaData[ E_BET ] <= 0 ) { SendBoxingGlobal( "%s has won a boxing match against %s with a final score of %i!", ReturnPlayerName( winnerid ), ReturnPlayerName( loserid ), g_boxingPlayerData[ winnerid ] [ E_SCORE ] ); } else { - new winning_prize = floatround( float( g_boxingArenaData[ E_BET ] ) * 1.8 ); // We take 10% of the total pot + new winning_prize = floatround( float( g_boxingArenaData[ E_BET ] ) * 1.9 ); // We take 5% of the total pot GivePlayerCash( winnerid, winning_prize ); SendBoxingGlobal( "%s has won a boxing match against %s for %s with a final score of %i!", ReturnPlayerName( winnerid ), ReturnPlayerName( loserid ), number_format( g_boxingArenaData[ E_BET ] ), g_boxingPlayerData[ winnerid ] [ E_SCORE ] ); } @@ -324,6 +329,11 @@ stock EndMatch( playerid, targetID ) { stock boxing_RestorePlayer( playerid ) { + // user reported 0xff health, maybe spawn protection + if ( g_boxingPlayerData[ playerid ] [ E_PRIOR_HEALTH ] > 100.0 ) g_boxingPlayerData[ playerid ] [ E_PRIOR_HEALTH ] = 100.0; + if ( g_boxingPlayerData[ playerid ] [ E_PRIOR_ARMOUR ] > 100.0 ) g_boxingPlayerData[ playerid ] [ E_PRIOR_ARMOUR ] = 100.0; + + // set prior health SetPlayerHealth( playerid, g_boxingPlayerData[ playerid ] [ E_PRIOR_HEALTH ] ); SetPlayerArmour( playerid, g_boxingPlayerData[ playerid ] [ E_PRIOR_ARMOUR ] ); SetPlayerSkin( playerid, g_boxingPlayerData[ playerid ] [ E_PRIOR_SKIN ] ); @@ -335,6 +345,8 @@ stock boxing_RestorePlayer( playerid ) } stock boxing_ForfeitMatch( playerid, targetID ) { + if ( ! g_boxingPlayerData[ playerid ] [ E_FIGHTING ] ) return 0; + if ( g_boxingArenaData[ E_BET ] == 0 ) { SendBoxingGlobal( "%s has won a boxing match by forfeit against %s.", ReturnPlayerName( targetID ), ReturnPlayerName( playerid ) ); } else if ( g_boxingArenaData[ E_BET ] > 0 ) { @@ -352,7 +364,6 @@ stock boxing_ForfeitMatch( playerid, targetID ) { ResetBoxingArenaVariables(); ResetBoxingPlayerVariables( playerid, targetID ); - UpdateDynamic3DTextLabelText( arenaLabel, COLOR_GREY, "Boxing Arena\n"COL_WHITE"/boxing fight" ); return 1; }