#4626 03-01-2015 21:58

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

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

Дело в том, что у стандартного актера записано стандартное поведение. В принципе, если не устраивает, то можно изменить его вручную в папке с игрой (data\Decision).


I know everything and nothing...

Offline

#4627 16-01-2015 22:30

Vital
From: Москва
Registered: 07-11-2010
Posts: 64
Website

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

Снова я со своими вопросами smile
1) Можно ли отключить звук (оповещение в виде постоянного писка) приближения вражеской ракеты с теплонаведением, который проигрывается в транспорте?

2) Есть ли возможность отключить стрельбу ракетами у самолёта Rustler после применения опкода атаки игрока? То есть после опкода 08А2 самолёт, не имеющий ракет, стреляет как из пулемёта, так и ракетами, что нелогично. Пробовал другой опкод с аналогичным действием, но результат тот же.

Заранее спасибо!

Offline

#4628 18-01-2015 11:44

SHooZ
From: Львів
Registered: 05-06-2013
Posts: 51
Website

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

Vital wrote:

Снова я со своими вопросами smile
1) Можно ли отключить звук (оповещение в виде постоянного писка) приближения вражеской ракеты с теплонаведением, который проигрывается в транспорте?

2) Есть ли возможность отключить стрельбу ракетами у самолёта Rustler после применения опкода атаки игрока? То есть после опкода 08А2 самолёт, не имеющий ракет, стреляет как из пулемёта, так и ракетами, что нелогично. Пробовал другой опкод с аналогичным действием, но результат тот же.

Заранее спасибо!

2) Как вариант прочесовать пулл снарядов (0xC891A8) ловить там те, что выпущинные твоим Rustler и выгружать их.

Offline

#4629 20-01-2015 23:15

Vital
From: Москва
Registered: 07-11-2010
Posts: 64
Website

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

SHooZ wrote:

Как вариант прочесовать пулл снарядов (0xC891A8) ловить там те, что выпущинные твоим Rustler и выгружать их.

Спасибо, стоит попробовать!

Offline

#4630 21-01-2015 09:09

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

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

Подскажите пожалуйста, как узнать включен или выключен двигатель на транспорте в VC. По какому-то смещению в структуре транспорта это наверняка есть?

Offline

#4631 21-01-2015 13:28

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

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

Вот скрипт:

{$CLEO} 
0000: 
while true 
     wait 0 
     if 
         not Player.Defined($Player_Char)  //если игрок не определен (мертв или арестован или вообще не создан) то пропускаем цикл while 
     then 
         0@ = 0  //при этом присваиваем переменной 0@ 0 
         continue 
     end 
     if 
         80E1:   not key_pressed 0 4 //если не нажата клавиша сменить радио в машине или ответить на звонок пешком то также пропускаем цикл while 
     then 
         0@ = 0 //здесь также присваиваем 0@ 0 
         continue 
     end 
     if 
         0@ == 1 //в результате если у нас уже есть 1 то мы пропускаем цикл while 
     then 
         continue 
     end 
     0@ = 1 // здесь ставим 1 для выполнения нижней части цикла один раз 
     if 
         2@ == 0 // проверяем какую часть включение или выключение призводить 
     then 
         if 
             Actor.Driving($Player_Actor) 
         then 
             03C0: 1@ = actor $Player_Actor car 
             05E7: 3@ = car 1@ struct //вычисляем структуру авто 
             3@ += 0x50 //переходим к смещению 0x50 
             05E0: 15@ = read_memory 3@ size 1 virtual_protect 0 //читаем это значение 
             05F9: 15@ = 15@ AND 7 //обрезаем информацию о текущем поведении авто 
             05FA: 15@ = 15@ OR 0x18 //ставим флаг торможения 
             05DF: write_memory 3@ size 1 value 15@ virtual_protect 0 //записываем полученное значение 
             05E7: 3@ = car 1@ struct 
             3@ += 0x1F9 //переходим к смещению 0x1F9 
             05E0: 15@ = read_memory 3@ size 1 virtual_protect 0 //читаем это значение 
             05F9: 15@ = 15@ AND 0xEF //обнуляем флаг звука двигателя 
             05DF: write_memory 3@ size 1 value 15@ virtual_protect 0 //записываем полученное значение 
         end 
         2@ = 1 
     else //здесь по аналогии выключаем торможение и включаем звук двигателя 
         if 
             Actor.Driving($Player_Actor) 
         then 
             03C0: 1@ = actor $Player_Actor car 
             05E7: 3@ = car 1@ struct 
             3@ += 0x50 
             05E0: 15@ = read_memory 3@ size 1 virtual_protect 0 
             05F9: 15@ = 15@ AND 7 
             05DF: write_memory 3@ size 1 value 15@ virtual_protect 0 
             05E7: 3@ = car 1@ struct 
             3@ += 0x1F9 
             05E0: 15@ = read_memory 3@ size 1 virtual_protect 0 
             05FA: 15@ = 15@ OR 0x10 
             05DF: write_memory 3@ size 1 value 15@ virtual_protect 0 
             //01E5: show_text_1number_highpriority GXT 'TMN' number 15@ time 5000 flag 1 
         end 
         2@ = 0 
     end   
