Перейти к содержимому


Фотография

Скриптинг в GTA IV


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 215

#121 JNikc

JNikc

    Активный участник

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Город:SPB

Отправлено 24 June 2009 - 13:57

Кто нибудь зеает как использовать Group команды?


Могу предположить, что 1 игрок - всегда лидер группы и можно только добавлять к его нему членов. А для другой группы (не плеера) нужно её создать установить лидера (SetGroupLeader) и добавлять к нему SetGroupMember.

Вот изначальная тема Alice Ultimate http://www.gtaforums...p...86816&st=40

В Alice Ultimate в разделе Unsorted & not fully cleaned есть функция DestroyThread(ScriptThread : u32), можно получить ID текущего треда GetIdOfThisThread() : u32; т.е. если знать ID, то есть натив терминирующий тред.

#122 RussianCJ

RussianCJ

    Активный участник

  • Пользователи
  • PipPipPip
  • 54 сообщений

Отправлено 24 June 2009 - 15:11

В Alice Ultimate в разделе Unsorted & not fully cleaned есть функция DestroyThread(ScriptThread : u32), можно получить ID текущего треда GetIdOfThisThread() : u32; т.е. если знать ID, то есть натив терминирующий тред.

Теперь при загрузке новой игры всё время висит один экран с надписью "Loading..."

#123 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 25 June 2009 - 10:22

"Отреверсенных"?? Вам что удалось откатить ассамблер обратно к классам и объектам которые могли использовать в R* разрабы, и востановить их иерархию? (Вот было бы шикарно если бы они к каждой игре выпускали обширный мануал).


Именно так. Немножко есть здесь: http://public.sannyb...ll_20080401.zip

Статические объекты - добрался до гаражаей, моделей и т.д. для них действительно не ввести конструктор/деструктор, нет смысла.

CPlayer и CPlayerPed - это концептуально разные классы.


Но у них есть много общих свойств, почему нельзя сделать их потомками абстрактного класса?


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

Так, о TaskShootAtChar я думал как о ->CTask. Теперь это не имеет смысла, можно асоциировать методы Task c CMan(<-CPed, <-CPlayer)

Там все гораздо сложнее. У каждого CPed (и его сабклассов) есть объект CPedIntelligence. В нем зранится набор действий, назначенных персонажу (причем действия могут быть совсем низкоуровневыми, например, инверсная кинематика). Действия делятся на типы, для каждого типа - свой слот. В SA было 11 слотов, в IV, если не ошибаюсь, 16.

Еще, для справки, список всех классов, для которых есть виртуальные методы из IV:
http://public.sannyb..._pc_classes.txt
You think your day was surreal? Try mine.

#124 RussianCJ

RussianCJ

    Активный участник

  • Пользователи
  • PipPipPip
  • 54 сообщений

Отправлено 25 June 2009 - 15:14

Я вот хотел узнать, есть ли способ запустить игру с чистыми скриптами? То есть, появляешся в любом месте после экрана Loading... и всё. Можно ли скрипты заменить? Или есть другой способ?

#125 Вадим Буренков

Вадим Буренков

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Город:Тверь
  • Интересы:Программирование, GTA, Crysis, SannyBuilder, коньки, велик.

Отправлено 25 June 2009 - 16:54

А как устроены скрипты в Gta4? В GTASA был Main с миссиями и внешние скрипты. Open IV открывает sco скрипты, они являются внешними или в них еще и миссии содержатся? Какова роль Main.sc в common/data?

#126 RussianCJ

RussianCJ

    Активный участник

  • Пользователи
  • PipPipPip
  • 54 сообщений

Отправлено 25 June 2009 - 17:03

Для каждой миссии и других вещей существует отдельный SCO файл. Main.sc - это мусор, оставшийся ещё со времён вайса.

#127 Вадим Буренков

Вадим Буренков

    Участник

  • Пользователи
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Город:Тверь
  • Интересы:Программирование, GTA, Crysis, SannyBuilder, коньки, велик.

Отправлено 25 June 2009 - 17:53

Тогда по идее должен быть файл в котором прописано когда должны запускаться .sco миссии и скрипты.

#128 JNikc

JNikc

    Активный участник

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Город:SPB

Отправлено 06 July 2009 - 11:27

Немножко есть здесь


Ух, ну это мощно (типа 10-20 т. строк ручной работы - получше чем статьи на gamedev). Вот как игры делаются. Значит в GTA приняли некую картину мира и стараются её придерживаться (у вас там open GTA3, open GTASA, наверно уже есть open GTA4 ?-).

