Here the same source code but, with offsets for 1.03.11 (Jpn) Protocol:
Source:
Code:
ObjCreateBug gObjCreateBug = (ObjCreateBug)0x004AC2C4;
ObjCreatePet gObjCreatePet = (ObjCreatePet)0x0075574A;
void gObjCreatePetEx(int ItemId)
{
int ItemSwitch = *(WORD*)ItemId;
int PetPreview = LODWORD(pPreviewPetThis) + 700;
switch(ItemSwitch)
{
case ItemId(13,106):
{
gObjCreateBug(eBugType::Unicorn_Pet, PetPreview + 252, PetPreview, 0, 0);
break;
}
case ItemId(13,123):
{
gObjCreateBug(eBugType::Skeleton_Pet, PetPreview + 252, PetPreview, 0, 0);
break;
}
}
gObjCreatePet(ItemId);
}
void gObjCreatePetExHook()
{
Utils.SetHook((LPVOID)gObjCreatePetEx,(LPVOID)0x00734BA6,ASM::CALL);
Utils.SetHook((LPVOID)gObjCreatePetEx,(LPVOID)0x00753C6E,ASM::CALL);
}
Header:
Code:
#ifndef _PETS_H_
#define _PETS_H_
enum eBugType
{
Skeleton_Pet = 7613, // -> Fixed for: ItemId(13,123)
Unicorn_Pet = 7596, // -> Fixed for: ItemId(13,106)
};
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;
void gObjCreatePetExHook();
#endif