#3726 20-09-2011 00:59

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

Re: Один вопрос

Yoda wrote:

Но как в игре определить находится ли СиДжей рядом пока не понимаю...

Лучше всего воспользоваться опкодами КЛЕО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

#3727 21-09-2011 10:31

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

Den_spb wrote:

Лучше всего воспользоваться опкодами КЛЕО4.

Спасибо, работает... Одно плохо - требуемой функции в игре не выполняет smile
Попробую по другому подойти, в связи с чем такой вопрос: Вот тут можно увидеть как отследить локальные переменные в потоке (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

#3728 21-09-2011 14:46

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

Re: Один вопрос

Спасибо, работает... Одно плохо - требуемой функции в игре не выполняет

Какой функции?

Offline

#3729 21-09-2011 16:27

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

Den_spb wrote:

Какой функции?

Пытался вот тут сформулировать.
Когда грузишь текстуры, например, оружия для собственного худа - всё ок. Однако всё ок только до тех пор, пока оригинальный мейн не выполняет команду релиз тхд и лоад его какие-то там текстуры. Таких потоков в мейне не так много... штук 15 всего (4 школы, 4 игры в казино, 4 видео игры, дансинг/лоурайдер, пул, бега и ещё некоторые). К сожалению, проблему микса текстур лично мне пока не удаётся решить ни загрузкой текстур на другие номера (собственно у меня так и есть - максимальный номер подгрузки текстуры в мейне 65, а мои текстуры грузятся начиная с 71), ни вот попыткой отследить нахождение героя рядом с объектами-тригерами скриптов.
Соответственно пока думаю выходить из этой ситуации отслеживая запуск потока и (проанализировав скрипт мейна) отслеживая соответствующие переменные этих потоков. Вопрос только в том, что в некоторых потоках (например, приведенный выше поток OTB - бега) мейн грузит текстуры по несколько раз... А поскольку эти потоки в основном являются миссиями - возникает вопрос как отследить переменные выше 32@. Плюс некоторые потоки грузятся в память по нескольку раз...

p.s. Да я знаю, что существует интерфейс эдитор и худ ГТА4. Хочу свой через клео smile


Try not. Do or do not, there is no try.

Offline

#3730 21-09-2011 16:50

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Может я тебя не правильно понял, а что если так
$Onmission == 1

Offline

#3731 21-09-2011 17:01

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

444andrei444 wrote:

Может я тебя не правильно понял, а что если так
$Onmission == 1

Если это мне - не вариант. Потоки типа обозначенного OTB ставят такой флаг. Получается, что, если делать проверку и не отображать худ при этом флаге, - худа не будет не только в играх казино, например, но и просто в миссиях. Если отображать худ при этом флаге - микс текстур, что я собственно и пытаюсь перебороть.


UPD. дабы не плодить посты - мейн трогать не хотелось бы...

Last edited by Yoda (21-09-2011 17:38)


Try not. Do or do not, there is no try.

Offline

#3732 21-09-2011 17:31

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

ну а если ввести свою глобальную переменную. Или мод не будет трогать мейн?

Offline

#3733 21-09-2011 17:45

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

Я решал такую проблему следующим образом...

0AAA: 31@ = thread 'OTB' pointer
if
   31@ == 0                         //если ноль значит поток не запущен
jf @blabla
//тут рисуем свои текстурки

I know everything and nothing...

Offline

#3734 21-09-2011 18:02

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

mfisto wrote:

Я решал такую проблему следующим образом...

0AAA: 31@ = thread 'OTB' pointer
if
   31@ == 0                         //если ноль значит поток не запущен
jf @blabla
//тут рисуем свои текстурки

Да, пробовал. Скрипт рулетки, например, грузится при входе в казино (при чем сразу (пока фэйдинг) приобретает статус скрипта 3 (опкод 0926), который не меняется даже во время игры в эту самую рулетку). Значит с таким кодом увидеть какое у тебя оружие черех худ будучи в казино не получится.
Посему и пытаюсь выловить переменные, которые использует мейн перед загрузкой.
Идея на данный момент такая: поскольку худ должен быть в лупе, текстуры надо либо постоянно выгружать-загружать, либо загрузить один раз, но следить не выгрузил ли их мейн и тогда грузить снова. У меня пока первый вариант. При входе в казино, например, мейн выгружает мои текстуры и грузит свои. Идея в том, чтобы либо а) уловив момент догрузить свои текстуры (лоад на другие номера) не выгружая мейновские; либо б) выгрузить мейновские (релиз) и загрузить их снова вместе со своими (да клео-скрипт получится длиннее, но если только так, то что делать). Вопросы собственно связаны со словами "уловив момент"...


