Как сделать вариацию зомби, но со своим спрайтом головы?

1
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
cmp [esi+24],#14
jne m
pushad
mov ebx,esi
mov edi,esi
mov eax,[esi]
mov ecx,[eax+00000820]
mov eax,[esi+00000118]
mov edx,[ecx+08]
and eax,0000FFFF
lea ebx,[eax+eax*4]
shl ebx,05
add ebx,[edx]
mov [700CFC],ebx
popad
pushad
mov edi,esi
mov edx,[6A7A08]
push edx
mov eax,658500
mov ecx,[700CFC]
call 473490
popad
m:
cmp [esi+24],#17
jne n
pushad
mov ebx,esi
mov edi,esi
mov eax,[esi]
mov ecx,[eax+00000820]
mov eax,[esi+00000118]
mov edx,[ecx+08]
and eax,0000FFFF
lea ebx,[eax+eax*4]
shl ebx,05
add ebx,[edx]
mov [700CFC],ebx
popad
pushad
mov edi,esi
mov edx,[6A75B4]
push edx
mov eax,658500
mov ecx,[700CFC]
call 473490
popad
n:
cmp [esi+24],#16
jne k
pushad
mov ebx,esi
mov edi,esi
mov eax,[esi]
mov ecx,[eax+00000820]
mov eax,[esi+00000118]
mov edx,[ecx+08]
and eax,0000FFFF
lea ebx,[eax+eax*4]
shl ebx,05
add ebx,[edx]
mov [700CFC],ebx
popad
pushad
mov edi,esi
mov edx,[6A7604]
push edx
mov eax,658500
mov ecx,[700CFC]
call 473490
popad
k:
cmp [esi+24],#15
jne originalcode
pushad
mov ebx,esi
mov edi,esi
mov eax,[esi]
mov ecx,[eax+00000820]
mov eax,[esi+00000118]
mov edx,[ecx+08]
and eax,0000FFFF
lea ebx,[eax+eax*4]
shl ebx,05
add ebx,[edx]
mov [700CFC],ebx
popad
pushad
mov edi,esi
mov edx,[6A75CC]
push edx
mov eax,658500
mov ecx,[700CFC]
call 473490
popad
originalcode:
cmp dword ptr [ebx+000007FC],04
exit:
jmp returnhere
"PlantsVsZombies.exe"+12AF2F:
jmp newmem
nop
nop
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"PlantsVsZombies.exe"+12AF2F:
cmp dword ptr [ebx+000007FC],04
//Alt: db 83 BB FC 07 00 00 04
2
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
push esi
push PlantsVsZombies.exe+268EC8
mov eax,edi
call PlantsVsZombies.exe+1331C0
push esi
push 66eb88
mov eax,edi
call PlantsVsZombies.exe+1331C0
push esi
push PlantsVsZombies.exe+26EBA0
mov eax,edi
call PlantsVsZombies.exe+1331C0
mov eax,[edi]
mov ecx,[eax+00000820]
mov eax,[edi+00000118]
mov edx,[ecx+08]
and eax,0000FFFF
lea ebx,[eax+eax*4]
shl ebx,05 { 5 }
add ebx,[edx]
mov eax,edi
mov [esp+1C],ebx
call PlantsVsZombies.exe+12AE40
test al,al
je az1
push 66eb88//anim_walk2
mov ecx,ebx
call PlantsVsZombies.exe+73280
az1:
push 668eec { ("anim_head1") }
call PlantsVsZombies.exe+72F30
lea edi,[eax+eax*2]
shl edi,05 { 5 }
add edi,[ebx+58]
mov ebx,50//头_80
mov eax,[PlantsVsZombies.exe+2A77BC] { (0293D5A8) }
fldz
mov ecx,[ebp+08]
push 00 { 0 }
sub esp,08 { 8 }
mov [edi+44],eax
fst dword ptr [esp+04]
mov eax,[ecx]
fstp dword ptr [esp]
call PlantsVsZombies.exe+53C30
fld dword ptr [PlantsVsZombies.exe+27967C] { (15.00) }
push ecx
fstp dword ptr [esp]
xor ebx,ebx
push ebx
mov esi,eax
push PlantsVsZombies.exe+268C34 { ("anim_head_idle") }
xor eax,eax
call PlantsVsZombies.exe+73BF0
fldz
mov edx,[esi+0000009C]
mov eax,[ebp+08]
sub esp,08 { 8 }
fst dword ptr [esp+04]
add edi,40 { 64 }
fstp dword ptr [esp]
mov [eax+00000144],edx
call PlantsVsZombies.exe+55D0
fld1
mov ecx,[esp+24]
fstp dword ptr [esp+04]
fld dword ptr [PlantsVsZombies.exe+279378] { (-1.00) }
sub esp,0C { 12 }
fstp dword ptr [esp+0C]
lea esi,[eax+08]
fld dword ptr [PlantsVsZombies.exe+27953C] { (0.20) }
mov [ecx+20],ebx
fstp dword ptr [esp+08]
fld dword ptr [70d01c] { (-5.00) }
fstp dword ptr [esp+04]
fld dword ptr [70d000] { (65.00) }
fstp dword ptr [esp]
call PlantsVsZombies.exe+1125D0
mov eax,[ebp+08]
add esp,14
mov [eax+68],00000065
mov [eax+50],bl
mov edi,eax
mov [edi+f4],#1
jmp 00523E4E
exit:
jmp returnhere
"PlantsVsZombies.exe"+122959:
jmp newmem
returnhere:
[DISABLE]
dealloc(newmem)
"PlantsVsZombies.exe"+122959:
jmp PlantsVsZombies.exe+123E4E
3
[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
cmp dword ptr [esi+24],1D
jne next1
mov eax,esi
call 00527750
next1:
cmp [edi+f4],1
jne PlantsVsZombies.exe+12B26C
cmp [edi+DC],#1
jl PlantsVsZombies.exe+12B26C
mov eax,esi
call 00527750
exit:
jmp returnhere
"PlantsVsZombies.exe"+12B25F:
jmp newmem
nop
returnhere:
[DISABLE]
dealloc(newmem)
"PlantsVsZombies.exe"+12B25F:
cmp dword ptr [esi+24],1D
jne PlantsVsZombies.exe+12B26C
4
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
originalcode:
mov [edi+28],00000037
pushad
mov eax,[6a9ec0]
mov eax,[eax+768]
push D
push [eDI+1C]
push 61A80
push [EDI+C]
push [eDI+8]
call 0040D620
mov byte ptr [eax+74],6
MOV [EAX+58],6
popad
pushad
mov eax,[6a9ec0]
mov eax,[eax+768]
push D
push [eDI+1C]
push 61A80
push [EDI+C]
push [eDI+8]
call 0040D620
mov byte ptr [eax+74],6
MOV [EAX+58],6
popad
pushad
mov eax,[6a9ec0]
mov eax,[eax+768]
push D
push [eDI+1C]
push 61A80
push [EDI+C]
push [eDI+8]
call 0040D620
mov byte ptr [eax+74],6
MOV [EAX+58],6
popad
pushad
mov eax,[6a9ec0]
mov eax,[eax+768]
push D
push [eDI+1C]
push 61A80
push [EDI+C]
push [eDI+8]
call 0040D620
mov byte ptr [eax+74],6
MOV [EAX+58],6
popad
pushad
mov eax,[6a9ec0]
mov eax,[eax+768]
push D
push [eDI+1C]
push 61A80
push [EDI+C]
push [eDI+8]
call 0040D620
mov byte ptr [eax+74],6
MOV [EAX+58],6
popad
pushad
mov ecx,[6a9ec0]
mov ecx,[ecx+768]
mov ecx,[ecx+160]
mov eax,[EDI+1C]
push 9//call僵王必须给予特定的列数,不然会出事(行数好像没有要求)
push b
/*
僵尸种类表:
00普通 01旗帜 02路障 03撑杆 04铁桶
05读报 06铁门 07橄榄 08舞王 09伴舞
0A鸭子 0B潜水 0C冰车 0D雪橇 0E海豚
0F小丑 10气球 11矿工 12跳跳 13雪人
14小偷 15扶梯 16篮球 17巨人 18小鬼
19僵王 1A豌豆 1B坚果 1C辣椒 1D机枪
1E窝瓜 1F高坚 20红眼
*/
call 0042A0F0
popad
pushad
mov ebx,[6a9ec0]
mov ebx,[ebx+768]
call 412C30
popad
exit:
jmp returnhere
"PlantsVsZombies.exe"+1266A1:
jmp newmem
nop
nop
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"PlantsVsZombies.exe"+1266A1:
mov [edi+28],00000037
//Alt: db C7 47 28 37 00 00 00
Если что тебе нужно сделать четыре отдельных скриптов
Спасибо! А объясни, что делает каждый из четырёх скриптов?
То что я знаю два из них изменяет голову и добавляет способность зомби. Зомби дельфину добавляет такую способность чтобы после прыжка он бы призывал тарзанок с зомбями
Ок, спасибо что объяснил!
Пожалуйста!
Я хочу для своего мода сделать вариацию зомби (чтобы эта вариация имела больше\меньше здоровья и имела возможность после съедания растений ставить на их место могилу или что-то другое делать), но мне нужно чтобы спрайт головы или брони был у него свой, то есть я в графическом редакторе сделаю отдельный спрайт головы и он будет использоваться для вариации. Скажите пожалуйста, как это сделать или вообще возможно это сделать? (Если так сделать нельзя, то просто напишите как так сделать со спрайтом из ориг. игры) Напишите пж пример скрипта. (И если что, главный моддинговый документ у меня есть.)