Автор Тема: связать опкоды  (Прочитано 3050 раз)

Оффлайн mike43842

  • Прохожий
  • *
  • Сообщений: 110
  • Репутация: +1/-0
    • mike43842
    • Просмотр профиля
    • lol
связать опкоды
« : Декабрь 07, 2013, 10:49:30 pm »
Я вот писал миссию, там я хотел сделать так чтобы игрок мог идти и одновременно говорить по телефону, но при ходьбе он не может этого делать, есть какие то идем как это можно реализовать?

Оффлайн Sektor

  • Администратор
  • Постоялец
  • *****
  • Сообщений: 521
  • Репутация: +34/-0
    • Просмотр профиля
Re: связать опкоды
« Ответ #1 : Декабрь 07, 2013, 11:10:01 pm »
Цитировать
но при ходьбе он не может этого делать, есть какие то идем как это можно реализовать?
Пока еще нету. Но думаю нужно копаться в тех участках, где идет выполнение данных функций и методов. После обнаружения, может обойтись либо не сколькими правками, что в лучшем случае либо полностью заменой функций.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: связать опкоды
« Ответ #2 : Декабрь 12, 2013, 01:55:55 pm »
Я вот писал миссию, там я хотел сделать так чтобы игрок мог идти и одновременно говорить по телефону, но при ходьбе он не может этого делать, есть какие то идем как это можно реализовать?

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

Оффлайн mike43842

  • Прохожий
  • *
  • Сообщений: 110
  • Репутация: +1/-0
    • mike43842
    • Просмотр профиля
    • lol
Re: связать опкоды
« Ответ #3 : Декабрь 12, 2013, 05:57:14 pm »
ну если я прописываю опкод ходьбы и чтобы пед достал телефон - нельзя, он только идет.

Оффлайн xanser

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 598
  • Репутация: +92/-0
  • Есть такая профессия - на работе сидеть
    • Просмотр профиля
Re: связать опкоды
« Ответ #4 : Декабрь 20, 2013, 08:16:51 am »
Отправить игрока в точку можно и не опкодом, а например используя программное нажатие "вперед", при этом можно звонить, а бег можно превратить в ходьбу без смены анимации. Единственно, что игрок скорее всего должен быть controllable и развернут под нужным углом.



Теперь подробнее.
Чтобы игрок звонил, нужно его статус поставить 0x24 (0x94AD28 - [pointer] - Player pointer, +0x244 - [byte] - player current status) либо опкод 052B.
Чтобы игрок шел, а не бежал, нужно анимацию движения вперед уменьшить с 0xFF например до 0x55 как сделано в Walk моде.
Адреса игровых кнопок судя по модам начинаются с 0x7DBCB0, каждая кнопка 2 байта, т.е. чтобы сместиться на кнопку номер 8 "вперед" (00E1: key_pressed 0 8 ), нужно прибавить 8*2, т.е. 0x7DBCB0+8*2. При нажатии вперед это значение 255 (0xFF), ставим 255 сами - игрок бежит (с телефоном), ставим меньше - игрок замедляется, причем это влияет на анимацию.

В итоге связка может выглядить так:

052B: actor $PLAYER_ACTOR hold_cellphone  1
10@ = 8
10@ *= 2
10@ += 0x7DBCB0
05DF: write_memory 10@ size 2 value 0x55 virtual_protect 0  // в цикле

Вот Walk mod http://www.gtagarage.com/mods/show.php?id=22101
У меня не получилось по таймеру в asi ходить, возможно нужен непрерывный цикл как в скрипте, и еще возможно придется нупить некоторые адреса.
Тут http://gtaforums.com/topic/117195-documenting-gta3vc-memory-adresses/page-2#entry1572417 это обсуждается.
Но через скрипт проблем не должно возникнуть, попробуй его доработать под телефон.

Оффлайн mike43842

  • Прохожий
  • *
  • Сообщений: 110
  • Репутация: +1/-0
    • mike43842
    • Просмотр профиля
    • lol
Re: связать опкоды
« Ответ #5 : Декабрь 20, 2013, 10:49:05 pm »
Ого!  :) большое спасибо xanser, буду дальше дорабатывать.