|
63 | 63 |
|
64 | 64 | ---@return boolean |
65 | 65 | function CPed:CanRagdoll() |
66 | | - if not self:IsValid() then |
67 | | - return false |
68 | | - end |
69 | | - |
70 | | - return (self.m_ped_type & 0x20) ~= 0 |
| 66 | + return self:__safecall(false, function() |
| 67 | + return (self.m_ped_type & 0x20) ~= 0 |
| 68 | + end) |
71 | 69 | end |
72 | 70 |
|
73 | 71 | ---@return boolean |
74 | 72 | function CPed:HasSeatbelt() |
75 | | - if not self:IsValid() then |
76 | | - return false |
77 | | - end |
78 | | - |
79 | | - return (self.m_seatbelt & 0x3) ~= 0 |
| 73 | + return self:__safecall(false, function() |
| 74 | + return (self.m_seatbelt & 0x3) ~= 0 |
| 75 | + end) |
80 | 76 | end |
81 | 77 |
|
82 | 78 | ---@return float |
83 | 79 | function CPed:GetSpeed() |
84 | | - if not self:IsValid() then |
85 | | - return 0.0 |
86 | | - end |
87 | | - |
88 | | - local speed_vec = self.m_velocity:get_vec3() |
89 | | - return speed_vec:mag() |
| 80 | + return self:__safecall(0.0, function() |
| 81 | + return self.m_velocity:get_vec3():mag() |
| 82 | + end) |
90 | 83 | end |
91 | 84 |
|
92 | 85 | ---@return ePedType |
93 | 86 | function CPed:GetPedType() |
94 | | - return (self.m_ped_type:get_word() << 11 >> 25) |
| 87 | + return self:__safecall(-1, function() |
| 88 | + return (self.m_ped_type:get_word() << 11 >> 25) |
| 89 | + end) |
95 | 90 | end |
96 | 91 |
|
97 | 92 | ---@return CPedWeaponManager? |
98 | 93 | function CPed:GetWeaponManager() |
99 | | - local ptr = self.m_ped_weapon_mgr:deref() |
100 | | - if (ptr:is_null()) then |
101 | | - self.m_ped_weapon_mgr_inst = nil |
102 | | - return |
103 | | - end |
104 | | - |
105 | | - local mgr = self.m_ped_weapon_mgr_inst |
106 | | - ---@diagnostic disable-next-line: invisible |
107 | | - if (not mgr or not mgr:IsValid() or (mgr.m_ptr ~= ptr)) then |
108 | | - self.m_ped_weapon_mgr_inst = CPedWeaponManager(ptr) |
109 | | - end |
110 | | - |
111 | | - return self.m_ped_weapon_mgr_inst |
| 94 | + return self:__safecall(nil, function() |
| 95 | + local ptr = self.m_ped_weapon_mgr:deref() |
| 96 | + if (ptr:is_null()) then |
| 97 | + self.m_ped_weapon_mgr_inst = nil |
| 98 | + return nil |
| 99 | + end |
| 100 | + |
| 101 | + local mgr = self.m_ped_weapon_mgr_inst |
| 102 | + ---@diagnostic disable-next-line: invisible |
| 103 | + if (not mgr or not mgr:IsValid() or (mgr.m_ptr ~= ptr)) then |
| 104 | + self.m_ped_weapon_mgr_inst = CPedWeaponManager(ptr) |
| 105 | + end |
| 106 | + |
| 107 | + return self.m_ped_weapon_mgr_inst |
| 108 | + end) |
112 | 109 | end |
113 | 110 |
|
114 | 111 | return CPed |
0 commit comments