← Back to DevelopmentAging & Mixing viewer.dll generatorProgramsClan filesInternet Information ServiceOllyDbg tutorialsMiscellaneousSkinsLinks / Files

crystal_delay

← Back to Miscellaneous
If you want to add a delay between 2 summoned crystals to avoid people spamming it or whatever, here's how to do it.

First thing to know is that there's is already a built in mechanism for delay but it's not applied to all the crystals, and the delay is really low (3 seconds).
I guess it's just here to prevent losing monsters when summoning 2 really fast.

Which crystal is delayed is decided here :

OllyDbg - Client side

004898E3  |.  8B88 08FEFFFF          MOV ECX,DWORD PTR DS:[EAX-1F8]
004898E9  |.  81F9 00110208          CMP ECX,8021100                          ; #11
004898EF      74 10                  JE SHORT 00489901
004898F1  |.  81F9 00120208          CMP ECX,8021200                          ; #12
004898F7  |.  74 08                  JE SHORT 00489901
004898F9  |.  81F9 00130208          CMP ECX,8021300                          ; #13
004898FF  |.  75 22                  JNE SHORT 00489923
00489901  |>  8A15 7CA10603          MOV DL,BYTE PTR DS:[306A17C]             ; Loading the delay flag
00489907  |.  84D2                   TEST DL,DL                               ; Checking if the delay flag is set
00489909  |.  74 18                  JE SHORT 00489923


As you can see only crystals 0x11, 0x12 and 0x13 are concerned. It's the items GP117 to GP119. It's the Green/Pink/Yellow crystals.
Let's apply this to all the crystals by NOPing everything.

OllyDbg - Client side

004898E3      90                     NOP
004898E4      90                     NOP
004898E5      90                     NOP
004898E6      90                     NOP
004898E7      90                     NOP
004898E8      90                     NOP
004898E9      90                     NOP
004898EA      90                     NOP
004898EB      90                     NOP
004898EC      90                     NOP
004898ED      90                     NOP
004898EE      90                     NOP
004898EF      90                     NOP
004898F0      90                     NOP
004898F1      90                     NOP
004898F2      90                     NOP
004898F3      90                     NOP
004898F4      90                     NOP
004898F5      90                     NOP
004898F6      90                     NOP
004898F7      90                     NOP
004898F8      90                     NOP
004898F9      90                     NOP
004898FA      90                     NOP
004898FB      90                     NOP
004898FC      90                     NOP
004898FD      90                     NOP
004898FE      90                     NOP
004898FF      90                     NOP
00489900      90                     NOP
00489901  |>  8A15 7CA10603          MOV DL,BYTE PTR DS:[306A17C]          ; Loading the delay flag
00489907  |.  84D2                   TEST DL,DL                            ; Checking if the delay flag is set
00489909  |.  74 18                  JE SHORT 00489923


The second thing is the delay. It's set here :

OllyDbg - Client side

0046CAA6      3D D2000000            CMP EAX,0D2

The default value is 0x0D2 (= 210). I don't really know how it works but I've calculated that 1 second is equal to 0x46 (= 70).
So your default delay is 3 seconds.

I'm going to change it to 30 seconds here. 30 x 70 = 2100 ( = 0x834) :

OllyDbg - Client side

0046CAA6      3D 34080000            CMP EAX,834


The text displayed is stored here (I've edited mine):

OllyDbg - Client side



Done :)
01.jpg