end

Скрипт включения-выключения двигла.

Last edited by mfisto (21-01-2015 13:29)


I know everything and nothing...

Offline

#4632 21-01-2015 14:04

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

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

Спасибо за наводку на смещение 0x1F9.  good

Offline

#4633 15-02-2015 23:33

Hedgy
Registered: 11-09-2014
Posts: 9

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

День добрый!

Возникла пара вопросов по работе с костями актера.
Как можно переместить кость по мировым координатам? Делать пересчет из мировых в локальные?
Если так, то немного прошу помощи в этом. Мировые координаты кости нашел, в смещении +48 (вроде бы) от указателя на матрицу. Сама матрица при перемещении никаких визуальных эффектов не производит, кость на месте.

И вот такая проблема:
В стандартной гта са, у актера, сидящего на велосипеде, кость руки перемещается постоянно в местоположение даммиса  bargrip. Это делается для компенсации отрыва рук при стандартных анимациях. Т.е. как-то кость перемещается.
Скриптово смещать кость локально не получается - стандартная функция напрочь блокирует любые перемещения, если кость уже "занята" аттачем к даммису. Интересно, что при поворотах, когда байк наклоняется вбок, координаты даммиса остаются на месте, как будто байк стоит ровно.
Это значит, что функция крепления кости использует координаты, считанные в момент посадки на байк и потом уже не меняет их.

Надеюсь, что кто-то это прочтет и сможет помочь. Хоть пересчетом глобальных в локальные, хоть NOP'ом это функции.. найти б её еще. rolleyes

Offline

#4634 16-02-2015 10:57

Hedgy
Registered: 11-09-2014
Posts: 9

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

С данными опкодами знаком, но вектор смещения работает только в локальных координатах от родительской кости.
А кватернионы работают исключительно в одиночной версии игры. В САМП'е значение кватерниона перезаписывается, но визуально ничего не меняется.

P.S. В опкодах получения указателя на матрицу и в опкоде получения хэндла кости используются разные нумерации, что немного неудобно)
Но, в любом случае, спасибо за newOpcodes!

P.p.s. Опкод получения хэндла наотрез не работает с "L/R Finger", когда плейер на байке..

Last edited by Hedgy (16-02-2015 11:03)

Offline

#4635 17-02-2015 02:19

Hedgy
Registered: 11-09-2014
Posts: 9

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

Дмитрий, а можешь показать какой-нибудь простой пример хука, если не сложно? Я в этом профан, а поднабить руку хочется.

P.s. И если можно, какой нибудь мудрый тост - как искать эту зловещую функцию?

Спасибо, что читаешь-отвечаешь

//Edit.
Был давным-давно фикс от Рьюзуке "bikearmfix.asi". Может его поковырять? Вроде это то, что надо
собственно, сабж

//Edit еще раз

Да, этот плагин нопит функцию, остается только как-то перемещать кость по мировым коорд-м.

Last edited by Hedgy (17-02-2015 16:25)

Offline

#4636 19-02-2015 12:23

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

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

Как перевести compressedVector в обычный 4 байтный и обратно?

Спасибо DK, вроде разобрался. Там ситуация такая, что необходимо compressedVector перевести в float (оно там нах-ся как целое 2 байта), а затем умножить на 0.125 или что то же самое разделить на 8.0. НО прежде чем перевести во float нужно 2 байта целого переделать в 4 байта со знаком, так как тупо в клео переделывать в float не получится. И тут вопрос, как можно представить 2 байта в 4 байта но со знаком? Иначе будет только положительное значение по понятным причинам.

И тут вроде разобрался нужно просто проверить число 2 байта на следующее ->

0B10: 31@ = 0@ AND 0x8000 //если число 0@ будет содержать 16-ый бит, значит оно отрицательное
if
    31@ <> 0 // если не равно нулю, значит отрицательное
then
    0B11: 0@ = 0@ OR 0xFFFF0000 //переделываем число в отрицательное, и потом уже можно переводить во float
end

Last edited by mfisto (22-02-2015 13:41)


I know everything and nothing...

Offline

#4637 07-04-2015 03:04

hupoFF
Registered: 07-04-2015
Posts: 1

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

{$CLEO}

0A8C: write_memory 0x005E2009 size 4 value 0xC483C031 virtual_protect 0
0A8C: write_memory 0x005E200D size 1 value 0x10 virtual_protect 0

0A8C: write_memory 0x006A8C52 size 4 value 0xC483C031 virtual_protect 0
0A8C: write_memory 0x006A8C56 size 1 value 0x10 virtual_protect 0
0A93: end_custom_thread

Помогите сделать дезактивацию плз

Last edited by hupoFF (07-04-2015 03:05)

Offline

#4638 07-04-2015 20:05

Fernando
Registered: 07-04-2015
Posts: 1

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

Вопрос: Можно ли включить движение машин и пешеходов во время захвата территории?

Offline

#4639 08-04-2015 06:26

Alien
Registered: 12-10-2008
Posts: 564

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

huppoFF, если я еще хоть что-то помню, как-то так. Активация/деактивация по чит-коду WHATEVER.

{$CLEO}

// save state
0A8D: 0@ = read_memory 0x005E2009  size 4 virtual_protect 0
0A8D: 1@ = read_memory 0x005E200D  size 1 virtual_protect 0

0A8D: 2@ = read_memory 0x006A8C52  size 4 virtual_protect 0
0A8D: 3@ = read_memory 0x006A8C52  size 1 virtual_protect 0

gosub @activate

while true
    if
        0ADC:   test_cheat "WHATEVER"
    then
        if
            4@ <> 0
        then
            gosub @deactivate
        else
            gosub @activate
        end
    end 
    wait 0
end

:activate
0A8C: write_memory 0x005E2009 size 4 value 0xC483C031 virtual_protect 0
0A8C: write_memory 0x005E200D size 1 value 0x10 virtual_protect 0
 
0A8C: write_memory 0x006A8C52 size 4 value 0xC483C031 virtual_protect 0
0A8C: write_memory 0x006A8C56 size 1 value 0x10 virtual_protect 0

4@ = 1
return

:deactivate
0A8C: write_memory 0x005E2009 size 4 value 0@ virtual_protect 0
0A8C: write_memory 0x005E200D size 1 value 1@ virtual_protect 0
 
0A8C: write_memory 0x006A8C52 size 4 value 2@ virtual_protect 0
0A8C: write_memory 0x006A8C56 size 1 value 3@ virtual_protect 0

4@ = 0
return

Offline

#4640 09-04-2015 00:06

Seemann
Registered: 07-08-2006
Posts: 2,155

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

wow сначала на форуме из забвения появляется Capushon, через месяц Alien. Неожиданно прям)) Привет

Offline

#4641 09-04-2015 22:29

Alien
Registered: 12-10-2008
Posts: 564

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

Ну я собственно периодически заглядываю, просто поводов проявлять активность не особо много. И это еще мягко сказано, коли месячная периодичность событий вызывает такую реакцию. wow
А по самому важному, привет, конечно. blush

Offline

#4642 13-04-2015 23:20

Alex91
Registered: 13-04-2015
Posts: 3

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

Подскажите, возможно ли  передвинуть  объект кат сцены в Вайсе.  Например:
02E5: $161 = create_cutscene_object #SPECIAL02  //тут  я, как понимаю создается модель
02E6: set_cutscene_anim $161 'CSDIAZ' //тут  я , как понимаю применяется конкретная анимация к $161 из загруженной кат сцены.
Возможно ли с помощью опкода  поставить эту модель по нужным мне начальным координатам.

Offline

#4643 14-04-2015 21:11

Seemann
Registered: 07-08-2006
Posts: 2,155

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

Катсцены плохо поддаются редактированию из скриптов. Начальное положение объекта изменить скорее всего нельзя, но можно попробовать сразу после создания объекта (02E5) переместить его в нужную позицию опкодом

01BC: put_object $1778 at 298.0 -313.6 11.0

Offline

#4644 15-04-2015 01:18

Alex91
Registered: 13-04-2015
Posts: 3

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

Seemann, так пробовал, но объект тупо смешается всегда в одну точку не далеко от стандартной позиции, и анимация проигрывания у этого объекта увеличивается примерно в два раза. А если лезть в ifp анимацию и редактировать в 3d максе, то на выходе у меня нет лицевой анимации, видимо кам скрипты могут только работать с обычными анимациями, не из кат сцен.
Мне нужно только поправить положение объекта, а не саму анимацию и отличным был бы вариант в коде просто позицию задать, но так не получается. И саму же анимацию на прямую в редакторе отредактировать не получается.
Короче тупик:)

Offline

#4645 18-04-2015 20:42

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Alex91,
Если хочешь сделать грамотно - то только в 3d Max-е. Для катсценовых анимаций(и актеров, и объектов) - юзай IFP-ANPK-TOOL http://yelmi.com/modules/files/showfile.php?lid=43 и ничего другого, ибо скрипты KAM-а например, некорректно работают с катсценами.
Планирую в ближайшем будущем(так скоро, насколько смогу) сделать подробный туториал по катсценам в Вайсе(в принципе, он будет годен и для СА), с описанием создания с нуля катсцены, включая создание CS-персов(на самом деле подходят и обычные, прост у катсценовых может быть уникальный скелет), управлением объектами и использованием модуля Reactor(в 3dMax) для просчета физики их столкновений(в видео нет примера использования Reactor - прост пример новой катсцены, интегрированной в геймплей):
http://www.youtube.com/watch?v=6yEdHhzjmek
Вообще, чувак, ты меня очень обрадовал(ковыряешь катсцены, да еще и в вайсе), так что пиши в личку, если возникнут вопросы по ним(пока туториал не готов), я тебе дам контакты для связи..

Last edited by Shag (18-04-2015 20:48)

Offline

#4646 21-04-2015 15:10

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

Помогите пж найти дешифратор скриптов,
уже штук 10 накачал, и у всех у меня выдает ошибка:  не является  приложением win32
------------------------
можно тогда по подроней про эту шифровку
этж шестнадцаричное значение, можно каким обычным конвертером перевести эти значения в латинские букы(ну скрипт кароче) ? smile

Last edited by Goldfish (21-04-2015 15:11)

Offline

#4647 21-04-2015 15:28

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Goldfish wrote:

Помогите пж найти дешифратор скриптов

http://www.libertycity.ru/files/gta-san … .2015.html

Offline

#4648 21-04-2015 19:24

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

Shag он выдает ошибку у меня(

Offline

#4649 21-04-2015 21:14

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Скинь мне в лс, я попробую декомпилировать

Last edited by Shag (21-04-2015 21:15)

Offline

#4650 03-05-2015 14:31

bepsik
Registered: 29-05-2011
Posts: 8

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

Когда использую опкод 01B4: set_player $PLAYER_CHAR can_move 0, игра автоматически включает иммунитеты от всего, ставит игрока в позицию игнорировать всеми, обездвиживает игрока и тушит все горящие машины. При этом опкодами 02A9: set_actor $PLAYER_ACTOR immune_to_nonplayer 0 и 02AB: set_actor $PLAYER_ACTOR immunities BP 0 FP 0 EP 0 CP 0 MP 0 невозможно отключить иммунитеты, но можно отключить игнор 03BF: set_player $PLAYER_CHAR ignored_by_everyone 0. Вопрос в том, можно ли обездвижить игрока и отключить (не включать) иммунитеты?

Last edited by bepsik (03-05-2015 18:20)

Offline

Board footer

Powered by FluxBB