Skip to content

Commit ac3895b

Browse files
authored
Merge branch 'master' into client_c20
2 parents e76d579 + 10b2e97 commit ac3895b

27 files changed

+474
-252
lines changed

Client/game_sa/CGameSA.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,6 +1141,32 @@ CWeaponStat* CGameSA::CreateWeaponStat(eWeaponType weaponType, eWeaponSkill weap
11411141
return m_pWeaponStatsManager->CreateWeaponStatUnlisted(weaponType, weaponSkill);
11421142
}
11431143

1144+
void CGameSA::SetWeaponRenderEnabled(bool enabled)
1145+
{
1146+
if (IsWeaponRenderEnabled() == enabled)
1147+
return;
1148+
1149+
if (!enabled)
1150+
{
1151+
// Disable calls to CVisibilityPlugins::RenderWeaponPedsForPC
1152+
MemSet((void*)0x53EAC4, 0x90, 5); // Idle
1153+
MemSet((void*)0x705322, 0x90, 5); // CPostEffects::Render
1154+
MemSet((void*)0x7271E3, 0x90, 5); // CMirrors::BeforeMainRender
1155+
}
1156+
else
1157+
{
1158+
// Restore original bytes
1159+
MemCpy((void*)0x53EAC4, "\xE8\x67\x44\x1F\x00", 5);
1160+
MemCpy((void*)0x705322, "\xE8\x09\xDC\x02\x00", 5);
1161+
MemCpy((void*)0x7271E3, "\xE8\x48\xBD\x00\x00", 5);
1162+
}
1163+
}
1164+
1165+
bool CGameSA::IsWeaponRenderEnabled() const
1166+
{
1167+
return *(unsigned char*)0x53EAC4 == 0xE8;
1168+
}
1169+
11441170
void CGameSA::OnPedContextChange(CPed* pPedContext)
11451171
{
11461172
m_pPedContext = pPedContext;

Client/game_sa/CGameSA.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,8 @@ class CGameSA : public CGame
287287
void SetupBrokenModels();
288288
CWeapon* CreateWeapon();
289289
CWeaponStat* CreateWeaponStat(eWeaponType weaponType, eWeaponSkill weaponSkill);
290+
void SetWeaponRenderEnabled(bool enabled) override;
291+
bool IsWeaponRenderEnabled() const override;
290292
void FlushPendingRestreamIPL();
291293
void ResetModelLodDistances();
292294
void ResetModelFlags();

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3442,6 +3442,9 @@ void CClientGame::Event_OnIngame()
34423442
g_pGame->ResetAlphaTransparencies();
34433443
g_pGame->ResetModelTimes();
34443444

3445+
// Reset weapon render
3446+
g_pGame->SetWeaponRenderEnabled(true);
3447+
34453448
// Make sure we can access all areas
34463449
g_pGame->GetStats()->ModifyStat(CITIES_PASSED, 2.0);
34473450

@@ -6112,6 +6115,16 @@ bool CClientGame::GetBirdsEnabled()
61126115
return m_bBirdsEnabled;
61136116
}
61146117

6118+
void CClientGame::SetWeaponRenderEnabled(bool enabled)
6119+
{
6120+
g_pGame->SetWeaponRenderEnabled(enabled);
6121+
}
6122+
6123+
bool CClientGame::IsWeaponRenderEnabled() const
6124+
{
6125+
return g_pGame->IsWeaponRenderEnabled();
6126+
}
6127+
61156128
#pragma code_seg(".text")
61166129
bool CClientGame::VerifySADataFiles(int iEnableClientChecks)
61176130
{

Client/mods/deathmatch/logic/CClientGame.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,9 @@ class CClientGame
419419
bool SetBirdsEnabled(bool bEnabled);
420420
bool GetBirdsEnabled();
421421

422+
void SetWeaponRenderEnabled(bool enabled);
423+
bool IsWeaponRenderEnabled() const;
424+
422425
void ResetWorldProperties(const ResetWorldPropsInfo& resetPropsInfo);
423426

424427
CTransferBox* GetTransferBox() { return m_pTransferBox; };

0 commit comments

Comments
 (0)