#1 Вопросы по скриптингу » Текстурирование поверхностей » 18-02-2013 12:28

tonyfull
Replies: 2

Можно ли через CLEO текстурировать поверхности моделей в игре?

#2 Re: Справочная информация » Работа с компонентами машины » 13-02-2013 07:56

Den_spb wrote:

Движок каждый раз производит перезапись значений в мировых матрицах компонентов, двигаясь от корневого компонента иерархии к компонентам самого низкого ранга.
При этом для нахождения мировой матрицы компонента-ребёнка перемножаются мировая матрица компонента-родителя и локальная матрица компонента-ребёнка. Локальную матрицу движок перезаписывает только в том случае, если нужно изменить позицию/поворот данного компонента относительно родителя.
Отсутствие эффекта при перезаписи мировых матриц компонентов в скрипте связано с очерёдностью выполнения процессов:
выполнение скриптов -> пересчёт координат -> отрисовка
То есть игровой движок пересчитывает значения в мировых матрицах компонентов после выполнения клео-скриптов, поэтому значения, записанные скриптом будут вновь переписаны. По этой же причине будет отсутствовать эффект и при перезаписи локальных матриц некоторых компонентов (например, нельзя повернуть передние колёса, а также изменить их позицию по оси z. В то же время, например, двери автомобиля можно вращать и перемещать как угодно, т.к. локальные матрицы дверей обновляются не всё время, а только во время их открытия и закрытия).
Если необходимо задать компоненту определённые глобальные координаты, то можно пересчитать глобальные координаты в локальные и записать их в локальную матрицу.

Благодарствую, теперь все понятно)))

#3 Re: Справочная информация » Работа с компонентами машины » 12-02-2013 14:15

Большое спасибо, Den_spb, что помог расставить все на свои места, еще одно не больше уточнение: я могу задавать позицию компонента в +0x30 PosX +0x34 PosY +0x38 PosZ от матрицы позиции компонента в мире (+0x50) или надо все таки просчитывать в локальных координатах т.е. от родителя, и соответственно записывать в матрицу (+0x10). или надо и туда  и туда записывать (есс-но в одну глобальные координаты, а в другую локальные посчитанные относительно родителя с нужными сдвигами/ поворотами) чтобы компонент изменил свое положение. а то по идее если меняется глобальная координата то и меняется координата расположения компонента относительно родителя. Еще раз большое спасибо) p.s. проверил запись в матрицу глобального расположения, компонент не изменил свое положение.

#4 Re: Справочная информация » Работа с компонентами машины » 11-02-2013 12:18

Уважаемые сриптеры, у меня несколько вопросов.

0A97: 1@ = car 0@ struct 
    1@ += 0x650 // правое переднее колесо
    0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
    if
        1@ <> 0
    then
        1@ += 0x10 // указатель на матрицу
        1@ += 48 // X-position. Суммирование в 2 этапа применено для наглядности

.
1)в данном коде матрица по смещению 0x10, это какая матрица? матрица перехода от родителя к дочернему элементу? Если так, то она должна быть 3*3, т.е. 36 байт. а у нас как минимум 60 байт. 2)X-positon - это X в какой системе координат?

в этом коде:

0A97: 1@ = car 0@ struct 
         1@ += 0x650 //Указатель на адрес правого переднего колеса                          
         0A8D: 9@ = read_memory 1@ size 4 virtual_protect 0 //Адрес колеса
         if 
             9@ <> 0 
         then
             0AA7: call_function 0x7F0990 num_params 1 pop 1 9@ 10@
         end

3)10@ содержит матрицу, опять же что это за матрица? ну и аналогичный вопрос: 4)что за X координата по смещению 48 от начала матрицы, в смысле в какой системе координат?

#5 Re: Вопросы по скриптингу » Работа с компонентами модели машины » 10-02-2013 04:41

DK22Pac wrote:

Во-первых, на CLEO такие вещи нелогично делать, и очень сложно (а значит - и не нужно).
Во-вторых, даже если и делать на CLEO, то делать "инжектом" ("хук"ом, - подставлением своего кода из скрипта в стандартные функции или написание своих функций в скрипте), а для этого надо знать язык ассемблера.
Вообще, если у вас в скрипте часть ассемблерных вставок перевалила за половину всего обьёма скрипта, - надо уже делать плагины crazy
В пример приведу CLEO, Ryosuke, ну и ImVehLM/Ft (если о таком вообще кто-то слышал crazy)

