-
Decompiled gObjCreatePet function from main.exe (1.03.15) eng
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!
Code:
.cpp file
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:
.h file
#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:
https://www.youtube.com/watch?v=svz-aOHXhrc
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).
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
You could post the main? or to offset 1:03:11?
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Wooow thanks, i already using this in my s4 project anyway. Man really thanks
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
wrong animation
you should make it work like panda pet and not guardian
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
SmileYzn
Wooow thanks, i already using this in my s4 project anyway. Man really thanks
You could pass the main 1:03:15 clean?
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
NaveMu
You could pass the main 1:03:15 clean?
I uses 1.03.11, sorry.
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
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
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
mauro07
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 = 7598,
Unicorn_Pet = 7599,
};
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
Excuse the question, but where I can find enum eBugType
{
Skeleton_Pet = 7598,
Unicorn_Pet = 7599,
};
I saw that the .15 is different numbers could give a short explanation? thank you!
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
NaveMu
Excuse the question, but where I can find enum eBugType
{
Skeleton_Pet = 7598,
Unicorn_Pet = 7596,
};
I saw that the .15 is different numbers could give a short explanation? thank you!
Is only the ObjectId bro... -.-!
Small Explain:
ItemId calc = Type * MaxIndex + Index
ObjectId calc = Type * MaxIndex + Index + ItemOffsetInArray(834)
Then... for:
case ItemId(13,106):
{
gObjCreateBug(eBugType::Unicorn_Pet, PetPreview + 252, PetPreview, 0, 0);
break;
}
because is -> ObjectId calc: 13 * 512 + 106 + 834 = Unicorn_Pet = 7596,
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
mauro07
Is only the ObjectId bro... -.-!
Small Explain:
ItemId calc = Type * MaxIndex + Index
ObjectId calc = Type * MaxIndex + Index + ItemOffsetInArray(834)
Then... for:
case ItemId(13,106):
{
gObjCreateBug(eBugType::Unicorn_Pet, PetPreview + 252, PetPreview, 0, 0);
break;
}
because is -> ObjectId calc: 13 * 512 + 106 + 834 = Unicorn_Pet = 7596,
#define pPreviewPetThis *(DWORD*)0x07A76A00
You could post the 1:03:11(jpn)?
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
NaveMu
#define pPreviewPetThis *(DWORD*)0x07A76A00
You could post the 1:03:11(jpn)?
I don't remember (I think that is this: 0x7A723B8)
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
brow a question, after I put in my source that I need to do that to give + "load" in their image on the client?
mine is named "IMP" and the image of IMP ..
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
I'm working (for fun purposses & maybe sell too ^^) on this the lastest days on this:
https://forum.ragezone.com/cache.php...%2FfU0jbU4.jpg
PS: I'm decompiling so much functions from my main.exe to make this :D: hmm.. is COOL guys ? :D:
PS 2: Actually.. I can add any Pet Type.. (I have decompiled Pet Class from main, maybe create a cool System like: Muun xD).
- - - Updated - - -
Dark Wolf Pet (Custom Pet Type Fenrir):
https://forum.ragezone.com/cache.php...%2F9XOD4da.jpg
Blue Dragon Pet (Custom Pet Type Guardian):
https://forum.ragezone.com/cache.php...%2FHKPAuP8.jpg
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
great mauro07, can you share skin wing of MG ? :D
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
MaxSpeed
great mauro07, can you share skin wing of MG ? :D
sure: https://mega.nz/#!TAAj1IAA!Ou_ZaAkJO...zgVIkrGLFIUwM0
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
mauro07
beyond gObjCreatePet you do something more for the image of the pets appear on the doll?
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
NaveMu
beyond gObjCreatePet you do something more for the image of the pets appear on the doll?
yes, I have decompiled: 20% from main code to make this :P gObjCreatePet is only to make a Temp view from every Pet on Viewport using.. Item inventory id.. I say on the first post, that to make a complete work with this is necesary decompile: gObjMakePreviewCharSet function from your main.exe and anothers like: Pet Follow Character, Pet HP Bar Interface, Pet Walk on the Map (for: Fenrir Style Pets), and etc.
https://www.youtube.com/watch?v=e0HKIgEyh3Y&feature=youtu.be
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
mauro07
yes, I have decompiled: 20% from main code to make this :P gObjCreatePet is only to make a Temp view from every Pet on Viewport using.. Item inventory id.. I say on the first post, that to make a complete work with this is necesary decompile: gObjMakePreviewCharSet function from your main.exe and anothers like: Pet Follow Character, Pet HP Bar Interface, Pet Walk on the Map (for: Fenrir Style Pets), and etc.
https://youtu.be/e0HKIgEyh3Y
mano video is private as could release him?
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
I could not make it work in the main 1.05D, the pets are static, are not walking around the character ... thank you.
http://i.imgur.com/3Vp1M89.jpg
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
Sunligth
You need to create a function to follow the player, i mean make a function to pet work.
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
@SmileYzn, I've done a search for a pet id and could not find any ... you can tell me the offset of some main? thank you.
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
im try make pet follow player but have problem :(. someone can help
https://www.youtube.com/watch?v=M6KMHvS-WTc
Quote:
Naked(PetMovement) {
DWORD Adr1,Adr2;
_asm
{
CMP DWORD PTR SS:[EBP-0x124],0x1D33
JLE SHORT Here
CMP DWORD PTR SS:[EBP-0x124],Skeleton
JE SHORT Here
MOV Adr2, 0x004A9CBA
JMP Adr2
Here:
MOV Adr1, 0x004A845B
JMP Adr1
}
}
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
Saitama
bump!!!!!!
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
i have to try add new fenrir, but not good ;)
http://i.imgur.com/HJtephm.jpg
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Hi, here I leave another pet function decompiled from my main.exe 1.03.11 (JPN) on this case is to make that your added pets (Dissapear) when you remove item from your Inventory.
Pets.cpp file:
Code:
bool cPets::ResetPetPreviewEx(int ItemId)
{
bool Result;
// ----
if (ItemId)
Result = *(WORD*)ItemId == ItemId(13,0) //Angel
|| *(WORD*)ItemId == ItemId(13,1) //Satan
|| *(WORD*)ItemId == ItemId(13,2) //Unicorn
|| *(WORD*)ItemId == ItemId(13,3) //Dinorant
|| *(WORD*)ItemId == ItemId(13,4) //Dark Horse
|| *(WORD*)ItemId == ItemId(13,5) //Dark Raven
|| *(WORD*)ItemId == ItemId(13,37) //Fenrir
|| *(WORD*)ItemId == ItemId(13,97) //Dark Wolf
|| *(WORD*)ItemId == ItemId(13,98) //Fang Sable
|| *(WORD*)ItemId == ItemId(13,99) //Mistic Tiger
|| *(WORD*)ItemId == ItemId(13,106) //Unicorn Pet
|| *(WORD*)ItemId == ItemId(13,109) //Pegasus Pet
|| *(WORD*)ItemId == ItemId(13,110) //Dragon Pet
|| *(WORD*)ItemId == ItemId(13,123); //Skeleton Pet
else
Result = 0;
return Result;
}
void cPets::Load()
{
gToolKit.SetOp((LPVOID)0x00755C90,this->ResetPetPreviewEx,ASM::CALL);
}
Pets.h file:
Code:
#ifndef __PETS_H__
#define __PETS_H__
#define ItemId(x, y) ((x * 512) + y)
class cPets
{
public:
void Load();
// ----
static bool ResetPetPreviewEx(int ItemId);
};
extern cPets gPets;
#endif
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
Kiosani
Hi, here I leave another pet function decompiled from my main.exe 1.03.11 (JPN) on this case is to make that your added pets (Dissapear) when you remove item from your Inventory.
Pets.cpp file:
Code:
bool cPets::ResetPetPreviewEx(int ItemId)
{
bool Result;
// ----
if (ItemId)
Result = *(WORD*)ItemId == ItemId(13,0) //Angel
|| *(WORD*)ItemId == ItemId(13,1) //Satan
|| *(WORD*)ItemId == ItemId(13,2) //Unicorn
|| *(WORD*)ItemId == ItemId(13,3) //Dinorant
|| *(WORD*)ItemId == ItemId(13,4) //Dark Horse
|| *(WORD*)ItemId == ItemId(13,5) //Dark Raven
|| *(WORD*)ItemId == ItemId(13,37) //Fenrir
|| *(WORD*)ItemId == ItemId(13,97) //Dark Wolf
|| *(WORD*)ItemId == ItemId(13,98) //Fang Sable
|| *(WORD*)ItemId == ItemId(13,99) //Mistic Tiger
|| *(WORD*)ItemId == ItemId(13,106) //Unicorn Pet
|| *(WORD*)ItemId == ItemId(13,109) //Pegasus Pet
|| *(WORD*)ItemId == ItemId(13,110) //Dragon Pet
|| *(WORD*)ItemId == ItemId(13,123); //Skeleton Pet
else
Result = 0;
return Result;
}
void cPets::Load()
{
gToolKit.SetOp((LPVOID)0x00755C90,this->ResetPetPreviewEx,ASM::CALL);
}
Pets.h file:
Code:
#ifndef __PETS_H__
#define __PETS_H__
#define ItemId(x, y) ((x * 512) + y)
class cPets
{
public:
void Load();
// ----
static bool ResetPetPreviewEx(int ItemId);
};
extern cPets gPets;
#endif
Can you share me main 1.03.11?
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
Quote:
Originally Posted by
BladeKnight109
Can you share me main 1.03.11?
Offsets:
Code:
for Cracks:
005FA1DF // -> mu.exe check bypass
005FA522 // -> MuJP.ini check bypass
005FA56B // -> gg init error check bypass
for Fixes:
008C2FC4 // -> cs.muonline.jp ip address
008D7D2C // -> 22656 hex version address
008D7D34 // -> Eqve7Lcvdhk3Rysq serial address
yes, bro here original (without modifications,fixes,crack or hooks) I mean totally clean: 1.03.11 MU Japan Main.exe:
https://mega.nz/#!bVg1EayQ!gvEytsgJcrvDbQ8BlsZRUf9C4fJjVQQT48VSY2UJckg
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
can u help me add new Fenrir to mu server? thanks
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
when i move pet hp bar rename to Guardian(default value) =/
Edit:
Fixed
Now i have problem with viewport, others player dont see pet when i put it
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
S6EP3 gmo 1.04D how to fix PetMovement???
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
How to fix custom pet movie??
-
Re: Decompiled gObjCreatePet function from main.exe (1.03.15) eng
how use this function ? i add this code to my source.. but how call now ? xD sorry i am bad in source :c but i like test :D