- Версия MoonLoader
- .026-beta
Есть функция установления поворота автомобиля
Она немного (полностью) баганная, это еще в 21-м году заметил один пользователь.
Одно из решений, которое предложил FYP, переводить кватернион в матрицу вращения и записывать в память игры.
Значит, накидал я код:
Попробовал установить поворот автомобиля — работает!
Пробую сделать по аналогии с объектом SA-MP (объект, который создаёт сервер) — не крутится. Что здесь не так?
При этом стандартная функция, вот эта:
Она хоть работает косо-криво (вращает не так, как надо), но при этом она работает и объект все равно куда-то да поворачивается.
В чём может быть проблема?
upd. Подозреваю, что с позицией та же проблема. Если через память таким же образом устанавливать позицию объекта — она не будет меняться.
upd
@AnWu, ты можешь знать...)
Lua:
setVehicleQuaternion(Vehicle car, float x, float y, float z, float w)
Lua:
function setQuaternion(ptr, x, y, z, w)
local right, up, front = {}, {}, {}
local right[1], right[2], right[3], front[1], front[2], front[3], up[1], up[2], up[3] = convertQuaternionToMatrix(w, x, y, z)
local rwmatrix = readMemory(ptr + 0x14, 4, false)
for i = 1, 3 do
writeMemory(rwmatrix + 4 * (i - 1), 4, representIntAsFloat(right[i]), false)
end
for i = 1, 3 do
writeMemory(rwmatrix + 0x10 + 4 * (i - 1), 4, representIntAsFloat(up[i]), false)
end
for i = 1, 3 do
writeMemory(rwmatrix + 0x20 + 4 * (i - 1), 4, representIntAsFloat(front[i]), false)
end
end
Lua:
setQuaternion(getCarPointer(car), x, y, z, w)
Это не работает:
setQuaternion(getObjectPointer(object), x, y, z, w)
Lua:
setObjectQuaternion(Object object, float x, float y, float z, float w)
В чём может быть проблема?
upd. Подозреваю, что с позицией та же проблема. Если через память таким же образом устанавливать позицию объекта — она не будет меняться.
upd
@AnWu, ты можешь знать...)
Последнее редактирование: