#201 01-08-2010 17:18

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

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

После долгого перерыва:

http://public.sannybuilder.com/gtasa_ex … 100801.rar
http://public.sannybuilder.com/gtasa_ex … 100801.rar

Добавлены описания скриптовых объектов (сферы, чекпойнты и т.д.), много структур по AI, часть работы с IPL, ощутимый кусок стриминга и т.д.

Смотреть, как все устроено, лучше в исходниках, но сразу хочу предупредить, что там есть баги (вылеты в случайные моменты времени и глючащие миссии со spook-o-meter). Искать, что я сделал не так - буду после большой чистки исходников. Предположительно, в следующей версии, gta_sa_dll и gta_iv_dll будут объединены.

Offline

#202 28-09-2010 18:00

Deji
From: UK
Registered: 09-11-2008
Posts: 189
Website

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

Not too sure how to post here, but I'll give it a go.

sub_7201C0 -> ?renderInteriorOcclusion
sub_726DF0 -> ?drawCullReflection (or) ?updateCullReflection

NOP 0x555854 (5 bytes) - disable reflection updates (makes interior mirrors carry a static image until you exit/enter - then they will be black).

Offline

#203 29-09-2010 16:07

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

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

@Deji - Thanks.

Offline

#204 11-10-2010 07:23

Deji
From: UK
Registered: 09-11-2008
Posts: 189
Website

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

@listener - Пожалуйста.

Функции
sub_72A790 -> syncWeather
sub_72A790 -> updateTownID (writes town ID to 0xC81314)
    0  - Countryside
    1  - Los Santos
    2  - San Fierro
    3  - Las Venturras
    4  - Desert
    5+ - Countryside (default)

Адреса
0x8D5EB0-0x8D5FB0 -> Weather IDs (ordered weather sequence)
0x8D5EB0 -> Countryside Weather IDs
0x8D5EF0 -> LS Weather IDs
0x8D5F30 -> SF Weather IDs
0x8D5F70 -> LV Weather IDs
0x8D5FB0 -> Desert Weather IDs

flt_C81324 -> Rain Density
flt_C81410 -> Fog Density
dword_C81328 -> (a rain flag.. changes to 1 when it rains - doesn't change back)

Last edited by Deji (11-10-2010 07:25)

Offline

#205 13-10-2010 18:03

Viger
Registered: 14-05-2009
Posts: 24

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

Вот, нашёл названия кое-каких функций(надо бы добавить в базу=)):

sub_43CEC0  =  DrawRampageText
sub_45C210  =  DrawReplayText
sub_493160  =  RemoveSearchlight
sub_573AE0  =  SetDefaultSettings  (*used to set some options by default, for example - graphic settings)
sub_589650  =  _?DrawStatBox
sub_719510  =  SetFontShadowRGBA   arg_0 = RGBA
sub_71A700  =  DrawText? (*used to redraw? textures on screen)

_allocTobjModel  - arg_0 = model_ID


byte_B6EC2E - keyboard_playing (*address used to check buttons for keyboard or joypad control)

Offline

#206 13-10-2010 18:54

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Откуда скопировал?

Offline

#207 13-10-2010 18:59

Viger
Registered: 14-05-2009
Posts: 24

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

Сам искал по мере изучения движка, тут по-моему ещё не всё=)

Offline

#208 14-10-2010 10:03

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

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

Offline

#209 14-10-2010 14:38

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

@listener - ну и. Расскажи хоть что нового?

Offline

#210 14-10-2010 15:08

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

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

А почти ничего. Добавил все свежие находки (поправив несколько ошибок) и еще несколько имен, которые нашлись в процессе.

Новинки будут, когда я базы Bully и VCS закончу.

Offline

#211 20-10-2010 22:59

Sergey81
Registered: 19-12-2008
Posts: 654

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

В лимит аджастере есть пункт
STATIC LIMITS
    Vehicle Models      212     Maximum number of entries allowed to be defined in the vehicles.ide file

