#76 27-04-2011 14:22

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

Это НОМЕР авто, он генерируется игрой и использует не текст из gxt, а текстуру из vehicle.txd, такчто русик нече не меняет
Кстате я нашел в артмани, название детали (ну там бампер, колесо) по смещению +172 от детали

Offline

#77 28-04-2011 05:18

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

На экран выводится не текстура, а текст. При выводе текста используется шрифт. Шрифт будет разный в зависимости от того английская версия или русифицированная. В результате получишь на экране совсем разный текст.
e32137aabf66t.jpg

Offline

#78 28-04-2011 16:53

reute70
From: Средняя Волга
Registered: 22-08-2009
Posts: 182

Re: Работа с компонентами машины

To kenking
Можно сделать в Сане так, чтобы машины ездили с тюнинг колёсами (из гаражей Дефендер и т.д.) ?
Есть скрипт, который вроде выхватывает ближайшие машины к ГГ и меняет им колёса, но работает неочень (то ли трафик уменьшается, то ли ещё чё...), может есть более элегантный способ?

Offline

#79 29-04-2011 12:16

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

kenking, каким опкодом отображать такую надпись?)
а вообще я говорил не про то что на экране отображается, а про то что на номерах машин xD

Offline

#80 29-04-2011 12:53

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

reute70 wrote:

To kenking
Можно сделать в Сане так, чтобы машины ездили с тюнинг колёсами (из гаражей Дефендер и т.д.) ?
Есть скрипт, который вроде выхватывает ближайшие машины к ГГ и меняет им колёса, но работает неочень (то ли трафик уменьшается, то ли ещё чё...), может есть более элегантный способ?

Можно. Есть мой древний скрипт 'Тюнинг авто' на эту тему. Используя опкоды Cleo4 (в частности 0AE2) и данные представленные в этой теме можно написать более качественный скрипт.

}0RIC)-( wrote:

kenking, каким опкодом отображать такую надпись?)

В посте № 74 на предыдущей странице - готовый скрипт.

Offline

#81 07-05-2011 09:03

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

Появились несколько вопросов:
1) Можно ли прицепить произвольный объект к какому-либо компоненту транспорта. Ну наподобие, как цепляется объект не к актёру, а части тела актёра?
2) Записано ли в структуре транспорта количество полигонов модели. Если да, то по какому смещению?
3) Можно ли как-то в скрипте прочитать размер dff файла модели транспорта?
Заранее спасибо за ответы.=)

Offline

#82 25-05-2011 14:37

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

Re: Работа с компонентами машины

kenking wrote:

Появились несколько вопросов:
1) Можно ли прицепить произвольный объект к какому-либо компоненту транспорта. Ну наподобие, как цепляется объект не к актёру, а части тела актёра?
2) Записано ли в структуре транспорта количество полигонов модели. Если да, то по какому смещению?
3) Можно ли как-то в скрипте прочитать размер dff файла модели транспорта?
Заранее спасибо за ответы.=)

2) и 3) О_о интересно... "как открыть img архив при помощи скрипта и найти в нём модель" новая тема на следующие два месяца grin

Offline

#83 25-05-2011 16:05

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Работа с компонентами машины

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

#84 26-05-2011 07:49

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

Денис, спасибо.:clap:
То, что прицепить произвольный объект к какому-либо компоненту транспорта можно - это хорошо. А вот, что объект отстаёт от авто на скорости - это плохо.

Offline

#85 26-05-2011 16:16

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Работа с компонентами машины

Денис, это _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

#86 26-05-2011 23:17

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Работа с компонентами машины

А вот, что объект отстаёт от авто на скорости - это плохо.

Евгений, можно попробовать крепить объект непосредственно к машине. В этом случае команду прицепления надо выполнять постоянно (в цикле), так как оффсеты будут непрерывно меняться. Сами оффсеты нужно вычислять путём пересчёта координат из одной системы в другую:

Вектор позиции в СК 2 = (Матрица поворота СК 2 относительно СК 1)^-1 * Вектор позиции в СК 1
Вектор позиции в СК 1 = Матрица поворота СК 2 относительно СК 1 * Вектор позиции в СК 2

Примеры пересчёта координат были даны здесь: http://sannybuilder.com/forums/viewtopi … 485#p14485

Денис, это _matrix__attachTo?

Дмитрий, в базе у этого метода не было названия. Он используется в стандартных опкодах крепления объектов и машин друг к другу.

Offline

#87 28-05-2011 09:42

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

название детали (ну там бампер, колесо) по смещению +172 от детали

