Skip to content

Commit e97d831

Browse files
committed
chore: tidy up codebase
1 parent 514194e commit e97d831

44 files changed

Lines changed: 1746 additions & 795 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

SmallBase/includes/backend.lua

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ eBackendEvent = {
1919
PLAYER_SWITCH = 3,
2020
}
2121

22-
---@enum eEntityTypes
22+
---@enum eEntityType
2323
eEntityTypes = {
2424
Ped = 1,
2525
Vehicle = 2,
@@ -123,7 +123,7 @@ function Backend:IsPlayerSwitchInProgress()
123123
return STREAMING.IS_PLAYER_SWITCH_IN_PROGRESS()
124124
end
125125

126-
---@param entity_type eEntityTypes
126+
---@param entity_type eEntityType
127127
---@return number
128128
function Backend:GetMaxAllowedEntities(entity_type)
129129
if not self.MaxAllowedEntities[entity_type] then
@@ -134,7 +134,7 @@ function Backend:GetMaxAllowedEntities(entity_type)
134134
end
135135

136136
---@param value number
137-
---@param entity_type eEntityTypes
137+
---@param entity_type eEntityType
138138
function Backend:SetMaxAllowedEntities(entity_type, value)
139139
if not self.MaxAllowedEntities[entity_type] then
140140
return
@@ -143,7 +143,7 @@ function Backend:SetMaxAllowedEntities(entity_type, value)
143143
self.MaxAllowedEntities[entity_type] = value
144144
end
145145

146-
---@param entity_type eEntityTypes
146+
---@param entity_type eEntityType
147147
---@return boolean
148148
function Backend:CanCreateEntity(entity_type)
149149
local currentCount = table.getlen(self.SpawnedEntities[entity_type])
@@ -169,7 +169,7 @@ function Backend:IsBlipRegistered(handle)
169169
end
170170

171171
---@param handle integer
172-
---@param entity_type? eEntityTypes
172+
---@param entity_type? eEntityType
173173
---@param etc? table -- metadata
174174
function Backend:RegisterEntity(handle, entity_type, etc)
175175
if not Game.IsScriptHandle(handle) then
@@ -185,7 +185,7 @@ function Backend:RegisterEntity(handle, entity_type, etc)
185185
end
186186

187187
---@param handle number
188-
---@param entity_type eEntityTypes
188+
---@param entity_type eEntityType
189189
function Backend:RemoveEntity(handle, entity_type)
190190
if not (self.SpawnedEntities[entity_type] or self.SpawnedEntities[entity_type][handle]) then
191191
return
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---@diagnostic disable: param-type-mismatch
2+
3+
---@ignore
4+
---@class CBaseModelInfo : GenericClass
5+
local CBaseModelInfo = GenericClass
6+
7+
---@ignore
8+
---@class CAttackers : GenericClass
9+
local CAttackers = GenericClass
10+
11+
--------------------------------------
12+
-- Class: CEntity
13+
--------------------------------------
14+
---@ignore
15+
---@class CEntity: ClassMeta<CEntity>
16+
---@field private m_ptr pointer
17+
---@field m_model_info pointer<CBaseModelInfo> // 0x0020
18+
---@field m_entity_type uint8_t // 0x0028
19+
---@field m_model_type pointer<uint8_t> // CBaseModelInfo + 0x009D
20+
---@field m_flags pointer<uint32_t> // 0x002D
21+
---@field m_transform_matrix pointer<fMatrix44> // 0x0060
22+
---@field m_render_focus_distance pointer<uint32_t> // 0x00A8
23+
---@field m_shadow_flags pointer<uint32_t> // 0x00B0
24+
---@field m_damage_bits pointer<uint32_t> // 0x0188
25+
---@field m_hostility pointer<uint8_t> // 0x018C
26+
---@field m_health pointer<float> // 0x0280
27+
---@field m_max_health pointer<float> // 0x0284
28+
---@field m_max_attackers pointer<CAttackers> // 0x0288
29+
---@overload fun(entity: handle): CEntity
30+
CEntity = Class("CEntity", nil, 0x290)
31+
32+
---@param entity handle
33+
---@return CEntity
34+
function CEntity:init(entity)
35+
if not ENTITY.DOES_ENTITY_EXIST(entity) then
36+
error("Invalid entity!")
37+
end
38+
39+
local ptr = memory.handle_to_ptr(entity)
40+
41+
---@type CEntity
42+
local instance = setmetatable({}, CEntity)
43+
44+
instance.m_ptr = ptr
45+
instance.m_model_info = ptr:add(0x0020):deref()
46+
instance.m_model_type = instance.m_model_info:add(0x009D)
47+
instance.m_flags = ptr:add(0x002D)
48+
instance.m_transform_matrix = ptr:add(0x0060)
49+
instance.m_render_focus_distance = ptr:add(0x00A8)
50+
instance.m_shadow_flags = ptr:add(0x00B0)
51+
instance.m_hostility = ptr:add(0x018C)
52+
instance.m_health = ptr:add(0x0280)
53+
instance.m_max_health = ptr:add(0x0284)
54+
instance.m_max_attackers = ptr:add(0x0288)
55+
56+
return instance
57+
end
58+
59+
---@return boolean
60+
function CEntity:IsValid()
61+
return self.m_ptr and self.m_ptr:is_valid()
62+
end
63+
64+
---@return eModelType
65+
function CEntity:GetModelType()
66+
if not self:IsValid() then
67+
return 0
68+
end
69+
70+
return (self.m_model_type:get_word() & 0x1F)
71+
end

SmallBase/includes/classes/CPed.lua

Lines changed: 26 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -8,65 +8,53 @@
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
6154
end
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()
9482
end
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)
10387
end

SmallBase/includes/classes/CPlayerInfo.lua

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,36 +5,38 @@
55
--------------------------------------
66
---@ignore
77
---@class CPlayerInfo
8-
---@field private m_addr pointer
8+
---@field private m_ptr pointer
99
---@field m_swim_speed pointer<float>
10+
---@field m_game_state pointer<uint32_t>
1011
---@field m_is_wanted pointer<byte> bool
1112
---@field m_wanted_level pointer<uint32_t>
1213
---@field m_wanted_level_display pointer<uint32_t>
1314
---@field m_run_speed pointer<float>
1415
---@field m_stamina pointer<float>
1516
---@field m_stamina_regen pointer<float>
1617
---@field m_weapon_damage_mult pointer<float>
17-
---@field m_weapon_defence_mult pointer<float>
18-
---@field m_game_state pointer<uint32_t>
19-
---@overload fun(addr: pointer): CPlayerInfo|nil
20-
CPlayerInfo = {}
18+
---@field m_weapon_defence_mult pointer<float> // 0x0D70
19+
---@overload fun(ptr: pointer): CPlayerInfo|nil
20+
CPlayerInfo = { m_size = 0x0D78 }
2121
CPlayerInfo.__index = CPlayerInfo
2222
setmetatable(CPlayerInfo, {
23-
__call = function(cls, addr)
24-
return cls.new(addr)
23+
__call = function(cls, ptr)
24+
return cls.new(ptr)
2525
end,
2626
})
2727

28-
---@return CPlayerInfo|nil
28+
---@param ptr pointer
29+
---@return CPlayerInfo
2930
function CPlayerInfo.new(ptr)
3031
if not ptr or ptr:is_null() then
31-
return nil
32+
error("Invalid ped pointer!")
3233
end
3334

3435
local instance = setmetatable({}, CPlayerInfo)
3536

36-
instance.m_addr = ptr
37+
instance.m_ptr = ptr
3738
instance.m_swim_speed = ptr:add(0x01C8)
39+
instance.m_game_state = ptr:add(0x0230)
3840
instance.m_is_wanted = ptr:add(0x08E0)
3941
instance.m_wanted_level = ptr:add(0x08E8)
4042
instance.m_wanted_level_display = ptr:add(0x08EC)
@@ -43,17 +45,16 @@ function CPlayerInfo.new(ptr)
4345
instance.m_stamina_regen = ptr:add(0x0D58)
4446
instance.m_weapon_damage_mult = ptr:add(0x0D6C)
4547
instance.m_weapon_defence_mult = ptr:add(0x0D70)
46-
instance.m_game_state = ptr:add(0x0230)
4748

4849
return instance
4950
end
5051

5152
---@return boolean
5253
function CPlayerInfo:IsValid()
53-
return self.m_addr and not self.m_addr:is_null()
54+
return self.m_ptr and self.m_ptr:is_valid()
5455
end
5556

56-
---@return number
57+
---@return eGameState
5758
function CPlayerInfo:GetGameState()
58-
return self.m_game_state:get_dword()
59+
return self.m_game_state:get_int()
5960
end

0 commit comments

Comments
 (0)