the minimap is in trouble when you go to Blood Castle 8 .
Error! Data/World53/EncTerrain53.att
help help help
Printable View
minimap src must be re-structed for example this:
Code:void MiniLoad(){
int Map;
char FullMapName[200];
Map = *(unsigned char*)0x00E61E18;
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 51 || Map == 56 || Map == 57 || Map == 63)
{
sprintf_s(FullMapName,"World%d\\Map1.jpg",Map+1);
*(BYTE*)(0x0087E119) = 0xEB;
memcpy((DWORD*)0xD30008,FullMapName,17);
}
else if( Map == 77 || Map == 78)
{
*(BYTE*)(0x00886B94) = 0x75;
}
else
{
*(BYTE*)(0x00886B94) = 0x75;
}
if( Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 || Map == 18 ||
Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23)
{
IsMiniMap = 0;
}
else
{
IsMiniMap = 1;
}
}
Another good option would be to do the same work as sobieh made in older versions of old: AriethMu, with radar minimap custom style, or as I did in: Kalimdor Project V2, for: 0.99B+, but is more difficult to find offsets functions needed in this version of main.exe
mauro07 not work
Minimap.h
Minimap.cppQuote:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
char * GetMap(int map);
void MiniMap();
main.cppQuote:
#include "Stdafx.h"
#include "Minimap.h"
void HookExactOffset(DWORD my, DWORD tohook, BYTE type)
{
*(BYTE*)tohook = type;
*(DWORD*)(tohook+1) = my;
}
void HookThis(DWORD dwMyFuncOffset,DWORD dwJmpOffset)
{
*(DWORD*)(dwJmpOffset+1)=dwMyFuncOffset-(dwJmpOffset+5);
}
void ChangePath(const char* Map, ...)
{
memcpy((DWORD*)0xD4A654,Map,17);//good
HookExactOffset(0xD4A654,0x00888C0A,0x68);//good
}
void LoadImageJpgForMap(char* ImagePatch, DWORD PrintCode)
{
_asm
{
Mov Edi, 0x007721E0//good
Push 0x1
Push 0x2900
Push 0x2601
Push 0x7B7A
Push 0xD4A654//good
Call Edi
Add Esp,0x18
}
}
int LoadMap(int Map)
{
char FullMapName[200];
sprintf_s(FullMapName,"World%d\\Map1.jpg",Map+1);
ChangePath(FullMapName);
LoadImageJpgForMap(FullMapName, 0x7B7A);
return Map;
}
bool MapChecker1(int Map)
{
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 6 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 42 || Map == 51 || Map == 52 || Map == 57 || Map == 63 || Map == 80 || Map == 81)
{
return 1;
}
return 0;
}
char FullMapName[200];
void MapChecker2(int Map)
{
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 6 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 42 || Map == 51 || Map == 52 || Map == 57 || Map == 63 || Map == 80 || Map == 81)
{
LoadMap(Map);
_asm
{
MOV EDI, 0x00860FC0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x008615F0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x00886C20
CALL EDI
}
Sleep(100);
}
else if( Map == 77 || Map == 78)
{
*(BYTE*)(0x00886B94) = 0x75;
}
else
{
*(BYTE*)(0x00886B94) = 0x75;
}
}
void MiniLoad()
{
int Map;
char FullMapName[200];
Map = *(unsigned char*)0x00E61E18;
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 6 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 42 || Map == 51 || Map == 52 || Map == 56 || Map == 57 || Map == 63 || Map == 80 || Map == 81)
{
sprintf_s(FullMapName,"World%d\\Map1.jpg",Map+1);
*(BYTE*)(0x0087E119) = 0xEB;
memcpy((DWORD*)0xD30008,FullMapName,17);
}
else if( Map == 77 || Map == 78)
{
*(BYTE*)(0x00886B94) = 0x75;
}
else
{
*(BYTE*)(0x00886B94) = 0x75;
}
if( Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 || Map == 18 ||
Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23)
{
int IsMiniMap = 0;
}
else
{
int IsMiniMap = 1;
}
}
void MiniMap()
{
*(BYTE*)(0x007D3B7B) = 0x90;
*(BYTE*)(0x007D3B7B+1) = 0x90;
HookThis((DWORD)&MapChecker1, 0x00886B87);
HookThis((DWORD)&MapChecker2, 0x0062EB3D);
}
Quote:
#include <windows.h>
#include "Minimap.h"
int *MAP_CHECK = (int*)0x00E61E18; //1.04D
int *MAIN_STATE = (int*)0x00E609E8; //1.04D
int IsMiniMap = GetPrivateProfileIntA("TuyChinh","Bat_Tat_MiniMap",1,"./config.ini");
BOOL APIENTRY DllMain(HINSTANCE hDll, DWORD callReason, LPVOID lpReserved) {
if(callReason == DLL_PROCESS_ATTACH){
if(IsMiniMap == 1 )
{
MiniMap();
}
}
This is my design for Minimap src in my new project called: "GameEngine":
Minimap src part of: GameEngine.cpp
Minimap src part of GameEngine.hCode:#include "GameEngine.h"
int IsMiniMap = GetPrivateProfileIntA("Engine","MiniMap",0,".\\Engine.ini");
void HookExactOffset(DWORD my, DWORD tohook, BYTE type)
{
*(BYTE*)tohook = type;
*(DWORD*)(tohook+1) = my;
}
void HookThis(DWORD dwMyFuncOffset,DWORD dwJmpOffset)
{
*(DWORD*)(dwJmpOffset+1)=dwMyFuncOffset-(dwJmpOffset+5);
}
void ChangePath(const char* Map, ...)
{
memcpy((DWORD*)0xD4A654,Map,17);
HookExactOffset(0xD4A654,0x00888C0A,0x68);
}
void LoadImageJpgForMap(char* ImagePatch, DWORD PrintCode)
{
_asm
{
Mov Edi,0x007721E0
Push 0x1
Push 0x2900
Push 0x2601
Push 0x7B7A
Push 0xD4A654
Call Edi
Add Esp,0x18
}
}
int LoadMap(int Map)
{
char FullMapName[200];
sprintf_s(FullMapName,"World%d\\Map1.jpg",Map+1);
ChangePath(FullMapName);
LoadImageJpgForMap(FullMapName, 0x7B7A);
return Map;
}
bool MapChecker1(int Map)
{
if(IsMiniMap == 0)
{
return 0;
}
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 51 || Map == 56 || Map == 57 || Map == 63 || Map == 64 || Map == 65 ||
Map == 80 || Map == 81)
{
return 1;
}
return 0;
}
char FullMapName[200];
void MapChecker2(int Map)
{
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 51 || Map == 56 || Map == 57 || Map == 63 || Map == 64 || Map == 65 ||
Map == 80 || Map == 81)
{
LoadMap(Map);
_asm
{
MOV EDI, 0x00860FC0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x008615F0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x00886C20
CALL EDI
}
Sleep(100);
}
else if( Map == 77 || Map == 78)
{
*(BYTE*)(0x00886B94) = 0x75;
}
else
{
*(BYTE*)(0x00886B94) = 0x75;
}
}
void MiniLoad()
{
int Map;
char FullMapName[200];
Map = *(unsigned char*)0x00E61E18;
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 51 || Map == 56 || Map == 57 || Map == 63)
{
sprintf_s(FullMapName,"World%d\\Map1.jpg",Map+1);
*(BYTE*)(0x0087E119) = 0xEB;
memcpy((DWORD*)0xD30008,FullMapName,17);
}
else if( Map == 77 || Map == 78)
{
*(BYTE*)(0x00886B94) = 0x75;
}
else
{
*(BYTE*)(0x00886B94) = 0x75;
}
if( Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 || Map == 18 ||
Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23)
{
IsMiniMap = 0;
}
else
{
IsMiniMap = 1;
}
}
void MiniMap()
{
*(BYTE*)(0x007D3B7B) = 0x90;
*(BYTE*)(0x007D3B7B+1) = 0x90;
HookThis((DWORD)&MapChecker1, 0x00886B87);
HookThis((DWORD)&MapChecker2, 0x0062EB3D);
}
extern "C" _declspec(dllexport) void Init()
{
DWORD OldProtect;
if(VirtualProtect(LPVOID(0x401000),0x00A60F74,PAGE_EXECUTE_READWRITE,&OldProtect))
{
MiniMap();
}
else
{
MessageBoxA(NULL,"Cannot load GameEngine.dll","Error",MB_OK);
ExitProcess(0);
}
}
Code:#pragma once
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <process.h>
int LoadMap(int Map);
int GetMap();
bool MapChecker1(int Map);
void MapChecker2(int Map);
void LoadImageJpgForMap(char* ImagePatch,DWORD PrintCode);
void MiniMap();
mauro07 not work
:D
Each BC 1 -> 8
Including MAP 20 -> 24 (CC) OK
newpsp88: For me, my source code: GameEngine, works perfectly... I upload some pictures later in the game, to show that it works effectively.
PS: A clear exception, the BloodCastle 8, for that reason that I decided to remove the minimap of all maps that are of Events.
Look this section of my code:
Code:if( Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 ||
Map == 18 || Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23)
{
IsMiniMap = 0;
}
else
{
IsMiniMap = 1;
}
minimap is in trouble when you go every Blood Castle..:(
it seems is a lack of code...
original vcorp minimap:
i think one of the bold line is responsible with Blood Castle map (do not know which and i do not have main.exe for this source to compare offsets...)Quote:
void MiniMap()
{
*(BYTE*)(0x60D907) = 0x90;
*(BYTE*)(0x60D907+1) = 0x90;
*(DWORD*)(0x6D4E9A+1) = (DWORD)MapChecker1 - 0x6D4E9F;
*(DWORD*)(0x723CD3+1) = (DWORD)MapChecker1 - 0x723CD8;
*(DWORD*)(0x5E296A+1) = (DWORD)MapChecker2 - 0x5E296F;
}
mauro07,
none of your solution can not solve problem, because you do not usefunction anywhere...!!Quote:
MiniLoad()
trying something like this:
but unsuccessful :((Quote:
void checkmapload()
{
if (IsMiniMap == 1)
{
if (*MAP_CHECK != 0xC || *MAP_CHECK != 0xD || *MAP_CHECK != 0xE || *MAP_CHECK != 0xF || *MAP_CHECK != 0x10 || *MAP_CHECK != 0x11 || *MAP_CHECK != 0x34)
{
MiniMap();
}
}
}
yes, is true... vcorp original code use: 2 hooks for the function of: TAB switcher in: MapChecker1... but.. dosn't necesseary compare nothing... is only make 1 research, the vcorp src is for: 1.03g main.exe version, I have too (complete src), but I don't know that protocol: KOR or JPN... because all main.exe of series: 1.03 of KOREA, are: Season 2 and.. in: S2 not exist: Vulcanus Map, and this src of vcorp have Vulcanus in a case for minimap xD is really confused, but if this main.exe is: 1.03 of: JPN Protocol, then all have more logic... JPN 1.03 Series are: Season 4 xD.
Current solution is:
When users on the first option and burn the file
I chicken english
I'm done in adding Blood Castle + Chaos Castle + Kalima to Mini Map List
Here is the Client Patch for working:
And here is Minimap.cpp
Quote:
#include "Stdafx.h"
#include "Minimap.h"
void HookExactOffset(DWORD my, DWORD tohook, BYTE type)
{
*(BYTE*)tohook = type;
*(DWORD*)(tohook+1) = my;
}
void HookThis(DWORD dwMyFuncOffset,DWORD dwJmpOffset)
{
*(DWORD*)(dwJmpOffset+1)=dwMyFuncOffset-(dwJmpOffset+5);
}
void ChangePath(const char* Map, ...)
{
memcpy((DWORD*)0xD4A654,Map,17);//good
HookExactOffset(0xD4A654,0x00888C0A,0x68);//good
}
void LoadImageJpgForMap(char* ImagePatch, DWORD PrintCode)
{
_asm
{
Mov Edi, 0x007721E0//good
Push 0x1
Push 0x2900
Push 0x2601
Push 0x7B7A
Push 0xD4A654//good
Call Edi
Add Esp,0x18
}
}
int LoadMap(int Map){
char FullMapName[200];
switch(Map){
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 52:
sprintf_s(FullMapName,"World%d\\Map1.jpg",12);
ChangePath(FullMapName);
LoadImageJpgForMap(FullMapName, 0x7B7A);
break;
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 53:
sprintf_s(FullMapName,"World%d\\Map1.jpg",19);
ChangePath(FullMapName);
LoadImageJpgForMap(FullMapName, 0x7B7A);
break;
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 36:
sprintf_s(FullMapName,"World%d\\Map1.jpg",25);
ChangePath(FullMapName);
LoadImageJpgForMap(FullMapName, 0x7B7A);
break;
default:
sprintf_s(FullMapName,"World%d\\Map1.jpg",Map+1);
ChangePath(FullMapName);
LoadImageJpgForMap(FullMapName, 0x7B7A);
break;
}
return Map;
}
bool MapChecker1(int Map)
{
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 6 || Map == 7 || Map == 8 ||
Map == 10 ||
Map == 24 || Map == 25 || Map == 26 || Map == 27 || Map == 28 || Map == 29 || Map == 36 ||
Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 11 || Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 || Map == 52 ||
Map == 18 || Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23 || Map == 53 ||
Map == 41 || Map == 42 || Map == 51 || Map == 56 || Map == 57 || Map == 63 || Map == 79 || Map == 80 || Map == 81)
{
return 1;
}
return 0;
}
char FullMapName[200];
void MapChecker2(int Map)
{
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 6 || Map == 7 || Map == 8 ||
Map == 10 ||
Map == 24 || Map == 25 || Map == 26 || Map == 27 || Map == 28 || Map == 29 || Map == 36 ||
Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 11 || Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 || Map == 52 ||
Map == 18 || Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23 || Map == 53 ||
Map == 41 || Map == 42 || Map == 51 || Map == 56 || Map == 57 || Map == 63 || Map == 79 || Map == 80 || Map == 81)
{
LoadMap(Map);
_asm
{
MOV EDI, 0x00860FC0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x008615F0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x00886C20
CALL EDI
}
Sleep(100);
}
else if( Map == 77 || Map == 78)
{
*(BYTE*)(0x00886B94) = 0x75;
}
else
{
*(BYTE*)(0x00886B94) = 0x75;
}
}
void MiniMap()
{
*(BYTE*)(0x007D3B7B) = 0x90;
*(BYTE*)(0x007D3B7B+1) = 0x90;
HookThis((DWORD)&MapChecker1, 0x00886B87);
HookThis((DWORD)&MapChecker2, 0x0062EB3D);
}
Thanks for share your fixes with me and all community, In a few days, I'll be making updates to the project: GameEngine for: 1.04d and to the Beta version: MU Ex7XX -> (1.04.14).
GameEngine Project is a FREE Development, and NOW has its own website, can see it in my signature.
Not at all!
Could you please fix Camera Zoom Out of your GameEngine Project for Main 1.04d ^^
And put the option for turning off New Chat System
I have source of new Chat system that have colour customizable :)
May I sent you for test? and if you like, please add to your project ^^
here it is an elegant solution for minimap BC trouble:
Quote:
bool MapChecker1(int Map)
{
if( Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 ||
Map == 18 || Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23 || Map == 52 || Map == 53)
{
return 0;
}
if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 6 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 42 || Map == 51 || Map == 56 || Map == 57 || Map == 58 || Map == 63 || Map == 80 || Map == 81)
{
return 1;
}
return 0;
}
char FullMapName[200];
void MapChecker2(int Map)
{
if( Map == 12 || Map == 13 || Map == 14 || Map == 15 || Map == 16 || Map == 17 ||
Map == 18 || Map == 19 || Map == 20 || Map == 21 || Map == 22 || Map == 23 || Map == 52 || Map == 53)
{
_asm
{
MOV EDI, 0x00886B87
CALL EDI
}
Sleep(100);
}
else if( Map == 0 || Map == 1 || Map == 2 || Map == 3 || Map == 4 || Map == 6 || Map == 7 || Map == 8 ||
Map == 10 || Map == 24 || Map == 30 || Map == 31 || Map == 33 || Map == 34 || Map == 37 || Map == 38 ||
Map == 41 || Map == 42 || Map == 51 || Map == 56 || Map == 57 || Map == 58 || Map == 63 || Map == 80 || Map == 81)
{
LoadMap(Map);
_asm
{
MOV EDI, 0x00860FC0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x008615F0
CALL EDI
MOV ECX,EAX
MOV EDI, 0x00886C20
CALL EDI
}
Sleep(100);
}
else if( Map == 77 || Map == 78)
{
*(BYTE*)(0x00886B94) = 0x75;
}
else
{
*(BYTE*)(0x00886B94) = 0x75;
}
}
Give thanks to vcorp :) and thanks to you for remember to me this :) and that solution from all members that was posted here are USELESS :) not works, it solution that make vcorp and reposted for aecrimch works ok :)
very good.. Minimap src is now complete, but is lacking.. change: TAB key into the main.exe for minimap by: SHIFT KEY or another..
Well maybe some of you remember, when I made my first development for main: 1.04c to load custom items above id: 127, one of the problems that remained unsolved in this compilation was that some items, such as: Elf Bows, added using the new loop load items, did not have the correct position in the character's inventory, a small visual bug, which is actually due to missing write an additional code section for arcs Elf and crossbows, well doing a simple research the other day, this time in main.exe: 1.04d GMO, found the offset from the beginning of the function inside the main.exe which is responsible for rotating the position of the 3D model seen from inventory, the original function is one of the original arches made by: Webzen, Albatross Bow of season 2, but can be hooked and modified to redirect all of the new bows index uploaded through the loop in the dll in the next few days I'll be working on this, to see if I can make a working code to fix this annoying problem, and related loading new: Crossbows of Elf.
Main version: 1.04.04 GMO or Eng Protocol
Example of code(not tested) writed by me:Code:005CA683 \817D 08 981C0 CMP DWORD PTR SS:[EBP+8],0CA9 //Here start the Function, 0CA9 = Is Albatross Bow ObjId in main
USANDO ESTE OFFSET DEL: ALBATROSS BOW, PODEMOS ARREGLAR LA POSICION DE LOS ARCOS AGREGADOS
EN EL INVENTARIO DEL PERSONAJE.
USING THIS OFFSET OF: ALBATROSS BOW, we can fix the position of the all Bows Added by new Loop for load more items in
CHARACTER INVENTORY.
PS: I would like to clarify, for those who want to try it as I do, that for me apparently the best way to rewrite the code would be doing directly: asm, because otherwise it would have to re-write many additional features related to items I refer of course, to the case of completely decompile this function and then re-write it in native language: C++Code:__declspec(naked) void BowsInvenPosFix(){
_asm
{
CMP DWORD PTR SS:[EBP+0x8],0x0CAA
JNZ CustomBow1
FLD DWORD PTR SS:[EBP-0x4C]
FSUB QWORD PTR DS:[0x0D24388]
FSTP DWORD PTR SS:[EBP-0x4C]
FLD DWORD PTR SS:[EBP-0x48]
FADD QWORD PTR DS:[0x0D2B820]
FSTP DWORD PTR SS:[EBP-0x48]
FLD DWORD PTR DS:[0x0D2AF5C]
FSTP DWORD PTR DS:[0x82C6320]
FLD DWORD PTR DS:[0x0D22C08]
FSTP DWORD PTR DS:[0x82C6324]
FLD DWORD PTR DS:[0x0D24384]
FSTP DWORD PTR DS:[0x82C6328]
JMP Return
CustomBow1:
CMP DWORD PTR SS:[EBP+0x8],0x0XXX//Custom Bows Id
JNZ CustomBowX //X = A number for Identifier a Bow of other
FLD DWORD PTR SS:[EBP-0x4C]
FSUB QWORD PTR DS:[0x0D24388]
FSTP DWORD PTR SS:[EBP-0x4C]
FLD DWORD PTR SS:[EBP-0x48]
FADD QWORD PTR DS:[0x0D2B820]
FSTP DWORD PTR SS:[EBP-0x48]
FLD DWORD PTR DS:[0x0D2AF5C]
FSTP DWORD PTR DS:[0x82C6320]
FLD DWORD PTR DS:[0x0D22C08]
FSTP DWORD PTR DS:[0x82C6324]
FLD DWORD PTR DS:[0x0D24384]
FSTP DWORD PTR DS:[0x82C6328]
JMP Return
Return:
mov edi, 0x005CA6D6
call edi
}
}
void FixBowsHook()
{
//Hook Fix Inventory Position Bows
BYTE FixBowsPos[] = { 0xFF, 0x25, 0xBC, 0x1F, 0xD2, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x005CA68C,FixBowsPos,sizeof(FixBowsPos));
*(unsigned int*)0x00D21FBC = (unsigned int)BowsInvenPosFix;
}
Who has the offsets for 3d camera and fog of main 1.03B+ GMO (1.03.28)
Thanks for this and Can anyone here give me the source or the compiled one of the Chatwnd? Thanks :)
as leaving the transparency in the fog?
Ex:
Attachment 128579
My Fog =/
Attachment 128580
i need the chatwnd source as well.....maybe someone can post it here ?.
ChatWnd.cpp
ChatWnd.hQuote:
#include "StdAfx.h"
#include "ChatWnd.h"
#include "ToolKit.h"
DWORD dwMsgType;
DWORD dwYpos;
DWORD dwHeight;
DWORD dwMsgCnt;
DWORD dwScrollPos;
int SystChatSepar = GetPrivateProfileIntA("SystChatSepar", "CoordY", 150, ".\\Custom\\Settings.ini");
__declspec(naked) void ShowSysMsgs()
{
__asm {
call GetDisplayMsgType
mov dwMsgType, eax
MOV ECX, DWORD PTR SS:[EBP-4]
MOV EAX, DWORD PTR DS:[ECX+0xB4]
MOV dwYpos, EAX
MOV EAX, DWORD PTR DS:[ECX+0xC4]
MOV dwHeight, EAX
// ----
MOV EDX, [SystChatSepar]
MOV DWORD PTR DS:[ECX+0xB4], EDX
MOV DWORD PTR DS:[ECX+0xC4], 0x64
MOV EAX, DWORD PTR DS:[ECX+0xC8]
MOV dwMsgCnt, EAX
MOV DWORD PTR DS:[ECX+0xC8], 6
MOV EAX, DWORD PTR DS:[ECX+0xD4]
MOV dwScrollPos, EAX
PUSH 3
MOV ECX, DWORD PTR SS:[EBP-4]
CALL SetDisplayMsgType
MOV ECX, DWORD PTR SS:[EBP-4]
CALL ShowChatMsgs
MOV ECX, DWORD PTR SS:[EBP-4]
PUSH dwMsgType
CALL SetDisplayMsgType
MOV ECX, DWORD PTR SS:[EBP-4]
MOV EAX, dwYpos
MOV DWORD PTR DS:[ECX+0xB4], EAX
MOV EAX, dwHeight
MOV DWORD PTR DS:[ECX+0xC4], EAX
MOV EAX, dwMsgCnt
MOV DWORD PTR DS:[ECX+0xC8], EAX
MOV EAX, dwScrollPos
MOV DWORD PTR DS:[ECX+0xD4], EAX
MOV ECX, DWORD PTR SS:[EBP-4]
CALL ShowChatMsgs
retn
}
}
__declspec(naked) void FixSysMsg1()
{
__asm {
cmp dword ptr ss:[ebp+0x10], 3
je _true
call NewCall
jmp FixSysMsg1_FALSE
_true:
pop eax
jmp FixSysMsg1_TRUE
}
}
__declspec(naked) void FixSysMsg2()
{
__asm {
cmp dword ptr ss:[ebp+0x10], 3
je _true
call NewCall
jmp FixSysMsg2_FALSE
_true:
pop eax
jmp FixSysMsg2_TRUE
}
}
__declspec(naked) void FixSysMsg3()
{
__asm {
cmp dword ptr ss:[ebp+0x10], 3
je _true
call NewCall
jmp FixSysMsg3_FALSE
_true:
pop eax
jmp FixSysMsg3_TRUE
}
}
void ChatWndHooks()
{
HookThis((DWORD)ShowSysMsgs, ShowChatMsgsCall_Hook);
WriteJmp(FixSysMsg1_Hook, (DWORD)FixSysMsg1);
WriteJmp(FixSysMsg2_Hook, (DWORD)FixSysMsg2);
WriteJmp(FixSysMsg3_Hook, (DWORD)FixSysMsg3);
}
Quote:
#pragma once
const int GetDisplayMsgType = 0x6F7FE0;
const int SetDisplayMsgType = 0x6F7F95;
const int ShowChatMsgs = 0x6F5584;
const int ShowChatMsgsCall_Hook = 0x6F7927;
const int NewCall = 0x8510BA;
const int FixSysMsg1_Hook = 0x6F60AC;
const int FixSysMsg1_FALSE = FixSysMsg1_Hook+5;
const int FixSysMsg1_TRUE = 0x6F6165;
const int FixSysMsg2_Hook = 0x6F63B3;
const int FixSysMsg2_FALSE = FixSysMsg2_Hook+5;
const int FixSysMsg2_TRUE = 0x6F64B6;
const int FixSysMsg3_Hook = 0x6F6715;
const int FixSysMsg3_FALSE = FixSysMsg3_Hook+5;
const int FixSysMsg3_TRUE = 0x6F67DA;
void ChatWndHooks();
What version are those offsets from ? I'll test this source.
i want change location show minimaps, how to change ?