на главную
об игре

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

Я хочу для своего мода сделать вариацию зомби (чтобы эта вариация имела больше\меньше здоровья и имела возможность после съедания растений ставить на их место могилу или что-то другое делать), но мне нужно чтобы спрайт головы или брони был у него свой, то есть я в графическом редакторе сделаю отдельный спрайт головы и он будет использоваться для вариации. Скажите пожалуйста, как это сделать или вообще возможно это сделать? (Если так сделать нельзя, то просто напишите как так сделать со спрайтом из ориг. игры) Напишите пж пример скрипта. (И если что, главный моддинговый документ у меня есть.)

Комментарии: 6
Ваш комментарий

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

2

Если что тебе нужно сделать четыре отдельных скриптов

2

Спасибо! А объясни, что делает каждый из четырёх скриптов?

1

То что я знаю два из них изменяет голову и добавляет способность зомби. Зомби дельфину добавляет такую способность чтобы после прыжка он бы призывал тарзанок с зомбями

1
Новое на форуме Plants vs. Zombies