[Release] Source Code of Sky Event

PaskaL

New Member
Joined
Apr 14, 2008
Messages
29
Reaction score
42
Code:
.386
.Model flat, StdCall
Option CaseMap:none
Include    \masm32\include\windows.inc
Include    \masm32\include\user32.inc
Include    \masm32\include\kernel32.inc
Include    \masm32\include\masm32.inc
IncludeLib    \masm32\lib\user32.lib
IncludeLib    \masm32\lib\kernel32.lib
IncludeLib    \masm32\lib\masm32.lib

TimePassed Proto :DWord, :DWord, :DWord, :DWord
StartEvent Proto :DWord, :DWord, :DWord, :DWord
Monster Proto :DWord, :DWord, :DWord, :DWord
Monster2 Proto :DWord, :DWord, :DWord, :DWord
Monster3 Proto :DWord, :DWord, :DWord, :DWord
EventOff Proto :DWord, :DWord, :DWord, :DWord
MensajeEvento Proto :DWord, :DWord, :DWord, :DWord

.Const
gObj Equ 658ACA8H
IDC_TIMER Equ 3
IDC_TIMER2 Equ 4
IDC_TIMER3 Equ 5
IDC_TIMER4 Equ 6
IDC_TIMER5 Equ 7
IDC_TIMER6 Equ 8
IDC_TIMER7 Equ 9
AllocSpace Equ 65000H
Buffer Equ 65000H
Buffer2 Equ 65000H
.Data
hMemory HANDLE ?
pMemory DWord ?
DataSend DD 0047DD20H
gObjTeleport DD 004E5E90H
GCServerCMD DD 00448F00H
MessageOutPut DD 004F0A80H
AllUserMsgS DD 00497C70H
MoneySend DD 0042F710H
gObjUserDie DD 004CA64BH
gObjAddMonster DD 004C4850H
gObjSetPosMonster DD 004C2E90H
gObjSetMonster DD 004C32E0H
ItemSerialCreate DD 004245A0H
PlayerIDBuf DB Buffer Dup(0)
PlayerDWSM DB Buffer2 Dup(0)
MensajeBievenida DB "Welcome to Sky Event", 0
TodaviaNoHora DB "Come back at 17:00 for enter Sky Event", 0
MensajeEventito DB "Sky Event has been Opened, you have 10 minutes for enter", 0
LimitePlayers DB "You can?t enter the event is full of players", 0
MensajeEventito1 DB "Sky Event Will Start in 5 Minutes", 0
MensajeEventito2 DB "Sky Event Will Start in 2 Minutes", 0
MensajeEventito3 DB "Sky Event Has Started!! Survive during 30 minutes!!", 0
NivelInsuficiente DB "You need to be at least lvl 50 for enter", 0
NoMoney DB "You need at least 25.000.000 zen for enter", 0
EventoCerrado DB "The event is closed, you can?t enter now.", 0
EventFinish DB "You have survive during 30 minutes! Congratulations!", 0
.Data?
lpLocalTime SYSTEMTIME      <>
.Code

DllEntry Proc hInstDLL:HINSTANCE, reason:DWord, reserved1:DWord
 Mov Eax, TRUE
 Ret
DllEntry EndP
NPCEvent Proc
 Local PlayerID:DWord
 Local Map:DWord
 Local X:DWord
 Local Y:DWord
 Local lpObj:DWord
 Local Counter:DWord
 Local MobID:DWord
 Local MobLpObj:DWord
 Push Ebx
 Push Esi
 Push Edi
 Mov Eax, DWord Ptr Ss:[Ebp + 0CH] ; el lpObj que pusheamos en pChatProc
 Mov lpObj, Eax
 Mov Edx, DWord Ptr Ds:[Eax]
 Mov PlayerID, Edx
 Mov Cl, Byte Ptr Ds:[624521H]
 Cmp Cl, 1
 Je EventClosed
 Mov Eax, lpObj
 Mov Edx, DWord Ptr Ds:[Eax + 0A0H]
 Cmp Edx, 50H
 Jge RestarDinero
 Lea Ecx, NivelInsuficiente
 Push Ecx
 Mov Edx, PlayerID
 Push Edx
 Call MessageOutPut
 Jmp Finalizar
EventClosed:
 Lea Eax, EventoCerrado
 Push Eax
 Mov Ecx, PlayerID
 Push Ecx
 Call MessageOutPut
 Jmp Finalizar
NoTienesDinero:
 Lea Eax, NoMoney
 Push Eax
 Mov Ecx, PlayerID
 Push Ecx
 Call MessageOutPut
 Jmp Finalizar
RestarDinero:
 Mov Eax, lpObj
 Mov Ecx, DWord Ptr Ds:[Eax + 0B4H]
 Cmp Ecx, 17D7840H
 Jle NoTienesDinero
 Sub Ecx, 17D7840H ;;Se le Resta el Dinero 25.000.000
 Mov DWord Ptr Ds:[Eax + 0B4H], Ecx
 Push Ecx
 Mov Eax, PlayerID
 Push Eax
 Call MoneySend
 Mov Map, 0AH ;Lorencia Map
 Mov X, 0C8H ; Cord X
 Mov Y, 0C8H ; Cord y
 Mov Eax, Y
 Push Eax
 Mov Ecx, X
 Push Ecx
 Mov Edx, Map
 Push Edx
 Mov Eax, PlayerID
 Push Eax
 Call gObjTeleport
 Add Esp, 8
 Lea Eax, MensajeBievenida ;; Se le da la Bienvenida al Jugador al Entrar
 Push Eax
 Mov Edx, PlayerID
 Push Edx
 Call MessageOutPut
 Mov Edx, PlayerID
 IMul Edx, Edx, 10
 Add Edx, pMemory
 Mov Byte Ptr Ds:[Edx + 1], 1
Finalizar:
    Ret
NPCEvent EndP
Eventime Proc
    Mov Eax, DWord Ptr Ds:[0B679164H]
    Mov Byte Ptr Ds:[624521H], 1
    Invoke SetTimer, Eax, IDC_TIMER, 18000000, Addr TimePassed ;;5 horas
    Ret
Eventime EndP
TimePassed Proc hwnd:DWord, uMsg:DWord, idEvent:DWord, dwTime:DWord
    Local MobID:DWord
    Local MobLpObj:DWord
    Lea Eax, MensajeEventito1
    Push Eax
    Call AllUserMsgS
     Invoke KillTimer, NULL, IDC_TIMER
     Mov Byte Ptr Ds:[624521H], 0
    Invoke SetTimer, NULL, IDC_TIMER6, 300000, Addr MensajeEvento
    Ret
TimePassed EndP
MensajeEvento Proc hwnd:DWord, uMsg:DWord, idEvent:DWord, dwTime:DWord
    Mov Cl, Byte Ptr Ds:[6244D9H]
    Cmp Ecx, 1
    Je SaltaElMensaje
    Lea Eax, MensajeEventito3
    Push Eax
    Call AllUserMsgS
    Mov Byte Ptr Ds:[6244D9H], 1
SaltaElMensaje:
    Invoke KillTimer, NULL, IDC_TIMER6
    Mov Byte Ptr Ds:[624521H], 1
    Call EventMessage
    Ret
MensajeEvento EndP
StartEvent Proc hwnd:DWord, uMsg:DWord, idEvent:DWord, dwTime:DWord
    Local MobID:DWord
    Local MobLpObj:DWord
    Mov Edx, DWord Ptr Ds:[0B679164H]
    Invoke KillTimer, Edx, IDC_TIMER2
    Lea Eax, MensajeEventito3
    Push Eax
    Call AllUserMsgS
    Mov Byte Ptr Ds:[624521H], 1
    Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C9H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C9H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 154H
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
    Ret
StartEvent EndP
CheckIds Proc
    Local PlayerBaseID:DWord
    Mov PlayerBaseID, 1900H
    Jmp ComparePlayerBase
PlayerLooper:
    Add PlayerBaseID, 1
ComparePlayerBase:
    Cmp PlayerBaseID, 1CE8H
    Jge EndSending
     Mov Eax, PlayerBaseID
     IMul Eax, Eax, 1938H
    Cmp DWord Ptr Ds:[Eax + 658ACACH], 3
    Jnz PlayerLooper
    Mov Edx, PlayerBaseID
    IMul Edx, Edx, 10
    Add Edx, pMemory
    Mov Cl, Byte Ptr Ds:[Edx + 1]
    Cmp Ecx, 1
    Jnz PlayerLooper
    Mov Eax, PlayerBaseID
    IMul Eax, Eax, 1938H
    Add Eax, gObj
    Movsx Edx, Word Ptr Ds:[Eax + 10DH]
    Cmp Edx, 0AH
    Jnz PlayerLooper
    Push 0
    Push 0
    Mov Edx, PlayerBaseID
    Push Edx
    Push 0
    Push 0
    Push 0
    Push 0
    Push 0
    Push 180FH
    Mov Eax, PlayerBaseID
    IMul Eax, Eax, 1938H
    Mov Dl, Byte Ptr Ds:[Eax + 658ADAEH]
    Push Edx
    Mov Ecx, PlayerBaseID
    IMul Ecx, Ecx, 1938H
    Mov Cl, Byte Ptr Ds:[Ecx + 658ADACH]
    Push Ecx
    Mov Edx, PlayerBaseID
    IMul Edx, Edx, 1938H
    Xor Eax, Eax
    Mov Al, Byte Ptr Ds:[Edx + 658ADB1H]
    Push Eax
    Mov Ecx, PlayerBaseID
    IMul Ecx, Ecx, 1938H
    Mov Edx, DWord Ptr Ds:[Ecx + 658ACA8H]
    Push Edx
    Call ItemSerialCreate
    Add Esp, 34H
    Push 0
    Push 0
    Mov Edx, PlayerBaseID
    Push Edx
    Push 0
    Push 0
    Push 0
    Push 0
    Push 0
    Push 1C0BH
    Mov Eax, PlayerBaseID
    IMul Eax, Eax, 1938H
    Mov Dl, Byte Ptr Ds:[Eax + 658ADAEH]
    Push Edx
    Mov Ecx, PlayerBaseID
    IMul Ecx, Ecx, 1938H
    Mov Cl, Byte Ptr Ds:[Ecx + 658ADACH]
    Push Ecx
    Mov Edx, PlayerBaseID
    IMul Edx, Edx, 1938H
    Xor Eax, Eax
    Mov Al, Byte Ptr Ds:[Edx + 658ADB1H]
    Push Eax
    Mov Ecx, PlayerBaseID
    IMul Ecx, Ecx, 1938H
    Mov Edx, DWord Ptr Ds:[Ecx + 658ACA8H]
    Push Edx
    Call ItemSerialCreate
    Add Esp, 34H
    Jmp PlayerLooper
