- 622
- 369
- Версия MoonLoader
- .026-beta
В муне функций не нашёл (искал collision/contact/entity и т.п.)
Пытался получить из CPhysical m_pCollisionList и m_apCollidedEntities, получилась хуйня (код ниже)
Решение можно и на плюсах
Решение найдено:
Пытался получить из CPhysical m_pCollisionList и m_apCollidedEntities, получилась хуйня (код ниже)
Lua:
local raw = getCharPointer(PLAYER_PED)
if raw == 0 or raw == nil then
print("ped pointer is null")
return
end
local pl_ped = ffi.cast("CPed*", raw)
local collision_list = ffi.cast("uintptr_t**", raw+0xb0)[0]
if collision_list then
print("===")
while collision_list[0] ~= 0 do
local collision_object = ffi.cast("CEntity*", collision_list[0])[0]
print(collision_object.m_nType)
collision_list = collision_list + 1
end
end
end)
Решение можно и на плюсах
Решение найдено:
проблема в luajit'овском ffi, видимо не переваривает битовые поля, либо я криворукий, энивей если использовать просто оффсеты то всё нормВ муне функций не нашёл (искал collision/contact/entity и т.п.)
Пытался получить из CPhysical m_pCollisionList и m_apCollidedEntities, получилась хуйня (код ниже)
Lua:local raw = getCharPointer(PLAYER_PED) if raw == 0 or raw == nil then print("ped pointer is null") return end local pl_ped = ffi.cast("CPed*", raw) local collision_list = ffi.cast("uintptr_t**", raw+0xb0)[0] if collision_list then print("===") while collision_list[0] ~= 0 do local collision_object = ffi.cast("CEntity*", collision_list[0])[0] print(collision_object.m_nType) collision_list = collision_list + 1 end end end)
Решение можно и на плюсах
Lua:
local ped_pointer = getCharPointer(PLAYER_PED)
local number_of_collided_entities = ffi.cast("unsigned char*", ped_pointer + 0xb9)[0]
-- printChat(number_of_collided_entities)
local collided_entities = ffi.cast("uintptr_t*", ped_pointer + 0xbc)
for i = 0, number_of_collided_entities - 1 do
local entity = collided_entities[i]
local entity_type = band(ffi.cast("uint8_t*", entity + 0x36)[0], 0x7)
printChat(entity_type)
end
Последнее редактирование: