You are not logged in.
Но как в игре определить находится ли СиДжей рядом пока не понимаю...
Лучше всего воспользоваться опкодами КЛЕО4. Пример:
if gosub @SEARCH_OBJECTS then // Объект найден. Пишем здесь действия, которые нужно произвести над объектом. end .... :SEARCH_OBJECTS if 0AE3: 0@ = random_object_near_point 2@ 3@ 10@ in_radius 20.0 find_next 0 then repeat if or // здесь пишем условия, которым должен удовлетворять объект (в данном случае это модель объекта) 09CC: object 0@ model_is 3855 // GAY_TRAFFIC_LIGHT 09CC: object 0@ model_is 1315 // TRAFFICLIGHT1 09CC: object 0@ model_is 1352 // CJ_TRAFFIC_LIGHT3 09CC: object 0@ model_is 1350 // CJ_TRAFFIC_LIGHT4 09CC: object 0@ model_is 1351 // CJ_TRAFFIC_LIGHT5 09CC: object 0@ model_is 3516 // VGSSTRIPTLIGHTS1 09CC: object 0@ model_is 1283 // MTRAFFIC1 then 0485: return_true return end until 8AE3: not 0@ = random_object_near_point 2@ 3@ 10@ in_radius 20.0 find_next 1 end 8485: return_false return
Offline
Лучше всего воспользоваться опкодами КЛЕО4.
Спасибо, работает... Одно плохо - требуемой функции в игре не выполняет
Попробую по другому подойти, в связи с чем такой вопрос: Вот тут можно увидеть как отследить локальные переменные в потоке (32 штуки). Вопрос как отследить переменные в потоке миссии, коих как мы знаем 1024?
Пример из оригинального мейна:
:OTB_7451 ... 00D6: if 0039: 453@ == 1 004D: jump_if_false @OTB_7544 0002: jump @OTB_7551 ... :OTB_7551 0391: release_txd_dictionary 0390: load_txd_dictionary 'LD_OTB' ...
Как отследить эту (453@) переменную?
Да, кстати, вопрос по отслеживанию второго потока с одинаковым именем остаётся в силе...
Try not. Do or do not, there is no try.
Offline
Какой функции?
Пытался вот тут сформулировать.
Когда грузишь текстуры, например, оружия для собственного худа - всё ок. Однако всё ок только до тех пор, пока оригинальный мейн не выполняет команду релиз тхд и лоад его какие-то там текстуры. Таких потоков в мейне не так много... штук 15 всего (4 школы, 4 игры в казино, 4 видео игры, дансинг/лоурайдер, пул, бега и ещё некоторые). К сожалению, проблему микса текстур лично мне пока не удаётся решить ни загрузкой текстур на другие номера (собственно у меня так и есть - максимальный номер подгрузки текстуры в мейне 65, а мои текстуры грузятся начиная с 71), ни вот попыткой отследить нахождение героя рядом с объектами-тригерами скриптов.
Соответственно пока думаю выходить из этой ситуации отслеживая запуск потока и (проанализировав скрипт мейна) отслеживая соответствующие переменные этих потоков. Вопрос только в том, что в некоторых потоках (например, приведенный выше поток OTB - бега) мейн грузит текстуры по несколько раз... А поскольку эти потоки в основном являются миссиями - возникает вопрос как отследить переменные выше 32@. Плюс некоторые потоки грузятся в память по нескольку раз...
p.s. Да я знаю, что существует интерфейс эдитор и худ ГТА4. Хочу свой через клео
Try not. Do or do not, there is no try.
Offline
Может я тебя не правильно понял, а что если так
$Onmission == 1
Offline
Может я тебя не правильно понял, а что если так
$Onmission == 1
Если это мне - не вариант. Потоки типа обозначенного OTB ставят такой флаг. Получается, что, если делать проверку и не отображать худ при этом флаге, - худа не будет не только в играх казино, например, но и просто в миссиях. Если отображать худ при этом флаге - микс текстур, что я собственно и пытаюсь перебороть.
UPD. дабы не плодить посты - мейн трогать не хотелось бы...
Last edited by Yoda (21-09-2011 17:38)
Try not. Do or do not, there is no try.
Offline
ну а если ввести свою глобальную переменную. Или мод не будет трогать мейн?
Offline
Я решал такую проблему следующим образом...
0AAA: 31@ = thread 'OTB' pointer if 31@ == 0 //если ноль значит поток не запущен jf @blabla //тут рисуем свои текстурки
Да, пробовал. Скрипт рулетки, например, грузится при входе в казино (при чем сразу (пока фэйдинг) приобретает статус скрипта 3 (опкод 0926), который не меняется даже во время игры в эту самую рулетку). Значит с таким кодом увидеть какое у тебя оружие черех худ будучи в казино не получится.
Посему и пытаюсь выловить переменные, которые использует мейн перед загрузкой.
Идея на данный момент такая: поскольку худ должен быть в лупе, текстуры надо либо постоянно выгружать-загружать, либо загрузить один раз, но следить не выгрузил ли их мейн и тогда грузить снова. У меня пока первый вариант. При входе в казино, например, мейн выгружает мои текстуры и грузит свои. Идея в том, чтобы либо а) уловив момент догрузить свои текстуры (лоад на другие номера) не выгружая мейновские; либо б) выгрузить мейновские (релиз) и загрузить их снова вместе со своими (да клео-скрипт получится длиннее, но если только так, то что делать). Вопросы собственно связаны со словами "уловив момент"...
Try not. Do or do not, there is no try.
Offline
Вот по этому адресу 0x00A48960 переменные миссии, они активируются когда миссия запущена, т.е. если ты знаешь, что этот поток миссия, то смело можешь переходить к смещениям.
Вот, например...
0A8D: 31@ = read_memory 0x00A48960 size 4 virtual_protect 0 //здесь в переменной будет значение 0@
А чтобы получить переменную 1@ надо прибавить к этому адресу 4.
Только не забывай, что адрес в 16-ричном виде и, что прибавлять большие значения надо тоже правильно, либо перевести его в десятичный.
I know everything and nothing...
Offline
Пару вопросов
1 можно активировать радио не в машине?
2 в каком смещении от структуры авто хранится его номер?
Offline
А если изменить эти значения. Номер изменится?
Offline
Ну какая же то функция отвечает за прорисовку номера
Offline
т.е изменить уже не вариант?
Offline
У меня нету ida , точнее есть, но я не пойму как запустить в ней твою базу.
Offline
@mfisto, @Den_spb - на gtaforums.com ZAZ ткнул меня в функцию isTxdDictionaryLoaded (сообщение от Wesser)... разбираюсь... может тоже пригодится.
Try not. Do or do not, there is no try.
Offline
А можно сделать так чтобы сиджей медленее ходил? Ну может скорость анимации бега замедлить, только я незнаю как она называется.
Offline
вот шаблончик:
если анимация = idle_run (или как там её) тогда установить анимацию бега, но с нужной скоростью, такой опкод есть, ищи
Offline
дак проблема в том что я незнаю название анимации
Offline
дак проблема в том что я незнаю название анимации
можешь попробовать "run_player", не уверен что оно, вроде анимации бега разные для разных форм - толстый, худой, качок и т.п.
:1 wait 0 if actor.Animation($PLAYER_ACTOR) == "run_player" then 0393: actor $PLAYER_ACTOR perform_animation "run_player" at 0.5 times_normal_rate end jump @1
at 0.5 times_normal_rate - 1.0 - это стандартная скорость анимации, 0.5 - замедление в 2 раза, 2.0 - ускорение в 2 раза и т.д.
Offline