Este SOURCE es para crear un NPC RESET para agregar al GS.
.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
.Const
.Data
MessageOutPut DD 00500EE0H
NoMoneyMSG DB "You need at least 100.000 Zen for make Reset.", 0
NoLevelMSG DB "You need to be at least lvl 350 for make Reset.", 0
RelogMSG DB "Reset finished, Relog and you will be Reseted.", 0
.Data?
.Code
DllEntry Proc hInstDLL:HINSTANCE, reason:DWord, reserved1:DWord
Mov Eax, TRUE
Ret
DllEntry EndP
ResetNPC Proc
Local PlayerID:DWord
Local lpObj:DWord
Mov Eax, DWord Ptr Ss:[Ebp + 8]
Mov lpObj, Eax
Mov Edx, DWord Ptr Ds:[Eax]
Mov PlayerID, Edx
Mov Eax, lpObj
Mov Edx, DWord Ptr Ds:[Eax + 0A0H]
Cmp Edx, 15EH
Jle NoLevel
Jmp CheckMoney
NoLevel:
Lea Edx, NoLevelMSG
Push Edx
Mov Ecx, PlayerID
Push Ecx
Call MessageOutPut
Jmp Finish
CheckMoney:
Mov Eax, lpObj
Mov Ecx, DWord Ptr Ds:[Eax + 0B4H]
Cmp Ecx, 186A0H
Jle NoMoney
Jmp ReduceMoney
NoMoney:
Lea Eax, NoMoneyMSG
Push Eax
Mov Ecx, PlayerID
Push Ecx
Call MessageOutPut
Jmp Finish
ReduceMoney:
Mov Eax, lpObj
Mov Ecx, DWord Ptr Ds:[Eax + 0B4H]
Sub Ecx, 186A0H
Mov DWord Ptr Ds:[Eax + 0B4H], Ecx
Lea Edx, RelogMSG
Push Edx
Mov Ecx, PlayerID
Push Ecx
Call MessageOutPut
Finish:
Ret
ResetNPC EndP
End DllEntry
Este codigo es un poc mas largo de BITS. El NPC te preguntara si eres Lvl 350 y si tienes 100.000 Zen, si completas los requisitos reseteas, pero necesitas reloguear.
Debes conectarte allí si quieres, igual que el otro NPC.
00405AF6 $ /E9 75541400 JMP gameserv.NPCDeviasGuard
Pero si quieres poner el código en otro NPC, debes buscar el codigo correcto.
DLL ya compilada

Creditos
H