Code:
#include "Stdafx.h"
char* Custom = "Data\\Custom\\Items\\";
char* CustomFolder = "Custom\\Items\\";
//============================================================================
// Custom Jewels Description Text
//============================================================================
char * JewelofSkill = "It is used to add to your item a skill";
char * JewelofExcellent = "It is used to make your item to excellent item";
char * JewelofLevel = "It is used to make your item level directly to up to +15";
char * JewelofLuck = "It is used to make your item to luck item";
char * JewelofOption = "It is used to make your item option directly to up to +28";
char * JewelofAncient = "It is used to make your item to ancient item";
char * JewelofSocket = "It is used to add to your item to five socket slots";
//============================================================================
// Custom Conditional Text of Jewels
//============================================================================
char * SkillCond = "Only can be used for items that may have an skill";
char * SocketCond = "Only can be used for items that may be socket";
char * AncientCond = "Only can be used for items that may be ancient";
//============================================================================
// Restore Normal Items with Golden Color Name
//============================================================================
char * JewelofSoul = "It is used to make your item level to up to 7,8,9";
char * JewelofLife = "Increase item option by 1 level";
char * JewelofCreation = "Use to create fruits that increase stats";
char * SymbolofKundun = "Must have 5 for create lost map.";
char * JewelofGuardian = "Create and improve items for siege";
char * Gemstone = "Jewel with impurities";
char * JewelofHarmony = "Jewel for item reinforcement";
char * LowerRefiningStone = "Grant actual power to reinforced item.";
char * HigherRefiningStone = "Grant actual power to reinforced item.";
char * JewelofChaos = "It is used to combine Chaos items";
char * RemedyofLove = "Increase damage and attack speed";
char * RenaA = "Can use for exchange for items";
char * RenaB = "Golden Archer Special Item";
char * PetUnicornA = "Increase Attack Speed";
char * PetUnicornB = "Increase Critical Damage";
char * PetUnicornC = "Increase Excellent Damage";
//============================================================================
BOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
Init();
break;
}
return TRUE;
}
void SetNop(DWORD dwOffset,int Size)
{
for(int n=0;n<Size;n++)
*(BYTE*)(dwOffset+n) = 0x90;
}
void HookThis(DWORD dwMyFuncOffset,DWORD dwJmpOffset)
{
*(DWORD*)(dwJmpOffset+1) = dwMyFuncOffset-(dwJmpOffset+5);
}
void LoadThisFuckingModelByITEMID(int ItemID,char* ModelName,char* FolderFrom,char* WayFrom)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH WayFrom
PUSH ItemID
mov eax,BMDModelLoad
CALL eax
PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH FolderFrom
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}
__declspec(naked) void PatchMainForLoadModels()
{
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,200),"JewelOfLevel",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,201),"JewelOfLuck",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,202),"JewelOfSkill",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,203),"JewelOfOption",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,204),"JewelOfAncient",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,205),"JewelOfExcellent",CustomFolder,Custom);
LoadThisFuckingModelByITEMID(ITEM_IN_MAIN(14,206),"JewelOfSocket",CustomFolder,Custom);
_asm
{
//1.03Z+
PUSH -1
PUSH 0x009AD444
PUSH 0x009AD44C
PUSH 0x20B2
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnOffset
JMP eax
}
}
// Item SID ( (Section * 512) + ID = SID )
// Rena = 1C15
#define COLOR_ADR_ALLOW 0x005D5AED //1.03Z+
#define COLOR_ADR_RETURN 0x005D5966 //1.03Z+
void __declspec(naked) JewelsColor()
{
_asm
{
//Original Soul
cmp ax, 0x1C0E;
je AddColor;
//Jewel of Level
cmp ax, 0x1CC8;
je AddColor;
//Jewel of Luck
cmp ax, 0x1CC9;
je AddColor;
//Jewel of Skill
cmp ax, 0x1CCA;
je AddColor;
//Jewel of Option
cmp ax, 0x1CCB;
je AddColor;
//Jewel of Ancient
cmp ax, 0x1CCC;
je AddColor;
//Jewel of Excellent
cmp ax, 0x1CCD;
je AddColor;
//Jewel of Socket
cmp ax, 0x1CCE;
je AddColor;
mov edx, COLOR_ADR_RETURN
jmp edx;
AddColor:
mov edx, COLOR_ADR_ALLOW
jmp edx;
}
}
__declspec(naked) void JewelInfoText()//finished
{
// Color de la tabla:
//------------------------------------------------------------------------
// 0x00 = blanco
// 0x01 = azul
// 0x02 = rojo
// 0x03 = amarillo
// 0x04 = verde
// 0x05 = fondo azul, rojo
// 0x06 = magenta
// 0x07 = fondo blanco, azul
// 0x08 = fondo blanco, beige
// 0x09 = fondo verde, azul
// 0x0A = gris
// 0x0B = púrpura (oscuro)
_asm
{
//Restoring original item
CMP WORD PTR DS:[EDI],0x1C0E
JNZ Item1 //Next Item
PUSH 0x23E //Text Line
MOV ECX, 0x07C24858 //1.03Z+
mov esi, 0x00402470 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[EAX+4] //1.03Z+
CMP EAX,EBP
JNZ 0x005DB96A
MOV EAX, 0x0096A7B8
PUSH EAX
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],EBP //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item1:
CMP WORD PTR SS:[EDI],0x1CC8 //Item Number
JNZ Item2 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofLevel
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item2:
CMP WORD PTR SS:[EDI],0x1CC9 //Item Number
JNZ Item3 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofLuck
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item3:
CMP WORD PTR SS:[EDI],0x1CCA //Item Number
JNZ Item4 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofSkill
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH SkillCond
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0A //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item4:
CMP WORD PTR SS:[EDI],0x1CCB //Item Number
JNZ Item5 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofOption
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item5:
CMP WORD PTR SS:[EDI],0x1CCC //Item Number
JNZ Item6 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofAncient
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH AncientCond
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0A //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item6:
CMP WORD PTR SS:[EDI],0x1CCD //Item Number
JNZ Item7 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofExcellent
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item7:
CMP WORD PTR SS:[EDI],0x1CCE //Item Number
JNZ Item8 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofSocket
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH SocketCond
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0A //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item8:
CMP WORD PTR SS:[EDI],0x1C10 //Item Number
JNZ Item9 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofLife
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item9:
CMP WORD PTR SS:[EDI],0x1C16 //Item Number
JNZ Item10 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofCreation
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item10:
CMP WORD PTR SS:[EDI],0x1C1F //Item Number
JNZ Item11 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofGuardian
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item11:
CMP WORD PTR SS:[EDI],0x1C29 //Item Number
JNZ Item12 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH Gemstone
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item12:
CMP WORD PTR SS:[EDI],0x1C2A //Item Number
JNZ Item13 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofHarmony
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item13:
CMP WORD PTR SS:[EDI],0x1C2B //Item Number
JNZ Item14 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH LowerRefiningStone
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item14:
CMP WORD PTR SS:[EDI],0x1C2C //Item Number
JNZ Item15 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH HigherRefiningStone
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item15:
CMP WORD PTR SS:[EDI],0x1C1D //Item Number
JNZ Item16 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH SymbolofKundun
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x07 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item16:
CMP WORD PTR SS:[EDI],0x1C14 //Item Number
JNZ Item17 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH RemedyofLove
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x06 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item17:
CMP WORD PTR SS:[EDI],0x1C15 //Item Number
JNZ Item18 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH RenaA
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH RenaB
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x02 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item18:
CMP WORD PTR SS:[EDI],0x180F //Item Number
JNZ Item19 //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH JewelofChaos
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x00 //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Item19:
CMP WORD PTR SS:[EDI],0x1A6A //Item Number
JNZ Return //Jnz to Next Item or Return
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH PetUnicornA
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH PetUnicornB
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
LEA EAX,DWORD PTR DS:[EAX+EAX*4]
PUSH PetUnicornC
LEA EDX,DWORD PTR DS:[EAX+EAX*4]
LEA EAX,DWORD PTR DS:[EDX*4+0x7D70050] //1.03Z+
PUSH EAX
mov esi, 0x0092CC18 //1.03Z+
call esi
MOV EAX,DWORD PTR DS:[0x7DA6EF4] //1.03Z+
ADD ESP,8
MOV DWORD PTR DS:[EAX*4+0x7D71248],0x0B //1.03Z+
MOV DWORD PTR DS:[EAX*4+0x7DA0C40],EBP //1.03Z+
INC EAX
MOV DWORD PTR DS:[0x7DA6EF4],EAX //1.03Z+
JMP Return
Return:
mov edi, 0x005DB99F //1.03Z+
jmp edi;
}
}
__declspec(naked) void JewelsSwitcher()
{
_asm
{
//Original
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1C0D
JE ItemAllowed
//Jewel of Level
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC8
JE ItemAllowed
//Jewel of Luck
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC9
JE ItemAllowed
//Jewel of Skill
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCA
JE ItemAllowed
//Jewel of Option
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCB
JE ItemAllowed
//Jewel of Ancient
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCC
JE ItemAllowed
//Jewel of Excellent
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCD
JE ItemAllowed
//Jewel of Socket
MOV EDX,DWORD PTR SS:[EBP-0x20]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCE
JE ItemAllowed
mov eax,0x007EE833 //1.03Z+
jmp eax
ItemAllowed:
mov eax,0x007EE897 //1.03Z+
jmp eax
}
}
__declspec(naked) void JewelMoveOnItem2()
{
_asm
{
//Original
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1C0E
JNZ Next1
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next1
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next1
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next1:
//Jewel of Level
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC8
JNZ Next2
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next2
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next2
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next2:
//Jewel of Luck
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC9
JNZ Next3
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next3:
//Jewel of Skill
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCA
JNZ Next4
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next4:
//Jewel of Option
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCB
JNZ Next5
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next5:
//Jewel of Ancient
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCC
JNZ Next6
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next6:
//Jewel of Excellent
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCD
JNZ Next7
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next7:
//Jewel of Socket
MOV EDX,DWORD PTR SS:[EBP+0x08]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCE
JNZ Next
CMP DWORD PTR SS:[EBP-0x4],0x00
JL Next
CMP DWORD PTR SS:[EBP-0x4],0x08
JG Next
MOV AL,0x01
mov edi, 0x007AAA5C //1.03Z+
jmp edi
Next:
mov edi, 0x0079A4CC
jmp edi
}
}
__declspec(naked) void JewelMoveOnItem1()
{
_asm
{
//Original
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1C0E //Item
JNZ Next1
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
Next1:
//Jewel of Level
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC8 //Item
JNZ Next2
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next2:
//Jewel of Luck
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CC9 //Item
JNZ Next3
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next3:
//Jewel of Skill
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCA //Item
JNZ Next4
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next4:
//Jewel of Option
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCB //Item
JNZ Next5
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next5:
//Jewel of Ancient
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCC //Item
JNZ Next6
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next6:
//Jewel of Excellent
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCD //Item
JNZ Next7
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next7:
//Jewel of Socket
MOV EDX,DWORD PTR SS:[EBP-0x78]
MOVSX EAX,WORD PTR DS:[EDX]
CMP EAX,0x1CCE //Item
JNZ Next
MOV ECX,DWORD PTR SS:[EBP-0x9C]
PUSH ECX
MOV EDX,DWORD PTR SS:[EBP-0x78]
PUSH EDX
MOV ECX,DWORD PTR SS:[EBP-0xB4]
mov edi, 0x007AA974
call edi
MOV BYTE PTR SS:[EBP-0xA0],AL
mov esi, 0x007A9300 //1.03Z+
jmp esi
Next:
mov esi, 0x007A9230 //1.03Z+
jmp esi
}
}
void HookOffset(DWORD my, DWORD tohook, BYTE type)
{
*(BYTE*)tohook = type;
*(DWORD*)(tohook+1) = my - (tohook+5);
}
void Init()
{
//Hook JewelColor
BYTE JewelsColors[] = { 0xFF, 0x25, 0xE0, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x005D595C,JewelsColors,sizeof(JewelsColors)); //1.03Z+
*(unsigned int*)0x00969FE0 = (unsigned int)JewelsColor; //1.03Z+ (Offset y en BYTE)
//Hook JewelText
BYTE JewelText[] = { 0xFF, 0x25, 0x20, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
SetNop(0x005DB953,62); //1.03Z+
memcpy((int*)0x005DB94D,JewelText,sizeof(JewelText)); //1.03Z+
*(unsigned int*)0x00969F20 = (unsigned int)JewelInfoText; //1.03Z+ (Offset y en BYTE)
//Hook JewelMoveItem1
BYTE JewelMove1[] = { 0xFF, 0x25, 0xD5, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x007A9202,JewelMove1,sizeof(JewelMove1)); //1.03Z+
*(unsigned int*)0x00969FD5 = (unsigned int)JewelMoveOnItem1; //1.03Z+ (Offset y en BYTE)
//Hook JewelMoveItem2
BYTE JewelMove2[] = { 0xFF, 0x25, 0xB0, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x007AAA3D,JewelMove2,sizeof(JewelMove2)); //1.03Z+
*(unsigned int*)0x00969FB0 = (unsigned int)JewelMoveOnItem2; //1.03Z+ (Offset y en BYTE)
//Hook JewelsSwitcher
BYTE JewelsSwitchers[] = { 0xFF, 0x25, 0x00, 0x9F, 0x96, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x007EE826,JewelsSwitchers,sizeof(JewelsSwitchers)); //1.03Z+
*(unsigned int*)0x00969F00= (unsigned int)JewelsSwitcher; //1.03Z+ (Offset y en BYTE)
DataJMP ModelJMP;
SetNop(LoadModel_Offset,25);
ModelJMP.Command=0xE9;
ModelJMP.PointerToFunc=(DWORD)&PatchMainForLoadModels;
memcpy((int*)LoadModel_Offset,&ModelJMP,sizeof(ModelJMP));
HookThis((DWORD)&PatchMainForLoadModels,LoadModel_Offset);
}
ps: But to this code is lacking jewels name color on the floor... very good job Young.. now only is lacking.. Jewels sound when Drop and when Character Get.. and Jewel Special Glow Effect.