You are not logged in.
Снова я со своими вопросами
1) Можно ли отключить звук (оповещение в виде постоянного писка) приближения вражеской ракеты с теплонаведением, который проигрывается в транспорте?
2) Есть ли возможность отключить стрельбу ракетами у самолёта Rustler после применения опкода атаки игрока? То есть после опкода 08А2 самолёт, не имеющий ракет, стреляет как из пулемёта, так и ракетами, что нелогично. Пробовал другой опкод с аналогичным действием, но результат тот же.
Заранее спасибо!
Offline
Снова я со своими вопросами
1) Можно ли отключить звук (оповещение в виде постоянного писка) приближения вражеской ракеты с теплонаведением, который проигрывается в транспорте?2) Есть ли возможность отключить стрельбу ракетами у самолёта Rustler после применения опкода атаки игрока? То есть после опкода 08А2 самолёт, не имеющий ракет, стреляет как из пулемёта, так и ракетами, что нелогично. Пробовал другой опкод с аналогичным действием, но результат тот же.
Заранее спасибо!
2) Как вариант прочесовать пулл снарядов (0xC891A8) ловить там те, что выпущинные твоим Rustler и выгружать их.
Offline
Как вариант прочесовать пулл снарядов (0xC891A8) ловить там те, что выпущинные твоим Rustler и выгружать их.
Спасибо, стоит попробовать!
Offline
Подскажите пожалуйста, как узнать включен или выключен двигатель на транспорте в VC. По какому-то смещению в структуре транспорта это наверняка есть?
Offline
Вот скрипт:
{$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
Спасибо за наводку на смещение 0x1F9.
Offline
День добрый!
Возникла пара вопросов по работе с костями актера.
Как можно переместить кость по мировым координатам? Делать пересчет из мировых в локальные?
Если так, то немного прошу помощи в этом. Мировые координаты кости нашел, в смещении +48 (вроде бы) от указателя на матрицу. Сама матрица при перемещении никаких визуальных эффектов не производит, кость на месте.
И вот такая проблема:
В стандартной гта са, у актера, сидящего на велосипеде, кость руки перемещается постоянно в местоположение даммиса bargrip. Это делается для компенсации отрыва рук при стандартных анимациях. Т.е. как-то кость перемещается.
Скриптово смещать кость локально не получается - стандартная функция напрочь блокирует любые перемещения, если кость уже "занята" аттачем к даммису. Интересно, что при поворотах, когда байк наклоняется вбок, координаты даммиса остаются на месте, как будто байк стоит ровно.
Это значит, что функция крепления кости использует координаты, считанные в момент посадки на байк и потом уже не меняет их.
Надеюсь, что кто-то это прочтет и сможет помочь. Хоть пересчетом глобальных в локальные, хоть NOP'ом это функции.. найти б её еще.
Offline
С данными опкодами знаком, но вектор смещения работает только в локальных координатах от родительской кости.
А кватернионы работают исключительно в одиночной версии игры. В САМП'е значение кватерниона перезаписывается, но визуально ничего не меняется.
P.S. В опкодах получения указателя на матрицу и в опкоде получения хэндла кости используются разные нумерации, что немного неудобно)
Но, в любом случае, спасибо за newOpcodes!
P.p.s. Опкод получения хэндла наотрез не работает с "L/R Finger", когда плейер на байке..
Last edited by Hedgy (16-02-2015 11:03)
Offline
Дмитрий, а можешь показать какой-нибудь простой пример хука, если не сложно? Я в этом профан, а поднабить руку хочется.
P.s. И если можно, какой нибудь мудрый тост - как искать эту зловещую функцию?
Спасибо, что читаешь-отвечаешь
//Edit.
Был давным-давно фикс от Рьюзуке "bikearmfix.asi". Может его поковырять? Вроде это то, что надо
собственно, сабж
//Edit еще раз
Да, этот плагин нопит функцию, остается только как-то перемещать кость по мировым коорд-м.
Last edited by Hedgy (17-02-2015 16:25)
Offline
Как перевести 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
{$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
Вопрос: Можно ли включить движение машин и пешеходов во время захвата территории?
Offline
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
сначала на форуме из забвения появляется Capushon, через месяц Alien. Неожиданно прям)) Привет
Offline
Ну я собственно периодически заглядываю, просто поводов проявлять активность не особо много. И это еще мягко сказано, коли месячная периодичность событий вызывает такую реакцию.
А по самому важному, привет, конечно.
Offline
Подскажите, возможно ли передвинуть объект кат сцены в Вайсе. Например:
02E5: $161 = create_cutscene_object #SPECIAL02 //тут я, как понимаю создается модель
02E6: set_cutscene_anim $161 'CSDIAZ' //тут я , как понимаю применяется конкретная анимация к $161 из загруженной кат сцены.
Возможно ли с помощью опкода поставить эту модель по нужным мне начальным координатам.
Offline
Катсцены плохо поддаются редактированию из скриптов. Начальное положение объекта изменить скорее всего нельзя, но можно попробовать сразу после создания объекта (02E5) переместить его в нужную позицию опкодом
01BC: put_object $1778 at 298.0 -313.6 11.0
Offline
Seemann, так пробовал, но объект тупо смешается всегда в одну точку не далеко от стандартной позиции, и анимация проигрывания у этого объекта увеличивается примерно в два раза. А если лезть в ifp анимацию и редактировать в 3d максе, то на выходе у меня нет лицевой анимации, видимо кам скрипты могут только работать с обычными анимациями, не из кат сцен.
Мне нужно только поправить положение объекта, а не саму анимацию и отличным был бы вариант в коде просто позицию задать, но так не получается. И саму же анимацию на прямую в редакторе отредактировать не получается.
Короче тупик:)
Offline
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
Помогите пж найти дешифратор скриптов,
уже штук 10 накачал, и у всех у меня выдает ошибка: не является приложением win32
------------------------
можно тогда по подроней про эту шифровку
этж шестнадцаричное значение, можно каким обычным конвертером перевести эти значения в латинские букы(ну скрипт кароче) ?
Last edited by Goldfish (21-04-2015 15:11)
Offline
Помогите пж найти дешифратор скриптов
Offline
Shag он выдает ошибку у меня(
Offline
Когда использую опкод 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