Как можно поменять этот лимит на 213 в самом экзешнике?
И ещё хочу узнать про видеоплеер, его можно использовать как-то через cleo для проигрывания своих видеофайлов прямо в игре? Или начальные ролики при запуске - это всё что он может?

Last edited by Sergey81 (20-10-2010 23:30)

Offline

#212 22-10-2010 03:29

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

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

В IDA задай поиск по строке Vehicle Models и посмотри, где она используется. Найдешь процедуру, в которой все аналогичные лимиты устанавливаются. Оттуда и адрес можно узнать.

Offline

#213 22-10-2010 04:33

Sergey81
Registered: 19-12-2008
Posts: 654

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

Seemann wrote:

В IDA задай поиск по строке Vehicle Models и посмотри, где она используется. Найдешь процедуру, в которой все аналогичные лимиты устанавливаются. Оттуда и адрес можно узнать.

Не находит у меня ничего так. На gtaf есть пост Sacky об этом, http://pastebin.com/PkQHYSp0
но у меня выглядит в иде так:

.text:005B8FDE 010                 push    offset aVehiclestruct ; "VehicleStruct"
.text:005B8FE3 014                 push    32h
.text:005B8FE5 018                 mov     ecx, eax
.text:005B8FE7 018                 call    _CPool_CVehicleStruct__constructor ; // sizeof (CVehicleStruct) == 0x314
.text:005B8FEC 010                 jmp     short loc_5B8FF0

5B8348 совпадает. Если 5B8FE3 - это нужный адрес, какое значение туда вставлять, чтобы увеличить лимит на 1?

Offline

#214 22-10-2010 18:09

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

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

@Sergey81 - Sacky ошибается. На самом деле, все не так.
Вообще, я регулярно наблюдаю некоторую путаницу.

Есть игровые объекты и есть их модели. "Модель", в данном случает, подразумевает не "треугольники+текстуры", а общее описание объета (то, что находится в .ide и связанных файлах).

На каждую строчку в .ide создается объект (потомок CBaseModelInfo), который содержит данные об этой модели (дополнительно, туда могут читаться параметры из других файлов: для машин - это цвета, возможные модификации, ссылка на handling и т.д.).
Для выделения этих объектов существует массив modelCarsStore. Размер этого массива фиксирован.

Чтобы увеличить этот массив, требуется создать свой массив, подставив вместо 212 нужный размер

static struct ModelCarsStore : public ModelStoreBase<CModelCars, 212> {} modelCarsStore;

и заменить CModelCars::allocate (004C6770), чтобы она обращалась к собственному массиву.
Она вызывается в одном месте, из функции readIdeCars (0x005b6f30)

Более подробно - есть в моих исходниках (ogModels.cpp, ogConfig.cpp).

Offline

#215 22-10-2010 19:28

Sergey81
Registered: 19-12-2008
Posts: 654

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

UPD. Странно что я сразу не догался, но самый простой способ - limit adj. переименовать в x3d9.dll, в x3d9.dll заменить salimits.ini на salimitz.ini, там выставить нужные лимиты, которые не нужны оригинальной SA, а потом в кастомном экзешнике, а у меня их два, gta_sanvice.exe/gta_united.exe поменять d3d9.dll на x3d9.dll. Так и сделал, всё работает.
Ну и поясню наверно, зачем это нужно. У меня в худе, при езде на машине, под спидометром выводится её название, скрипт вот такой(не мой, автор Wesser вроде бы):

:VehicleTextDisplay
if 
00DF:   actor $PLAYER_ACTOR driving
then
    03C0: PL_VEHICLE = actor $PLAYER_ACTOR car
    0441: 3@ = car PL_VEHICLE model
    000E: 3@ -= 400 
    0012: 3@ *= 0x308 
    000A: 3@ += 0xB1F650 
    000A: 3@ += 0x36 
    0A8D: STRING = read_memory 3@ size 4 virtual_protect 0 // I found this :)
    000A: 3@ += 0x4 
    0A8D: STRING2 = read_memory 3@ size 3 virtual_protect 0 
    0AB1: call_scm_func @SubString 2 STRING STRING2 