Что касается диз-асма - к сожалению я совсем не понимаю как ориентироваться во всех этих sub_... (в обычных экспортриатных dll хотя бы имена сохраняются). Например где находятся классы игровых объектов в vorbis, или в exe (я про SA), и ещё - как смотреть сам экзешник, ида требует dll, я показываю а она мажет с адресом и закрывается ((

А пока нарисовал правильную (как я понял) иерархию объектов (но это только малая часть). А вот в моделях всё линейно вроде.

Прикрепленные файлы



#129 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 06 July 2009 - 13:31

Немножко есть здесь


Ух, ну это мощно (типа 10-20 т. строк ручной работы - получше чем статьи на gamedev). Вот как игры делаются. Значит в GTA приняли некую картину мира и стараются её придерживаться (у вас там open GTA3, open GTASA, наверно уже есть open GTA4 ?-).


Было сделано где-то за год, неспешно, в свободное время.
Где-то в середине процесса я понял, что раньше ничего не знал об игростроении :unsure:

Основные игровые классы не менялись с GTA3. Те же CPed/CVehicle/CObject. В PS2 версии GTA3, была оставлена debug info. Как минимум половина названий классов и методов оттуда, была перетащена в SA.
IV от SA отличается не очень сильно (основные изменения связаны с сетевым кодом).

С названиями - беда. OpenGTA - занято, Open IV - тоже.
Рабочее название библиотек по IV - Open Liberty City.

Что касается диз-асма - к сожалению я совсем не понимаю как ориентироваться во всех этих sub_... (в обычных экспортриатных dll хотя бы имена сохраняются). Например где находятся классы игровых объектов в vorbis, или в exe (я про SA), и ещё - как смотреть сам экзешник, ида требует dll, я показываю а она мажет с адресом и закрывается ((


А это все - вопрос привычки. Я регулярно разражаюсь пространными философскими фразами про reverse engineering.
Книжек по декомпиляции практически не существует (есть одна, и та старая и с кучей неточностей). Есть пара книжек по ida, но они совсем на уровне "книжка-раскраска" и посвящены, в основном, тому, как понять что делают вирусы.

Я регулярно призываю задавать вопросы по дизассемблированию и декомпиляции, но желающих не особо много.

Есть мои базы от III и SA, в которых достаточно много функций более-менее нормально названо.
База по IV (1.0.4) будет выложена, как только будет дочищена (поправлены огрехи дизассемблера, перенесены имена и комментарии хотя бы из базы по 1.0.3. Сейчас я дошел до середины кодового сегмента - обозвано порядка 11К функций из ~38К; определено порядка 300 структур и классов.

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

А пока нарисовал правильную (как я понял) иерархию объектов (но это только малая часть). А вот в моделях всё линейно вроде.


Да, в целом все верно. (_padXXX можно не указывать - это заглушки для мест, где выравнивались поля на 2/4 байта, чтобы не зависеть от версии компилятора).
У моделей в 3/VC/SA/Bully тоже достаточно развесистая иерархия. В IV с моделями стало несколько проще, за счет отказа от примитивных объектов.
You think your day was surreal? Try mine.

#130 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 08 July 2009 - 11:39

Основные игровые классы не менялись с GTA3. Те же CPed/CVehicle/CObject. В PS2 версии GTA3, была оставлена debug info. Как минимум половина названий классов и методов оттуда, была перетащена в SA.
Я регулярно призываю задавать вопросы по дизассемблированию и декомпиляции, но желающих не особо много.

А что, с PS2 тоже "exe" файл можно в IDA загнать? Если да то это просто отлично - именно то чего мне не хватало в разборе сторисов.
(Немного оффтопа :) )

Сообщение отредактировал Dageron: 08 July 2009 - 11:40

в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#131 JNikc

JNikc

    Активный участник

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Город:SPB

Отправлено 09 July 2009 - 13:30

Немного оффтопа )


Ну это же "общее обсуждение" (smile too)

А насчет IDA - там при открытии прописывается тип платформы (Intel, ARM, даже Java-вый пи-код), а тип платформы определяется в подключаемых библиотеках (например java.dll, ppc.dll), так что нужно только найти нужный плагин.

#132 Akmal

Akmal

    Активный участник

  • Пользователи
  • PipPipPip
  • 256 сообщений
  • Пол:Мужчина
  • Город:Kazakhstan\UKO

Отправлено 10 July 2009 - 19:18

Дайте линк на скриптйуххук для нового патча :huh:
Asus P5KC/Asus EN8800 GTS 512/2GB PQI 800Mhz/HDD500+400+120/BP 500W

#133 Chipsman

Chipsman

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 786 сообщений
  • Пол:Не определился


Отправлено 10 July 2009 - 19:42

нету еще такого..

#134 Akmal

Akmal

    Активный участник

  • Пользователи
  • PipPipPip
  • 256 сообщений
  • Пол:Мужчина
  • Город:Kazakhstan\UKO

Отправлено 10 July 2009 - 20:25

жаль =/
Asus P5KC/Asus EN8800 GTS 512/2GB PQI 800Mhz/HDD500+400+120/BP 500W

#135 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 11 July 2009 - 06:39

Не, ну Alice Ultimate вышла уже:
http://www.gtaforums...p...mp;st=0&hl=
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#136 Megamax

Megamax

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 24 July 2009 - 10:53

тяжело быть дураком конечно:) читал, ничего не понял практически) никто из Вас не может написать мне маленький скриптик, чтобы он парковал тачку в координатах, ну и сказал как установить :unsure: ???

#137 mass

mass

    Участник

  • Пользователи
  • PipPip
  • 10 сообщений

Отправлено 25 July 2009 - 23:09

а есть ли весь список нативе функций на русском(с описанием ВСЕХ функций)нигде не могу найти

#138 Chipsman

Chipsman

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 786 сообщений
  • Пол:Не определился


Отправлено 26 July 2009 - 07:50

есть немного..
Категория:Скриптовые_функции
все остальное нужно переводить еще

#139 mass

mass

    Участник

  • Пользователи
  • PipPip
  • 10 сообщений

Отправлено 26 July 2009 - 08:39

ну а на инглише с описанием вех функций есть что нибудь? и ещё,что надо поставить на borland С++ 6 что бы он открывал и сохранял DLL,EXE файлы,я открываю длл а он пишет ерор лоадинг тайп либраруи путь к файлу ??

#140 Seemann

Seemann

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 266 сообщений
  • Пол:Мужчина
  • Город:Россия, Иркутск/СПб

Отправлено 26 July 2009 - 09:38

ну а на инглише с описанием вех функций есть что нибудь?

ссылка в первом сообщении темы.

и ещё,что надо поставить на borland С++ 6 что бы он открывал и сохранял DLL,EXE файлы,я открываю длл а он пишет ерор лоадинг тайп либраруи путь к файлу ??

для открытия исполняемых файлов нужен дизассемблер. Лучше всего использовать IDA 5 Pro. Искать на cracklab.ru




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных