Skip to content

Commit dbc7671

Browse files
committed
Add CPedDamageResponse
1 parent 36ad2ff commit dbc7671

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#pragma once
2+
3+
#include "PluginBase.h"
4+
5+
class CPedDamageResponse {
6+
public:
7+
float m_fDamageHealth;
8+
float m_fDamageArmor;
9+
bool m_bHealthZero;
10+
bool m_bForceDeath;
11+
bool m_bDamageCalculated;
12+
bool m_bCheckIfAffectsPed;
13+
14+
inline CPedDamageResponse() {
15+
m_fDamageHealth = 0.0f;
16+
m_fDamageArmor = 0.0f;
17+
m_bHealthZero = false;
18+
m_bForceDeath = false;
19+
m_bDamageCalculated = false;
20+
m_bCheckIfAffectsPed = false;
21+
}
22+
};
23+
24+
VALIDATE_SIZE(CPedDamageResponse, 0xC);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
Plugin-SDK (Grand Theft Auto San Andreas) source file
3+
Authors: GTA Community. See more here
4+
https://github.com/DK22Pac/plugin-sdk
5+
Do not delete this comment block. Respect others' work!
6+
*/
7+
#include "CPedDamageResponseCalculator.h"
8+
9+
float& CPedDamageResponseCalculator::ms_damageFactor = *(float*)0x8A6260; // 5555.5498
10+
11+
// 0x4AD3F0
12+
CPedDamageResponseCalculator::CPedDamageResponseCalculator(CEntity* entity, float fDamage, eWeaponType weaponType, uint8_t bodyPart, bool bSpeak) {
13+
//plugin::CallMethodAndReturn<CPedDamageResponseCalculator *, 0x4AD3F0, CPedDamageResponseCalculator*, CEntity*, float, eWeaponType, uint8_t, bool>(this, entity, fDamage, weaponType, bodyPart, bSpeak);
14+
((void(__thiscall*)(CPedDamageResponseCalculator*, CEntity*, float, eWeaponType, uint8_t, bool))0x4AD3F0)(this, entity, fDamage, weaponType, bodyPart, bSpeak);
15+
}
16+
17+
// 0x4AD430
18+
void CPedDamageResponseCalculator::AccountForPedDamageStats(CPed* ped, CPedDamageResponse& response) {
19+
plugin::CallMethod<0x4AD430, CPedDamageResponseCalculator*, CPed*, CPedDamageResponse&>(this, ped, response);
20+
}
21+
22+
// 0x4AD550
23+
void CPedDamageResponseCalculator::AccountForPedArmour(CPed* ped, CPedDamageResponse& response) {
24+
plugin::CallMethod<0x4AD550, CPedDamageResponseCalculator*, CPed*, CPedDamageResponse&>(this, ped, response);
25+
}
26+
27+
// 0x4AD610
28+
bool CPedDamageResponseCalculator::ComputeWillForceDeath(CPed* ped, CPedDamageResponse& response) {
29+
return plugin::CallMethodAndReturn<bool, 0x4AD610, CPedDamageResponseCalculator*, CPed*, CPedDamageResponse&>(this, ped, response);
30+
}
31+
32+
// 0x4B3210
33+
void CPedDamageResponseCalculator::ComputeWillKillPed(CPed* ped, CPedDamageResponse& response, bool bSpeak) {
34+
plugin::CallMethod<0x4B3210, CPedDamageResponseCalculator*>(this, ped, response, bSpeak);
35+
}
36+
37+
// 0x4B5AC0
38+
void CPedDamageResponseCalculator::ComputeDamageResponse(CPed* ped, CPedDamageResponse& response, bool bSpeak)
39+
{
40+
plugin::CallMethod<0x4B5AC0, CPedDamageResponseCalculator*, CPed*, CPedDamageResponse&, bool>(this, ped, response, bSpeak);
41+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
Plugin-SDK (Grand Theft Auto San Andreas) header file
3+
Authors: GTA Community. See more here
4+
https://github.com/DK22Pac/plugin-sdk
5+
Do not delete this comment block. Respect others' work!
6+
*/
7+
#pragma once
8+
9+
#include "PluginBase.h"
10+
#include "CPedDamageResponse.h"
11+
#include "eWeaponType.h"
12+
13+
class CEntity;
14+
class CPed;
15+
16+
class PLUGIN_API CPedDamageResponseCalculator
17+
{
18+
public:
19+
const CEntity* m_pDamager;
20+
float m_fDamageFactor;
21+
uint8_t m_bodyPart;
22+
eWeaponType m_weaponType;
23+
bool m_bSpeak;
24+
25+
static float& ms_damageFactor;
26+
27+
CPedDamageResponseCalculator(CEntity* entity, float fDamage, eWeaponType weaponType, uint8_t bodyPart, bool bSpeak);
28+
29+
public:
30+
void AccountForPedDamageStats(CPed* ped, CPedDamageResponse& response);
31+
void AccountForPedArmour(CPed* ped, CPedDamageResponse& response);
32+
bool ComputeWillForceDeath(CPed* ped, CPedDamageResponse& response);
33+
void ComputeWillKillPed(CPed* ped, CPedDamageResponse& response, bool bSpeak);
34+
void ComputeDamageResponse(CPed* ped, CPedDamageResponse& response, bool bSpeak);
35+
};
36+
37+
VALIDATE_SIZE(CPedDamageResponseCalculator, 0x14);

0 commit comments

Comments
 (0)