#1 Re: Справочная информация » Работа с компонентами машины » 02-11-2011 13:28

kenking, а как оно работает?
кстати заодно вопрос, оперируя всеми знаниями которые сейчас есть, можно получить смещение по названию компонента? ну или как оптимально сделать перебор всех компонентов, и нахождение с нужным мне именем?

#2 Re: Работа с памятью, EXE » Вопрос по памяти » 11-07-2011 11:37

[ED]Andr, раскрою тебе секрет) для того чтобы текстуры или текст не "мигали" должен быть 1 цикл:

:1
wait 0
gosub @2 //своего рода "подпрограмма"
тут отображение текста 1@
jump @1

:2 //то что я назвал подпрограммой
//без wait 0
//ну и тут хоть запрыгайся, главное чтобы у гоусаба был выход (иначе вылет)
измерил то что надо в переменную скажем 1@
return //выход из гоусаба

#3 Re: Справочная информация » Работа с компонентами машины » 11-07-2011 11:27

Были названы смещения от компонента, указывающие на следующий компонент в иерархии, и дочерний
Нашел еще одно интересное смещение - "на родителя" компонента, +4 от детали (может и не пригодится вовсе)
Примеры (модель машины manana):

Пример 1.

{$CLEO}

thread '_test1_'

:1
wait 0
0A8D: 1@ = read_memory 0xBA18FC size 4 virtual_protect 0
//заменил сразу несколько проверок, это указатель на машину игрока.
//если он есть, то игрок существует, и он в авто,
//причем 1@ это сразу структура
if
1@ <> 0 //указатель есть
jf @1
1@ += 0x650 //wheel_rf_dummy  (смотрите скрин иерархии ниже) его "родитель" это
//главный думми, под названием manana
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4 //смещение на родителя
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 172 //смещение на название компонента
0ACD: show_text_highpriority 1@ time 100 //отображаем на экране
jump @1

90331.JPG

Пример 2.

{$CLEO}

thread '_test2_'

:1
wait 0
0A8D: 1@ = read_memory 0xBA18FC size 4 virtual_protect 0
//заменил сразу несколько проверок, это указатель на машину игрока.
//если он есть, то игрок существует, и он в авто,
//причем 1@ это сразу структура
if
1@ <> 0 //указатель есть
jf @1
1@ += 0x688 //bonnet_dummy  (смотрите скрин иерархии ниже) его "родитель" это
//думми, под названием chassis_dummy
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4 //смещение на родителя
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 172 //смещение на название компонента
0ACD: show_text_highpriority 1@ time 100 //отображаем на экране
jump @1

25132.JPG

#4 Re: Справочная информация » Работа с компонентами машины » 02-07-2011 17:21

другой вопрос: можно ли узнать количество 3д деталей машины (общее) ?

#5 Re: Справочная информация » Работа с компонентами машины » 28-06-2011 19:39

listener wrote:

Есть класс CVehicleModelInfo (у меня в базе он может называться CModelCars)

rolleyes это база для "IDA"? (сори, я вообще тут чайниГ)
в идиале хотелосьбы подробно и с примером, но и на этом спасибо, будем искать smile

#6 Re: Справочная информация » Работа с компонентами машины » 28-06-2011 15:58

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

#7 Re: Справочная информация » Работа с компонентами машины » 28-06-2011 14:27

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

#8 Re: Справочная информация » Работа с компонентами машины » 26-06-2011 10:14

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

#9 Re: Справочная информация » Работа с компонентами машины » 29-05-2011 12:54

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

#10 Re: Справочная информация » Работа с компонентами машины » 29-05-2011 06:47

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

#11 Re: Справочная информация » Работа с компонентами машины » 28-05-2011 10:48

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
могу написать пример если так непонятно обьяснил.

#12 Re: Справочная информация » Работа с компонентами машины » 29-04-2011 12:16

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

#13 Re: Справочная информация » Работа с компонентами машины » 27-04-2011 14:22

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

#14 Re: Справочная информация » Работа с компонентами машины » 23-04-2011 14:44

немножко вопрос не в тему:
Если я правельно все понял, то машины ездиют по путям. пути состоят из точек, матриц поворота итд
Возможно ли вычеслеть следующую точку пути у рандомной машины?Если да то как?

#16 Re: Справочная информация » Работа с компонентами машины » 22-04-2011 13:37

Кто знает, а как не вращать детали, а считывать на сколько они повернуты сейчас?

#17 Re: Справочная информация » Работа с компонентами машины » 27-03-2011 15:28

kenking wrote:

какой адрес нужен для проверки состояния этих компонентов?

