- 1,472
- 438
- Версия MoonLoader
- .026-beta
Ищу способ поменять текстуру у локально созданного объекта при помощи `createObject`.
С получение и заменой модели я разобрался. оффсет 0x22. Предполагаю что эти оффсеты можно взять отсюда https://github.com/BlastHackNet/SAMP-API/blob/multiver/include/sampapi/0.3.7-R3-1/CObject.h но не совсем представляю как можно обратиться именно к текстуре.
Далее я нашёл библиотеку SAMemory и написал это:
Но как я понял это структура обычного объекта, отличного от samp'а и там нет параметра текстуры https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CObject.h
Думаю что первый вариант наиболее походящий. Пока что не знаю как его развивать.
С получение и заменой модели я разобрался. оффсет 0x22. Предполагаю что эти оффсеты можно взять отсюда https://github.com/BlastHackNet/SAMP-API/blob/multiver/include/sampapi/0.3.7-R3-1/CObject.h но не совсем представляю как можно обратиться именно к текстуре.
Lua:
function onReceiveRpc(id, bs) --onCreateObject
if id == 44 then
local objectId = raknetBitStreamReadInt16(bs)
lua_thread.create(function(objectId)
wait(0)
local handle = sampGetObjectHandleBySampId(objectId)
local struct = getObjectPointer(handle)
print(getObjectModel(handle), memory.getuint32(struct + 0x22, true))
end, objectId)
end
end
Lua:
local samem = require 'SAMemory'
samem.require 'CPool'
samem.require 'CObject'
local font = renderCreateFont('Verdana', 5, 9)
while true do
wait(0)
local pool = samem.object_pool[0]
if pool ~= samem.nullptr then
for slot, obj in pool('CObject') do
local pos = obj.pMatrix.pos
local x, y = convert3DCoordsToScreen(pos.x, pos.y, pos.z)
if isPointOnScreen(pos.x, pos.y, pos.z) then
renderFontDrawText(font, ('#%d. posn: %f, %f, %f'):format(slot, pos.x, pos.y, pos.z), x, y, -1, true)
end
end
end
end
Думаю что первый вариант наиболее походящий. Пока что не знаю как его развивать.