Try not. Do or do not, there is no try.

Offline

#3735 22-09-2011 08:54

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

Вот по этому адресу 0x00A48960 переменные миссии, они активируются когда миссия запущена, т.е. если ты знаешь, что этот поток миссия, то смело можешь переходить к смещениям.

Вот, например...

0A8D: 31@ = read_memory 0x00A48960 size 4 virtual_protect 0 //здесь в переменной будет значение 0@

А чтобы получить переменную 1@ надо прибавить к этому адресу 4.

Только не забывай, что адрес в 16-ричном виде и, что прибавлять большие значения надо тоже правильно, либо перевести его в десятичный.


I know everything and nothing...

Offline

#3736 22-09-2011 08:54

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Пару вопросов
1 можно активировать радио не в машине?
2 в каком смещении от структуры авто хранится его номер?

Offline

#3737 22-09-2011 09:01

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

@444andrei444

Вот здесь и дальше объясняется по поводу номера авто.


I know everything and nothing...

Offline

#3738 22-09-2011 09:15

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

А если изменить эти значения. Номер изменится?

Offline

#3739 22-09-2011 09:29

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

Номер можно назначить в оригинале только при загрузке модели. Т.е. даже перед тем, как создать авто.
Потом его изменить нельзя, однако значение прочитать можно.


I know everything and nothing...

Offline

#3740 22-09-2011 09:39

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Ну какая же то функция отвечает за прорисовку номера

Offline

#3741 22-09-2011 14:58

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

Re: Один вопрос

Это было у меня в исходниках. При создании машины генерируется строка номера и по ней генерируется текстура номера.

Offline

#3742 22-09-2011 15:48

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

т.е изменить уже не вариант?

Offline

#3743 23-09-2011 03:33

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

Re: Один вопрос

@444andrei444 - Почему же? Нужно просто найти эту текстуру в памяти и заменить на свою.

auto generateLicenseplateMaterial = reinterpret_cast<RpMaterial * (__cdecl *)(CClump *, char *, DWORD)>(0x6FE0F0);

Offline

#3744 23-09-2011 06:14

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

У меня нету ida , точнее есть, но я не пойму как запустить в ней твою базу.

Offline

#3745 23-09-2011 09:25

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

@mfisto, @Den_spb - на gtaforums.com  ZAZ ткнул меня в функцию isTxdDictionaryLoaded (сообщение от  Wesser)... разбираюсь... может тоже пригодится.


Try not. Do or do not, there is no try.

Offline

#3746 23-09-2011 09:43

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

Re: Один вопрос

Там, кстати, в этом примере с проверкой на загруженность txd архива нужно еще название потока указывать, что я заметил, так что...


I know everything and nothing...

Offline

#3747 25-09-2011 03:56

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

А можно сделать так чтобы сиджей медленее ходил? Ну  может скорость анимации бега замедлить, только я незнаю как она называется.

Offline

#3748 25-09-2011 11:36

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

Re: Один вопрос

вот шаблончик:

если анимация = idle_run (или как там её)
тогда
установить анимацию бега, но с нужной скоростью, такой опкод есть, ищи

Offline

#3749 25-09-2011 12:19

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

дак проблема в том что я незнаю название анимации

Offline

#3750 25-09-2011 16:55

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

444andrei444 wrote:

дак проблема в том что я незнаю название анимации

можешь попробовать "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 раза и т.д.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

Board footer

Powered by FluxBB