end
return 

:SubString
gosub @DrawVehicleText 
0AB2: ret 0 

:DrawVehicleText
03E0: unknown_text_draw_flag 1 
033F: set_text_draw_letter_size 0.3 1.2 
081C: draw_text_outline 2 RGBA 0 0 0 255 
033E: set_draw_text_position 540.0 386.0 GXT VEHICLE_TEXT 
return

Так вот если Vehicle Model лимит не трогать - этот код работает. Если выставить его в 213, название отображаться перестаёт. Незнаю почему так.

Last edited by Sergey81 (22-10-2010 22:22)

Offline

#216 28-10-2010 14:50

Singleboy
Registered: 03-12-2009
Posts: 4

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

Ребята, подскажите, как с помощью  0AA5: call <FuncAddress> X pop X ... показать в игре субтитры, адреса функций вывода TextBox или StyledText есть, а вот с субтитрами ничего не удалось найти.

Offline

#217 29-05-2011 22:11

Sergey81
Registered: 19-12-2008
Posts: 654

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

Хм, вот так

0AA5: call 0x747660 num_params 2 pop 2 "movies\\Logo.mpg" 0

можно воспроизвести интро заставку прямо в игре. У меня слышно только звук, а видео можно мельком увидеть только при сворачивании/разворачивании.
Никто не в курсе, можно ли видео отображать "поверх" самой игры?

Offline

#218 30-05-2011 00:52

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

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

я думаю, для этого надо копаться в DirectX, перехватывать рендер картинки на экране и поставлять кадры видео. вряд ли это простая задача.

Offline

#219 08-06-2011 18:47

Sergey81
Registered: 19-12-2008
Posts: 654

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

Хорошие новости для любителей цеплять что-либо к игроку, машинам и т.п.
Wesser возможно нашёл безбаговый способ избавиться от отставания прицепленных объектов.
Подробнее тут - http://www.gtaforums.com/index.php?show … 1060525532

Offline

#220 08-06-2011 19:44

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

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

Так прицепленные объекты вроде и так не отстают.

Offline

#221 08-06-2011 20:02

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

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

Не отстают также проекции) Ура)


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#222 08-06-2011 20:07

Sergey81
Registered: 19-12-2008
Posts: 654

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

@Den_spb - Ну я имел в виду всё что отстаёт под этим словом.

Offline

#223 09-06-2011 01:50

Deji
From: UK
Registered: 09-11-2008
Posts: 189
Website

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

0A8C: write_memory 0xB5F852 size 1 value 1 virtual_protect 0
0A8C: write_memory 0x748BC5 size 2 value 0x13C virtual_protect 1
0AA5: call 0x747660 num_params 2 pop 2 "movies\\Logo.mpg" 0
0A8C: write_memory 0xC8D4C0 size 1 value 4 virtual_protect 0
003D: // same as wait 0 - returns from script parsing
0AA5: call 0x746740 num_params 0 pop 0
0A8C: write_memory 0xBA677B size 1 value 0 virtual_protect 0
0A8C: write_memory 0xB5F852 size 1 value 0 virtual_protect 0

Offline

#224 24-06-2011 20:18

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

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

Вижу, база для GTAIII недавно обновилась? Спасибо, что не забываете smile

listener, можете мне пожалуйста обьяснить в чём разница между CShadows_addPermanentShadow и CShadows_storeShadowToBeRendered?

Last edited by DK22Pac (24-06-2011 20:54)


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#225 28-10-2011 11:22

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Как открыть базу листенера в IDa 6?

Offline

Board footer

Powered by FluxBB