Информация Страшное слово «кватернион» — это вообще что?

Vintik

Мечтатель
Автор темы
Проверенный
1,483
943
Я делаю маппинг в программе MED (Map Editor). Тем самым на прямую внутри игры меняю игровую карту в файлах IPL.
Ага, теперь понял.
Значение жирным - он округляет и соответственно в игре отображает объект горизонтально а не под углом.
Округляет значение?
Как пишут на форуме, на который ты указал, формат файла следующий:
IPL:
ID, modelname, interior, posX, posY, posZ, [B]quaternionX, quaternionY, quaternionZ, quaternionW[/B], LOD
Заметь, в IPL файле именно что кватернион, а не обычные углы поворота по осям.
Как я писал выше:
И да, этот вектор должен быть длины 1 для того, чтобы выполнялись математические преобразования, не буду вдаваться в их подробности.
То есть, иными словами, норма (длина) кватерниона должна быть равна одному. На примере:
Кватернион:
q = w + xi + yj + zk
N(q) = √(w² + x² + y² + z²)

N(q) should be equal to 1
Это одна из причин, почему редактор (или сама игра) могут «округлять» значения кватерниона. То есть если получается, что норма НЕ равна 1, то игра может начать менять значения (но я не уверен).
На скрине ниже предоставлено так называемое решение, автор пишет, что нужно поменять значение после запятой - я так и не понял, что он имел ввиду.
1714860831047.png
Он имеет ввиду изменение значений указателя в памяти игры. Вот стандартные значения:
1714911405456.png
А вот заменённые:
1714911485310.png
Если у тебя нет опыта работы с памятью игры — можешь просто попробовать использовать Lua-скрипт (который я прикрепил к своему сообщению, см. ниже). Для его работы нужно установить MoonLoader.
 

Вложения

  • fix.lua
    226 байт · Просмотры: 3
  • Нравится
Реакции: Fridom3

Fridom3

Новичок
4
1
Так окей! Радует, что ты смог понять в чем дело. Вопрос в следующем, у меня до сегодняшнего дня не было в клиенте moonloader(a), приходиться его добавлять. Вроде бы ничего сложного через установщик все просто.

Загрузил твой скрипт fix.lua и захожу в игру, на удивление все без ошибок и вылетов. Отлично! Думаю я, но объекты все равно не принимают свой правильный угол наклона.. Сразу же подумал на moonloader, видимо не подгрузился. Лезу в логи moonloader.log и вижу там следующее - согласно строчкам о fix.lua скрипт загрузился но потом происходит прерывание и затем и выгрузка скрипта. В чем же дело!?

[17:19:48.064562] (system) fix.lua: Script terminated. (20BCA9D4)

[17:19:33.954273] (system) Session started.
[17:19:33.957273] (debug) Module handle: 7BE60000

MoonLoader v.026.5-beta loaded.
Developers: FYP, hnnssy, EvgeN 1137

Copyright (c) 2016, BlastHack Team
https://www.blast.hk/moonloader/

[17:19:33.957273] (info) Working directory: G:\MartinCRMP\moonloader
[17:19:33.957273] (debug) FP Control: 0009001F
[17:19:33.957273] (debug) Game: GTA SA 1.0.0.0 US
[17:19:33.957273] (system) Installing pre-game hooks...
[17:19:33.965276] (system) Hooks installed.
[17:19:37.844617] (debug) Initializing opcode handler table
[17:19:37.844617] (debug) package.path = G:\MartinCRMP\moonloader\lib\?.lua;G:\MartinCRMP\moonloader\lib\?\init.lua;G:\MartinCRMP\moonloader\?.lua;G:\MartinCRMP\moonloader\?\init.lua;.\?.lua;G:\MartinCRMP\moonloader\lib\?.luac;G:\MartinCRMP\moonloader\lib\?\init.luac;G:\MartinCRMP\moonloader\?.luac;G:\MartinCRMP\moonloader\?\init.luac;.\?.luac
[17:19:37.844617] (debug) package.cpath = G:\MartinCRMP\moonloader\lib\?.dll;
[17:19:37.884618] (system) Loading script 'G:\MartinCRMP\moonloader\fix.lua'...
[17:19:37.884618] (debug) New script: 20BCA9D4
[17:19:37.900728] (system) fix.lua: Loaded successfully.
[17:19:48.063562] (system) Installing post-load hooks...
[17:19:48.064562] (system) Hooks installed.
[17:19:48.064562] (system) fix.lua: Script terminated. (20BCA9D4)
[17:20:18.679440] (system) Unloading...
[17:20:18.693441] (system) Session terminated.
 

MrCreepTon

Неизвестный
Всефорумный модератор
2,130
4,723
Так окей! Радует, что ты смог понять в чем дело. Вопрос в следующем, у меня до сегодняшнего дня не было в клиенте moonloader(a), приходиться его добавлять. Вроде бы ничего сложного через установщик все просто.

Загрузил твой скрипт fix.lua и захожу в игру, на удивление все без ошибок и вылетов. Отлично! Думаю я, но объекты все равно не принимают свой правильный угол наклона.. Сразу же подумал на moonloader, видимо не подгрузился. Лезу в логи moonloader.log и вижу там следующее - согласно строчкам о fix.lua скрипт загрузился но потом происходит прерывание и затем и выгрузка скрипта. В чем же дело!?

[17:19:48.064562] (system) fix.lua: Script terminated. (20BCA9D4)
В этом ничего страшного нет. Скрипт меняет значения памяти и, так скажем, самоликвидируется в виду отсутствия необходимости работать дальше.
 
  • Нравится
Реакции: Vintik