You are not logged in.
Pages: 1
Думаю, сравнительные картинки объяснят лучше, чем описание:
IV hud for SA(1920x1080):
IV hud for SA with fix(1920x1080):
GTA IV(1920x1080):
Сначала хотел вносить изменения непосредственно в .asi, но она оказалась зашифрована как-то, поэтому пришлось написать клео скрипт. Код, как обычно, клео 3 совместимый:
{$CLEO .cs}
0000:
wait 100
0A8D: 0@ = read_memory 0x5BA860 size 4 virtual_protect 0
0@ -= 0x14584
0A8E: 1@ = 0@ + 0x19618 // icon X
0A8C: write_memory 1@ size 4 value 160.0 virtual_protect 0
1@ += 4 // icon Y
0A8C: write_memory 1@ size 4 value 80.0 virtual_protect 0
0A8E: 1@ = 0@ + 0x19650 // ammo font size Y
0A8C: write_memory 1@ size 4 value 0.3 virtual_protect 0
1@ += 4 // ammo font size X
0A8C: write_memory 1@ size 4 value 0.75 virtual_protect 0
{0A8E: 1@ = 0@ + 0x16AD8 // ammo right border
0A8C: write_memory 1@ size 1 value 1 virtual_protect 0
0A8E: 1@ = 0@ + 0x16C39 // ammo left border
0A8C: write_memory 1@ size 1 value 1 virtual_protect 0 }
2@ = 518.0
0AB1: call_scm_func @__VarToOffset 1 varnumber 2 result 3@
0A8E: 1@ = 0@ + 0x165EF // ptr to icon Y pos
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
while true
wait 0
end
:__VarToOffset
0A9F: 23@ = current_thread_pointer
23@ += 0x3C
0@ *= 4
005A: 23@ += 0@ // address of the local variable
0AB2: ret 1 23@Закоменченный участок - обрамление вокруг цифр патронов. Если раскомментить, будет так:
Radar.ini: http://pastebin.com/amMSkEpu
--
Дизассемблированный код asi для ознакомления/поиска адресов здесь - iv_hud.txt
Last edited by Sergey81 (17-05-2011 16:48)
Offline
ASI не зашифрована, а лишь скомпилирована, ибо она есть самая обычная DLL
Дизассемблированный код asi для ознакомления/поиска адресов здесь - (ССЫЛКА)
Уважаемый тов. Alexander вряд ли одобрит подобное распространение своих трудов.
Last edited by 3Doomer (18-05-2011 04:59)
GIMS developer
Offline
ASI не зашифрована, а лишь скомпилирована, ибо она есть самая обычная DLL
Насколько я понимаю, если бы она была скомпилирована обычным образом, дизассемблировалась она бы так же, как и в приведённом выше txt. Но мне пришлось доставать всё из памяти. Хотя могу и ошибаться.
Уважаемый тов. Alexander вряд ли одобрит подобное распространение своих трудов.
Это всего лишь дамп памяти, не исходник, украденный с винчестера Александра, не готовый мод с перебитымми копирайтами. Любой может за пару минут его сделать. Чего тут такого страшного?
Offline
Было бы интересно узнать что означает каждый адрес памяти приведенный в скрипте.
Offline
@444andrei444 - Первый адрес, указатель на hud.txd.
.text:005BA85F 010 push offset aModelsHud_txd ; "MODELS\\HUD.TXD"
68 64 A6 86 00
Так как asi его подменяет, читаем адрес, куда ведёт этот указатель, вычитаем смещение(0x14584), получаем адрес начала asi. Потом, прибавляя смещения, которые находятся по вышеприведённому текстовику, меняем то, что нужно. Смещения в скрипте подписаны и так. Ещё можно найти размер шрифта денег и часов, но я врядли буду этим заниматься.
Offline
Альтернативный вариант скрипта, который уменьшает размер всех маркеров с размером 3 до размера 2.
Также изменяет цвет зелёных маркеров на жёлтый. У меня вместо зелёного почему-то они чёрные были, поэтому решил заодно и поменять.
{$CLEO .cs}
0000:
wait 100
0A8D: 0@ = read_memory 0x5BA860 size 4 virtual_protect 0
0@ -= 0x14584
0A8E: 1@ = 0@ + 0x19618 // icon X
0A8C: write_memory 1@ size 4 value 160.0 virtual_protect 0
1@ += 4 // icon Y
0A8C: write_memory 1@ size 4 value 80.0 virtual_protect 0
0A8E: 1@ = 0@ + 0x19650 // ammo font size Y
0A8C: write_memory 1@ size 4 value 0.3 virtual_protect 0
1@ += 4 // ammo font size X
0A8C: write_memory 1@ size 4 value 0.75 virtual_protect 0
{0A8E: 1@ = 0@ + 0x16AD8 // ammo right border
0A8C: write_memory 1@ size 1 value 1 virtual_protect 0
0A8E: 1@ = 0@ + 0x16C39 // ammo left border
0A8C: write_memory 1@ size 1 value 1 virtual_protect 0 }
2@ = 518.0
0AB1: call_scm_func @__VarToOffset 1 varnumber 2 result 3@
0A8E: 1@ = 0@ + 0x165EF // ptr to icon Y pos
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
while true
wait 0
for 10@ = 0xBA86F0 to 0xBAA248 step 0x28
0A8D: 22@ = read_memory 10@ size 4 virtual_protect 0
if
22@ == 1
then
0A8C: write_memory 10@ size 4 value 4 virtual_protect 0
end
0A8E: 11@ = 10@ + 28
0A8D: 12@ = read_memory 11@ size 4 virtual_protect 0 //DWORD dwIconSize;
if
12@ == 3
then
12@ -= 1
0A8C: write_memory 11@ size 4 value 12@ virtual_protect 0
end
{ if
12@ == 1
then
12@ *= 10
12@ /= 15
0A8C: write_memory 11@ size 4 value 12@ virtual_protect 0
end
if
12@ == 2
then
12@ *= 10
12@ /= 15
0A8C: write_memory 11@ size 4 value 12@ virtual_protect 0
end }
end
end
:__VarToOffset
0A9F: 23@ = current_thread_pointer
23@ += 0x3C
0@ *= 4
005A: 23@ += 0@ // address of the local variable
0AB2: ret 1 23@
Offline
Pages: 1