mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-11-10 18:19:15 +00:00
Ped: PlayerPed: fixes
This commit is contained in:
parent
e46b06491c
commit
c4479a0185
|
@ -1003,7 +1003,7 @@ public:
|
||||||
// My names. Inlined in VC
|
// My names. Inlined in VC
|
||||||
AnimationId GetFireAnimNotDucking(CWeaponInfo* weapon) {
|
AnimationId GetFireAnimNotDucking(CWeaponInfo* weapon) {
|
||||||
if (m_nPedType == PEDTYPE_COP && weapon->IsFlagSet(WEAPONFLAG_COP3_RD))
|
if (m_nPedType == PEDTYPE_COP && weapon->IsFlagSet(WEAPONFLAG_COP3_RD))
|
||||||
return ANIM_WEAPON_FIRE_3RD;
|
return Get3rdFireAnim(weapon);
|
||||||
else
|
else
|
||||||
return GetPrimaryFireAnim(weapon);
|
return GetPrimaryFireAnim(weapon);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2147,10 +2147,10 @@ CPed::SelectGunIfArmed(void)
|
||||||
if (GetWeapon(i).m_nAmmoTotal > 0) {
|
if (GetWeapon(i).m_nAmmoTotal > 0) {
|
||||||
eWeaponType weaponType = GetWeapon(i).m_eWeaponType;
|
eWeaponType weaponType = GetWeapon(i).m_eWeaponType;
|
||||||
|
|
||||||
if (weaponType == WEAPONTYPE_COLT45 || weaponType == WEAPONTYPE_PYTHON || weaponType == WEAPONTYPE_SHOTGUN ||
|
if (weaponType == WEAPONTYPE_COLT45 || weaponType == WEAPONTYPE_UZI || weaponType == WEAPONTYPE_MP5 || weaponType == WEAPONTYPE_M4 ||
|
||||||
|
weaponType == WEAPONTYPE_COLT45 || weaponType == WEAPONTYPE_PYTHON || weaponType == WEAPONTYPE_SHOTGUN ||
|
||||||
weaponType == WEAPONTYPE_SPAS12_SHOTGUN || weaponType == WEAPONTYPE_STUBBY_SHOTGUN ||
|
weaponType == WEAPONTYPE_SPAS12_SHOTGUN || weaponType == WEAPONTYPE_STUBBY_SHOTGUN ||
|
||||||
weaponType == WEAPONTYPE_UZI || weaponType == WEAPONTYPE_M4 || weaponType == WEAPONTYPE_MP5 ||
|
weaponType == WEAPONTYPE_ROCKETLAUNCHER || weaponType == WEAPONTYPE_SNIPERRIFLE || weaponType == WEAPONTYPE_FLAMETHROWER) {
|
||||||
weaponType == WEAPONTYPE_ROCKETLAUNCHER || weaponType == WEAPONTYPE_FLAMETHROWER || weaponType == WEAPONTYPE_SNIPERRIFLE) {
|
|
||||||
SetCurrentWeapon(i);
|
SetCurrentWeapon(i);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -661,9 +661,7 @@ CPed::Attack(void)
|
||||||
{
|
{
|
||||||
CAnimBlendAssociation *weaponAnimAssoc;
|
CAnimBlendAssociation *weaponAnimAssoc;
|
||||||
int32 weaponAnim;
|
int32 weaponAnim;
|
||||||
eWeaponType ourWeaponType;
|
|
||||||
float weaponAnimTime;
|
float weaponAnimTime;
|
||||||
eWeaponFire ourWeaponFire;
|
|
||||||
float animLoopEnd;
|
float animLoopEnd;
|
||||||
CWeaponInfo *ourWeapon;
|
CWeaponInfo *ourWeapon;
|
||||||
bool attackShouldContinue;
|
bool attackShouldContinue;
|
||||||
|
@ -673,9 +671,7 @@ CPed::Attack(void)
|
||||||
float animLoopStart;
|
float animLoopStart;
|
||||||
CVector firePos;
|
CVector firePos;
|
||||||
|
|
||||||
ourWeaponType = GetWeapon()->m_eWeaponType;
|
ourWeapon = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType);
|
||||||
ourWeapon = CWeaponInfo::GetWeaponInfo(ourWeaponType);
|
|
||||||
ourWeaponFire = ourWeapon->m_eWeaponFire;
|
|
||||||
weaponAnimAssoc = nil;
|
weaponAnimAssoc = nil;
|
||||||
attackShouldContinue = !!bIsAttacking;
|
attackShouldContinue = !!bIsAttacking;
|
||||||
reloadAnimAssoc = nil;
|
reloadAnimAssoc = nil;
|
||||||
|
@ -694,14 +690,15 @@ CPed::Attack(void)
|
||||||
delayBetweenAnimAndFire = ourWeapon->m_fAnim2FrameFire;
|
delayBetweenAnimAndFire = ourWeapon->m_fAnim2FrameFire;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else if (m_nPedType == PEDTYPE_COP && Get3rdFireAnim(ourWeapon)){
|
||||||
AnimationId anim = GetFireAnimNotDucking(ourWeapon);
|
weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), Get3rdFireAnim(ourWeapon));
|
||||||
weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), anim);
|
if (weaponAnimAssoc) {
|
||||||
if (anim == ANIM_WEAPON_FIRE_3RD && weaponAnimAssoc) {
|
|
||||||
animLoopStart = 11.f/30.f;
|
animLoopStart = 11.f/30.f;
|
||||||
animLoopEnd = 19.f/30.f;
|
animLoopEnd = 19.f/30.f;
|
||||||
delayBetweenAnimAndFire = 14.f/30.f;
|
delayBetweenAnimAndFire = 14.f/30.f;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetPrimaryFireAnim(ourWeapon));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetReloadAnim(ourWeapon)) {
|
if (GetReloadAnim(ourWeapon)) {
|
||||||
|
@ -778,15 +775,15 @@ CPed::Attack(void)
|
||||||
if (!weaponAnimAssoc) {
|
if (!weaponAnimAssoc) {
|
||||||
if (!throwAssoc) {
|
if (!throwAssoc) {
|
||||||
if (attackShouldContinue) {
|
if (attackShouldContinue) {
|
||||||
if (ourWeaponFire != WEAPON_FIRE_PROJECTILE || !IsPlayer() || ((CPlayerPed*)this)->m_bHaveTargetSelected) {
|
if (ourWeapon->m_eWeaponFire != WEAPON_FIRE_PROJECTILE || !IsPlayer() || ((CPlayerPed*)this)->m_bHaveTargetSelected) {
|
||||||
if (bCrouchWhenShooting && bIsDucking && GetCrouchFireAnim(ourWeapon)) {
|
if (bCrouchWhenShooting && bIsDucking && GetCrouchFireAnim(ourWeapon)) {
|
||||||
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetCrouchFireAnim(ourWeapon), 8.0f);
|
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetCrouchFireAnim(ourWeapon), 8.0f);
|
||||||
|
|
||||||
} else if(GetSecondFireAnim(ourWeapon) && CGeneral::GetRandomNumber() & 1){
|
} else if(GetSecondFireAnim(ourWeapon) && CGeneral::GetRandomNumber() & 1){
|
||||||
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetSecondFireAnim(ourWeapon), 8.0f);
|
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetSecondFireAnim(ourWeapon), 8.0f);
|
||||||
|
|
||||||
} else if(!CGame::nastyGame || ourWeaponFire != WEAPON_FIRE_MELEE ||
|
} else if(!CGame::nastyGame || ourWeapon->m_eWeaponFire != WEAPON_FIRE_MELEE ||
|
||||||
GetFireAnimGround(ourWeapon) ||
|
!GetFireAnimGround(ourWeapon, false) ||
|
||||||
CheckForPedsOnGroundToAttack(this, nil) < PED_ON_THE_FLOOR) {
|
CheckForPedsOnGroundToAttack(this, nil) < PED_ON_THE_FLOOR) {
|
||||||
|
|
||||||
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetFireAnimNotDucking(ourWeapon), 8.0f);
|
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetFireAnimNotDucking(ourWeapon), 8.0f);
|
||||||
|
@ -831,11 +828,11 @@ CPed::Attack(void)
|
||||||
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
m_pedIK.m_flags &= ~CPedIK::AIMS_WITH_ARM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ourWeaponType != WEAPONTYPE_CHAINSAW
|
if (GetWeapon()->m_eWeaponType != WEAPONTYPE_CHAINSAW
|
||||||
|| !meleeAttackStarted && delayBetweenAnimAndFire - 0.5f >= weaponAnimAssoc->currentTime
|
|| !meleeAttackStarted && delayBetweenAnimAndFire - 0.5f >= weaponAnimAssoc->currentTime
|
||||||
|| weaponAnimAssoc->currentTime - weaponAnimAssoc->timeStep > delayBetweenAnimAndFire) {
|
|| weaponAnimAssoc->currentTime - weaponAnimAssoc->timeStep > delayBetweenAnimAndFire) {
|
||||||
|
|
||||||
if (ourWeaponType == WEAPONTYPE_CHAINSAW) {
|
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_CHAINSAW) {
|
||||||
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_ATTACK, 0.0f);
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_ATTACK, 0.0f);
|
||||||
} else if (weaponAnimTime <= delayBetweenAnimAndFire || weaponAnimTime - weaponAnimAssoc->timeStep > delayBetweenAnimAndFire || !weaponAnimAssoc->IsRunning()) {
|
} else if (weaponAnimTime <= delayBetweenAnimAndFire || weaponAnimTime - weaponAnimAssoc->timeStep > delayBetweenAnimAndFire || !weaponAnimAssoc->IsRunning()) {
|
||||||
if (weaponAnimAssoc->speed < 1.0f)
|
if (weaponAnimAssoc->speed < 1.0f)
|
||||||
|
@ -859,11 +856,11 @@ CPed::Attack(void)
|
||||||
|
|
||||||
GetWeapon()->Fire(this, &firePos);
|
GetWeapon()->Fire(this, &firePos);
|
||||||
|
|
||||||
if (ourWeaponType == WEAPONTYPE_MOLOTOV || ourWeaponType == WEAPONTYPE_GRENADE || ourWeaponType == WEAPONTYPE_DETONATOR_GRENADE ||
|
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_MOLOTOV || GetWeapon()->m_eWeaponType == WEAPONTYPE_GRENADE || GetWeapon()->m_eWeaponType == WEAPONTYPE_DETONATOR_GRENADE ||
|
||||||
ourWeaponType == WEAPONTYPE_TEARGAS) {
|
GetWeapon()->m_eWeaponType == WEAPONTYPE_TEARGAS) {
|
||||||
RemoveWeaponModel(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_nModelId);
|
RemoveWeaponModel(CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType)->m_nModelId);
|
||||||
}
|
}
|
||||||
if (!GetWeapon()->m_nAmmoTotal && ourWeaponFire != WEAPON_FIRE_MELEE && FindPlayerPed() != this) {
|
if (GetWeapon()->m_nAmmoTotal == 0 && ourWeapon->m_eWeaponFire != WEAPON_FIRE_MELEE && FindPlayerPed() != this) {
|
||||||
SelectGunIfArmed();
|
SelectGunIfArmed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -875,13 +872,13 @@ CPed::Attack(void)
|
||||||
switch (ourWeapon->m_AnimToPlay) {
|
switch (ourWeapon->m_AnimToPlay) {
|
||||||
case ASSOCGRP_UNARMED:
|
case ASSOCGRP_UNARMED:
|
||||||
if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK || weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_START)
|
if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK || weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_START)
|
||||||
DMAudio.PlayOneShot(m_audioEntityId, SOUND_FIGHT_46, (damagerType | (ourWeaponType << 8)));
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_FIGHT_46, (damagerType | (GetWeapon()->m_eWeaponType << 8)));
|
||||||
break;
|
break;
|
||||||
case ASSOCGRP_KNIFE:
|
case ASSOCGRP_KNIFE:
|
||||||
case ASSOCGRP_BASEBALLBAT:
|
case ASSOCGRP_BASEBALLBAT:
|
||||||
case ASSOCGRP_GOLFCLUB:
|
case ASSOCGRP_GOLFCLUB:
|
||||||
case ASSOCGRP_CHAINSAW:
|
case ASSOCGRP_CHAINSAW:
|
||||||
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_BAT_ATTACK, (damagerType | (ourWeaponType << 8)));
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_BAT_ATTACK, (damagerType | (GetWeapon()->m_eWeaponType << 8)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -944,14 +941,13 @@ CPed::Attack(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsPlayer()) {
|
if (IsPlayer()) {
|
||||||
eWeaponType weaponType = GetWeapon()->m_eWeaponType;
|
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_BASEBALLBAT || GetWeapon()->m_eWeaponType == WEAPONTYPE_GOLFCLUB || GetWeapon()->m_eWeaponType == WEAPONTYPE_KATANA) {
|
||||||
if (weaponType == WEAPONTYPE_BASEBALLBAT || weaponType == WEAPONTYPE_GOLFCLUB || weaponType == WEAPONTYPE_KATANA) {
|
|
||||||
float loopEndWithDelay = animLoopEnd;
|
float loopEndWithDelay = animLoopEnd;
|
||||||
if (loopEndWithDelay >= 98.0f)
|
if (loopEndWithDelay >= 98.0f)
|
||||||
loopEndWithDelay = (14.0f / 30.0f) + delayBetweenAnimAndFire;
|
loopEndWithDelay = (14.0f / 30.0f) + delayBetweenAnimAndFire;
|
||||||
if (weaponAnimAssoc->flags & ASSOC_RUNNING) {
|
if (weaponAnimAssoc->flags & ASSOC_RUNNING) {
|
||||||
if (weaponAnimAssoc->currentTime >= animLoopStart && weaponAnimAssoc->currentTime <= loopEndWithDelay)
|
if (weaponAnimAssoc->currentTime >= animLoopStart && weaponAnimAssoc->currentTime <= loopEndWithDelay)
|
||||||
CSpecialFX::AddWeaponStreak(weaponType);
|
CSpecialFX::AddWeaponStreak(GetWeapon()->m_eWeaponType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -970,7 +966,7 @@ CPed::Attack(void)
|
||||||
weaponAnimTime = weaponAnimAssoc->currentTime;
|
weaponAnimTime = weaponAnimAssoc->currentTime;
|
||||||
|
|
||||||
// Anim loop end, either start the loop again or finish the attack
|
// Anim loop end, either start the loop again or finish the attack
|
||||||
if (weaponAnimTime > animLoopEnd || !weaponAnimAssoc->IsRunning() && ourWeaponFire != WEAPON_FIRE_PROJECTILE) {
|
if (weaponAnimTime > animLoopEnd || !weaponAnimAssoc->IsRunning() && ourWeapon->m_eWeaponFire != WEAPON_FIRE_PROJECTILE) {
|
||||||
if (GetWeapon()->m_eWeaponState == WEAPONSTATE_RELOADING) {
|
if (GetWeapon()->m_eWeaponState == WEAPONSTATE_RELOADING) {
|
||||||
if (GetReloadAnim(ourWeapon) && !reloadAnimAssoc) {
|
if (GetReloadAnim(ourWeapon) && !reloadAnimAssoc) {
|
||||||
if (!CWorld::Players[CWorld::PlayerInFocus].m_bFastReload) {
|
if (!CWorld::Players[CWorld::PlayerInFocus].m_bFastReload) {
|
||||||
|
@ -997,7 +993,7 @@ CPed::Attack(void)
|
||||||
PedOnGroundState pedOnGroundState;
|
PedOnGroundState pedOnGroundState;
|
||||||
if (ourWeapon->m_eWeaponFire == WEAPON_FIRE_MELEE &&
|
if (ourWeapon->m_eWeaponFire == WEAPON_FIRE_MELEE &&
|
||||||
(CGame::nastyGame && ((pedOnGroundState = CheckForPedsOnGroundToAttack(this, nil)) > PED_IN_FRONT_OF_ATTACKER)
|
(CGame::nastyGame && ((pedOnGroundState = CheckForPedsOnGroundToAttack(this, nil)) > PED_IN_FRONT_OF_ATTACKER)
|
||||||
|| ourWeaponType == WEAPONTYPE_BASEBALLBAT && pedOnGroundState == NO_PED && bIsStanding && m_pCurSurface && m_pCurSurface->IsVehicle())) {
|
|| GetWeapon()->m_eWeaponType == WEAPONTYPE_BASEBALLBAT && pedOnGroundState == NO_PED && bIsStanding && m_pCurSurface && m_pCurSurface->IsVehicle())) {
|
||||||
|
|
||||||
AnimationId fireAnim = GetFireAnimGround(ourWeapon, false);
|
AnimationId fireAnim = GetFireAnimGround(ourWeapon, false);
|
||||||
if (weaponAnimAssoc->animId == fireAnim)
|
if (weaponAnimAssoc->animId == fireAnim)
|
||||||
|
@ -1030,10 +1026,10 @@ CPed::Attack(void)
|
||||||
|
|
||||||
// Echoes of bullets, at the end of the attack. (Bug: doesn't play while reloading)
|
// Echoes of bullets, at the end of the attack. (Bug: doesn't play while reloading)
|
||||||
if (weaponAnimAssoc->currentTime - weaponAnimAssoc->timeStep < animLoopEnd)
|
if (weaponAnimAssoc->currentTime - weaponAnimAssoc->timeStep < animLoopEnd)
|
||||||
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_AK47_BULLET_ECHO, ourWeaponType);
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_AK47_BULLET_ECHO, GetWeapon()->m_eWeaponType);
|
||||||
|
|
||||||
// Fun fact: removing this part leds to reloading flamethrower
|
// Fun fact: removing this part leds to reloading flamethrower
|
||||||
if (ourWeaponType == WEAPONTYPE_FLAMETHROWER && weaponAnimAssoc->IsRunning()) {
|
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_FLAMETHROWER && weaponAnimAssoc->IsRunning()) {
|
||||||
weaponAnimAssoc->flags |= ASSOC_DELETEFADEDOUT;
|
weaponAnimAssoc->flags |= ASSOC_DELETEFADEDOUT;
|
||||||
weaponAnimAssoc->flags &= ~ASSOC_RUNNING;
|
weaponAnimAssoc->flags &= ~ASSOC_RUNNING;
|
||||||
weaponAnimAssoc->blendDelta = -4.0f;
|
weaponAnimAssoc->blendDelta = -4.0f;
|
||||||
|
|
|
@ -61,7 +61,7 @@ CPlayerPed::CPlayerPed(void) : CPed(PEDTYPE_PLAYER1)
|
||||||
m_pWanted->Initialise();
|
m_pWanted->Initialise();
|
||||||
m_pArrestingCop = nil;
|
m_pArrestingCop = nil;
|
||||||
m_currentWeapon = WEAPONTYPE_UNARMED;
|
m_currentWeapon = WEAPONTYPE_UNARMED;
|
||||||
m_nSelectedWepSlot = 0;
|
m_nSelectedWepSlot = WEAPONSLOT_UNARMED;
|
||||||
m_nSpeedTimer = 0;
|
m_nSpeedTimer = 0;
|
||||||
m_bSpeedTimerFlag = false;
|
m_bSpeedTimerFlag = false;
|
||||||
SetWeaponLockOnTarget(nil);
|
SetWeaponLockOnTarget(nil);
|
||||||
|
@ -300,7 +300,7 @@ CPlayerPed::SetInitialState(void)
|
||||||
m_nLastPedState = PED_NONE;
|
m_nLastPedState = PED_NONE;
|
||||||
m_animGroup = ASSOCGRP_PLAYER;
|
m_animGroup = ASSOCGRP_PLAYER;
|
||||||
m_fMoveSpeed = 0.0f;
|
m_fMoveSpeed = 0.0f;
|
||||||
m_nSelectedWepSlot = WEAPONTYPE_UNARMED;
|
m_nSelectedWepSlot = WEAPONSLOT_UNARMED;
|
||||||
m_nEvadeAmount = 0;
|
m_nEvadeAmount = 0;
|
||||||
m_pEvadingFrom = nil;
|
m_pEvadingFrom = nil;
|
||||||
bIsPedDieAnimPlaying = false;
|
bIsPedDieAnimPlaying = false;
|
||||||
|
@ -748,17 +748,20 @@ CPlayerPed::ProcessWeaponSwitch(CPad *padUsed)
|
||||||
&& TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER
|
&& TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER
|
||||||
&& TheCamera.PlayerWeaponMode.Mode != CCam::MODE_CAMERA) {
|
&& TheCamera.PlayerWeaponMode.Mode != CCam::MODE_CAMERA) {
|
||||||
|
|
||||||
for (m_nSelectedWepSlot = m_currentWeapon - 1; ; --m_nSelectedWepSlot) {
|
// I don't know what kind of loop that was
|
||||||
|
m_nSelectedWepSlot = m_currentWeapon - 1;
|
||||||
|
do {
|
||||||
if (m_nSelectedWepSlot < 0)
|
if (m_nSelectedWepSlot < 0)
|
||||||
m_nSelectedWepSlot = TOTAL_WEAPON_SLOTS - 1;
|
m_nSelectedWepSlot = TOTAL_WEAPON_SLOTS - 1;
|
||||||
|
|
||||||
if (m_nSelectedWepSlot == 0)
|
if (m_nSelectedWepSlot == WEAPONSLOT_UNARMED)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (HasWeaponSlot(m_nSelectedWepSlot) && GetWeapon(m_nSelectedWepSlot).HasWeaponAmmoToBeUsed()) {
|
if (HasWeaponSlot(m_nSelectedWepSlot) && GetWeapon(m_nSelectedWepSlot).HasWeaponAmmoToBeUsed())
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
--m_nSelectedWepSlot;
|
||||||
|
} while (m_nSelectedWepSlot != WEAPONSLOT_UNARMED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -772,17 +775,17 @@ spentAmmoCheck:
|
||||||
|| TheCamera.PlayerWeaponMode.Mode == CCam::MODE_ROCKETLAUNCHER)
|
|| TheCamera.PlayerWeaponMode.Mode == CCam::MODE_ROCKETLAUNCHER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (GetWeapon()->m_eWeaponType != WEAPONTYPE_DETONATOR
|
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_DETONATOR
|
||||||
|| GetWeapon(2).m_eWeaponType != WEAPONTYPE_DETONATOR_GRENADE)
|
&& GetWeapon(WEAPONSLOT_PROJECTILE).m_eWeaponType == WEAPONTYPE_DETONATOR_GRENADE)
|
||||||
m_nSelectedWepSlot = m_currentWeapon - 1;
|
m_nSelectedWepSlot = WEAPONSLOT_PROJECTILE;
|
||||||
else
|
else
|
||||||
m_nSelectedWepSlot = 2;
|
m_nSelectedWepSlot = m_currentWeapon - 1;
|
||||||
|
|
||||||
for (; m_nSelectedWepSlot >= 0; --m_nSelectedWepSlot) {
|
for (; m_nSelectedWepSlot >= WEAPONSLOT_UNARMED; --m_nSelectedWepSlot) {
|
||||||
|
|
||||||
// BUG: m_nSelectedWepSlot and GetWeapon(..) takes slot in VC but they compared them against weapon types in whole condition! jeez
|
// BUG: m_nSelectedWepSlot and GetWeapon(..) takes slot in VC but they compared them against weapon types in whole condition! jeez
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
if (m_nSelectedWepSlot == 1 || GetWeapon(m_nSelectedWepSlot).m_nAmmoTotal > 0 && m_nSelectedWepSlot != 2) {
|
if (m_nSelectedWepSlot == WEAPONSLOT_MELEE || GetWeapon(m_nSelectedWepSlot).m_nAmmoTotal > 0 && m_nSelectedWepSlot != WEAPONSLOT_PROJECTILE) {
|
||||||
#else
|
#else
|
||||||
if (m_nSelectedWepSlot == WEAPONTYPE_BASEBALLBAT && GetWeapon(WEAPONTYPE_BASEBALLBAT).m_eWeaponType == WEAPONTYPE_BASEBALLBAT
|
if (m_nSelectedWepSlot == WEAPONTYPE_BASEBALLBAT && GetWeapon(WEAPONTYPE_BASEBALLBAT).m_eWeaponType == WEAPONTYPE_BASEBALLBAT
|
||||||
|| GetWeapon(m_nSelectedWepSlot).m_nAmmoTotal > 0
|
|| GetWeapon(m_nSelectedWepSlot).m_nAmmoTotal > 0
|
||||||
|
@ -791,15 +794,16 @@ spentAmmoCheck:
|
||||||
goto switchDetectDone;
|
goto switchDetectDone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_nSelectedWepSlot = 0;
|
m_nSelectedWepSlot = WEAPONSLOT_UNARMED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switchDetectDone:
|
switchDetectDone:
|
||||||
if (m_nSelectedWepSlot != m_currentWeapon) {
|
if (m_nSelectedWepSlot != m_currentWeapon) {
|
||||||
if (m_nPedState != PED_ATTACK && m_nPedState != PED_AIM_GUN && m_nPedState != PED_FIGHT)
|
if (m_nPedState != PED_ATTACK && m_nPedState != PED_AIM_GUN && m_nPedState != PED_FIGHT) {
|
||||||
RemoveWeaponAnims(m_currentWeapon, -1000.0f);
|
RemoveWeaponAnims(m_currentWeapon, -1000.0f);
|
||||||
MakeChangesForNewWeapon(m_nSelectedWepSlot);
|
MakeChangesForNewWeapon(m_nSelectedWepSlot);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ public:
|
||||||
float m_fCurrentStamina;
|
float m_fCurrentStamina;
|
||||||
float m_fMaxStamina;
|
float m_fMaxStamina;
|
||||||
float m_fStaminaProgress;
|
float m_fStaminaProgress;
|
||||||
int8 m_nSelectedWepSlot; // eWeaponType
|
int8 m_nSelectedWepSlot;
|
||||||
bool m_bSpeedTimerFlag;
|
bool m_bSpeedTimerFlag;
|
||||||
uint8 m_nEvadeAmount;
|
uint8 m_nEvadeAmount;
|
||||||
uint32 m_nSpeedTimer; // m_nStandStillTimer?
|
uint32 m_nSpeedTimer; // m_nStandStillTimer?
|
||||||
|
|
Loading…
Reference in a new issue