You are not logged in.
kenking, а как оно работает?
кстати заодно вопрос, оперируя всеми знаниями которые сейчас есть, можно получить смещение по названию компонента? ну или как оптимально сделать перебор всех компонентов, и нахождение с нужным мне именем?
[ED]Andr, раскрою тебе секрет) для того чтобы текстуры или текст не "мигали" должен быть 1 цикл:
:1 wait 0 gosub @2 //своего рода "подпрограмма" тут отображение текста 1@ jump @1 :2 //то что я назвал подпрограммой //без wait 0 //ну и тут хоть запрыгайся, главное чтобы у гоусаба был выход (иначе вылет) измерил то что надо в переменную скажем 1@ return //выход из гоусаба
Были названы смещения от компонента, указывающие на следующий компонент в иерархии, и дочерний
Нашел еще одно интересное смещение - "на родителя" компонента, +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
Пример 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
другой вопрос: можно ли узнать количество 3д деталей машины (общее) ?
Есть класс CVehicleModelInfo (у меня в базе он может называться CModelCars)
это база для "IDA"? (сори, я вообще тут чайниГ)
в идиале хотелосьбы подробно и с примером, но и на этом спасибо, будем искать
listener, Благодарствую)
а второй вопрос? я кажись когда в артмани находил позиции компонентов, там были общие, ну те которые меняешь, и меняется на всех машинах этой модели, но зависимость у меня не получилось выследить
Ну к примеру "приаттачить" бампер этой машины к колесу этойже машины, чтобы крутился, двигался вместе с ним, это возможно?
кстате заодно вопрос, как "сбросить" компонент, т.е. вернуть его в исходные координаты?опятьже, это возможно?=)
Den_spb, можно ли таким методом прицепить одну деталь машины к другой?
Круто, а я и не знал что так можно сравнивать...
Дак тебе на экран выводить или сравнить названия!?
Если на экран, то я хз как.
Если сравнить названия, то я описал способы выше, ведь в твоей переменной записано не НАЗВАНИЕ а целое ЧИСЛО
Как потом сравнить то, что находится в переменной 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 - ... это большие.
надеюсь помог
могу написать пример если так непонятно обьяснил.
kenking, каким опкодом отображать такую надпись?)
а вообще я говорил не про то что на экране отображается, а про то что на номерах машин xD
Это НОМЕР авто, он генерируется игрой и использует не текст из gxt, а текстуру из vehicle.txd, такчто русик нече не меняет
Кстате я нашел в артмани, название детали (ну там бампер, колесо) по смещению +172 от детали
немножко вопрос не в тему:
Если я правельно все понял, то машины ездиют по путям. пути состоят из точек, матриц поворота итд
Возможно ли вычеслеть следующую точку пути у рандомной машины?Если да то как?
СПАСИБО! то что надо!
Кто знает, а как не вращать детали, а считывать на сколько они повернуты сейчас?
какой адрес нужен для проверки состояния этих компонентов?
Ты же писал уже блок для проверки, но можно вот это
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 - компонент отсутствует
{$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
По быстрому написал скрипт, в архангелах при смене бампера.. ну короче сами все увидете)
хотя бы настроить спойлер например... колеса...
Мне кажется или речь идет об "автоскульпте" из карбона, прострита итд?
При переносе компонента будет видно его перемещение от модели.
кто такое придумал? я же сделал на кузове поворотники которые пропадают таким метадом, только переносил на 3000 вверх, моментально
Если у кого-нибудь руки возьмуться, то с этим можно изрядно улучшить скрипт трансфендера, сделав намного интереснее модификации машин
Приведи пример... Можно попробовать сделать как в Juiced 2 что бампер допустим убирается (переносится вперед), заменяется на новый, и плавно на место возвращается, могу попробовать)
Подойдёт ли этот метод для удаления компонентов, найденых способом описанным выше?
А зачем удалять? достаточно помоему перенести на 1000 метров ХД
Пасяба
упсь xD, на номера то не посмотрел....
Целую часть можно и
0092: 22@ = float 17@ to_integer
вот этим опкодом взять
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