Ты же писал уже блок для проверки, но можно вот это

kenking wrote:
0A97: 1@ = car 0@ struct
1@ += 0x5A0
0AA8: call_function_method 0x6C2230 struct 1@ num_params 1 pop 0 0{0,1,2,3,4,5} 2@  

Значение 2@ 
0 - компонент целый 
2 - компонент повреждён 
4 - компонент отсутствует

заменить вот на это:

0A97: 1@ = car 0@ struct
1@ += 0x5A0 // тоже что и у тебя, т.е. капот
1@ += 9  // для наглядности, незнаю почему 9, нашел в артмани хд
0A8D: 2@ = read_memory 1@ size 2 virtual_protect 0 // тоже что и у тебя только не функция

Значение 2@ 
0 - компонент целый 
1 - компонент целый и открыт (наверно, не проверял а предпологаю)
2 - компонент повреждён 
3 - Компонент поврежден и открыт
4 - компонент отсутствует

#18 Re: Справочная информация » Работа с компонентами машины » 27-03-2011 13:06

{$CLEO}

Thread 'fbmp_move'

:1
wait 0      
if
0256:   player $PLAYER_CHAR defined 
jf @1
if
00DF:   actor $PLAYER_ACTOR driving 
jf @1
03C0: 0@ = actor $PLAYER_ACTOR car
0A97: 1@ = car 0@ struct
1@ += 1082          // В этом смещении не уверен, оно почемуто работает и для заднего бампера и для других частей
0A8D: 2@ = read_memory 1@ size 2 virtual_protect 0

:2
wait 0
if
00DB:   actor $PLAYER_ACTOR in_car 0@ 
jf @1
0A8D: 3@ = read_memory 1@ size 2 virtual_protect 0
if
803B:   not  3@ == 2@ 
jf @2

:3     // запоминаем координаты старого бампера, и переносем его вперед на 5 метров
wait 0
0A97: 1@ = car 0@ struct
1@ += 0x678     // передний бампер
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
if
8039:   not 1@ == 0 
jf @3
1@ += 0x10
1@ += 52 
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0
000B: 2@ += 5.0 
0A8C: write_memory 1@ size 4 value 2@ virtual_protect 0
000F: 3@ -= 0.15
000B: 4@ += 0.15        

:4          // цикл перемещения наместо нового бампера
wait 0
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
if and
0025:   2@ > 3@ 
0025:   4@ > 2@ 
jf @5
000B: 3@ += 0.15 
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
jump @1

:5
wait 0
000B: 2@ += -0.15
0A8C: write_memory 1@ size 4 value 2@ virtual_protect 0
jump @4

По быстрому написал скрипт, в архангелах при смене бампера.. ну короче сами все увидете)

#19 Re: Справочная информация » Работа с компонентами машины » 27-03-2011 12:58

Airon wrote:

хотя бы настроить спойлер например... колеса...

Мне кажется или речь идет об "автоскульпте" из карбона, прострита итд?

#20 Re: Справочная информация » Работа с компонентами машины » 27-03-2011 10:32

kenking wrote:

При переносе компонента будет видно его перемещение от модели.

кто такое придумал? я же сделал на кузове поворотники которые пропадают таким метадом, только переносил на 3000 вверх, моментально

Airon wrote:

Если у кого-нибудь руки возьмуться, то с этим можно изрядно улучшить скрипт трансфендера, сделав намного интереснее модификации машин

Приведи пример... Можно попробовать сделать как в Juiced 2 что бампер допустим убирается (переносится  вперед), заменяется на новый, и плавно на место возвращается, могу попробовать)

#21 Re: Справочная информация » Работа с компонентами машины » 25-03-2011 09:05

kenking wrote:

Подойдёт ли этот метод для удаления компонентов, найденых способом описанным выше?

А зачем удалять? достаточно помоему перенести на 1000 метров ХД

#24 Re: Работа с памятью, EXE » Пустые адреса в структуре авто » 02-03-2011 12:58

Целую часть можно и

0092: 22@ = float 17@ to_integer

вот этим опкодом взять

#25 Re: Работа с памятью, EXE » Пустые адреса в структуре авто » 01-03-2011 17:35

Alien, спасибо, то что надо, разобрался), но я не очень понимаю зачем опкоды

0092: 0@ = floor 2@
0092: 1@ = floor 3@

что они показывают на экране?
для меня главное положения на экране координаты это 2@ и 3@
можнобылобы

045B: draw_text_2numbers 2@ 3@ GXT 'TIME' numbers 2@ 3@  // ~1~:~1~

xD

Board footer

Powered by FluxBB