#151 05-03-2008 16:28

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

Re: Адреса и функции gta_sa.exe 1.0

Может есть смысл обсуждать такие вопросы в соседнем топике или на соответствующем форуме?

Offline

#152 09-03-2008 13:04

Alexander
Registered: 19-08-2006
Posts: 184
Website

Re: Адреса и функции gta_sa.exe 1.0

Hex-Rays C листинг базы за 2007.12.08 (~2мб)
[hide=10]http://public.sannybuilder.com/gtasa_ex … isting.rar[/hide]

Offline

#153 24-03-2008 07:40

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

Re: Адреса и функции gta_sa.exe 1.0

Микрообновление списка объектов: http://public.sannybuilder.com/gtasa_ex … 080320.txt
Добавленf еще пара методов; назначение пары задач с gtaf (там народ добрался-таки до AI)

Alexander
Посмотрел я на это... Грустное зрелище. DFA в иде на совершенно зачаточном уровне.
Чтобы разбиралось веселеее, нужно явно прописывать методы объектов как __thiscall и указывать this в списке параметров (если указать __thiscall и не указать сам this, H-R падает вместе с идой).


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#154 08-04-2008 11:19

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

Re: Адреса и функции gta_sa.exe 1.0

Давненько я подпись не обновлял... wink
Новая база 20080407
Особо серьезных изменений в базе нет. Расписано несколько структур из CScriptEngine, и кучка относящихся к нему методов.

Немного неожиданное открытие: CScriptEngine - статический объект, начинающийся где-то между 0xA43000 и 0xA44000 размером более 300К (scmBlock, opcodeParams и т.д. - поля этого объекта). Предположительно, в следующей версии базы, CScriptEngine будет описан именно как объект.


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#155 13-04-2008 10:05

Axel218
From: Astana
Registered: 26-07-2007
Posts: 15
Website

Re: Адреса и функции gta_sa.exe 1.0

А разве не существует пула CPickup? Если нет, то как тогда можно получить координаты пикапов?? Очень нужно.

Offline

#156 14-04-2008 15:58

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

Re: Адреса и функции gta_sa.exe 1.0

Axel218
Вообще, эта часть у меня еще не расписана, поэтому могу немного ошибаться.

Пикапы сделаны массивом, а не пулом. Массив структур CPickup находится по адресу 0x9788C0, 620 структур по 32 байта (вообще-то, это часть объекта CPickups, но, в данном случае, это не важно).

Занят или не занят элемент массива - проверяется по одному из полей соответствующей структуры (смещение 0x1C; 0 - элемент не используется)
Координаты пикапа лежат по смещениям 0x10, 0x12, 0x14 (signed short, 2 байта со знаком).


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#157 28-05-2008 21:02

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Адреса и функции gta_sa.exe 1.0

Скажите плиз!
Где в памяти(адрес какой?) мона найти смещение думизов машины относительно её центра? Например фар...


GIMS developer

Offline

#158 29-05-2008 03:21

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

Re: Адреса и функции gta_sa.exe 1.0

@3Doomer
post #136 в этой ветке. (но сразу предупреждаю: халявы не будет, придется повозиться)


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#159 29-05-2008 14:15

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Адреса и функции gta_sa.exe 1.0

listener wrote:

@3Doomer
post #136 в этой ветке. (но сразу предупреждаю: халявы не будет, придется повозиться)

