-
[Development] MuEmu Working main 1.05D
Change price of PcPointsShop
Code:
int PricePcPoint(int a1,int a2)
{
int ItemId=*(WORD*)a1;
int ItemLvl = *(WORD*)(a1+2);
if(ItemId==GET_ITEM(12,30) && ItemLvl == 0)
{
return 10; // return 10 = 10 pcpoint price
}
else if(ItemId==GET_ITEM(12,30) && ItemLvl == 8)
{
return 15;
}
else if(ItemId==GET_ITEM(12,30) && ItemLvl == 16)
{
return 20;
}
else if(ItemId==GET_ITEM(12,31) && ItemLvl == 0)
{
return 10;
}
else if(ItemId==GET_ITEM(12,31) && ItemLvl == 8)
{
return 15;
}
else if(ItemId==GET_ITEM(12,31) && ItemLvl == 16)
{
return 20;
}
else if(ItemId==GET_ITEM(12,15) && ItemLvl == 0)
{
return 1;
}
else
{
return 0;
//return CALL 005056D2
}
}
Code:
SetCompleteHook(0xE8,0x05863DA,&PricePcPoint); //Hook Price item pc point shop
Set Monster to NPC or NPC to Monster...
Code:
int SetMonsterNPC(OBJECTSTRUCT *gObj, signed int MonsterID)
{
int result; // eax@1
signed int i; // [sp+4h] [bp-Ch]@7
signed int v4; // [sp+Ch] [bp-4h]@1
result = pMAPNUMBER - 9;
v4 = pMAPNUMBER - 9;
if ( pMAPNUMBER - 9 > 0 && v4 <= 8 && MonsterID >= 84 && MonsterID <= 143 )
{
gObj->unk0x5A = 0;
result = (int)gObj;
gObj->SizeObj = (double)(v4 / 3) * 0.050000001 + gObj->SizeObj;
}
if ( gObj )
{
/* for ( i = 0; i < 512; ++i )
{
if ( MonsterID == (unsigned __int16)word_79B9E78[27 * i] )
{
gObjSetMonsterName(gObj->Name, (int)((char *)&unk_79B9E7A + 54 * i));
break;
}
}*/
NPCTEXT * pNPCTEXT= (NPCTEXT*)0x79B9E78;
for(int i=0; i<512;i++)
{
if(pNPCTEXT[i].MonsterID==MonsterID)
{
gObjSetMonsterName(gObj->Name,(DWORD)pNPCTEXT[i].Name);
break;
}
}
gObj->objID = MonsterID;
result = (int)gObj;
gObj->unk0x278 = 0;
gObj->unk0x58 = *(WORD*)0x7FE8DD4;
if ( MonsterID == 200 )
{
result = (int)&gObj->unk0x264;
gObj->TypePlayer = 2;
}
if ( MonsterID == 200 )
{
result = (int)&gObj->unk0x264;
gObj->TypePlayer = 2;
}
else if ( MonsterID < 260 )
{
if ( MonsterID <= 200 )
{
if ( MonsterID < 150 )
{
if ( MonsterID <= 110 )
{
if ( MonsterID < 100 )
{
result = (int)&gObj->unk0x264;
gObj->TypePlayer = 2;
}
else
{
gObj->TypePlayer = 8;
}
}
else
{
gObj->TypePlayer = 2;
}
}
else
{
result = (int)&gObj->unk0x264;
gObj->TypePlayer = 2;
}
}
else
{
gObj->TypePlayer = 4;
}
}
else
{
gObj->TypePlayer = 2;
}
if ( MonsterID == 368 || MonsterID == 369 || MonsterID == 370 )
gObj->TypePlayer = 4;
if ( MonsterID == 367
|| MonsterID == 371
|| MonsterID == 376
|| MonsterID == 377
|| MonsterID == 379
|| MonsterID == 380
|| MonsterID == 381
|| MonsterID == 382
|| MonsterID == 383
|| MonsterID == 384
|| MonsterID == 385
|| MonsterID == 406
|| MonsterID == 407
|| MonsterID == 408
|| MonsterID == 414
|| MonsterID == 415
|| MonsterID == 416
|| MonsterID == 417
|| MonsterID == 450
|| MonsterID == 452
|| MonsterID == 453
|| MonsterID == 464
|| MonsterID == 465
|| MonsterID == 467
|| MonsterID == 468
|| MonsterID == 469
|| MonsterID == 470
|| MonsterID == 471
|| MonsterID == 472
|| MonsterID == 473
|| MonsterID == 474
|| MonsterID == 475
|| MonsterID == 478 )
gObj->TypePlayer = 4;
if ( MonsterID == 451 )
{
result = (int)&gObj->unk0x264;
gObj->TypePlayer = -128;
}
}
return result;
}
Header for SetMonsterNpc
Code:
#define pMAPNUMBER *(DWORD*)0x84253C
#pragma pack(push, 1)
struct OBJECTSTRUCT
{
BYTE gap0[4];
BYTE unk0x04;
char gap_5[3];
DWORD unk0x08;
char gap_C[2];
char IsSafeZone;
char unk0xF;
BYTE byte10;
char unk0x11;
char gap_12[1];
BYTE Class;
char unk0x14;
char unk0x15;
char unk0x16;
char gap_17[1];
char unk0x18;
char unk0x19;
char unk0x1A;
char unk0x1B;
char unk0x1C;
char unk0x1D;
char unk0x1E;
BYTE objPkState;
char unk0x20;
char unk0x21;
char gap_22[1];
char unk0x23;
char unk0x24;
char gap_25[1];
WORD unk0x26;
char gap_28[1];
char unk0x29;
char unk0x2A;
char gap_2B[1];
char unk0x2C;
char gobjX;
char gobjY;
char gap_2F[9];
char Name[24];
char unk0x50;
char gap_51[1];
char unk0x52;
char gap_53[1];
WORD unk0x54;
WORD m_index;
WORD unk0x58;
WORD unk0x5A;
WORD objID;
char gap_5E[4];
WORD objSpeed;
char gap_64[4];
DWORD unk0x68;
DWORD unk0x6C;
char gap_70[4];
DWORD unk0x74;
char gap_78[12];
DWORD unk0x84;
DWORD unk0x88;
DWORD unk0x8C;
char gap_90[4];
DWORD unk0x94;
char gap_98[12];
DWORD unk0xA4;
char gap_A8[12];
DWORD R;
DWORD G;
DWORD B;
char gap_C0[32];
WORD objHelm;
BYTE objHelmLvl;
BYTE gapE3[29];
WORD objArmor;
BYTE objArmorLvl;
BYTE gap103[29];
WORD objPants;
BYTE objPantsLvl;
BYTE gap123[29];
WORD objGloves;
BYTE objGlovesLvl;
BYTE gap143[29];
WORD objBoots;
BYTE objBootsLvl;
BYTE gap163[29];
WORD WeaponRight;
BYTE WeaponRightLvl;
BYTE WeaponRightOpt;
char gap_184[1];
char unk0x185;
char gap_186[26];
WORD WeaponLeft;
BYTE WeaponLeftLvl;
char gap_1A3[2];
char unk0x1A5;
char gap_1A6[26];
WORD objWings;
char gap_1C2[30];
WORD objPet;
char gap_1E2[30];
WORD unk0x200;
char gap_202[30];
BYTE unk0x220;
char gap_221[1];
char unk0x222;
char gap_223[41];
DWORD unk0x24C;
DWORD unk0x250;
char gap_254[12];
WORD unk0x260;
char unk0x262;
char gap_263[1];
DWORD unk0x264;
BYTE Visible;
BYTE gap269[2];
BYTE unk0x26B;
BYTE ShadowEnable;
BYTE unk0x26D;
char unk0x26E;
char gap_26F[1];
BYTE unk0x270;
char unk0x271;
char unk0x272;
char unk0x273;
char gap_274[1];
char unk0x275;
char CurrentAnimation;
char unk0x277;
BYTE unk0x278;
char unk0x279;
BYTE TypePlayer;
char gap_27B[4];
char unk0x27F;
char gap_280[2];
char unk0x282;
char unk0x283;
char gap_284[16];
DWORD TypeObj;
DWORD unk0x298;
DWORD dword29C;
DWORD unk0x2A0;
DWORD dword2A4;
DWORD unk0x2A8;
char gap_2AC[12];
DWORD unk2B8;
char gap_2BC[8];
float SizeObj;
float unk0x2C8;
float unk0x2CC;
float unk0x2D0;
float unk0x2D4;
float unk0x2D8;
DWORD unk0x2DC;
float unk0x2E0;
DWORD unk0x2E4;
char gap_2E8[8];
float unk0x2F0;
float unk0x2F4;
float Opacity2;
float Opacity;
DWORD unk0x300;
DWORD unk0x304;
DWORD unk0x308;
char gap_30C[36];
float unk0x330;
float unk0x334;
float unk0x338;
float dword33C;
float dword340;
float dword344;
char gap_348[24];
float PositionX;
float PositionY;
float PositionZ;
float RotateX;
float RotateY;
float RotateZ;
char gap_378[144];
DWORD unk0x408;
char gap_40C[60];
char unk0x448;
char gap_449[23];
DWORD dword460;
};
#pragma pack(pop)
struct NPCTEXT
{
WORD MonsterID;
//BYTE Enable;
char Name[52];
};extern NPCTEXT pNPCTEXT[512];
#define gObjSetMonsterName ((void(__cdecl*)(char* a1,DWORD unk))0x7DF6D0)
int SetMonsterNPC(OBJECTSTRUCT *gObj, signed int MonsterID);
Code:
#define SearchLineText ((int(__thiscall*)(LPVOID This, int a2)) 0x4024D0)
#define SearchLineTextThis 0x79F5190
#define CopyText ((int(__cdecl*)(int a1,int a2)) 0x4B23E0)
#define sub_7169E9 ((int(__thiscall*)(LPVOID* This, int a2,int a3,int a4,int a5,int a6,int a7)) 0x07169E9)
class PETS
{
public:
char __thiscall PetBarHP(int a1, int a2);
void PetAddEffect();
void Hook();
};extern PETS cPets;
Code:
PETS cPets;
char PETS::PetBarHP(int a1, int a2)
{
int v2;
char result; // al@17
char PetName[254]; // [sp+14h] [bp-100h]@7
OBJECTSTRUCT * gObj = (OBJECTSTRUCT *)( *(DWORD*)0x79B9D48);
if (gObj->objPet < 7475 || gObj->objPet > 7479
&& gObj->objPet != 0x1D73
&& gObj->objPet != 0x1D74
&& gObj->objPet != 0x1D76
&& gObj->objPet != 0x1D58 )
{
result = 0;
}
else
{
switch ( gObj->objPet )
{
case 0x1D33:
v2 = SearchLineText((LPVOID)SearchLineTextThis,353);
CopyText((int)&PetName, v2);
break;
case 0x1D34:
CopyText((int)&PetName, (84 * gObj->objPet - 0x333) +*(DWORD*)0x79FAE58);
break;
case 0x1D35:
v2 = SearchLineText((LPVOID)SearchLineTextThis,355);
CopyText((int)&PetName, v2);
break;
case 0x1D36:
v2 = SearchLineText((LPVOID)SearchLineTextThis,354);
CopyText((int)&PetName, v2);
break;
case 0x1D37:
v2 = SearchLineText((LPVOID)SearchLineTextThis,1187);
CopyText((int)&PetName, v2);
break;
case 0x1D58:
v2 = SearchLineText((LPVOID)SearchLineTextThis,1916);
CopyText((int)&PetName, v2);
break;
case 0x1D73:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89D00);
break;
case 0x1D74:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89D54);
break;
case 0x1D76:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89DFC);
break;
default:
break;
}
sub_7169E9((LPVOID*)this,a1, a2, (int)&PetName, *(BYTE *)(*(DWORD*)0x79FAE5C + 0x13DE), 0xFF, 0);
result = 1;
}
return result;
}
void PETS::Hook()
{
SetCompleteHook(0xE9,0x0716CF3,&PETS::PetBarHP);
}
Simple windows for QUEST
https://s32.postimg.org/ndkovmrv9/Sc...13_00_0000.jpg
Source code: Quest_Source
-
re: [Development] MuEmu Working main 1.05D
-
re: [Development] MuEmu Working main 1.05D
@Pinkor can you find CharObject?
-
re: [Development] MuEmu Working main 1.05D
realy nice. thanks) but i made something looks like that)
-
re: [Development] MuEmu Working main 1.05D
Some items does not have pcpoint, you need check this too.
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
SmileYzn
Some items does not have pcpoint, you need check this too.
Just, add some "if" and enjoy!
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
007jodex
Just, add some "if" and enjoy!
hola jodex :P
-
re: [Development] MuEmu Working main 1.05D
This is a pseudo code anyways.. but OK pinkof is better than nothing..
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Kiosani
This is a pseudo code anyways.. but OK pinkof is better than nothing..
And better that write it in assembler
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Pinkof
And better that write it in assembler
why did you name the title working main 1.05D? i think its a little bit different of what you contributed with the offsets / sources :O
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Kiosani
This is a pseudo code anyways.. but OK pinkof is better than nothing..
Its a working code... u can make it more "beautiful"
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
josesp
Its a working code... u can make it more "beautiful"
now will release "Game Engine mega plus re edition deluxe" with "Can change price to pc point shop" and "Can add new npc monster" XD
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
007jodex
Just, add some "if" and enjoy!
Did you tested first bro? NO i guess.
Quote:
Originally Posted by
Pinkof
now will release "Game Engine mega plus re edition deluxe" with "Can change price to pc point shop" and "Can add new npc monster" XD
I already have this monsters on season 4 with some bugs. If someone here need help i am here too :D
-
re: [Development] MuEmu Working main 1.05D
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Pinkof
now will release "Game Engine mega plus re edition deluxe" with "Can change price to pc point shop" and "Can add new npc monster" XD
I have added Custom Monsters and NPC in the past.. sincerely.. it's not necesary this struct to make this, the GameEngine is for: 1.04d GMO main.exe, then this struct is not util for me I can make this and more, sincerely nothing is new here. but the complete struct made by pinkof it's fine... I can see some cool things on this that are on really from: ZzzBMD.h Class definitions, anyways.. Good Luck for all
PS: And yes, I'm working on New GameEngine Version 1.9.0.0, with more cool things than: 1.8.0.0
PS 2: I'm working too on: Season 4 but Japan Protocol, + Season 3, + Pre-Season 1
-
re: [Development] MuEmu Working main 1.05D
Pinkof: Can you decompile this function ? ->
:cool::cool::cool::cool::cool::cool::cool::cool::cool:
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Kiosani
Pinkof: Can you decompile this function ? ->
:cool::cool::cool::cool::cool::cool::cool::cool::cool:
Here you have.. not is hard.. ¬¬ and please dont sell it is free!!!
Quote:
#define SearchLineText ((int(__thiscall*)(LPVOID This, int a2)) 0x4024D0)
#define SearchLineTextThis ((LPVOID(*)()) 0x79F5190)
#define sub_4B23E0 ((int(__cdecl*)(int a1,int a2)) 0x4B23E0)
#define sub_7169E9 ((int(__thiscall*)(LPVOID This, int a2,int a3,int a4,int a5,int a6)) 0x07169E9)
char PetBarHP(LPVOID This,int a1, int a2)
{
int v2; // eax@8
int v3; // eax@10
int v4; // eax@11
int v5; // eax@12
int v6; // eax@13
char result; // al@17
char v8; // [sp+14h] [bp-100h]@7
char v9; // [sp+15h] [bp-FFh]@7
__int16 v10; // [sp+111h] [bp-3h]@7
char v11; // [sp+113h] [bp-1h]@7
OBJECTSTRUCT * gObj = (OBJECTSTRUCT *)( *(DWORD*)0x79B9D48);
if (gObj->objPet < 7475 || gObj->objPet > 7479
&& gObj->objPet != 0x1D73
&& gObj->objPet != 0x1D74
&& gObj->objPet != 0x1D76
&& gObj->objPet != 0x1D58 )
{
result = 0;
}
else
{
v8 = 0;
memset(&v9, 0, 0xFCu);
v10 = 0;
v11 = 0;
switch ( gObj->objPet )
{
case 0x1D33:
v2 = SearchLineText(SearchLineTextThis(),353);
sub_4B23E0((int)&v8, v2); // May be draw text name of pet over hp bar pet interface
break;
case 0x1D34:
sub_4B23E0((int)&v8, 84 * gObj->objPet - 0x333) +*(DWORD*)0x79FAE58);
break;
case 0x1D35:
v3 = SearchLineText(SearchLineTextThis(),355);
sub_4B23E0((int)&v8, v3);
break;
case 0x1D36:
v4 = SearchLineText(SearchLineTextThis(),354);
sub_4B23E0((int)&v8, v4);
break;
case 0x1D37:
v5 = SearchLineText(SearchLineTextThis(),1187);
sub_4B23E0((int)&v8, v5);
break;
case 0x1D58:
v6 = SearchLineText(SearchLineTextThis(),1916);
sub_4B23E0((int)&v8, v6);
break;
case 0x1D73:
sub_4B23E0((int)&v8, *(DWORD*)0x79FAE58 + 0x89D00);
break;
case 0x1D74:
sub_4B23E0((int)&v8, *(DWORD*)0x79FAE58 + 0x89D54);
break;
case 0x1D76:
sub_4B23E0((int)&v8, *(DWORD*)0x79FAE58 + 0x89DFC);
break;
default:
break;
}
sub_7169E9(This,a1, a2, (int)&v8, *(BYTE *)*(DWORD*)0x79FAE5C + 0x13DE), 0xFF, 0);
result = 1;
}
return result;
}
hook here.. 0x0716CF3 ////$ 55 PUSH EBP
i dont test it but i think that is working..
good luck
PD: may be tomorrow i will do it most clean.. XD
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Pinkof
Here you have.. not is hard.. ¬¬ and please dont sell it is free!!!
hook here.. 0x0716CF3 ////$ 55 PUSH EBP
i dont test it but i think that is working..
good luck
PD: may be tomorrow i will do it most clean.. XD
Incredible.. I make something like this too, but for 1.03K JPN main.exe and.. sincerely I make so many times this function, because don't work properly.. and you make this on only some minutes.. :ott::ott::ott::ott: I love you Pinkof xD, you are great! :D:
PS: Maybe you can make COMPLETE Custom Pets Work, like me ? :D:
Here related to Pets work my decompilation (Old) from 1.03K Add pets Effects
Code:
typedef int(*Objsub_85151D)();
extern Objsub_85151D gObjsub_85151D;
typedef char(__cdecl *Objsub_5AB975)(float Arg1, float Arg2, float Arg3);
extern Objsub_5AB975 gObjsub_5AB975;
typedef bool(__thiscall *Objsub_604FCD)(LPVOID This, char Arg2);
extern Objsub_604FCD gObjsub_604FCD;
typedef void(__cdecl *Objsub_5B81A9)(int Arg1, char Arg2, int Arg3, int Arg4);
extern Objsub_5B81A9 gObjsub_5B81A9;
typedef int(__cdecl *CreateSpriteEx)(int Arg1, int Arg2, int Arg3, int Arg4, int Arg5, int Arg6, int Arg7);
extern CreateSpriteEx pCreateSpriteEx;
typedef int(__cdecl *CreateParticleEx)(int Arg1, int Arg2, int Arg3, int Arg4, int Arg5, float Arg6, int Arg7);
extern CreateParticleEx pCreateParticleEx;
Code:
CreateSpriteEx pCreateSpriteEx = (CreateSpriteEx)0x006BABF2;
CreateParticleEx pCreateParticleEx = (CreateParticleEx)0x0069BCD9;
Objsub_5AB975 gObjsub_5AB975 = (Objsub_5AB975)0x005AB975;
Objsub_604FCD gObjsub_604FCD = (Objsub_604FCD)0x00604FCD;
Objsub_5B81A9 gObjsub_5B81A9 = (Objsub_5B81A9)0x005B81A9;
Objsub_85151D gObjsub_85151D = (Objsub_85151D)0x0085151D;
char CreatePetEffect(int Arg1, char Arg2)
{
float v2; // ST14_4@3
float v3; // ST10_4@3
char v5; // [sp+17h] [bp-15h]@3
int v6; // [sp+18h] [bp-14h]@18
float v7; // [sp+1Ch] [bp-10h]@21
float v8; // [sp+20h] [bp-Ch]@21
float v9; // [sp+24h] [bp-8h]@21
float v10; // [sp+28h] [bp-4h]@20
vec3_t Color;
Vector(0.f, 0.f, 0.f, Color);
vec3_t Color2;
Vector(0.f, 0.f, 0.f, Color2);
vec3_t Color3;
Vector(0.f, 0.f, 0.f, Color3);
vec3_t Color4;
Vector(0.f, 0.f, 0.f, Color4);
vec3_t Color5;
Vector(0.f, 0.f, 0.f, Color5);
if (*(BYTE*)(Arg1 + 4))
{
if (Arg2)
{
v5 = 1;
}
else
{
v2 = *(float *)(Arg1 + 256) * 0.0099999998;
v3 = *(float *)(Arg1 + 252) * 0.0099999998;
v5 = gObjsub_5AB975(v3, v2, -20.0);
}
*(BYTE*)(Arg1 + 12) = v5;
if (*(BYTE*)(Arg1 + 12))
{
if (*(DWORD*)(*(DWORD*)(Arg1 + 472) + 48) != 826 && *(DWORD*)(Arg1 + 48) != 7490 && *(DWORD*)(Arg1 + 48) != ObjectId(13,106) && *(DWORD*)(Arg1 + 48) != ObjectId(13,123))
return 1;
if (Arg2)
{
*(DWORD*)(Arg1 + 96) = *(DWORD*)(Arg1 + 96);
}
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 97))
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
else if (pPlayerState == 4)
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
else if (*(DWORD*)(Arg1 + 48) != eMauntType::BlackFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::BlueFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::RedFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::GoldenFenrir
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::DarkWolf
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::FangSable
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::MisticTiger
&& *(DWORD*)(Arg1 + 48) != eMauntType::OrangeFenrir
&& *(DWORD*)(Arg1 + 48) != ePetSystemType::Skeleton
&& *(DWORD*)(Arg1 + 48) != ePetSystemType::Unicorn)
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
v6 = 0;
if (gObjsub_604FCD((void*)(*(DWORD*)(Arg1 + 472) + 484), 18))
v6 = 10;
gObjsub_5B81A9(Arg1, 0, 0, v6);
v10 = (double)(gObjsub_85151D() % 30 + 70) * 0.0099999998;
// ----
if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 0))
{
v7 = v10 * 0.5;
v8 = v10 * 0.80000001;
v9 = v10 * 0.60000002;
Vector(0.94, 0.812f, 0.5358f, Color);
pCreateSpriteEx(32002, Arg1 + 252, 1065353216, (int)&Color, Arg1, 0, 0);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 106))
{
Vector(0.5358f, 0.812f, 0.94f, Color);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color, 11, 0.5f, Arg1);
Vector(0.94f, 0.834f, 0.553f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color2, 11, 0.4f, Arg1);
Vector(0.553f, 0.94f, 0.84f, Color3);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color3, 11, 0.3f, Arg1);
Vector(0.235f, 0.125f, 0.85f, Color4);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color4, 11, 0.2f, Arg1);
Vector(0.85689f, 0.23541f, 0.9635f, Color5);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color5, 11, 0.1f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 123))
{
Vector(0.f, 1.f, 0.0167f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color, 3, 0.5f, Arg1);
Vector(0.f, 1.f, 0.0178f, Color2);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color2, 3, 0.6f, Arg1);
Vector(0.f, 1.f, 0.0187f, Color3);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color3, 3, 0.7f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 110))
{
Vector(0.4095f, 0.7598f, 0.91f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)&Color, 3, 0.5f, Arg1);
Vector(0.4025f, 0.8598f, 0.98f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)&Color2, 11, 0.5f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 109))
{
Vector(0.4095f, 0.7598f, 0.91f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)&Color, 3, 0.5f, Arg1);
Vector(1.f, 1.f, 0.98f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)&Color2, 11, 0.5f, Arg1);
}
}
}
return 1;
}
Results ? Yes, something like this:
http://i.imgur.com/yLB7EsM.jpg
http://i.imgur.com/NDkEFHQ.jpg
PS 2: Sorry hook place is here:
Code:
SetHook((LPVOID)CreatePetEffect, (LPVOID)0x0046C305, ASM::CALL);
SetHook((LPVOID)CreatePetEffect, (LPVOID)0x004AE2EC, ASM::CALL);
PS 3: On Arg1 in really exists 1 struct... and Arg1 is in really a Pointer to this fuckin* struct -.-! but I don't like make structs on decompilation process anyways :D: (maybe is the same struct from pinkof) xD.
PS 4: for vec3_t definitions see this thread: http://forum.ragezone.com/f508/glow-source-1-03k-1086720/
-
re: [Development] MuEmu Working main 1.05D
Nemesis did you not fixed Welcome for map display? :D
-
re: [Development] MuEmu Working main 1.05D
first post updated
Added PetBarHp code with this we can add new pets (need add it to gameserver too)
Quote:
PETS cPets;
char PETS::PetBarHP(int a1, int a2)
{
int v2;
char result; // al@17
char PetName[254]; // [sp+14h] [bp-100h]@7
OBJECTSTRUCT * gObj = (OBJECTSTRUCT *)( *(DWORD*)0x79B9D48);
if (gObj->objPet < 7475 || gObj->objPet > 7479
&& gObj->objPet != 0x1D73
&& gObj->objPet != 0x1D74
&& gObj->objPet != 0x1D76
&& gObj->objPet != 0x1D58 )
{
result = 0;
}
else
{
switch ( gObj->objPet )
{
case 0x1D33:
v2 = SearchLineText((LPVOID)SearchLineTextThis,353);
CopyText((int)&PetName, v2);
break;
case 0x1D34:
CopyText((int)&PetName, (84 * gObj->objPet - 0x333) +*(DWORD*)0x79FAE58);
break;
case 0x1D35:
v2 = SearchLineText((LPVOID)SearchLineTextThis,355);
CopyText((int)&PetName, v2);
break;
case 0x1D36:
v2 = SearchLineText((LPVOID)SearchLineTextThis,354);
CopyText((int)&PetName, v2);
break;
case 0x1D37:
v2 = SearchLineText((LPVOID)SearchLineTextThis,1187);
CopyText((int)&PetName, v2);
break;
case 0x1D58:
v2 = SearchLineText((LPVOID)SearchLineTextThis,1916);
CopyText((int)&PetName, v2);
break;
case 0x1D73:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89D00);
break;
case 0x1D74:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89D54);
break;
case 0x1D76:
CopyText((int)&PetName, *(DWORD*)0x79FAE58 + 0x89DFC);
break;
default:
break;
}
sub_7169E9((LPVOID*)this,a1, a2, (int)&PetName, *(BYTE *)(*(DWORD*)0x79FAE5C + 0x13DE), 0xFF, 0);
result = 1;
}
return result;
}
void PETS::Hook()
{
SetCompleteHook(0xE9,0x0716CF3,&PETS::PetBarHP);
}
First Post with full code.
-
re: [Development] MuEmu Working main 1.05D
i'm research offset gObjCreatePet for main 1.05D, @Pinkor can you find CharObject for main 1.05d?
.cpp
Quote:
ObjCreateBug gObjCreateBug = (ObjCreateBug)0x004A8271;
ObjCreatePet gObjCreatePet = (ObjCreatePet)0x00734652;
void gObjCreatePetEx(int ItemId)
{
int ItemSwitch = *(WORD*)ItemId;
int PetPreview = LODWORD(pPreviewPetThis) + 612;
// ----
switch (ItemSwitch)
{
case ItemId(13, 76):
gObjCreateBug(eBugType::Skeleton, PetPreview + 252, PetPreview, 0, 0);
break;
// ---
}
gObjCreatePet(ItemId);
}
void gObjCreatePetExHook()
{
SetHook((LPVOID)gObjCreatePetEx,(LPVOID)0x007155DE,0xE8);
SetHook((LPVOID)gObjCreatePetEx,(LPVOID)0x00732A1A,0xE8);
}
.h
Quote:
#define ItemId(x, y) ((x * 512) + y)#define pPreviewPetThis *(DWORD*)0x079B9D48
#define LODWORD(h) ((DWORD)(__int64(h) & __int64(0xffffffff)))
enum eBugType
{
Skeleton = 7551,
};
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();
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
s1mpl3
i'm research offset
gObjCreatePet for main 1.05D, @
Pinkor can you find CharObject for main 1.05d?
.cpp
.h
U_U you dont see it???
OBJECTSTRUCT
please read first.. each coder put a different name in your code.. not will be the same every time..
-
re: [Development] MuEmu Working main 1.05D
@Pinkor ohh, thank :D @Kiosani can you share source pet follow player?
Offset Tron 2.0 Glow + Smoke Effect for Main 1.05D
Quote:
//Tron Glow
#define pInitGraphics ((void(__cdecl*)()) 0x00706635)
#define oInitGraphics_Call 0x006CF4EC
#define pSelectDraw ((int(__cdecl*)(DWORD)) 0x0041D732)
#define oSelectDraw_Call 0x004059C2
#define pWinWidth *(GLsizei*)0x852B98
#define pWinHeight *(GLsizei*)0x852B9C
DWORD gSelectASMJmp00 = 0x00409D7E;
DWORD gGraphicsASM00Jmp00 = 0x006D0093;
SetRange((LPVOID)0x00409D78, 0x06, ASM::NOP);
SetJmp((LPVOID)0x00409D78, gSelectASM00);
//---
SetRange((LPVOID)0x006D008E, 0x05, ASM::NOP);
SetJmp((LPVOID)0x006D008E, gGraphicsASM00);
Quote:
//Smoke Effect
#define HDK_SET_ITEM_EFFECT 0x004F3380 //0x0052B0DB
#define HDK_SET_COLOR_EFFECT 0x004F321E //0x0052B122
#define HDK_ITEM_EFFECT_ALLOW 0x004F322A //0x0052B0E7
#define HDK_ITEM_EFFECT_NOT_ALLOW 0x004F38C9 //0x0052B9E0
#define HDK_NEXT_ITEM_COLOR 0x004F33AF //0x0052B150
-
re: [Development] MuEmu Working main 1.05D
-
re: [Development] MuEmu Working main 1.05D
how to change select server + char like SS2/3? i very like interface old version
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
s1mpl3
how to change select server + char like SS2/3? i very like interface old version
need recode some function in main.exe
-
re: [Development] MuEmu Working main 1.05D
Trying make a customization to equip 2 pets to same time.
https://www.youtube.com/watch?v=aCIZiDnrEtk
-
re: [Development] MuEmu Working main 1.05D
I will try make a tutorial to work with some monster objects and items in side client may be someone will can do something amazing x)
-
re: [Development] MuEmu Working main 1.05D
Pinkof, can you share fix max start > 65k points for main 1.02S JPN or 1.04J KOR ?
-
re: [Development] MuEmu Working main 1.05D
i want fog source for this main
-
re: [Development] MuEmu Working main 1.05D
Pink,
Where should I go to find the main source 1.05D opened?
Or is it something is unique yours?
-
re: [Development] MuEmu Working main 1.05D
https://www.youtube.com/watch?v=N7hLgaTOo60
https://www.youtube.com/watch?v=x4ecLBH8uAo
Files to test it..
MuServerS4
Just can buy sets completes putting only helms.. with Set for MG not will work fine.. XD
Can't buy a set by Parts..
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Pinkof
Deja de hacer eso y ponete con josesp a hacer la season 11 jajajaja
Linda custom igual.
-
re: [Development] MuEmu Working main 1.05D
@Pinkor can you make ui add point like this?
http://i.imgur.com/MgWCEKQ.jpg?1
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Saitama
This is a idiot custom. Is very dificult use /add to add points?
-
re: [Development] MuEmu Working main 1.05D
Pinkof can you change max allowed zen in personal store? i mean that accept 9 digits. Thanks you!
-
re: [Development] MuEmu Working main 1.05D
Pinkof, do you have the main.exe decripted on source c++?
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
s1mpl3
Please help me add Smoke in main 1.05D
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
figaro
Pinkof can you change max allowed zen in personal store? i mean that accept 9 digits. Thanks you!
// Money transfer limit
SetByte((PVOID)(0x006FB0C5), 9);
SetByte((PVOID)(0x006FB2C8), 9);
SetByte((PVOID)(0x006FB556), 9);
SetByte((PVOID)(0x006FB8B9), 9);
- - - Updated - - -
Quote:
Originally Posted by
laulinh2
Please help me add Smoke in main 1.05D
SmokeEffect.cpp
Quote:
#include "StdAfx.h"
#include "SmokeEffect.h"
#include "ToolKit.h"
#include "Item.h"
DWORD pItemType = 0;
__declspec(naked) void SetItemEffect()
{
__asm
{
Mov pItemType, Eax
}
switch (pItemType)
{
case GET_ITEM_MODEL(11, 1): case GET_ITEM_MODEL(11, 3):
{
__asm
{
Mov Esi, HDK_ITEM_EFFECT_ALLOW
JMP Esi
}
}
break;
}
__asm
{
Mov Esi, HDK_ITEM_EFFECT_NOT_ALLOW
JMP Esi
}
}
__declspec(naked) void SetColorEffect()
{
__asm
{
Mov pItemType, Ecx
}
switch (pItemType)
{
case GET_ITEM_MODEL(11, 1):
__asm
{
MOV EDX, DWORD PTR SS : [EBP + 0xC]
MOV DWORD PTR DS : [EDX + 0x9C], 0x437a0000 //Red Color Value
MOV EAX, DWORD PTR SS : [EBP + 0xC]
MOV DWORD PTR DS : [EAX + 0xA0], 0x0 //Green Color Value
MOV ECX, DWORD PTR SS : [EBP + 0xC]
MOV DWORD PTR DS : [ECX + 0xA4], 0x0 //Blue Color Value
}
break;
case GET_ITEM_MODEL(11, 3):
__asm
{
MOV EDX, DWORD PTR SS : [EBP + 0xC]
MOV DWORD PTR DS : [EDX + 0x9C], 0x0 //Red Color Value
MOV EAX, DWORD PTR SS : [EBP + 0xC]
MOV DWORD PTR DS : [EAX + 0xA0], 0x0 //Green Color Value
MOV ECX, DWORD PTR SS : [EBP + 0xC]
MOV DWORD PTR DS : [ECX + 0xA4], 0x437a0000 //Blue Color Value
}
break;
}
__asm
{
Mov Esi, HDK_NEXT_ITEM_COLOR
JMP Esi
}
}
void AttachNewEffect()
{
DWORD dwPotect;
dwPotect = ToolKit.UnProtect(HDK_SET_ITEM_EFFECT, 12);
ToolKit.SetNop(HDK_SET_ITEM_EFFECT, 12);
ToolKit.WriteJmp(HDK_SET_ITEM_EFFECT, (DWORD)&SetItemEffect);
ToolKit.Protect(HDK_SET_ITEM_EFFECT, 22, dwPotect);
dwPotect = ToolKit.UnProtect(HDK_SET_COLOR_EFFECT, 46);
ToolKit.SetNop(HDK_SET_COLOR_EFFECT, 46);
ToolKit.WriteJmp(HDK_SET_COLOR_EFFECT, (DWORD)&SetColorEffect);
ToolKit.Protect(HDK_SET_COLOR_EFFECT, 56, dwPotect);
}
SmokeEffect.h
Quote:
#pragma once
#define HDK_SET_ITEM_EFFECT 0x004F3380
#define HDK_SET_COLOR_EFFECT 0x004F321E
#define HDK_ITEM_EFFECT_ALLOW 0x004F322A
#define HDK_ITEM_EFFECT_NOT_ALLOW 0x004F38C9
#define HDK_NEXT_ITEM_COLOR 0x004F33AF
void AttachNewEffect();
Write in main.cpp
AttachNewEffect();
Good Luck
-
re: [Development] MuEmu Working main 1.05D
Hey guys,
This work of @Pinkof is using the main 1.05d source code or only working with assembly(olly)?
How i can find this 1.05d main open source?
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
S1lvik
// Money transfer limit
SetByte((PVOID)(0x006FB0C5), 9);
SetByte((PVOID)(0x006FB2C8), 9);
SetByte((PVOID)(0x006FB556), 9);
SetByte((PVOID)(0x006FB8B9), 9);
- - - Updated - - -
SmokeEffect.cpp
SmokeEffect.h
Write in main.cpp
AttachNewEffect();
Good Luck
How i can use this source if i don't have the "ToolKit.h"?
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
S1lvik
// Money transfer limit
SetByte((PVOID)(0x006FB0C5), 9);
SetByte((PVOID)(0x006FB2C8), 9);
SetByte((PVOID)(0x006FB556), 9);
SetByte((PVOID)(0x006FB8B9), 9);
- - - Updated - - -
SmokeEffect.cpp
SmokeEffect.h
Write in main.cpp
AttachNewEffect();
Good Luck
please source Tron Glow in main 1.05D :)
-
re: [Development] MuEmu Working main 1.05D
help me fix custom bow and crowbow please in main 1.05D
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Pinkof
Change price of PcPointsShop
Code:
int PricePcPoint(int a1,int a2)
{
int ItemId=*(WORD*)a1;
int ItemLvl = *(WORD*)(a1+2);
if(ItemId==GET_ITEM(12,30) && ItemLvl == 0)
{
return 10; // return 10 = 10 pcpoint price
}
else if(ItemId==GET_ITEM(12,30) && ItemLvl == 8)
{
return 15;
}
else if(ItemId==GET_ITEM(12,30) && ItemLvl == 16)
{
return 20;
}
else if(ItemId==GET_ITEM(12,31) && ItemLvl == 0)
{
return 10;
}
else if(ItemId==GET_ITEM(12,31) && ItemLvl == 8)
{
return 15;
}
else if(ItemId==GET_ITEM(12,31) && ItemLvl == 16)
{
return 20;
}
else if(ItemId==GET_ITEM(12,15) && ItemLvl == 0)
{
return 1;
}
else
{
return 0;
//return CALL 005056D2
}
}
Code:
SetCompleteHook(0xE8,0x05863DA,&PricePcPoint); //Hook Price item pc point shop
How do I fix this work by reading the PCPoint.txt file?
-
re: [Development] MuEmu Working main 1.05D
No one to help me ???
Make main use prices for PCPoint Shop items through PCPoint.txt
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Kiosani
Incredible.. I make something like this too, but for 1.03K JPN main.exe and.. sincerely I make so many times this function, because don't work properly.. and you make this on only some minutes.. :ott::ott::ott::ott: I love you Pinkof xD, you are great! :D:
PS: Maybe you can make COMPLETE Custom Pets Work, like me ? :D:
Here related to Pets work my decompilation (Old) from 1.03K Add pets Effects
Code:
typedef int(*Objsub_85151D)();
extern Objsub_85151D gObjsub_85151D;
typedef char(__cdecl *Objsub_5AB975)(float Arg1, float Arg2, float Arg3);
extern Objsub_5AB975 gObjsub_5AB975;
typedef bool(__thiscall *Objsub_604FCD)(LPVOID This, char Arg2);
extern Objsub_604FCD gObjsub_604FCD;
typedef void(__cdecl *Objsub_5B81A9)(int Arg1, char Arg2, int Arg3, int Arg4);
extern Objsub_5B81A9 gObjsub_5B81A9;
typedef int(__cdecl *CreateSpriteEx)(int Arg1, int Arg2, int Arg3, int Arg4, int Arg5, int Arg6, int Arg7);
extern CreateSpriteEx pCreateSpriteEx;
typedef int(__cdecl *CreateParticleEx)(int Arg1, int Arg2, int Arg3, int Arg4, int Arg5, float Arg6, int Arg7);
extern CreateParticleEx pCreateParticleEx;
Code:
CreateSpriteEx pCreateSpriteEx = (CreateSpriteEx)0x006BABF2;
CreateParticleEx pCreateParticleEx = (CreateParticleEx)0x0069BCD9;
Objsub_5AB975 gObjsub_5AB975 = (Objsub_5AB975)0x005AB975;
Objsub_604FCD gObjsub_604FCD = (Objsub_604FCD)0x00604FCD;
Objsub_5B81A9 gObjsub_5B81A9 = (Objsub_5B81A9)0x005B81A9;
Objsub_85151D gObjsub_85151D = (Objsub_85151D)0x0085151D;
char CreatePetEffect(int Arg1, char Arg2)
{
float v2; // ST14_4@3
float v3; // ST10_4@3
char v5; // [sp+17h] [bp-15h]@3
int v6; // [sp+18h] [bp-14h]@18
float v7; // [sp+1Ch] [bp-10h]@21
float v8; // [sp+20h] [bp-Ch]@21
float v9; // [sp+24h] [bp-8h]@21
float v10; // [sp+28h] [bp-4h]@20
vec3_t Color;
Vector(0.f, 0.f, 0.f, Color);
vec3_t Color2;
Vector(0.f, 0.f, 0.f, Color2);
vec3_t Color3;
Vector(0.f, 0.f, 0.f, Color3);
vec3_t Color4;
Vector(0.f, 0.f, 0.f, Color4);
vec3_t Color5;
Vector(0.f, 0.f, 0.f, Color5);
if (*(BYTE*)(Arg1 + 4))
{
if (Arg2)
{
v5 = 1;
}
else
{
v2 = *(float *)(Arg1 + 256) * 0.0099999998;
v3 = *(float *)(Arg1 + 252) * 0.0099999998;
v5 = gObjsub_5AB975(v3, v2, -20.0);
}
*(BYTE*)(Arg1 + 12) = v5;
if (*(BYTE*)(Arg1 + 12))
{
if (*(DWORD*)(*(DWORD*)(Arg1 + 472) + 48) != 826 && *(DWORD*)(Arg1 + 48) != 7490 && *(DWORD*)(Arg1 + 48) != ObjectId(13,106) && *(DWORD*)(Arg1 + 48) != ObjectId(13,123))
return 1;
if (Arg2)
{
*(DWORD*)(Arg1 + 96) = *(DWORD*)(Arg1 + 96);
}
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 97))
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
else if (pPlayerState == 4)
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
else if (*(DWORD*)(Arg1 + 48) != eMauntType::BlackFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::BlueFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::RedFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::GoldenFenrir
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::DarkWolf
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::FangSable
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::MisticTiger
&& *(DWORD*)(Arg1 + 48) != eMauntType::OrangeFenrir
&& *(DWORD*)(Arg1 + 48) != ePetSystemType::Skeleton
&& *(DWORD*)(Arg1 + 48) != ePetSystemType::Unicorn)
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
v6 = 0;
if (gObjsub_604FCD((void*)(*(DWORD*)(Arg1 + 472) + 484), 18))
v6 = 10;
gObjsub_5B81A9(Arg1, 0, 0, v6);
v10 = (double)(gObjsub_85151D() % 30 + 70) * 0.0099999998;
// ----
if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 0))
{
v7 = v10 * 0.5;
v8 = v10 * 0.80000001;
v9 = v10 * 0.60000002;
Vector(0.94, 0.812f, 0.5358f, Color);
pCreateSpriteEx(32002, Arg1 + 252, 1065353216, (int)&Color, Arg1, 0, 0);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 106))
{
Vector(0.5358f, 0.812f, 0.94f, Color);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color, 11, 0.5f, Arg1);
Vector(0.94f, 0.834f, 0.553f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color2, 11, 0.4f, Arg1);
Vector(0.553f, 0.94f, 0.84f, Color3);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color3, 11, 0.3f, Arg1);
Vector(0.235f, 0.125f, 0.85f, Color4);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color4, 11, 0.2f, Arg1);
Vector(0.85689f, 0.23541f, 0.9635f, Color5);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color5, 11, 0.1f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 123))
{
Vector(0.f, 1.f, 0.0167f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color, 3, 0.5f, Arg1);
Vector(0.f, 1.f, 0.0178f, Color2);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color2, 3, 0.6f, Arg1);
Vector(0.f, 1.f, 0.0187f, Color3);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color3, 3, 0.7f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 110))
{
Vector(0.4095f, 0.7598f, 0.91f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)&Color, 3, 0.5f, Arg1);
Vector(0.4025f, 0.8598f, 0.98f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)&Color2, 11, 0.5f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 109))
{
Vector(0.4095f, 0.7598f, 0.91f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)&Color, 3, 0.5f, Arg1);
Vector(1.f, 1.f, 0.98f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)&Color2, 11, 0.5f, Arg1);
}
}
}
return 1;
}
Results ? Yes, something like this:
http://i.imgur.com/yLB7EsM.jpg
http://i.imgur.com/NDkEFHQ.jpg
PS 2: Sorry hook place is here:
Code:
SetHook((LPVOID)CreatePetEffect, (LPVOID)0x0046C305, ASM::CALL);
SetHook((LPVOID)CreatePetEffect, (LPVOID)0x004AE2EC, ASM::CALL);
PS 3: On Arg1 in really exists 1 struct... and Arg1 is in really a Pointer to this fuckin* struct -.-! but I don't like make structs on decompilation process anyways :D: (maybe is the same struct from pinkof) xD.
PS 4: for vec3_t definitions see this thread:
http://forum.ragezone.com/f508/glow-source-1-03k-1086720/
This works only for pets, or can you add particles to other items as well?
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
S1lvik
// Money transfer limit
SetByte((PVOID)(0x006FB0C5), 9);
SetByte((PVOID)(0x006FB2C8), 9);
SetByte((PVOID)(0x006FB556), 9);
SetByte((PVOID)(0x006FB8B9), 9);
- - - Updated - - -
SmokeEffect.cpp
SmokeEffect.h
Write in main.cpp
AttachNewEffect();
Good Luck
how to configure the effect in a .txt so you can add any item
-
re: [Development] MuEmu Working main 1.05D
@S1lvik, what is the #define ITEM_INTER of main 1.05d of smokeeffect 333?
-
re: [Development] MuEmu Working main 1.05D
add pets new pets but when i move pet name change in the hpbar =/
https://www.youtube.com/watch?v=1tid2CwQtgA&feature=youtu.be
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Luis_br
Need add new pets ID, set Name and print to pet name on Hpbar Draw.
-
re: [Development] MuEmu Working main 1.05D
how to fix news pet movie??
- - - Updated - - -
how to fix news pet movie??
-
re: [Development] MuEmu Working main 1.05D
Quote:
Originally Posted by
Kiosani
Incredible.. I make something like this too, but for 1.03K JPN main.exe and.. sincerely I make so many times this function, because don't work properly.. and you make this on only some minutes.. :ott::ott::ott::ott: I love you Pinkof xD, you are great! :D:
PS: Maybe you can make COMPLETE Custom Pets Work, like me ? :D:
Here related to Pets work my decompilation (Old) from 1.03K Add pets Effects
Code:
typedef int(*Objsub_85151D)();
extern Objsub_85151D gObjsub_85151D;
typedef char(__cdecl *Objsub_5AB975)(float Arg1, float Arg2, float Arg3);
extern Objsub_5AB975 gObjsub_5AB975;
typedef bool(__thiscall *Objsub_604FCD)(LPVOID This, char Arg2);
extern Objsub_604FCD gObjsub_604FCD;
typedef void(__cdecl *Objsub_5B81A9)(int Arg1, char Arg2, int Arg3, int Arg4);
extern Objsub_5B81A9 gObjsub_5B81A9;
typedef int(__cdecl *CreateSpriteEx)(int Arg1, int Arg2, int Arg3, int Arg4, int Arg5, int Arg6, int Arg7);
extern CreateSpriteEx pCreateSpriteEx;
typedef int(__cdecl *CreateParticleEx)(int Arg1, int Arg2, int Arg3, int Arg4, int Arg5, float Arg6, int Arg7);
extern CreateParticleEx pCreateParticleEx;
Code:
CreateSpriteEx pCreateSpriteEx = (CreateSpriteEx)0x006BABF2;
CreateParticleEx pCreateParticleEx = (CreateParticleEx)0x0069BCD9;
Objsub_5AB975 gObjsub_5AB975 = (Objsub_5AB975)0x005AB975;
Objsub_604FCD gObjsub_604FCD = (Objsub_604FCD)0x00604FCD;
Objsub_5B81A9 gObjsub_5B81A9 = (Objsub_5B81A9)0x005B81A9;
Objsub_85151D gObjsub_85151D = (Objsub_85151D)0x0085151D;
char CreatePetEffect(int Arg1, char Arg2)
{
float v2; // ST14_4@3
float v3; // ST10_4@3
char v5; // [sp+17h] [bp-15h]@3
int v6; // [sp+18h] [bp-14h]@18
float v7; // [sp+1Ch] [bp-10h]@21
float v8; // [sp+20h] [bp-Ch]@21
float v9; // [sp+24h] [bp-8h]@21
float v10; // [sp+28h] [bp-4h]@20
vec3_t Color;
Vector(0.f, 0.f, 0.f, Color);
vec3_t Color2;
Vector(0.f, 0.f, 0.f, Color2);
vec3_t Color3;
Vector(0.f, 0.f, 0.f, Color3);
vec3_t Color4;
Vector(0.f, 0.f, 0.f, Color4);
vec3_t Color5;
Vector(0.f, 0.f, 0.f, Color5);
if (*(BYTE*)(Arg1 + 4))
{
if (Arg2)
{
v5 = 1;
}
else
{
v2 = *(float *)(Arg1 + 256) * 0.0099999998;
v3 = *(float *)(Arg1 + 252) * 0.0099999998;
v5 = gObjsub_5AB975(v3, v2, -20.0);
}
*(BYTE*)(Arg1 + 12) = v5;
if (*(BYTE*)(Arg1 + 12))
{
if (*(DWORD*)(*(DWORD*)(Arg1 + 472) + 48) != 826 && *(DWORD*)(Arg1 + 48) != 7490 && *(DWORD*)(Arg1 + 48) != ObjectId(13,106) && *(DWORD*)(Arg1 + 48) != ObjectId(13,123))
return 1;
if (Arg2)
{
*(DWORD*)(Arg1 + 96) = *(DWORD*)(Arg1 + 96);
}
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 97))
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
else if (pPlayerState == 4)
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
else if (*(DWORD*)(Arg1 + 48) != eMauntType::BlackFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::BlueFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::RedFenrir
&& *(DWORD*)(Arg1 + 48) != eMauntType::GoldenFenrir
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::DarkWolf
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::FangSable
&& *(DWORD*)(Arg1 + 48) != eSpecialMauntType::MisticTiger
&& *(DWORD*)(Arg1 + 48) != eMauntType::OrangeFenrir
&& *(DWORD*)(Arg1 + 48) != ePetSystemType::Skeleton
&& *(DWORD*)(Arg1 + 48) != ePetSystemType::Unicorn)
{
*(DWORD*)(Arg1 + 96) = 1065353216;
}
v6 = 0;
if (gObjsub_604FCD((void*)(*(DWORD*)(Arg1 + 472) + 484), 18))
v6 = 10;
gObjsub_5B81A9(Arg1, 0, 0, v6);
v10 = (double)(gObjsub_85151D() % 30 + 70) * 0.0099999998;
// ----
if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 0))
{
v7 = v10 * 0.5;
v8 = v10 * 0.80000001;
v9 = v10 * 0.60000002;
Vector(0.94, 0.812f, 0.5358f, Color);
pCreateSpriteEx(32002, Arg1 + 252, 1065353216, (int)&Color, Arg1, 0, 0);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 106))
{
Vector(0.5358f, 0.812f, 0.94f, Color);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color, 11, 0.5f, Arg1);
Vector(0.94f, 0.834f, 0.553f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color2, 11, 0.4f, Arg1);
Vector(0.553f, 0.94f, 0.84f, Color3);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color3, 11, 0.3f, Arg1);
Vector(0.235f, 0.125f, 0.85f, Color4);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color4, 11, 0.2f, Arg1);
Vector(0.85689f, 0.23541f, 0.9635f, Color5);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)Color5, 11, 0.1f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 123))
{
Vector(0.f, 1.f, 0.0167f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color, 3, 0.5f, Arg1);
Vector(0.f, 1.f, 0.0178f, Color2);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color2, 3, 0.6f, Arg1);
Vector(0.f, 1.f, 0.0187f, Color3);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)Color3, 3, 0.7f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 110))
{
Vector(0.4095f, 0.7598f, 0.91f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)&Color, 3, 0.5f, Arg1);
Vector(0.4025f, 0.8598f, 0.98f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)&Color2, 11, 0.5f, Arg1);
}
// ----
else if (*(DWORD*)(Arg1 + 48) == ObjectId(13, 109))
{
Vector(0.4095f, 0.7598f, 0.91f, Color);
pCreateParticleEx(32269, Arg1 + 252, Arg1 + 264, (int)&Color, 3, 0.5f, Arg1);
Vector(1.f, 1.f, 0.98f, Color2);
pCreateParticleEx(32033, Arg1 + 252, Arg1 + 264, (int)&Color2, 11, 0.5f, Arg1);
}
}
}
return 1;
}
Results ? Yes, something like this:
http://i.imgur.com/yLB7EsM.jpg
http://i.imgur.com/NDkEFHQ.jpg
PS 2: Sorry hook place is here:
Code:
SetHook((LPVOID)CreatePetEffect, (LPVOID)0x0046C305, ASM::CALL);
SetHook((LPVOID)CreatePetEffect, (LPVOID)0x004AE2EC, ASM::CALL);
PS 3: On Arg1 in really exists 1 struct... and Arg1 is in really a Pointer to this fuckin* struct -.-! but I don't like make structs on decompilation process anyways :D: (maybe is the same struct from pinkof) xD.
PS 4: for vec3_t definitions see this thread:
http://forum.ragezone.com/f508/glow-source-1-03k-1086720/
Adapted 1.04j Do you know how I can fix bug map?https://i.imgur.com/GXBQ4Hk.jpg
-
re: [Development] MuEmu Working main 1.05D
Hello. And you can share the packing of jewels as you have in the inventory for the client and custom monsters?