boxing bug fixes

This commit is contained in:
Lorenc 2018-03-31 01:20:37 +11:00
parent c2bde742c2
commit 05ac015a11
2 changed files with 24 additions and 11 deletions

View File

@ -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." );

View File

@ -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;
}