You are not logged in.
Это НОМЕР авто, он генерируется игрой и использует не текст из gxt, а текстуру из vehicle.txd, такчто русик нече не меняет
Кстате я нашел в артмани, название детали (ну там бампер, колесо) по смещению +172 от детали
Offline
Offline
To kenking
Можно сделать в Сане так, чтобы машины ездили с тюнинг колёсами (из гаражей Дефендер и т.д.) ?
Есть скрипт, который вроде выхватывает ближайшие машины к ГГ и меняет им колёса, но работает неочень (то ли трафик уменьшается, то ли ещё чё...), может есть более элегантный способ?
Offline
kenking, каким опкодом отображать такую надпись?)
а вообще я говорил не про то что на экране отображается, а про то что на номерах машин xD
Offline
To kenking
Можно сделать в Сане так, чтобы машины ездили с тюнинг колёсами (из гаражей Дефендер и т.д.) ?
Есть скрипт, который вроде выхватывает ближайшие машины к ГГ и меняет им колёса, но работает неочень (то ли трафик уменьшается, то ли ещё чё...), может есть более элегантный способ?
Можно. Есть мой древний скрипт 'Тюнинг авто' на эту тему. Используя опкоды Cleo4 (в частности 0AE2) и данные представленные в этой теме можно написать более качественный скрипт.
kenking, каким опкодом отображать такую надпись?)
В посте № 74 на предыдущей странице - готовый скрипт.
Offline
Появились несколько вопросов:
1) Можно ли прицепить произвольный объект к какому-либо компоненту транспорта. Ну наподобие, как цепляется объект не к актёру, а части тела актёра?
2) Записано ли в структуре транспорта количество полигонов модели. Если да, то по какому смещению?
3) Можно ли как-то в скрипте прочитать размер dff файла модели транспорта?
Заранее спасибо за ответы.=)
Offline
Появились несколько вопросов:
1) Можно ли прицепить произвольный объект к какому-либо компоненту транспорта. Ну наподобие, как цепляется объект не к актёру, а части тела актёра?
2) Записано ли в структуре транспорта количество полигонов модели. Если да, то по какому смещению?
3) Можно ли как-то в скрипте прочитать размер dff файла модели транспорта?
Заранее спасибо за ответы.=)
2) и 3) О_о интересно... "как открыть img архив при помощи скрипта и найти в нём модель" новая тема на следующие два месяца
Offline
1) Можно ли прицепить произвольный объект к какому-либо компоненту транспорта.
Можно. Пример:
{$CLEO} model.Load(362) model.Load(506) 038B: load_requested_models car.Create(0@ 506 -2024.6117, 171.6183, 27.8359) object.Create(1@ 362 -2024.6117, 171.6183, 27.8359) model.Destroy(506) model.Destroy(362) 0A98: 1@ = object 1@ struct 0A97: 0@ = car 0@ struct 0@ += 0x650 // смещение компонента автомобиля (правое переднее колесо) 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 if 0@ <> 0 then 0@ += 0x50 0AC7: 2@ = var 0@ offset 2@ -= 0x14 0AA6: call_method 0x54D570 struct 1@ num_params 7 pop 0 0.0 0.0 0.0 0.0 0.0 1.0 2@ // rotZ, rotY, rot X, Z, Y, X, matrix_pointer-0x14 end 0A93:
1.При движении автомобиля на большой скорости объект немного отстаёт от него.
2.После удаления транспорта объект перемещается в мировые координаты, равные заданным оффсетам.
Offline
Денис, спасибо.:clap:
То, что прицепить произвольный объект к какому-либо компоненту транспорта можно - это хорошо. А вот, что объект отстаёт от авто на скорости - это плохо.
Offline
Денис, это _matrix__attachTo?
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
А вот, что объект отстаёт от авто на скорости - это плохо.
Евгений, можно попробовать крепить объект непосредственно к машине. В этом случае команду прицепления надо выполнять постоянно (в цикле), так как оффсеты будут непрерывно меняться. Сами оффсеты нужно вычислять путём пересчёта координат из одной системы в другую:
Вектор позиции в СК 2 = (Матрица поворота СК 2 относительно СК 1)^-1 * Вектор позиции в СК 1 Вектор позиции в СК 1 = Матрица поворота СК 2 относительно СК 1 * Вектор позиции в СК 2
Примеры пересчёта координат были даны здесь: http://sannybuilder.com/forums/viewtopi … 485#p14485
Денис, это _matrix__attachTo?
Дмитрий, в базе у этого метода не было названия. Он используется в стандартных опкодах крепления объектов и машин друг к другу.
Offline
название детали (ну там бампер, колесо) по смещению +172 от детали
В связи с этим возник вопрос:
Допустим, прочитал в переменную 1@ название компонента (для примера) - chassis. Как потом сравнить то, что находится в переменной 1@ с записью "chassis" или 'chassis'?
Заранее спасибо.
Offline
Как потом сравнить то, что находится в переменной 1@ с записью "chassis" или 'chassis'?
Заранее спасибо.
Есть несколько способов...
1)Поработать с этим смещением:
создать новый скрипт. там найти эту деталь, прочитать ее название (+172) в 4 байта (будет тока 4 символа, хз почему)
и вот этим опкодом записать результат в ини файл:
0AF1: write_int 16 to_ini_file "cleo\config.ini" section "SectionName" key "intKey"
2)найти через артмани это смещение и посмотреть там результат.
3)прочитать как 1 байт, это будет одна буква, пример:
0@ - твоя деталь 0@ += 172 1@ = рид 0@ сайз 1 протект 0 //1@ первая буква 0@ += 1 2@ = рид 0@ сайз 1 протект 0 //2@ вторая буква
итд. только буквы не буквами записаны а цифрами (ептя, че буровлю)
вот табличка:
a - 97 b - 98 c - 99 d -100 e - ... итд. это маленькие A - 65 B - 66 C - 67 D - 68 E - ... это большие.
надеюсь помог
могу написать пример если так непонятно обьяснил.
Last edited by }0RIC)-( (28-05-2011 10:56)
Offline
@}0RIC)-(
Спасибо, конечно, но это всё не то.
1)Поработать с этим смещением:
создать новый скрипт. там найти эту деталь, прочитать ее название (+172) в 4 байта (будет тока 4 символа, хз почему)
и вот этим опкодом записать результат в ини файл:
Я же написал
Допустим, прочитал в переменную 1@ название компонента
Символов там не 4, а столько сколько букв в названии компонента. Если выводить на экран, например, вот так
0ACD: show_text_highpriority 1@ time 1000
то выводится всё название компонента.
Этим опкодом (0AF1) записывается целое число.
2)найти через артмани это смещение и посмотреть там результат.
Смещение находится в скрипте и результат в переменной 1@
3)прочитать как 1 байт, это будет одна буква
Зачем читать по одному символу, когда всё название компонента уже есть в переменной. Потом как эти символы сравнить со строкой?
Наверно, точнее будет сказать, что в переменной содержится указатель на название компонента? Или я ошибаюсь?
В общем мне надо сравнить то, что находится в переменной 1@ (а там прочитано название компонента) с строкой "chassis" или 'chassis'.
31@ += 16
0A8D: 1@ = read_memory 31@ size 4 virtual_protect 0
31@ += 4
0A8D: 2@ = read_memory 31@ size 4 virtual_protect 0 //здесь в переменной 1@s будет номер машины
А где здесь переменная 1@s? Объясни пожалуйта каким образом это сделать.
Что-то я с этими строками запутался.:rolleyes:
Last edited by kenking (29-05-2011 06:35)
Offline
Дак тебе на экран выводить или сравнить названия!?
Если на экран, то я хз как.
Если сравнить названия, то я описал способы выше, ведь в твоей переменной записано не НАЗВАНИЕ а целое ЧИСЛО
Offline
А где здесь переменная 1@s? Объясни пожалуйта каким образом это сделать.
Размер переменной 1@s составляет 8 байтов, то есть она будет занимать место, отведённое под переменные 1@ и 2@ (размер обычной локальной переменной - 4 байта).
Размер переменной 1@v - 16 байтов (она занимает переменные 1@ - 4@).
Last edited by Den_spb (29-05-2011 07:11)
Offline
Денис, спасибо.
@}0RIC)-(
На экран выводится без проблем. Мне надо сравнить со строкой. Записано в переменной судя по всему указатель на название компонента.
Last edited by kenking (29-05-2011 07:18)
Offline
Спасибо.
Уже дошло.=) Надо было после +172 прочитать это значение и потом сравнивать. Вот, что мне надо было:
{$CLEO .cs} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then if Actor.Driving($PLAYER_ACTOR) then 03C0: 0@ = actor $PLAYER_ACTOR car 0A97: 31@ = car 0@ struct 31@ += 0x64C // chassis 0A8D: 31@ = read_memory 31@ size 4 virtual_protect 0 if 31@ <> 0 then 31@ += 172 0087: 30@ = 31@ // (float) 0A8D: 1@ = read_memory 31@ size 4 virtual_protect 0 31@ += 4 0A8D: 2@ = read_memory 31@ size 4 virtual_protect 0 if 05AE: 1@s == 'chassis' //08F9: 1@v == "chassis" {эта проверка тоже работает} then 0ACD: show_text_highpriority 30@ time 100 end end end end end
Last edited by kenking (16-10-2013 04:45)
Offline
Круто, а я и не знал что так можно сравнивать...
Offline
Den_spb, можно ли таким методом прицепить одну деталь машины к другой?
Offline
Ну к примеру "приаттачить" бампер этой машины к колесу этойже машины, чтобы крутился, двигался вместе с ним, это возможно?
кстате заодно вопрос, как "сбросить" компонент, т.е. вернуть его в исходные координаты?опятьже, это возможно?=)
Offline
Скорее всего - не получится.
Вращение обрабатывается специальными коллбэками, которые мняют углы в зависимости от времени.
Насколько я помню, в коллбэках обрабатывается только один атомик, и прикрепление атомиков друг к другу не предусмотрено.
Offline
listener, Благодарствую)
а второй вопрос? я кажись когда в артмани находил позиции компонентов, там были общие, ну те которые меняешь, и меняется на всех машинах этой модели, но зависимость у меня не получилось выследить
Offline