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