Четверг, 25.04.2024, 02:52
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум » Игры серии ГТА » Работа с памятью, exe » Крепление эффектов освещения к автомобилю
Крепление эффектов освещения к автомобилю
Den_spbДата: Суббота, 05.02.2011, 04:46 | Сообщение # 16
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Оно. Надо только определить смысл передаваемых параметров.
 
DK22PacДата: Суббота, 05.02.2011, 04:46 | Сообщение # 17
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Вот передача параметрови вызов sub_707390 из функции
Code
0x707930 CShadows__?storeShadowToBeRendered

Code
  loc_707945:             ; case 0x1
000 mov     eax, [esp+arg_24]
000 mov     ecx, [esp+arg_20]
000 mov     edx, [esp+arg_1C]
000 push    0
004 push    0
008 push    3F800000h
00C push    0
010 push    41700000h
014 push    eax
018 mov     eax, [esp+18h+arg_18]
018 push    ecx
01C mov     ecx, [esp+1Ch+arg_14]
01C push    edx
020 mov     edx, [esp+20h+arg_10]
020 push    eax
024 mov     eax, [esp+24h+arg_C]
024 push    ecx
028 mov     ecx, [esp+28h+arg_8]
028 push    edx
02C mov     edx, [esp+2Ch+arg_4]
02C push    eax
030 mov     eax, _texShadCar
030 push    ecx
034 push    edx
038 push    eax
03C push    1
040 call    sub_707390
040 add     esp, 40h
000 retn
 
Den_spbДата: Суббота, 05.02.2011, 04:46 | Сообщение # 18
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Часть параметров должна передаваться из опкода - нужно проследить их путь. Смысл других параметров можно определить, например, сравнивая их значения при вызове sub_707390 из различных процедур. Когда я изучал процедуру создания корон, у меня была похожая задача - тогда я для удобства сделал таблицу (аттач).

Параметры 0x707390:
1 0 (const?)
2 0 (const?)
3 0x3F800000 1.0 какой-то геометрический коэффициент? (при увеличении значения текстура уменьшается)
4 0
5 0x41700000 1000.0 какой-то геометрический коэффициент? (текстура смещается?)
6 Blue (100%)
7 Green (100%)
8 Red (100%)
9 Intensity
10 float, масштаб тектуры поперёк (100%)
11 поворот текстуры + сжатие ?
12 поворот текстуры + сжатие ?
13 float, масштаб текстуры вдоль (100%)
14 RwV3D (100%)
15 ID текстуры (100%)
16 Тип эффекта. 1 - тень (применяется с текстурами теней) 2 - свет (применяется с текстурами света)

Прикрепления: 6876013.xls (17.5 Kb)
 
