- Joined
- Oct 29, 2007
- Messages
- 1,290
- Reaction score
- 1,310
Well hello everyone again this time I would like to share my decompilation of this function that basically what it does is create a starting object an item equipped in the Character's Inventory, Enjoy it!
Video test:
PS: This is my own code based on original...
I mean.. is not complete decompilation code of original function from main.exe code, but works to add new pets.
PS 2: This code is only to create a temporal preview of every pet or object equipped (for a complete work with this you must modify your server side & client side gObjMakePreviewCharSet functions)... to generate movement on every model, hp bar for pet and etc, you must use anothers functions from your main.
Credits:
Webzen & Me (Nemesis).
Code:
[COLOR=#ff0000].cpp file[/COLOR]
ObjCreateBug gObjCreateBug = (ObjCreateBug)0x004ADF24;
ObjCreatePet gObjCreatePet = (ObjCreatePet)0x0075720C;
void gObjCreatePetEx(int ItemId)
{
int ItemSwitch = *(WORD*)ItemId;
int PetPreview = LODWORD(pPreviewPetThis) + 700;
// ----
switch (ItemSwitch)
{
case ItemId(13, 98):
gObjCreateBug(eBugType::Skeleton, PetPreview + 252, PetPreview, 0, 0);
break;
// ---
case ItemId(13, 99):
gObjCreateBug(eBugType::Unicorn, PetPreview + 252, PetPreview, 0, 0);
break;
}
gObjCreatePet(ItemId);
}
void gObjCreatePetExHook()
{
Utils.SetHook((LPVOID)gObjCreatePetEx,(LPVOID)0x0073684D,ASM::CALL);
Utils.SetHook((LPVOID)gObjCreatePetEx,(LPVOID)0x0075567E,ASM::CALL);
}
Code:
[COLOR=#ff0000].h file
[/COLOR]#define ItemId(x, y) ((x * 512) + y)
#define pPreviewPetThis *(DWORD*)0x07A76A00
#define LODWORD(h) ((DWORD)(__int64(h) & __int64(0xffffffff)))
enum eBugType
{
Skeleton = 7587,
Unicorn = 7588,
};
typedef void (__thiscall *ObjCreatePet)(int ItemId);
extern ObjCreatePet gObjCreatePet;
// --
typedef int (__cdecl *ObjCreateBug)(int BugId, int Arg2, int Arg3, int Arg4, int Arg5);
extern ObjCreateBug gObjCreateBug;
// --
Video test:
PS: This is my own code based on original...
I mean.. is not complete decompilation code of original function from main.exe code, but works to add new pets.
PS 2: This code is only to create a temporal preview of every pet or object equipped (for a complete work with this you must modify your server side & client side gObjMakePreviewCharSet functions)... to generate movement on every model, hp bar for pet and etc, you must use anothers functions from your main.
Credits:
Webzen & Me (Nemesis).