Посмотрел ImVehLM, я тоже кстати делаю тормозные колодки в частности, да уменя впринципе почти уже все готово, что хотел, в данный момент хочу ради интереса рекурсией воспользоваться для перебора дерева компонентов в модели, хотя уже готов вариант, когда расположение компонентов известно, и я просто перехожу от предыдущего который известен, к следующему который я сам уже добавил в zModeller'е

#6 Re: Вопросы по скриптингу » Работа с компонентами модели машины » 09-02-2013 10:38

  0A97: 1@ = car 0@ struct 
    1@ += 0x668 // правая дверь авто
    0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
    if
        1@ <> 0
    then
        1@ += 0x9C // смещение в структуре компонента, по которому записан указатель на следующий компонент иерархии с таким же рангом
        0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
        if
            1@ <> 0
        then

все ясно, а когда скрипт дойдет до последнего компонента с текущим рангом, какой адрес будет в указателе 1@. Нужно условия выхода из цикла(цикл пробежиться по всем компонентам автомобиля). Можно ли  считать, что когда 1@ == 0, то все дальше нет объектов с текущим "рангом"?

#7 Re: Вопросы по скриптингу » Работа с компонентами модели машины » 09-02-2013 05:07

DK22Pac wrote:

DirectX > Мультитекстурирование.

И смысл этого? мне нужно то как этим пользовваться через CLEO

#8 Re: Вопросы по скриптингу » Работа с компонентами модели машины » 08-02-2013 18:12

Благодарю, жаль Гугл не выдает такие ценные странички=)с перемещением разобраться более менее. меня еще интересуют текстуры. Есть скажем несколько текстур, их надо совместить и наложить на поверхность, в какую сторону копать? Для начала лишь как просто наложить текстуру на какую-нибудь модель? Заранее благодарен.

#9 Вопросы по скриптингу » Работа с компонентами модели машины » 08-02-2013 08:21

tonyfull
Replies: 7

Можно ли из CLEO работать с компонентами автомобиля специально сделанными в zModeller'е (изменять их положение, поворот) Ну и соответственно допускает ли CLEO накладывать на поверхностит текстуры  с нужными сдвигами. Смотря в чужих скриптах увидел лишь следующий код:

0AA6: call_method 5878048 1@ num_params 3 pop 0 0.0 2@ 0.0

на сколько я понял он поварачивает какой-то компонент, это все что я нашел. Помогите разобраться.

#10 Работа с памятью, EXE » адрес где хранится расстояние от осей колес до поверхности » 07-02-2013 08:51

tonyfull
Replies: 2

Нужно определить смещенийе колес относительно своего исходного положения по оси Z(т.е. уровень сжатия пужин одвески). Опытным путем определил что по адресу CVehicle+0x07D4 (wheelsDistancesToGround1 так написано на gtamodding.ru) идут последовательно четыре float числа, принимающих значения от 0.0 до 1.0, из экспериментв увидел, что когда колесо висит в воздухе то один из параметров принимает значение 1.0, соответсвенно кождое колесо соответсвует одному из 4 этих чисел, следующие 16 байт (начинается с CVehicle+0x07E4) содержат также 4 float числа, изменяются также от 0.0 до 1.0 и при висящем колесе принимают 1.0. причем, когда сравнивал значения в первой четверке и во второй значении отличаются при одинаковом сжатии "пружин". Кто что знает? Заранее спасибо)

#11 Вопросы по скриптингу » передача стринговых параметров в функцию » 06-02-2013 06:18

tonyfull
Replies: 1

Ответа на свои вопросы, я не нашел поэтому здесь решил их задать. Как в функцию передать стринговый параметр? Ну и на страничке с CLEO 4 написано: В четвертой версии появились новые опкоды для работы со звуками, форматирования текста, была добавлена возможность выводить на экран тексты без использования внешних текстовых файлов (.gxt, .fxt) Как реализовать вывод на экран текста без доп. файлов?
Пытался передовать просто строчкой в кавычках,  переменной... бестолку - игра вылетает

{$CLEO}
:LABEL
thread 'LABEL'
wait 0                                                                 
while true
    wait 0
    if
        not Player.Defined($PLAYER_CHAR)
    then
        continue
    end
    if
        00DF:   actor $PLAYER_ACTOR driving    
    then
      {любой код}
        0AB1: call_scm_func @draw_data 1 'какойто текст, естественное не кириллица'
    end
end
0A93: end_custom_thread

:draw_data
{код функции}
0AB2: ret 0

В одном из чужих скриптов нашел пример вызова функции, где как раз третий параметр используется в функции как строчка:

0AB1: call_scm_func @NONAME_1175 4 0@ 100.0 12@ 5784415

Это параметр: 5784415
Но к сожалению не понял, что к чему(
Пните в нужную сторону=)

Board footer

Powered by FluxBB