Я хоть и понимаю по-английски, но в адресах ваще запутуюсь((( Мож найдёт ктонить?


GIMS developer

Offline

#160 29-05-2008 16:00

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

Re: Адреса и функции gta_sa.exe 1.0

Там нет фиксированного адреса.
Можно найти объект, описывающий модель - это просто, но его адрес назначается динамически.

В нем есть ссылка на дерево структур, каждая из которых соответствует компоненту модели. Нужно пройти по этому дереву и найти компонент с нужным именем. А дальше брать из него координаты.

Все соответствующие структуры я выкладывал.


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#161 29-05-2008 19:55

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Адреса и функции gta_sa.exe 1.0

listener wrote:

Там нет фиксированного адреса.
Можно найти объект, описывающий модель - это просто, но его адрес назначается динамически.

В нем есть ссылка на дерево структур, каждая из которых соответствует компоненту модели. Нужно пройти по этому дереву и найти компонент с нужным именем. А дальше брать из него координаты.

Все соответствующие структуры я выкладывал.

Я почти ничё не понял)))) Не программист я, а про100 нуп...Сам в жизни не найду(
Дай ссылку плиз на это дерево структур, ато тут столько ссылок в теме...


GIMS developer

Offline

#162 05-07-2008 08:05

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

Re: Адреса и функции gta_sa.exe 1.0

2008/07/05: http://public.sannybuilder.com/gtasa_ex … 080705.rar

Изменений очень много. Основное - названа примерно половина классов эвентов и тасков.
Большие дополнения по CPedIntelligence/CPedTasks.

PS. Люди просившие доступ к компонетам моделей! Оно вам еще надо? Я на днях планирую слегка пройтись по структуре моделей, могу заодно сделать .asi для доступа к компонентам.


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#163 22-08-2008 15:42

-Dimon-
Registered: 03-07-2007
Posts: 15
Website

Re: Адреса и функции gta_sa.exe 1.0

Надо. Ещё очень интерисует как управлять мигалками у спец авто (полиция, скороя, пожарка...)??
Вот мне надо Переместить их.. Хотя интересно как их и добавить или удалить.

Offline

#164 04-09-2008 10:59

yelmi
Registered: 10-12-2006
Posts: 134
Website

Re: Адреса и функции gta_sa.exe 1.0

Господа, есть вопрос: у взорванного автомобиля часто нет одного или нескольких колес, каким то образом можно у нормального автомобиля убрать одно нужное мне колесо. Как убрать все я знаю. Адресок ни кто не подскажет?
nowheel.gif

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

2listener Спасибо! Но моя версия иды устарела=(, базу открывать отказалась, а новую ~70мб скачать пока не могу.

Last edited by yelmi (05-09-2008 19:37)

Offline

#165 05-09-2008 18:08

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

Re: Адреса и функции gta_sa.exe 1.0

@yelmi - Попробуй машине в damageManager.wheelStatus для соответствующего колеса прописать 2.

Если не поможет - можно начать копать с .text:006B3780     CAutomobile::blowUp

PS. CDamageManager в последней выложенной базе был расписан. (он входит в CAutomobile)


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#166 05-11-2008 14:52

Vitaliy_TopSide
From: Anapa!
Registered: 27-05-2008
Posts: 62
Website

Re: Адреса и функции gta_sa.exe 1.0

А как использовать процедуры из gta-sa.exe в main.scm??? Как запустить?

Offline

#167 06-11-2008 01:08

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

Re: Адреса и функции gta_sa.exe 1.0

@Vitaliy_TopSide - Через CLEO. Опкоды 0AA5, 0AA6, 0AA7
http://cleo.sannybuilder.com/?id=2


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#168 06-11-2008 07:37

Vitaliy_TopSide
From: Anapa!
Registered: 27-05-2008
Posts: 62
Website

Re: Адреса и функции gta_sa.exe 1.0

Большое спасибо. Наверно так можно и чит-коды отключать?

Offline

#169 27-11-2008 08:45

Вовчик_гадкий
From: Малые Подмышки
Registered: 27-11-2008
Posts: 6

Re: Адреса и функции gta_sa.exe 1.0

Seemann
У меня вопрос , возможно изменить в папке Data запись?
Я хотел при помощи скрипта CLEO изменить запись в файле peds.ide
Поменять имя подгружаемой модели в ID специальных актёров :

# special character slots
[b]290, special01, generic, .....[/b]
заменить допустим на:
[b]290, newactor3, newactor3,[/b]

Ну конечно при условии что такие модели в архиве существуют.
Можно хотябы показать где читать об Этом.
Мне хотелосьбы Добавить новых персонажей не заменяя старых.

Сществует пкод который регулирует Волну?
Меня интересует, каким опкодом можно сделать водную гладь.

А вот, как Именно совершить действие по изменению Записей в DATE ...хм понятия не имею.
Яб не писал еслиб знал. А знать, жуть как хочется.[/color]

listener -Мне очень понравилось про компоненты, результаты уже есть?
______________________
ps только увидел, кто аФтор этого CLEO. Я ведь раньше думал, что прога западная.
Пойду за вторым Жирафиком........
(Такого не бывает, не верю.)

Last edited by Вовчик_гадкий (28-11-2008 08:47)


читаю форум. Ещё очень много читать.

Offline

#170 27-11-2008 12:22

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

Re: Адреса и функции gta_sa.exe 1.0

Для добавления персонажа пропиши модель перса в файлах, где фигурируют педы (типа ped*.dat) Ну и ставь через скрипт.

А чтобы одежду добавить, вообще ничего менять не надо)))) Просто добавить в ИМГ и скриптом надевать.

Last edited by 3Doomer (10-01-2009 19:52)


GIMS developer

Offline

#171 29-03-2009 05:15

NC22RUS
Registered: 26-03-2009
Posts: 3

Re: Адреса и функции gta_sa.exe 1.0

Можно ли как-то определить углы наклона авто как здесь например http://en.wikipedia.org/wiki/Flight_dynamics ? Может опкод какой есть или ф-ция...и как указать нужный автомобиль

Offline

#172 29-03-2009 12:40

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

Re: Адреса и функции gta_sa.exe 1.0

Уф. Про это столько раз писали, что я даже и не знаю с чего начать...

Все игровые объекты во всех GTA (включая Bully) наследуются от CPlaceable. Я про него в этой теме уже писал.
Он содержит либо координаты объекта (x, y, z, и угол поворота), для ситуации, когда объект может вращаться только вокруг вертикальной оси, либо указатель на матрицу 4x3 (Для III/VC/SA - это RwMatrix, которая хранится в виде 4x4, где оставшиеся значения забиваются нулями), которая полностью описывает положение объекта в пространстве, включая сжатие/растяжение по каждой из осей.

Как определить углы поворотов одной матрицы относительно другой - задачка первого курса линейной алгебры.


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#173 29-03-2009 14:19

