Четверг, 12.12.2024, 02:37
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Добавление новых текстур в particle.txd
DK22PacДата: Суббота, 06.08.2011, 00:52 | Сообщение # 1
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Разобрав алгоритм загрузки текстур в .exe, написал такой код, который демонстрирует использование новодобавленной текстуры в particle.txd:
Code
{$CLEO .cs}
0AA5: call 0x7316A0 num_params 0 pop 0                      // _saveTexDictionary
0AA7: call_function 0x731850 num_params 1 pop 1 0x85C648 1@ // _txdIndexByName
0AA5: call 0x7319C0 num_params 1 pop 1 1@                   // _txdSetCurrent
0AC6: 0@ = label @__texture offset                          // "tailight"
0AA7: call_function 0x7F3AC0 num_params 2 pop 2 0 0@ 1@     // _RwReadTexture
0AA5: call 0x7316B0 num_params 0 pop 0                      // $restoreTexDictionary
while true
     if
         player.Defined(0)
     then
         00A0: store_actor $player_actor position_to 2@ 3@ 4@
         0AC7: 5@ = var 2@ offset
         0AA5: call 0x707390 num_params 16 pop 16 0 0 0x3F800000 0 0x447A0000 255 255 255 255 0xC1400000 0 0 0x41400000 5@ 1@ 2
     end
     003D:
end
:__texture
hex
     "tailight" 00
end

Правда, надо ещё будет добавить выгрузку текстуры в CGame_Terminate. Это выглядит примерно так:
Code
0AC6: 31@ = label @__asm offset
0AC6: 39@ = label @__jmp offset
0AB1: call_scm_func @define_jump_to_asm_inj 4 asm_inj 31@ jump_from 0x706F57 then_jump 0x706F5F offset_jump_in_asm 30@
31@ += 8
0A8C: write_memory 31@ size 4 value 1@ virtual_protect 0
...

:__asm
hex
     B8 20 38 7F 00 // mov  eax, 0x7F3820 ; _RwTextureDestroy
     FF D0          // call eax
     68 00 00 00 00 // push 0
     B8 20 38 7F 00 // mov  eax, 0x7F3820 ; _RwTextureDestroy
     FF D0          // call eax
     83 C4 34       // add  esp, 0x34
end

:__jmp
hex
     E9 00 00 00 00 // jmp 0
end

:define_jump_to_asm_inj
0A8C: write_memory 1@ size 1 value 0xE9 virtual_protect 1
0085: 4@ = 1@
4@ += 5
0062: 0@ -= 4@
1@ += 1
0A8C: write_memory 1@ size 4 value 0@ virtual_protect 1
0085: 4@ = 3@
4@ += 5
0062: 2@ -= 4@
3@ += 1
0A8C: write_memory 3@ size 4 value 2@ virtual_protect 1
0AB2: ret 0
 
444andrei444Дата: Четверг, 20.10.2011, 16:05 | Сообщение # 2
Группа: Проверенные
Сообщений: 15
Статус: Offline
То есть я должен добавить новую текстуру в партикл файл. Загрузить ее этим скриптом и использовать в любом скрипте, как и обычные?
 
  • Страница 1 из 1
  • 1
Поиск: