Да на сколько помню, после видео уже грузятся asi.Вот тут кстати преимущество dll перед asi, которые подхватываются еще на этапе инициализации, так что портить exe вообще больше не нужно. То же лого-видео отключается, можно даже файловую структуру игры переопределить, папку сохранения и другие файлы как захочется.
а может стоит сделать сборку-фикс...
Конечно надо, лучше использовать плагин, чем что-то изменять в exe))EXE вообще не надо затрагивать. Модификация не должна не чего патчить, она будет выглядит как нечто отдельное. К тому же слышал что в США, патчинг exe запрещен.
Как насчет сохранения в директории игры? Работы ведутся или просто пока идея витает в воздухе?
BYTE *bGTAUserFolder = (BYTE *) 0x6D63D8; // окей, это понятно
WriteStr(bGTAUserFolder, 26, "save"); // вот тут мы в BYTE записываем string? я вот это не понимаю
(C++ builderа нет, ровно как и соответствующих знаний по C++)Microsoft Visual C++ ~100mb
ну и в качестве пожелания - если можно ... радио по умолчанию мп3
Я бы не сказал, что достаточно базовых знаний. Чтобы понимать, что и как писать, надо изучить для начала сами плюсы, потренироваться в работе со стандартными библиотеками, WinAPI... Вот только потом уже можно писать полноценные плагиныЦитировать(C++ builderа нет, ровно как и соответствующих знаний по C++)Microsoft Visual C++ ~100mb
Учебников туча в интернете. Тем более, для написания плагинов достаточно базовых знаний.
Вот решил написать, можно ли сделать конвертер для exe в файл font.dat?...
struct tFontTableVC
{
unsigned short aProportionalValues[208];
unsigned short nReplacementSpaceChar;
unsigned short nUnproportionalValue;
};
struct tFontSizeVC //tFontSizeVC &CFont::Size = *(tFontSizeVC *)0x696BD8;
{
tFontTableVC aFonts[2];
unsigned short foreign_table[338];
};
{$CLEO}
05E5: 1@ = game_version
if
1@ == 0
then
1@ = 0x6D8C92
else
if
1@ == 1
then
1@ = 0x6D8C6A
else
05DC: end_custom_thread
end
end
while true
wait 0
if
0@ == 0
then
if and
$ONMISSION == 0
8449: not actor $PLAYER_ACTOR in_a_car
then
gosub @ACTIVATE_SAVEENTRY
end
else
if or
$ONMISSION <> 0
0449: actor $PLAYER_ACTOR in_a_car
then
gosub @DEACTIVATE_SAVEENTRY
end
end
end
:ACTIVATE_SAVEENTRY
0085: 2@ = 1@
05df: write_memory 2@ size 2 value 4 virtual_protect 0
//FET_
2@ += 2
05df: write_memory 2@ size 4 value 0x5f544546 virtual_protect 0
//SG
2@ += 4
05df: write_memory 2@ size 4 value 0x4753 virtual_protect 0
2@ += 5
05df: write_memory 2@ size 1 value 15 virtual_protect 0
0@ = 1
return
:DEACTIVATE_SAVEENTRY
0085: 2@ = 1@
05df: write_memory 2@ size 2 value 34 virtual_protect 0
//FEDS
2@ += 2
05df: write_memory 2@ size 4 value 0x53444546 virtual_protect 0
//_TB
2@ += 4
05df: write_memory 2@ size 4 value 0x42545F virtual_protect 0
2@ += 5
05df: write_memory 2@ size 1 value 0 virtual_protect 0
0@ = 0
return