NC22RUS
Registered: 26-03-2009
Posts: 3

Re: Адреса и функции gta_sa.exe 1.0

Мм...спасибо за наводку, но я правда не знаю где искать( да, нашел где вы писали про СPlaceаble, но там нечего дельного) . И если это матрица, то что за значения хранятся в каждом поле 4x4 и где про это обсуждалось, может быть вспомните?

Блин еще база gta_sa_idb_20080705 не хочет открываться в IDA 4. Для какой он версии IDA?

Last edited by NC22RUS (29-03-2009 14:21)

Offline

#174 30-03-2009 14:27

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

Re: Адреса и функции gta_sa.exe 1.0

IDA используется 5.2 (валяется в куче мест). Возможно, понадобится anti-ban patch.

Что касается CPlaceable, там и вспоминать ничего не надо.
По смещению 20 (0x14) от начала объекта, находится указатель на структуру RwMatrix (на самом деле, там немного более сложный объект, но, если не нужно создавать его самому, это не критично).

В принципе, чтобы разобраться с матрицах позиционирования и трансформации, стоило бы почитать документацию на RenderWare Graphics (ссылки были в этой же теме). Сейчас же попробую объяснить, что называется, "на пальцах", хотя без картинок это будет тяжеловато.

Возьмем классическую трехмерную систему координат. (Три оси, X, Y и Z, перпендикулярные друг другу). Это будет называться world space (глобальная система координат).

Теперь возьмем модель, и опишем вокруг нее параллелепипед (bounding box). Из одной вершины, проведем по трем ребрам этого параллелепипеда другие три оси. Это будет система координат модели (modelling space). 

На этих трех осях, отложим по единичному вектору.  Это будет базис.

Теперь, совместим оси координат модели с осями координат world space. Сейчас у нас world space совпадает с modelling space. Три наших базисных вектора имеют координаты {1, 0, 0}, {0, 1, 0}, {0, 0, 1}.
Т.е., получается единичная матрица 3x3. Это и называется матрицей трансформации.

Чтобы не путаться в иксах и игреках, дадим осям modelling space какие-то другие имена. В терминологии RenderWare,  оси называются right, top и at (примерно соответствуют X, Y и Z). Примерно - потому что после вращения они могут занять совсем другое положение в пространстве.

Зачем нужна матрица трансформации. Она используется для перевода координат между разными координатными пространствами. Чтобы перевести координаты из одной системы координат в другую, нужно умножить вектор с координатами точки либо на матрицу трансформации, либо на дополнительную к ней матрицу. (В зависимости от того, откуда куда переводятся координаты).


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

#175 30-03-2009 14:54

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

Re: Адреса и функции gta_sa.exe 1.0

Если все понятно, я продолжаю.

Для практической иллюстрации, повернем базис, например, вокруг оси X на угол a.
При этом, вектор right (лежащий на оси X) остается на месте, а два других - перемещаются в пространстве.
После поворота, координаты конца вектора top будут {0, cos(a), sin(a)}, а вектора at  {0, -sin(a), cos(a)}
(Честно предупреждаю: я могу здесь слегка напутать в знаках, синусах и косинусах, т.к. справочника под рукой нет. Общий принцип именно такой, а частности - нужно проверять).

В итоге, матрица трансформации приобретает вид { { 1, 0, 0 }, { 0, cos(a), sin(a) }, { 0, -sin(a), cos(a) } }
Аналогично, отрабатываются повороты вокруг остальных осей. Вывод матрицы для поворота вокруг всех трех осей - есть в любом справочник или даже в педивикии.

Что не хватает во всей этой конструкции? Не хватает перемещения в пространстве.
Для этого, нужно указать координаты в world space, в которые перемещается начало координат модели. для этого вводится 4й вектор - pos. Это просто координаты.

В результате, мы получили матрицу 3x4. Это очень неудобный размер с точки зрения перемножения матриц. Чтобы привести ее к квадратной, добьем первые три вектора нулями, а pos - единицей. И вот она, структура RwMatrix.
В качестве приятного бонуса, получаем, что компоненты матрицы выровнены на 16 байт, что позволяет нормально использовать SSE.

struct RwV3D {
  float x;
  float y;
  float z;
};

struct RwMatrix {
  RwV3D right;
  DWORD flags; // это поле содержит флаги для оптимизации вычислений. При реальых операциях над матрицей, в него заносится 0
  RwV3D top;
  DWORD pad1; // зарезервировано. Должно быть равно 0
  RwV3D at;
  DWORD pad2; // зарезервировано. Должно быть равно 0
  RwV3D pos; 
  DWORD pad3; // зарезервировано, должно быть равно 1.0f

Уф. Вроде все. Надеюсь я не очень сильно наврал, т.к. в справочник лазить ломает да и некогда.
За подробностями и картинками - в первую часть мануала по RenderWare Graphics.

PS. Если все понятно и интересно, могу попробовать рассказать про LTM (Local Transformation Matrix)


C5 - GTA IV/RDR/GTA V script compiler.
~ 60% done.

Offline

Board footer

Powered by FluxBB