- Joined
- Oct 29, 2007
- Messages
- 1,288
- Reaction score
- 1,305
Pet DL work perfect..
cool but.. on my opinion.. Season 6 Episode 3 is a horrible version bro.. Master Skill Three maybe is upgrade with more Buff's and anothers shits (this is easy to make on client side too, something like: ExTeam Rage System) xD, but the Webzen Company Designers make changes on: "Interface Style", with new style from: Ex700 series, and this is poop.. because... the rest of interfaces parts are like: "old style" -> (Season 4) and Rage Fighter Character is not good.. (well I don't like this char).. then I preffer use like: Season 5 Episode 4 Full GMO (Summoner Character have Master Skill Three too)... and this version have less bugs (NO DarkSide BUG to fix, and etc) XD, and I can add on more easy way all items that I need.. (without Edit: ItemToolTip.bmd and ItemToolTipText.bmd files, that is a very slow process for much added Weapons/Sets Parts)... Cash Shop and Item Period System 100% Works (is the same that on: 1.04d maybe some small differences) in my opinion is better work with: Season 5.4 Client xD (and for this version I can put all cool Arieth 4th Level Wings + Original Effects created by sobieh, and anothers items with effects too) xD :
PS: Summoner Master Skill Three Preview on: (Season 5.4 GMO)
PS 2: Here I leave for all -> FULL MINIMAP SRC WITH OFFSETS TO: 1.04D GMO (With my new cool way to hooking on DLL using: Class or Virtual Class only on Hook Function ; )
Enjoy it !
Code:
#include "stdafx.h"
#include "MiniMap.h"
#include "TMemory.h"
#include "Interface.h"
[COLOR=#b22222][B]// Buffers -> Using this method.. is not necesary mov esi, 0x00XXX or: mov edi, //0x00XX and prevents.. possible problems with information registers
[/B][/COLOR]
[COLOR=#b22222][B]DWORD LoadImg1 = 0x007721E0;[/B][/COLOR]
[COLOR=#b22222][B]DWORD LoadMap1 = 0x00860FC0;[/B][/COLOR]
[COLOR=#b22222][B]DWORD LoadMap2 = 0x008615F0;[/B][/COLOR]
[COLOR=#b22222][B]DWORD LoadMap3 = 0x00886C20;[/B][/COLOR]
[COLOR=#b22222][B]DWORD LoadMap4 = 0x004E65C0;[/B][/COLOR]
MiniMap gMiniMap; [COLOR=#ffa07a]//Small MiniMap Class Initialization (Only for: Hook Main Function)[/COLOR]
bool IsValidMap(int MapId)
{
char FullMapName[200];
sprintf_s(FullMapName, "World%d\\Map1.jpg", MapId + 1);
struct stat buffer;
if (stat(FullMapName, &buffer)) [COLOR=#40e0d0]// -> On this way Minimap not have crashs on Event Maps... xD[/COLOR]
{
switch (MapId)
{
case 0: return true;//Lorencia
case 1: return true;//Dungeon
case 2: return true;//Devias
case 3: return true;//Noria
case 4: return true;//LostTower
case 6: return true;//Stadium
case 7: return true;//Atlans
case 8: return true;//Tarkan
case 10: return true;//Icarus
case 24: return true;//Kalima 1
case 25: return true;//Kalima 2
case 26: return true;//Kalima 3
case 27: return true;//Kalima 4
case 28: return true;//Kalima 5
case 29: return true;//Kalima 6
case 30: return true;//Valley of Loren
case 31: return true;//Land of Trials
case 33: return true;//Aida
case 34: return true;//Crywolf
case 36: return true;//Kanturu 1
case 37: return true;//Kanturu 2
case 38: return true;//Kanturu 3
case 42: return true;//Barracks
case 51: return true;//Elbeland
case 56: return true;//Swamp of Calmness
case 57: return true;//Raklion
case 58: return true;//Raklion Boss
case 63: return true;//Vulcanus
case 80: return true;//Kalrutan 1
case 81: return true;//Kalrutan 2
// Invalid MiniMap
default: return false;
}
}
return false;
}
void LoadImageJpgForMap(char* ImagePatch, DWORD PrintCode)
{
_asm
{
PUSH 0
PUSH 1
PUSH 0x2900
PUSH 0x2601
PUSH 0x7B7A
PUSH ImagePatch
CALL LoadImg1 [COLOR=#ff8c00]// -> Here is not used: mov edi and anothers bad instructions to memory is only direct CALL to Main Offset[/COLOR] :D:
ADD ESP,0x18
}
}
int LoadMap(int Map)
{
char FullMapName[200];
sprintf(FullMapName, "World%d\\Map1.jpg", Map + 1);
ChangePath(FullMapName);
LoadImageJpgForMap(FullMapName, 0x7B7A);
return Map;
}
void ChangePath(const char* Map)
{
memset((DWORD*)0xD4A654, 0, 19);
memcpy((DWORD*)0xD4A654, Map, 17);
}
bool MapCheckerCore1(int Map)
{
if (IsValidMap(Map))
{
return 1;
}
return 0;
}
void MapCheckerCore2(int Map)
{
if (IsValidMap(Map))
{
LoadMap(Map);
_asm
{
CALL LoadMap1
MOV ECX, EAX
CALL LoadMap2
MOV ECX, EAX
CALL LoadMap3
}
}
_asm
{
PUSH Map
CALL LoadMap4 [COLOR=#ff0000]// -> Here on: 1.04d main.exe is not necesary POP EBP instruction.. I don't know why ^^ I like think that is by call convention type (__cdecl or __stdcall on original main function).[/COLOR]
}
}
[COLOR=#ff0000]#define oMapCheckerHook1 0x007D3B6D[/COLOR]
[COLOR=#ff0000]#define oMapCheckerHook2 0x00886B87[/COLOR]
[COLOR=#ff0000]#define oMapCheckerHook3 0x0062EB3D[/COLOR]
[B][COLOR=#ee82ee]//--------------------------------------------------------------------------------------------[/COLOR][/B]
[B][COLOR=#ee82ee]// Cool Info ^^[/COLOR][/B]
[B][COLOR=#ee82ee]//--------------------------------------------------------------------------------------------[/COLOR][/B]
[B][COLOR=#ee82ee]#define oMiniMapKeyPushOffset 0x007D3B55 //0x09 = TAB - 0x10 = SHIFT[/COLOR][/B]
[B][COLOR=#ee82ee]#define oMiniMapKeyCallOffset 0x007D3B6D //This call must be hook to MapCheckerCore1 proc[/COLOR][/B]
[B][COLOR=#ee82ee]// -------------------------------------------------------------------------------------------[/COLOR][/B]
[B][COLOR=#ee82ee]#define oScreenMapKeyOffset 0x007D3BA5 //0x09 = TAB - 0x10 = SHIFT[/COLOR][/B]
void [COLOR=#008000]MiniMap::Load()[/COLOR]
{
[COLOR=#ff0000]SetOp((LPVOID)oMapCheckerHook1, (LPVOID)MapCheckerCore1, ASM::CALL);[/COLOR]
[COLOR=#ff0000] SetOp((LPVOID)oMapCheckerHook2, (LPVOID)MapCheckerCore1, ASM::CALL);[/COLOR]
[COLOR=#ff0000] SetOp((LPVOID)oMapCheckerHook3, (LPVOID)MapCheckerCore2, ASM::CALL);[/COLOR]
}
Code:
#pragma once
// ----------------------------------------------------------------------------------------------
#include "Import.h" [COLOR=#ff0000]// -> This is not necesary.. on my zClient Modified Source I only use this.. to make a small new mod (is TEST) xD[/COLOR]
// ----------------------------------------------------------------------------------------------
int LoadMap(int Map);
void LoadImageJpgForMap(char* ImagePath, DWORD PrintCode);
bool MapCheckerCore1(int Map);
void MapCheckerCore2(int Map);
void ChangePath(const char*Map);
bool IsValidMap(int MapId);
[COLOR=#008000]class MiniMap[/COLOR]
[COLOR=#008000]{[/COLOR]
[COLOR=#008000]public:[/COLOR]
[COLOR=#008000] void Load();[/COLOR]
[COLOR=#008000] // ----[/COLOR]
[COLOR=#008000]}; extern MiniMap gMiniMap;[/COLOR]
PS 4: Sorry I don't make a external HOOK Function to change MiniMap Key... but if you change this "PUSH 9" offset: #define oMiniMapKeyPushOffset 0x007D3B55, directly with ollydbg on your main.exe then.. your MINIMAP is SHOW/HIDE using: Shift Keys (PUSH 10) or you can change too: oScreenMapKeyPushOffset (is the same), but for this exists a small check function into the main.. I mean a: "JNZ" instruction.. you must change this too or your: Screen Map is not Close event using: Shift key xD.
PS 5: And I leave here my cool: "Patch" to any Client: 1.04d version, to put MiniMaps on every: "WorldXX" Folder.. with every Mini Image (Remaked from: ScreenMaps TGA and converted to: JPG, have better quality)..
You must be registered to see links
Attachments
You must be registered for see attachments list
Last edited: