88-- Class: CPed
99---- ----------------------------------
1010--- @ignore
11- --- @class CPed
12- --- @field private m_addr pointer
13- --- @field CPedIntelligence pointer<CPedIntelligence>
14- --- @field CPedInventory pointer<CPedInventory>
15- --- @field CPedWeaponManager pointer<CPedWeaponManager>
16- --- @field CPlayerInfo ? CPlayerInfo
11+ --- @class CPed : CEntity
12+ --- @field private m_ptr pointer
13+ --- @field m_ped_intelligence pointer<CPedIntelligence>
14+ --- @field m_ped_inventory pointer<CPedInventory>
15+ --- @field m_ped_weapon_mgr pointer<CPedWeaponManager>
16+ --- @field m_player_info ? CPlayerInfo
1717--- @field m_velocity pointer<vec3>
18- --- @field m_ped_type pointer<uint32_t >
18+ --- @field m_ped_type pointer<uint8_t >
1919--- @field m_ped_task_flag pointer<uint8_t>
2020--- @field m_seatbelt pointer<uint8_t>
2121--- @field m_armor pointer<float>
22- --- @field m_cash pointer<uint16_t>
23- --- @overload fun ( ped : integer ): CPed | nil
24- CPed = {}
25- CPed .__index = CPed
26- setmetatable (CPed , {
27- __call = function (cls , addr )
28- return cls .new (addr )
29- end ,
30- })
22+ --- @field m_cash pointer<uint16_t> // 0x1614
23+ --- @overload fun ( ped : handle ): CPed
24+ CPed = Class (" CPed" , CEntity , 0x161C )
3125
32- --- @param ped integer
33- --- @return CPed | nil
34- function CPed . new (ped )
26+ --- @param ped handle
27+ --- @return CPed
28+ function CPed : init (ped )
3529 if not ENTITY .DOES_ENTITY_EXIST (ped ) or not ENTITY .IS_ENTITY_A_PED (ped ) then
36- return
30+ error ( " Invalid entity! " )
3731 end
3832
33+ self :super ().init (self , ped )
3934 local ptr = memory .handle_to_ptr (ped )
40- if not ptr or ptr :is_null () then
41- return nil
42- end
4335
36+ --- @type CPed
4437 local instance = setmetatable ({}, CPed )
45- instance .m_addr = ptr
46- instance .CPedIntelligence = ptr :add (0x10A0 )
47- instance .CPedInventory = ptr :add (0x10B0 )
48- instance .CPedWeaponManager = ptr :add (0x10B8 )
38+ instance .m_ptr = ptr
39+ instance .m_ped_intelligence = ptr :add (0x10A0 )
40+ instance .m_ped_inventory = ptr :add (0x10B0 )
41+ instance .m_ped_weapon_mgr = ptr :add (0x10B8 )
4942 instance .m_velocity = ptr :add (0x0300 )
5043 instance .m_ped_type = ptr :add (0x1098 )
5144 instance .m_ped_task_flag = ptr :add (0x144B )
5245 instance .m_seatbelt = ptr :add (0x143C )
5346 instance .m_armor = ptr :add (0x150C )
5447 instance .m_cash = ptr :add (0x1614 )
5548
56- if PED .IS_PED_A_PLAYER (ped ) then
57- instance .CPlayerInfo = CPlayerInfo (ptr :add (0x10A8 ):deref ())
49+ if ( PED .IS_PED_A_PLAYER (ped ) ) then
50+ instance .m_player_info = CPlayerInfo (ptr :add (0x10A8 ):deref ())
5851 end
5952
6053 return instance
6154end
6255
6356--- @return boolean
64- function CPed :IsValid ()
65- return self .m_addr and self .m_addr :is_valid ()
66- end
67-
68- --- @return boolean
69- function CPed :CanPedRagdoll ()
57+ function CPed :CanRagdoll ()
7058 if not self :IsValid () then
7159 return false
7260 end
@@ -93,11 +81,7 @@ function CPed:GetSpeed()
9381 return speed_vec :mag ()
9482end
9583
96- --- @return number
97- function CPed :GetGameState ()
98- if self .CPlayerInfo and self .CPlayerInfo :IsValid () then
99- return self .CPlayerInfo :GetGameState ()
100- end
101-
102- return - 1 -- not a player ped
84+ --- @return ePedType
85+ function CPed :GetPedType ()
86+ return (self .m_ped_type :get_word () << 11 >> 25 )
10387end
0 commit comments