В связи с этим возник вопрос:
Допустим, прочитал в переменную 1@ название компонента (для примера) - chassis. Как потом сравнить то, что находится в переменной 1@ с записью "chassis" или 'chassis'?
Заранее спасибо.

Offline

#88 28-05-2011 10:48

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

kenking wrote:

Как потом сравнить то, что находится в переменной 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 - ...
это большие.

надеюсь помог smile
могу написать пример если так непонятно обьяснил.

Last edited by }0RIC)-( (28-05-2011 10:56)

Offline

#89 29-05-2011 06:32

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

@}0RIC)-(
Спасибо, конечно, но это всё не то.

}0RIC)-( wrote:

1)Поработать с этим смещением:
создать новый скрипт. там найти эту деталь, прочитать ее название (+172) в 4 байта (будет тока 4 символа, хз почему)
и вот этим опкодом записать результат в ини файл:

Я же написал

Допустим, прочитал в переменную 1@ название компонента

Символов там не 4, а столько сколько букв в названии компонента. Если выводить на экран, например, вот так

0ACD: show_text_highpriority 1@ time 1000

то выводится всё название компонента.
Этим опкодом (0AF1) записывается целое число.

}0RIC)-( wrote:

2)найти через артмани это смещение и посмотреть там результат.

Смещение находится в скрипте и результат в переменной 1@

}0RIC)-( wrote:

3)прочитать как 1 байт, это будет одна буква

Зачем читать по одному символу, когда всё название компонента уже есть в переменной. Потом как эти символы сравнить со строкой?

Наверно, точнее будет сказать, что в переменной содержится указатель на название компонента? Или я ошибаюсь?
В общем мне надо сравнить то, что находится в переменной 1@ (а там прочитано название компонента) с строкой "chassis" или 'chassis'.

mfisto wrote:

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

#90 29-05-2011 06:47

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

Дак тебе на экран выводить или сравнить названия!?
Если на экран, то я хз как.
Если сравнить названия, то я описал способы выше, ведь в твоей переменной записано не НАЗВАНИЕ а целое ЧИСЛО

Offline

#91 29-05-2011 07:09

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Работа с компонентами машины

А где здесь переменная 1@s? Объясни пожалуйта каким образом это сделать.

Размер переменной 1@s составляет 8 байтов, то есть она будет занимать место, отведённое под переменные 1@ и 2@ (размер обычной локальной переменной - 4 байта).
Размер переменной 1@v - 16 байтов (она занимает переменные 1@ - 4@).

Last edited by Den_spb (29-05-2011 07:11)

Offline

#92 29-05-2011 07:10

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

Денис, спасибо.

@}0RIC)-(
На экран выводится без проблем. Мне надо сравнить со строкой. Записано в переменной судя по всему указатель на название компонента.

Last edited by kenking (29-05-2011 07:18)

Offline

#93 29-05-2011 07:20

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Работа с компонентами машины

Если надо сравнить строку, то это делается просто:

if
    05AE: 5@s == 'DUMMY' 
then
    ....

Offline

#94 29-05-2011 07:52

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Работа с компонентами машины

Спасибо.
Уже дошло.=) Надо было после +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

#95 29-05-2011 12:54

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

Круто, а я и не знал что так можно сравнивать... crazy

Offline

#96 26-06-2011 10:14

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

Den_spb, можно ли таким методом прицепить одну деталь машины к другой?

Offline

#97 26-06-2011 16:46

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 937
Website

Re: Работа с компонентами машины

Не понял, что конкретно имеется в виду. Приведи пример.

Offline

#98 28-06-2011 14:27

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

Ну к примеру "приаттачить" бампер этой машины к колесу этойже машины, чтобы крутился, двигался вместе с ним, это возможно?
кстате заодно вопрос, как "сбросить" компонент, т.е. вернуть его в исходные координаты?опятьже, это возможно?=)

Offline

#99 28-06-2011 15:55

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: Работа с компонентами машины

Скорее всего - не получится.
Вращение обрабатывается специальными коллбэками, которые мняют углы в зависимости от времени.
Насколько я помню, в коллбэках обрабатывается только один атомик, и прикрепление атомиков друг к другу не предусмотрено.

Offline

#100 28-06-2011 15:58

}0RIC)-(
Registered: 21-11-2010
Posts: 30

Re: Работа с компонентами машины

listener, Благодарствую)
а второй вопрос? я кажись когда в артмани находил позиции компонентов, там были общие, ну те которые меняешь, и меняется на всех машинах этой модели, но зависимость у меня не получилось выследить

Offline

Board footer

Powered by FluxBB