EndSending:
    Ret
CheckIds EndP

EventOff Proc hwnd:DWord, uMsg:DWord, idEvent:DWord, dwTime:DWord
    Invoke KillTimer, NULL, IDC_TIMER4
    Invoke KillTimer, NULL, IDC_TIMER7
    Lea Eax, EventFinish
    Push Eax
    Call AllUserMsgS
    Call CheckIds
    Invoke SetTimer, NULL, IDC_TIMER, 18000000, Addr TimePassed
    Ret
EventOff EndP
EventMessage Proc
    Invoke SetTimer, NULL, IDC_TIMER2, 30000, Addr Monster
    Invoke SetTimer, NULL, IDC_TIMER5, 600000, Addr Monster2 ;;Despues de 10 minutos, cambiar monstruos
    Invoke SetTimer, NULL, IDC_TIMER4, 1800000, Addr EventOff
    Ret
EventMessage EndP
Monster Proc hwnd:DWord, uMsg:DWord, idEvent:DWord, dwTime:DWord
    Local MobID:DWord
    Local MobLpObj:DWord
    Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C7H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C7H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 161H
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
    Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C7H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C7H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 15EH
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
     Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C9H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C9H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 161H
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
     Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C9H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C9H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 15EH
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
    Ret
Monster EndP
Monster2 Proc hwnd:DWord, uMsg:DWord, idEvent:DWord, dwTime:DWord
    Invoke KillTimer, NULL, IDC_TIMER2
    Invoke KillTimer, NULL, IDC_TIMER5
    Invoke SetTimer, NULL, IDC_TIMER7, 30000, Addr Monster3
    Ret
Monster2 EndP
Monster3 Proc hwnd:DWord, uMsg:DWord, idEvent:DWord, dwTime:DWord
    Local MobID:DWord
    Local MobLpObj:DWord
    Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C7H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C7H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 167H
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
    Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C7H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C7H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 169H
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
     Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C9H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C9H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 167H
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
     Mov Ecx, 0AH
     Push Ecx
    Call gObjAddMonster
    Add Esp, 4
     Movsx Eax, Ax
     Mov MobID, Eax
     Mov Eax, MobID
     IMul Eax, Eax, 1938H
     Add Eax, gObj
     Mov MobLpObj, Eax
     Mov DWord Ptr Ds:[Eax + 104H], 0C9H
     Mov Eax, MobLpObj
     Mov DWord Ptr Ds:[Eax + 106H], 0C9H
     Mov DWord Ptr Ds:[Eax + 109H], 0AH
     Push 169H
     Mov Eax, MobID
     Push Eax
     Call gObjSetMonster
     Add Esp, 8
    Ret
Monster3 EndP
NewGObj Proc
 Invoke GlobalAlloc, GMEM_MOVEABLE Or GMEM_ZEROINIT, AllocSpace
 Mov hMemory, Eax
 Invoke GlobalLock, hMemory
 Mov pMemory, Eax
    Ret
NewGObj EndP
End DllEntry

This Event is in Icarus 2, its like the Devil Square, you need to survive during 30 minutes fighting with hordes of monsters (less time more stronger monster) and if you survived you will get a BOK +5 and a Chaos.

This Event was coded for 1.00.16 and you need to compile the source, hook the dll, call to Eventime and call to NPCEvent in the correct place of the NPC that you want.

For example here:

Code:
00405AF6   $ /E9 75541400    JMP gameserv.NPCDeviasGuard

Credits :
- Holy
 
на какви вер. може се сложи смъсал на сички който имат икарус2 ли ще тръгне и каде да се сложи кода ХЕЛП! :)
 
като почнеш от 1.0л нагоре версиите
 
това е .dll файл който се импортира към сървърът ако някой знае пълното инфо може да направи 1 гуйд
 
Нека някой да напише как точно се пуска този скай евент :sweat:
 
hello i want use this code for muserver 0.65 whit mysql. how can i make??
thank you
 
Can someone help on how to implement in 97d source?