DK22PacДата: Суббота, 05.02.2011, 04:47 | Сообщение # 19
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Честно говоря, я думал, ты "взял" корону у Риосуке (вот часть его кода (missile - http://hotmist.ddo.jp/cleo_cs/missile.txt ))
Code
// 0AA5: call 0@(3@,1i) num_params 7 pop 7 [Z] [Y] [X] [Size] [Type] [Flare] [ID]
:FUNC_00
hex
6A00            // push 0
6A00            // push 0
6800007041      // push 15.0
6A00            // push 0
68CDCC4C3E      // push 0.2
6A00            // push 0
6A00            // push 0
6A00            // push 0
6A00            // push 0
6A01            // push 1
8B4C2430        // mov ecx, [esp+0x30]
51              // push ecx                     // Corona Flare   
8B4C2438        // mov ecx, [esp+0x38]
51              // push ecx                     // Corona Type   
6800803B45      // push 3000.0
8B4C2444        // mov ecx, [esp+0x44]
51              // push ecx                     // Corona Size
8D94244C000000  // lea edx, [esp+0x0000004C]
52              // push edx                     // Corona Position Pointer
68FF000000      // push 255                     // Corona Alpha
6880000000      // push 128                     // Corona Blue
68C0000000      // push 192                     // Corona Green
68FF000000      // push 255                     // Corona Red
6A00            // push 0
8B442454        // mov eax, [esp+0x54]
03C6            // add eax, esi
50              // push eax                     // Corona ID
B880C56F00      // mov eax, 0x006FC580
FFD0            // call eax
83C454          // add esp, 0x54
C3              // ret
end

Ну что ж, попробую поискать...


Сообщение отредактировал DK22Pac - Суббота, 05.02.2011, 03:00
 
Den_spbДата: Суббота, 05.02.2011, 04:47 | Сообщение # 20
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (DK22Pac)
Честно говоря, я думал, ты "взял" корону у Риосуке (вот часть его кода (missile))
Нет, функцию короны я исследовал самостоятельно.
 
DK22PacДата: Суббота, 05.02.2011, 04:47 | Сообщение # 21
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Quote (Den_spb)
Нет, функцию короны я исследовал самостоятельно.

Это уже понял=)
Кстати спасибо за выше предоставленную инфу по некоторым параметрам.
Вот ещё один вызов.
Code
push    0
push    0
push    1.0
mov     eax, _texShadExp
push    0
push    1000.0
push    80h
push    80h
push    80h
push    80h
push    -12.0
push    0
push    0
push    12.0
push    edi
push    eax
push    2
call    sub_707390
add     esp, 40h
 
Den_spbДата: Суббота, 05.02.2011, 04:47 | Сообщение # 22
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (DK22Pac)
Кстати спасибо за выше предоставленную инфу по некоторым параметрам.
Да сейчас может добьём её.
 
DK22PacДата: Суббота, 05.02.2011, 04:47 | Сообщение # 23
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Quote (Den_spb)
Да сейчас может добьём её.

biggrin
Жаль спать надо идти.
Надеюсь, где-то среди параметров есть адресс структуры автомобиля...
Может быть это первый параметр? Вот ещё один вызов... Там создаётся текстура тени педа
Code
push    ecx
push    0
push    3F800000h
push    0
push    40800000h
push    eax
push    eax
push    eax
push    eax
push    edx
pu  sh    eax
push    ecx
push    edx
push    eax
push    ecx
push    1

Кстати в preRender именно она не вызывается. Может быть, вызывается через какую-то другую ф-цию...

Вот здесь ещё один вызов

Code
.text:00707F2C 064                 call    sub_707390

Только параметров там передается почему-то 12, и последний из них - не 1 и не 2, а 3.
Хотя мб там не через push, а через fstp (я не знаю что это) передаётся
Code
push    0
push    edi
push    3F800000h
fsubr   [esp+30h+origin.x]
push    0
push    40800000h
fstp    [esp+38h+origin.x]
push    esi
fld     [esp+3Ch+arg_8]
push    esi
fmul    ds:flt_858FA0
push    esi
push    esi
sub     esp, 10h
fsubr   [esp+58h+origin.y]
lea     edx, [esp+58h+origin]
fstp    [esp+58h+origin.y]
fld     [esp+58h+arg_18]
fmul    ds:flt_858CE8   ; 1.5f
fstp    [esp+58h+var_4C]
fld     [esp+58h+arg_14]
fmul    ds:flt_858CE8   ; 1.5f
fstp    [esp+58h+var_50]
fld     [esp+58h+arg_10]
fmul    ds:flt_858CE8   ; 1.5f
fstp    [esp+58h+var_54]
fld     [esp+58h+arg_C]
fmul    ds:flt_858CE8   ; 1.5f
fstp    [esp+58h+var_58]
push    edx
push    ebp
push    3
call    sub_707390
add     esp, 40h


Сообщение отредактировал DK22Pac - Суббота, 05.02.2011, 03:45
 
Den_spbДата: Суббота, 05.02.2011, 04:47 | Сообщение # 24
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Гигантский свет фар biggrin
Код:
Code
{$CLEO}
0@ = -2024.2429
1@ = 170.1045
2@ = 28.8359
0AC7: 3@ = var 0@ offset
0A8D: 4@ = read_memory 0xC403F8 size 4 virtual_protect 0
while true
     wait 0  
     0AA5: 0x707390 16 pop 16 0 0 0x3F800000 0 0x447A0000 255 255 255 255 0xC1400000 0 0 0x41400000 3@ 4@ 2   
end
Прикрепления: 9511142.jpg (86.0 Kb)
 
DK22PacДата: Суббота, 05.02.2011, 04:48 | Сообщение # 25
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Круто!
Спасибо!!
И ещё спасибо что выложил скрин, я вот с телефона зашёл.

А к автомобилю не выходит прицепить?

 
Den_spbДата: Суббота, 05.02.2011, 04:48 | Сообщение # 26
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (DK22Pac)
Только параметров там передается почему-то 12
Число параметров по идее не должно меняться. Либо параметры кладутся на стек другой командой (не push), либо они к этому моменту уже находятся на стеке (правда не знаю, возможно ли это).
Quote (DK22Pac)
А к автомобилю не выходит прицепить?
Пока неясно, какой параметр можно использовать для передачи структуры (если такой тут вообще есть).
 
DK22PacДата: Суббота, 05.02.2011, 11:35 | Сообщение # 27
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Проверил параметры с 0. Ни один не подходит. Кстати нашёл ещё одну ф-цию

Code
020 push    0
024 push    0
028 faddp   st(1), st
028 push    40.0
02C push    1.0
030 lea     edx, [ebx+ebx]
030 fadd    [esp+30h+var_8]
030 push    9.0
034 fld     [esp+34h+var_4]
034 push    0
038 fadd    [esp+38h+arg_C]
038 push    0
03C push    0
040 fstp    [esp+40h+var_4]
040 fld     [esp+40h+arg_10]
040 fmul    ds:flt_858B8C   ; 0.5f
040 fld     st
040 fmul    dword_B7CA50[eax]
040 fchs
040 fstp    [esp+40h+var_10]
040 fmul    flt_B7CA54[eax]
040 mov     eax, 55555556h
040 imul    edx
040 fchs
040 fstp    [esp+40h+var_14]
040 fld     [esp+40h+var_10]
040 fadd    [esp+40h+var_C]
040 fstp    [esp+40h+var_C]
040 mov     eax, edx
040 fld     [esp+40h+var_14]
040 shr     eax, 1Fh
040 fadd    st, st(1)
040 add     edx, eax
040 push    edx
044 mov     edx, [esp+44h+var_10]
044 fstp    [esp+44h+var_8]
044 sub     esp, 8
04C lea     eax, [esp+4Ch+var_C]
04C fstp    st
04C fld     [esp+4Ch+arg_14]
04C fmul    dword_B79ED0[ecx*4]
04C fstp    [esp+4Ch+var_48]
04C fld     [esp+4Ch+arg_14]
04C fmul    dword_B79F10[ecx*4]
04C mov     ecx, [esp+4Ch+var_14]
04C fstp    [esp+4Ch+var_4C]
04C push    ecx
050 mov     ecx, _texLampShad64
050 push    edx
054 mov     edx, [esp+54h+arg_18]
054 push    eax
058 push    ecx
05C lea     eax, [esi+edx+33h]
05C push    1
060 push    eax
064 call    sub_70BA00

Ещё один её вызов. Тут 17 параметров.

Code
push    edi
push    edi
push    40.0
push    1.0
push    4.0
push    ebx
push    ebx
push    ebx
push    edi
push    -2.0
push    e    di
push    edi
push    2.0
push    edx
push    eax
push    2
push    esi
call    sub_70BA00

Это уже ближе...

Code
sub_70BDA0

Она походу занимается отрисовкой теней...
Code
.text:0070BDA0     sub_70BDA0      proc near               ; CODE XREF: CAutomobile__preRender+11A5p
.text:0070BDA0                    ; CBike__preRender+5D7p
.text:0070BDA0                    ; CBmx__m44+311p
.text:0070BDA0                    ; CHeli__preRender+480p ...

Из неё вызывается и то, и другое.
http://img20.imageshack.us/img20/3506/dk22pac567.jpg

Сообщение отредактировал DK22Pac - Суббота, 05.02.2011, 12:07
 
Den_spbДата: Суббота, 05.02.2011, 19:29 | Сообщение # 28
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Можно посмотреть процедуры, использующие текстуры эффектов. Например, на текстуру _texHeadlight (проекция двух фар) ссылаются процедуры:
Code
Up   r sub_6E1600+91                          mov     edx, _texHeadlight   
Up   w sub_706CD0+8C                          mov     _texHeadlight, eax   
Up   r sub_706ED0+46                          mov     eax, _texHeadlight   
       r CShadows__?storeShadowToBeRendered+18A mov     ecx, _texHeadlight   
Down r sub_71AED0+10                          mov     eax, _texHeadlight   
Типы текстур:
Code
// 0xC403F8  _texHeadlight        2        две фары
// 0xC403E0  _texShadCar          1        тень машины
// 00C403E4  _texShadPed          1        тень человека
// 00C403F4  _texShadExp          2        сферический источник света
// 00C403FC  _texHeadlight1       2        одна фара
// 00C40400  _texBloodpool64      2        кровь
// 00C40404  _texHandman          2        значки пешеходного светофора
// 00C40408  _texWincrack32       2        поверхность воды
// 00C4040C  _texLampShad64       2        ещё какой-то свет

UPD:

Quote
Проверил параметры с 0. Ни один не подходит.

В CAutomobile__preRender используется именно эта процедура. Вот вся цепочка:
CAutomobile__preRender -> 0x6E1A60 -> 0x6E1720 -> 0x6E1600 -> 0x70C500 -> 0x707390
Прикрепления: 9687975.jpg (90.8 Kb)
 
DK22PacДата: Суббота, 05.02.2011, 20:31 | Сообщение # 29
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Странно, что перед вызовом 0x70C500 передаются схожие параметры с теми, что идут в 0x707390. Напрашивается вопрос, зачем вообще тогда 0x707390...
Может в 0x70C500 есть параметр-ссылка на структуру?
 
Den_spbДата: Воскресенье, 06.02.2011, 01:34 | Сообщение # 30
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Code
{$CLEO}
wait 0
while true
     wait 0
     if
         not player.defined($player_char)
     then
         continue
     end
     if
         actor.Driving($player_actor)
     then
         03C0: 0@ $player_actor
         0A97: 0@ = car 0@ struct
         0A8E: 1@ = 0@ + 0x14 // int
         0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
         0AA6: call_method 0x6E1A60 struct 0@ num_params 2 pop 0 3 1@ // 1)vehicle struct 2) 0-одна фара, 3 - две фары 3) [VehStruct+20]
     end
end
Эффект создаётся в нужном месте, но отстаёт при движении на большой скорости.
Code
{$CLEO}
wait 0
while true
     wait 0
     if
         not player.defined($player_char)
     then
         continue
     end
     if
         actor.Driving($player_actor)
     then
         03C0: 0@ $player_actor
         0A97: 0@ = car 0@ struct
         0A8D: 4@ = read_memory 0xC403F8 size 4 virtual_protect 0
         0AA6: call_method 0x6E1600 struct 0@ num_params 1 pop 0 4@ // 1)vehicle struct 2) ID текстуры, например [0xC403F8]
     end
end
Здесь эффект тоже отстаёт.
 
Форум » Игры серии ГТА » Работа с памятью, exe » Крепление эффектов освещения к автомобилю
  • Страница 2 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск: