- Joined
- Oct 29, 2007
- Messages
- 1,289
- Reaction score
- 1,308
Hi again, here I like Release, my new and cool MiniMap Source Code (with New Method) this time, mini-images for minimap exists in only 1 folder... this modification... not make changes on: Loren Deep Original MiniMap. Enjoy it!
NOTE 1: This code can be adapted to old versions or maybe new versions too.. :
NOTE 2: On this code I only I'm using maybe a: 10% from Assembler !!! :
MiniMap.cpp
MiniMap.h:
Offsets and More:
Credits:
Webzen (Game)
zTeam (Main Decompilation)
MUEMU (By Some Codes)
DMichael (By Help Me)
Kiosani (By Programming)
NOTE 1: This code can be adapted to old versions or maybe new versions too.. :
NOTE 2: On this code I only I'm using maybe a: 10% from Assembler !!! :
MiniMap.cpp
Code:
#include "Stdafx.h"
cMinimap gMinimap;
bool cMinimap::FileCheck(int Map)
{
if(pMapNumber == Loren) { return 1; }
// ----
char buff[MAX_PATH];
// ----
wsprintf(buff,MINI_MAP_FILE_CHECK,(pMapNumber+1));
// ----
FILE* file;
// ----
this->CreateNewDir();
// ----
if (fopen_s(&file,buff,"r") != 0)
{
return 0;
}
else
{
fclose(file);
return 1;
}
}
bool cMinimap::CheckWindow(int WindowID)
{
return pCheckWindow(pWindowThis(), WindowID);
}
bool cMinimap::CheckThis()
{
if (this->CheckWindow(FastMenu) || this->CheckWindow(FriendList) || this->CheckWindow(FullMap))
{
return false;
}
return true;
}
DWORD cMinimap::CreateNewDir()
{
const int MiniMapFolder = 0x00888C0B;
static char Mini_Map_New[MAX_PATH] = {'\0'};
sprintf(Mini_Map_New,MINI_MAP_FILE_LOAD,pMapNumber+1);
// ----
*(DWORD*)MiniMapFolder = (DWORD)&Mini_Map_New;
// ----
return (DWORD)&Mini_Map_New;
}
void cMinimap::LoadImageForMap(DWORD MiniMapNewFolder, DWORD PrintCode)
{
static DWORD dwMiniMapFolder = this->CreateNewDir();
// ----
if (gMinimap.FileCheck(pMapNumber) != 0)
{
pLoadImage((char*)dwMiniMapFolder,0x7B7A,GL_LINEAR,GL_CLAMP,GL_TRUE,GL_FALSE);
}
}
int cMinimap::LoadMap(int Map)
{
static DWORD dwMiniMapFolder = this->CreateNewDir();
this->LoadImageForMap(dwMiniMapFolder,0x7B7A);
return Map;
}
bool cMinimap::MapCheckerCore1(int Map)
{
if(gMinimap.FileCheck(pMapNumber)!=0)
{
if (gMinimap.CheckThis() == false)
{
return 0;
}
else
{
return 1;
}
}
return 0;
}
void cMinimap::MapCheckerCore2(int Map)
{
static DWORD dwWindowThis = 0x00860FC0;
static DWORD dwGetWindow = 0x008615F0;
static DWORD dwDrawMobs = 0x00886C20;
// ----
if(gMinimap.FileCheck(pMapNumber)!=0)
{
if (gMinimap.CheckThis() == false)
{
return;
}
// ----
_asm
{
CALL dwWindowThis
MOV ECX,EAX
CALL dwGetWindow
MOV ECX,EAX
CALL dwDrawMobs
}
}
if (!pIsBloodCastle(Map))
{
return;
}
else
{
if (gMinimap.CheckThis() == false)
{
return;
}
}
}
void cMinimap::Load()
{
gToolKit.SetOp((LPVOID)oMapCheckerHook1,(LPVOID)this->MapCheckerCore1,ASM::CALL);
gToolKit.SetOp((LPVOID)oMapCheckerHook2,(LPVOID)this->MapCheckerCore1,ASM::CALL);
gToolKit.SetOp((LPVOID)oMapCheckerHook3,(LPVOID)this->MapCheckerCore2,ASM::CALL);
gToolKit.SetByte((PVOID)(oMiniMapKeyPushOffset+1),0x10);
}
MiniMap.h:
Code:
#ifndef __MINIMAP_H__
#define __MINIMAP_H__
#define MINI_MAP_FILE_LOAD "Custom\\Minimap\\Map%d.jpg"
#define MINI_MAP_FILE_CHECK ".\\Data\\Custom\\Minimap\\Map%d.ozj"
class cMinimap
{
public:
int LoadMap(int Map);
bool CheckThis();
bool FileCheck(int Map);
bool CheckWindow(int WindowID);
static bool MapCheckerCore1(int Map);
static void MapCheckerCore2(int Map);
static DWORD CreateNewDir();
void LoadImageForMap(DWORD MiniMapNewFolder, DWORD PrintCode);
// ----
void Load();
};
extern cMinimap gMinimap;
#endif
Offsets and More:
Code:
[COLOR=#008000]
[/COLOR]enum eObjWindow
{
FriendList = 1,
MoveList = 2,
Party = 3,
[COLOR=#ff8c00]Quest = 4, //NEW[/COLOR]
Guild = 6,
Trade = 7,
Warehouse = 8,
ChaosBox = 9,
CommandWindow = 10,
PetInfo = 11,
Shop = 12,
Inventory = 13,
Store = 14,
OtherStore = 15,
Character = 16,
ChatWindow = 33,
FastMenu = 34,
Options = 35,
Help = 36,
FastDial = 39,
[COLOR=#ff8c00]Mini_Map = 52, // NEW[/COLOR]
SkillTree = 57,
NPC_Titus = 63,
CashShop = 65,
FullMap = 72,
NPC_Dialog = 73,
GensInfo = 74,
NPC_Julia = 75,
ExpandInventory = 77,
ExpandWarehouse = 78,
[COLOR=#ff8c00]MuHelper = 79,[/COLOR]
};
[COLOR=#008000]
// -> Interface
[/COLOR][COLOR=#800080]#define pLoadImage ((int(__cdecl*)(char * Folder, int Code, int TextureMode, int TextureSet, int TextureState, int TextureHead)) 0x007721E0)[/COLOR]
[COLOR=#800080]#define pWindowThis ((LPVOID(*)()) 0x860FC0)[/COLOR]
[COLOR=#800080]#define pCheckWindow ((bool(__thiscall*)(LPVOID This, int Code)) 0x0085EAD0)[/COLOR]
[COLOR=#008000]
// -> Minimap[/COLOR]
[COLOR=#800080]#define oMapCheckerHook1 0x007D3B6D[/COLOR]
[COLOR=#800080]#define oMapCheckerHook2 0x00886B87[/COLOR]
[COLOR=#800080]#define oMapCheckerHook3 0x0062EB3D[/COLOR]
[COLOR=#800080]#define oMiniMapKeyPushOffset 0x007D3B55 //0x09 = TAB - 0x10 = SHIFT
[/COLOR][COLOR=#800080]#define pMapNumber *(int*)0x00E61E18[/COLOR]
[COLOR=#800080]#define pIsBloodCastle ((bool(__cdecl*)(int Map))0x004E65C0)[/COLOR]
Credits:
Webzen (Game)
zTeam (Main Decompilation)
MUEMU (By Some Codes)
DMichael (By Help Me)
Kiosani (By Programming)
Last edited: