Позиция и поворот объекта

Vintik

Через тернии к звёздам
Автор темы
Проверенный
1,521
995
Версия MoonLoader
.026-beta
Есть функция установления поворота автомобиля
Lua:
setVehicleQuaternion(Vehicle car, float x, float y, float z, float w)
Она немного (полностью) баганная, это еще в 21-м году заметил один пользователь.
1712058317299.png
Одно из решений, которое предложил FYP, переводить кватернион в матрицу вращения и записывать в память игры.
1712058536122.png


1712058586167.png
Значит, накидал я код:
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)
Пробую сделать по аналогии с объектом SA-MP (объект, который создаёт сервер) — не крутится. Что здесь не так?
Это не работает:
setQuaternion(getObjectPointer(object), x, y, z, w)
При этом стандартная функция, вот эта:
Lua:
setObjectQuaternion(Object object, float x, float y, float z, float w)
Она хоть работает косо-криво (вращает не так, как надо), но при этом она работает и объект все равно куда-то да поворачивается.
В чём может быть проблема?

upd. Подозреваю, что с позицией та же проблема. Если через память таким же образом устанавливать позицию объекта — она не будет меняться.

upd
@AnWu, ты можешь знать...)
 
Последнее редактирование:
  • Вау
  • Нравится
Реакции: inexplica, Fott и minxty

AnWu

https://t.me/anwublog
Всефорумный модератор
4,759
5,363
@AnWu, ты можешь знать...)
Я никогда небыл задротом в этой сфере, весь мой софт посредственный, прекрати думать что я гений, на форуме есть люди куда способнее меня. Я пригодился в роли модера больше чем в роли скриптера. Сейчас я уже отошел от самп направления настолько что последний раз запускал самп аж 2 года назад, та и на пк у меня нет ни гта са, ни соответственно сампа.
 
  • Нравится
  • Вау
  • Ха-ха
Реакции: qdIbp, sazzas1978 и Vintik

Vintik

Через тернии к звёздам
Автор темы
Проверенный
1,521
995
прекрати думать что я гений
Ты на форуме больше, чем я. У тебя опыта больше. Поэтому я подумал, что ты сталкивался с этой проблемой. Нет так нет.
Ладно, я зарегался на пару месяцев раньше...
 
  • Нравится
Реакции: qdIbp и AnWu