Most visitors online was 11705 , on 26 Apr 2024
Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
Join Today!#define HDK_SET_ITEM_EFFECT 0x0057AD82//1.04d GMO
#define HDK_SET_COLOR_EFFECT 0x0057ADC8//1.04d GMO
#define HDK_ITEM_EFFECT_ALLOW 0x0057AD8D//1.04d GMO
#define HDK_ITEM_EFFECT_NOT_ALLOW 0x0057B73B//1.04d GMO
#define HDK_NEXT_ITEM_COLOR 0x0057ADFD//1.04d GMO
Original Struct:
// Dragon Knight Boots
case ITEM_GET(11, 29):
__asm
{
/*
Mov Ecx, DWord Ptr Ss:[Ebp + 0xC]
Mov DWord Ptr Ds:[Ecx + 0x9C], 0x3F266666
Mov Edx, DWord Ptr Ss:[Ebp + 0xC]
Mov DWord Ptr Ds:[Ecx + 0xA0], 0x3E99999A
Mov Eax, DWord Ptr Ss:[Ebp + 0xC]
Mov DWord Ptr Ds:[Ecx + 0xA4], 0x3DCCCCCD
*/
//Re-writed of: 1.04d GMO Main.exe
MOV EAX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0x0D281AC]
FSTP DWORD PTR DS:[EAX+0x9C]
MOV ECX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0x0D23784]
FSTP DWORD PTR DS:[ECX+0x0A0]
MOV EDX,DWORD PTR SS:[EBP+0x0C]
FLD DWORD PTR DS:[0x00D27CA4]
FSTP DWORD PTR DS:[EDX+0x0A4]
float *Camera_ClipAUX1 = (float*) 0x00D2C898; //FLOAT: 580.0000
float *Camera_ClipAUX2 = (float*) 0x00D2C888; //FLOAT: 1250.000
float *Camera_ClipAUX3 = (float*) 0x00D2C830; //FLOAT: 660.0000
CPU DisasmAddress Hex dump Command Comments
0057ADD0 |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+0C]
0057ADD3 |. D905 AC81D200 FLD DWORD PTR DS:[0D281AC] ; FLOAT 0.6500000
0057ADD9 |. D998 9C000000 FSTP DWORD PTR DS:[EAX+9C]
0057ADDF |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+0C]
0057ADE2 |. D905 8437D200 FLD DWORD PTR DS:[0D23784] ; FLOAT 0.3000000
0057ADE8 |. D999 A0000000 FSTP DWORD PTR DS:[ECX+0A0]
0057ADEE |. 8B55 0C MOV EDX,DWORD PTR SS:[EBP+0C]
0057ADF1 |. D905 A47CD200 FLD DWORD PTR DS:[0D27CA4] ; FLOAT 0.1000000
0057ADF7 |. D99A A4000000 FSTP DWORD PTR DS:[EDX+0A4]
0057ADFD |> 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
[/COLOR]CPU DisasmAddress Hex dump Command Comments
0052B129 |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+0C]
0052B12C |. C781 9C000000 MOV DWORD PTR DS:[ECX+9C],3F266666
0052B136 |. 8B55 0C MOV EDX,DWORD PTR SS:[EBP+0C]
0052B139 |. C782 A0000000 MOV DWORD PTR DS:[EDX+0A0],3E99999A
0052B143 |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+0C]
0052B146 |. C780 A4000000 MOV DWORD PTR DS:[EAX+0A4],3DCCCCCD
0052B150 |> 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
[COLOR=#000000]
0057AD54 > \8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0057AD57 . 0FBF91 9C0100>MOVSX EDX,WORD PTR DS:[ECX+19C]
0057AD5E . 81FA B01A0000 CMP EDX,1AB0
0057AD64 . 7C 12 JL SHORT main.0057AD78
0057AD66 . 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0057AD69 . 0FBF88 9C0100>MOVSX ECX,WORD PTR DS:[EAX+19C]
0057AD70 . 81F9 B41A0000 CMP ECX,1AB4
0057AD76 . 7E 15 JLE SHORT main.0057AD8D
0057AD82 . 3D BE1A0000 CMP EAX,1ABE
0057AD87 . 0F85 AE090000 JNZ main.0057B73B
0057AD8D > 833D 5804BD07>CMP DWORD PTR DS:[7BD0458],9
0057AD94 . 0F8E A1090000 JLE main.0057B73B
0057AD9A . 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
0057AD9D . D981 9C000000 FLD DWORD PTR DS:[ECX+9C]
0057ADA3 . D95D E8 FSTP DWORD PTR SS:[EBP-18]
0057ADA6 . 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C]
0057ADA9 . D982 A0000000 FLD DWORD PTR DS:[EDX+A0]
0057ADAF . D95D EC FSTP DWORD PTR SS:[EBP-14]
0057ADB2 . 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
0057ADB5 . D980 A4000000 FLD DWORD PTR DS:[EAX+A4]
0057ADBB . D95D F0 FSTP DWORD PTR SS:[EBP-10]
0057ADBE . 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0057ADC1 . 0FBF91 9C0100>MOVSX EDX,WORD PTR DS:[ECX+19C]
0057ADC8 . 81FA B01A0000 CMP EDX,1AB0
0057ADCE . 75 2D JNZ SHORT main.0057ADFD
0057ADD0 . 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
0057ADD3 . D905 AC81D200 FLD DWORD PTR DS:[D281AC]
0057ADD9 . D998 9C000000 FSTP DWORD PTR DS:[EAX+9C]
0057ADDF . 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
0057ADE2 . D905 8437D200 FLD DWORD PTR DS:[D23784]
0057ADE8 . D999 A0000000 FSTP DWORD PTR DS:[ECX+A0]
0057ADEE . 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C]
0057ADF1 . D905 A47CD200 FLD DWORD PTR DS:[D27CA4]
0057ADF7 . D99A A4000000 FSTP DWORD PTR DS:[EDX+A4]
0057ADFD > 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0057AE00 . 0FBF88 9C0100>MOVSX ECX,WORD PTR DS:[EAX+19C]
0057AE07 . 81F9 B11A0000 CMP ECX,1AB1
0057AE0D . 75 2D JNZ SHORT main.0057AE3C
#include "Stdafx.h"
#include "Items.h"
#include "ToolKit.h"
DWORD pItemType = 0;
__declspec(naked) void SetItemEffect()
{
__asm
{
Mov pItemType, Ecx
}
switch (pItemType)
{
// Aura Boots, Dragon Boots
case ITEM_GET(11, 43): case ITEM_GET(11, 1):
{
__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)
{
// Dragon Knight Boots
case ITEM_GET(11, 29):
__asm
{
/*
CMP EAX,0x1ABE
JNZ 0x0057B73B
CMP DWORD PTR DS:[7BD0458],0x9
JLE 0x0057B73B
*/
MOV ECX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[ECX+0x9C]
FSTP DWORD PTR SS:[EBP-18]
MOV EDX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[EDX+0xA0]
FSTP DWORD PTR SS:[EBP-14]
MOV EAX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[EAX+0xA4]
FSTP DWORD PTR SS:[EBP-10]
MOV ECX,DWORD PTR SS:[EBP+0x8]
MOVSX EDX,WORD PTR DS:[ECX+0x19C]
CMP EDX,0x1AB0
JNZ 0x0057ADFD
MOV EAX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0xD281AC]
FSTP DWORD PTR DS:[EAX+0x9C]
MOV ECX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0xD23784]
FSTP DWORD PTR DS:[ECX+0xA0]
MOV EDX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0xD27CA4]
FSTP DWORD PTR DS:[EDX+0xA4]
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x19C]
CMP ECX,0x1AB1
JNZ 0x0057AE3C
}
break;
// Dragon Boots
case ITEM_GET(11, 1):
__asm
{
/*
CMP EAX,0x1ABE
JNZ 0x0057B73B
CMP DWORD PTR DS:[7BD0458],0x9
JLE 0x0057B73B
*/
MOV ECX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[ECX+0x9C]
FSTP DWORD PTR SS:[EBP-18]
MOV EDX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[EDX+0xA0]
FSTP DWORD PTR SS:[EBP-14]
MOV EAX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[EAX+0xA4]
FSTP DWORD PTR SS:[EBP-10]
MOV ECX,DWORD PTR SS:[EBP+0x8]
MOVSX EDX,WORD PTR DS:[ECX+0x19C]
CMP EDX,0x1AB0
JNZ 0x0057ADFD
MOV EAX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0xD281AC]
FSTP DWORD PTR DS:[EAX+0x9C]
MOV ECX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0xD23784]
FSTP DWORD PTR DS:[ECX+0xA0]
MOV EDX,DWORD PTR SS:[EBP+0xC]
FLD DWORD PTR DS:[0xD27CA4]
FSTP DWORD PTR DS:[EDX+0xA4]
MOV EAX,DWORD PTR SS:[EBP+0x8]
MOVSX ECX,WORD PTR DS:[EAX+0x19C]
CMP ECX,0x1AB1
JNZ 0x0057AE3C
}
break;
}
__asm
{
Mov Esi, HDK_NEXT_ITEM_COLOR
JMP Esi
}
}
void AttachNewEffect()
{
DWORD dwProtect;
//Patch new effects in items
dwProtect = 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, dwProtect);
//Patch new effects in items by colors
dwProtect = 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, dwProtect);
}
void InitModel(int ItemID, char* ModelName, char* Folder, char* Form)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH Form
PUSH ItemID
mov eax,BMDModelLoad
CALL eax
PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH Folder
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}
void InitSets(int ItemID, char* ModelName, char* Folder, char* Form)
{
_asm
{
PUSH -1
PUSH ModelName
PUSH Form
PUSH ItemID
mov eax,BMDModelLoad
CALL eax
PUSH 1
PUSH 0x2600
PUSH 0x2901
PUSH Folder
PUSH ItemID
mov eax,OpenTexture
CALL eax
}
}
__declspec(naked) void PatchNewModel()
{
for (i = 5; i < 150; i++)
{
if(i > 35)//swords
{
sprintf_s(Item, "Sword%d", i+1);
InitModel(ITEM_GET(0, i), Item, ItemFolder, ItemDir);
}
if(i > 8)//axes
{
sprintf_s(Item, "Axe%d", i+1);
InitModel(ITEM_GET(1, i), Item, ItemFolder, ItemDir);
}
if(i > 18)//maces
{
sprintf_s(Item, "Mace%d", i+1);
InitModel(ITEM_GET(2, i), Item, ItemFolder, ItemDir);
}
if(i > 11)//spears
{
sprintf_s(Item, "Spear%d", i+1);
InitModel(ITEM_GET(3, i), Item, ItemFolder, ItemDir);
}
if(i > 24 && i < 210)//bow
{
sprintf_s(Item, "Bow%d", i+1);
InitModel(ITEM_GET(4, i), Item, ItemFolder, ItemDir);
}
if(i > 209 && i < 511)//crossbow
{
sprintf_s(Item, "Crossbow%d", i+1);
InitModel(ITEM_GET(4, i), Item, ItemFolder, ItemDir);
}
if(i > 36)//staff
{
sprintf_s(Item, "Staff%d", i+1);
InitModel(ITEM_GET(5, i), Item, ItemFolder, ItemDir);
}
if(i > 21)//shield
{
sprintf_s(Item, "Shield%d", i+1);
InitModel(ITEM_GET(6, i), Item, ItemFolder, ItemDir);
}
}
_asm
{
PUSH -1
PUSH 0x00D2D2F8
PUSH 0x00D2D300
PUSH 0x20B2
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnOffset
JMP eax
}
}
__declspec(naked) void PatchNewSets()
{
for (i = 5; i < 150; i++)
{
if(i > 74)//helms
{
sprintf_s(Sets, "HelmMale%d", i+1);
InitSets(ITEM_GET(7, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//armors
{
sprintf_s(Sets, "ArmorMale%d", i+1);
InitSets(ITEM_GET(8, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//pants
{
sprintf_s(Sets, "PantMale%d", i+1);
InitSets(ITEM_GET(9, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//gloves
{
sprintf_s(Sets, "GloveMale%d", i+1);
InitSets(ITEM_GET(10, i), Sets, PlayerFolder, PlayerDir);
}
if(i > 74)//boots
{
sprintf_s(Sets, "BootMale%d", i+1);
InitSets(ITEM_GET(11, i), Sets, PlayerFolder, PlayerDir);
}
}
_asm
{
PUSH -1
PUSH 0x00D2B770
PUSH 0x00D2B77C
PUSH 0x14DC
mov eax,BMDModelLoad
CALL eax
ADD ESP,0x10
mov eax,ReturnSetOffset
JMP eax
}
}
void AttachNewItems()
{
DWORD dwProtect;
//Patch new model in game
dwProtect = ToolKit.UnProtect(LoadModel, 50);
ToolKit.SetNop(LoadModel, 60);
ToolKit.WriteJmp(LoadModel, (DWORD)&PatchNewModel);
ToolKit.Protect(LoadModel, 60, dwProtect);
//Patch new sets in game
dwProtect = ToolKit.UnProtect(LoadSetModel, 50);
ToolKit.SetNop(LoadSetModel, 60);
ToolKit.WriteJmp(LoadSetModel, (DWORD)&PatchNewSets);
ToolKit.Protect(LoadSetModel, 60, dwProtect);
}
bool APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
{
AttachNewEffect();
//AttachNewItems();
}
break;
case DLL_PROCESS_DETACH:
{
}
break;
}
return true;
}
#pragma once
#include "Stdafx.h"
#include "Windows.h"
const int ITEM_ID = 0x493;
#define ITEM_GET(x, y) (x * 512 + y) + ITEM_ID
//Iris Bow ID
//type * maxindex + id = X + SwordOffsetInArray
//Albatross Bow 4 * 512 + 22 + 1171 = 0CA9 (IN HEX)
//Sword Breaker 0 * 512 + 27 + 1171 = 4AE (IN HEX)
//Wing of Dragon 12 * 512 + 5 + 1171 = 1C98 (IN HEX)
#define HDK_SET_ITEM_EFFECT 0x0057AD82//1.04d GMO
#define HDK_SET_COLOR_EFFECT 0x0057ADC8//1.04d GMO
#define HDK_ITEM_EFFECT_ALLOW 0x0057AD8D//1.04d GMO
#define HDK_ITEM_EFFECT_NOT_ALLOW 0x0057B73B//1.04d GMO
#define HDK_NEXT_ITEM_COLOR 0x0057ADFD//1.04d GMO
char *ItemDir = "Data\\Item\\";
char *ItemFolder = "Item\\";
char *PlayerDir = "Data\\Player\\";
char *PlayerFolder = "Player\\";
char Item[25];
char Sets[65];
int i;
//1.04c (GMO) Offsets
#define LoadModel 0x00618155
#define LoadSetModel 0x00615134
#define BMDModelLoad 0x00614090
#define ReturnOffset 0x0061816E
#define ReturnSetOffset 0x0061514D
#define OpenTexture 0x00613A90
void AttachNewItems();
void AttachNewEffect();
#define HDK_SET_ITEM_EFFECT 0x0057AD82
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);
__asm {
Mov pItemType, Ecx
}
dwPotect = ToolKit.UnProtect(HDK_SET_ITEM_EFFECT, 12);
ToolKit.SetNop(HDK_SET_ITEM_EFFECT, 12);
If you hook into this place of code, change register Ecx to Eax#define HDK_SET_ITEM_EFFECT 0x0057AD82
__asm
{
Mov pItemType, Ecx
}
__asm
{
Mov pItemType, [COLOR="#FF0000"][B]Eax[/B][/COLOR]
}