-
-
Notifications
You must be signed in to change notification settings - Fork 406
/
CPed.h
273 lines (230 loc) · 7.35 KB
/
CPed.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
/*****************************************************************************
*
* PROJECT: Multi Theft Auto v1.0
* LICENSE: See LICENSE in the top level directory
* FILE: sdk/game/CPed.h
* PURPOSE: Ped entity interface
*
* Multi Theft Auto is available from http://www.multitheftauto.com/
*
*****************************************************************************/
#pragma once
class CTaskManager;
#include "Common.h"
#include "CPhysical.h"
#include "CWeapon.h"
#include "CPedIntelligence.h"
#include "CPedSound.h"
#include <CVector2D.h>
#include <windows.h>
// forward declaration, avoid compile error
class CVehicle;
class CObject;
class CWeaponStat;
enum ePedPieceTypes
{
PED_PIECE_UNKNOWN = 0,
PED_PIECE_TORSO = 3,
PED_PIECE_ASS,
PED_PIECE_LEFT_ARM,
PED_PIECE_RIGHT_ARM,
PED_PIECE_LEFT_LEG,
PED_PIECE_RIGHT_LEG,
PED_PIECE_HEAD
};
enum eBone
{
BONE_PELVIS1 = 1,
BONE_PELVIS,
BONE_SPINE1,
BONE_UPPERTORSO,
BONE_NECK,
BONE_HEAD2,
BONE_HEAD1,
BONE_HEAD,
BONE_RIGHTUPPERTORSO = 21,
BONE_RIGHTSHOULDER,
BONE_RIGHTELBOW,
BONE_RIGHTWRIST,
BONE_RIGHTHAND,
BONE_RIGHTTHUMB,
BONE_LEFTUPPERTORSO = 31,
BONE_LEFTSHOULDER,
BONE_LEFTELBOW,
BONE_LEFTWRIST,
BONE_LEFTHAND,
BONE_LEFTTHUMB,
BONE_LEFTHIP = 41,
BONE_LEFTKNEE,
BONE_LEFTANKLE,
BONE_LEFTFOOT,
BONE_RIGHTHIP = 51,
BONE_RIGHTKNEE,
BONE_RIGHTANKLE,
BONE_RIGHTFOOT
};
enum
{
BIKE_KNOCK_OFF_DEFAULT = 0,
BIKE_KNOCK_OFF_NEVER,
BIKE_KNOCK_OFF_ALWAYS_NORMAL,
};
enum
{
ATTACH_DIRECTION_FRONT = 0,
ATTACH_DIRECTION_LEFT,
ATTACH_DIRECTION_BACK,
ATTACH_DIRECTION_RIGHT
};
enum eFightingStyle
{
STYLE_STANDARD = 4,
STYLE_BOXING,
STYLE_KUNG_FU,
STYLE_KNEE_HEAD,
// various melee weapon styles
STYLE_GRAB_KICK = 15,
STYLE_ELBOWS = 16,
};
enum eMoveAnim
{
MOVE_DEFAULT = 0,
MOVE_PLAYER = 54,
MOVE_PLAYER_F,
MOVE_PLAYER_M,
MOVE_ROCKET,
MOVE_ROCKET_F,
MOVE_ROCKET_M,
MOVE_ARMED,
MOVE_ARMED_F,
MOVE_ARMED_M,
MOVE_BBBAT,
MOVE_BBBAT_F,
MOVE_BBBAT_M,
MOVE_CSAW,
MOVE_CSAW_F,
MOVE_CSAW_M,
MOVE_SNEAK,
MOVE_JETPACK,
MOVE_MAN = 118,
MOVE_SHUFFLE,
MOVE_OLDMAN,
MOVE_GANG1,
MOVE_GANG2,
MOVE_OLDFATMAN,
MOVE_FATMAN,
MOVE_JOGGER,
MOVE_DRUNKMAN,
MOVE_BLINDMAN,
MOVE_SWAT,
MOVE_WOMAN,
MOVE_SHOPPING,
MOVE_BUSYWOMAN,
MOVE_SEXYWOMAN,
MOVE_PRO,
MOVE_OLDWOMAN,
MOVE_FATWOMAN,
MOVE_JOGWOMAN,
MOVE_OLDFATWOMAN,
MOVE_SKATE,
};
enum eLandedPedFoot
{
LANDED_PED_RIGHT_FOOT = 0,
LANDED_PED_LEFT_FOOT = 1,
};
inline bool IsValidMoveAnim(uint iMoveAnim)
{
return (iMoveAnim == MOVE_DEFAULT) || (iMoveAnim >= MOVE_PLAYER && iMoveAnim <= MOVE_JETPACK) || (iMoveAnim >= MOVE_MAN && iMoveAnim <= MOVE_SKATE);
}
enum
{
PLAYER_PED,
CIVILIAN_PED
};
namespace EPedWeaponAudioEvent
{
enum EPedWeaponAudioEventType
{
FIRE = 0x91,
};
}
using EPedWeaponAudioEvent::EPedWeaponAudioEventType;
class CPed : public virtual CPhysical
{
public:
virtual ~CPed(){};
virtual class CPedSAInterface* GetPedInterface() = 0;
virtual void AttachPedToBike(CEntity* entity, CVector* vector, unsigned short sUnk, FLOAT fUnk, FLOAT fUnk2, eWeaponType weaponType) = 0;
virtual void DetachPedFromEntity() = 0;
virtual bool CanSeeEntity(CEntity* entity, FLOAT fDistance) = 0;
virtual CVehicle* GetVehicle() = 0;
virtual void Respawn(CVector* position, bool bCameraCut) = 0;
virtual void SetModelIndex(unsigned long ulModel) = 0;
virtual void RemoveGeometryRef() = 0;
virtual FLOAT GetHealth() = 0;
virtual void SetHealth(float fHealth) = 0;
virtual float GetArmor() = 0;
virtual void SetArmor(float fArmor) = 0;
virtual float GetOxygenLevel() = 0;
virtual void SetOxygenLevel(float fOxygen) = 0;
virtual bool AddProjectile(eWeaponType eWeapon, CVector vecOrigin, float fForce, CVector* target, CEntity* targetEntity) = 0;
virtual CWeapon* GiveWeapon(eWeaponType weaponType, unsigned int uiAmmo, eWeaponSkill weaponSkill) = 0;
virtual CWeapon* GetWeapon(eWeaponSlot weaponSlot) = 0;
virtual CWeapon* GetWeapon(eWeaponType weaponType) = 0;
virtual void ClearWeapons() = 0;
virtual void RemoveWeaponModel(int iModel) = 0;
virtual void ClearWeapon(eWeaponType weaponType) = 0;
virtual void SetIsStanding(bool bStanding) = 0;
virtual DWORD GetType() = 0;
virtual CPedIntelligence* GetPedIntelligence() = 0;
virtual CPedSound* GetPedSound() = 0;
virtual DWORD* GetMemoryValue(DWORD dwOffset) = 0;
virtual FLOAT GetCurrentRotation() = 0;
virtual FLOAT GetTargetRotation() = 0;
virtual void SetCurrentRotation(FLOAT fRotation) = 0;
virtual void SetTargetRotation(FLOAT fRotation) = 0;
virtual eWeaponSlot GetCurrentWeaponSlot() = 0;
virtual void SetCurrentWeaponSlot(eWeaponSlot weaponSlot) = 0;
virtual CVector* GetBonePosition(eBone bone, CVector* vecPosition) = 0;
virtual CVector* GetTransformedBonePosition(eBone bone, CVector* vecPosition) = 0;
virtual bool IsDucking() = 0;
virtual void SetDucking(bool bDuck) = 0;
virtual bool IsInWater() = 0;
virtual int GetCantBeKnockedOffBike() = 0;
virtual void SetCantBeKnockedOffBike(int iCantBeKnockedOffBike) = 0;
virtual void QuitEnteringCar(CVehicle* vehicle, int iSeat, bool bUnknown) = 0;
virtual bool IsWearingGoggles() = 0;
virtual void SetGogglesState(bool bIsWearingThem) = 0;
virtual void SetClothesTextureAndModel(const char* szModel, const char* szModelLocationName, int iTexture) = 0;
virtual void RebuildPlayer() = 0;
virtual eFightingStyle GetFightingStyle() = 0;
virtual void SetFightingStyle(eFightingStyle style, BYTE bStyleExtra) = 0;
virtual CEntity* GetContactEntity() = 0;
virtual unsigned char GetRunState() = 0;
virtual CEntity* GetTargetedEntity() = 0;
virtual void SetTargetedEntity(CEntity* pEntity) = 0;
virtual bool GetCanBeShotInVehicle() = 0;
virtual bool GetTestForShotInVehicle() = 0;
virtual void SetCanBeShotInVehicle(bool bShot) = 0;
virtual void SetTestForShotInVehicle(bool bTest) = 0;
virtual BYTE GetOccupiedSeat() = 0;
virtual void SetOccupiedSeat(BYTE seat) = 0;
virtual void RemoveBodyPart(int i, char c) = 0;
virtual void SetFootBlood(unsigned int uiFootBlood) = 0;
virtual unsigned int GetFootBlood() = 0;
virtual bool IsOnFire() = 0;
virtual void SetOnFire(bool bOnFire) = 0;
virtual bool GetStayInSamePlace() = 0;
virtual void SetStayInSamePlace(bool bStay) = 0;
virtual void GetVoice(short* psVoiceType, short* psVoiceID) = 0;
virtual void GetVoice(const char** pszVoiceType, const char** pszVoice) = 0;
virtual void SetVoice(short sVoiceType, short sVoiceID) = 0;
virtual void SetVoice(const char* szVoiceType, const char* szVoice) = 0;
virtual void SetLanding(bool bIsLanding) = 0;
virtual CWeaponStat* GetCurrentWeaponStat() = 0;
virtual float GetCurrentWeaponRange() = 0;
virtual void AddWeaponAudioEvent(EPedWeaponAudioEventType audioEventType) = 0;
virtual int GetCustomMoveAnim() = 0;
virtual bool IsDoingGangDriveby() = 0;
};