Please help Mini Map

Results 1 to 1 of 1
  1. #1
    Proficient Member pravednik is offline
    MemberRank
    Feb 2014 Join Date
    179Posts

    sad Please help Mini Map

    Hi guys ! Help to understand what's wrong ?
    The problem is that of the z mini map the client has not closed till the end what's wrong ?

    https://youtu.be/gViuT4eu3kY

    I did this:

    MiniMap.cpp
    #include "stdafx.h"#include "MiniMap.h"
    #include "TMemory.h"
    #include "Interface.h"
    #include <sys/stat.h>


    DWORD LoadImg1 = 0x007721E0;
    DWORD LoadMap1 = 0x00860FC0;
    DWORD LoadMap2 = 0x008615F0;
    DWORD LoadMap3 = 0x00886C20;
    DWORD LoadMap4 = 0x004E65C0;




    MiniMap gMiniMap; //Small MiniMap Class Initialization (Only for: Hook Main Function)




    bool IsValidMap(int MapId)
    {
    char FullMapName[200];
    sprintf_s(FullMapName, "World%d\\Map1.jpg", MapId + 1);




    struct stat buffer;




    if (stat(FullMapName, &buffer)) // -> On this way Minimap not have crashs on Event Maps... xD
    {
    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 // -> Here is not used: mov edi and anothers bad instructions to memory is only direct CALL to Main Offset
    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 // -> 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).
    }
    }




    #define oMapCheckerHook1 0x007D3B6D
    #define oMapCheckerHook2 0x00886B87
    #define oMapCheckerHook3 0x0062EB3D




    //--------------------------------------------------------------------------------------------
    // Cool Info ^^
    //--------------------------------------------------------------------------------------------
    #define oMiniMapKeyPushOffset 0x007D3B55 //0x09 = TAB - 0x10 = SHIFT
    #define oMiniMapKeyCallOffset 0x007D3B6D //This call must be hook to MapCheckerCore1 proc
    // -------------------------------------------------------------------------------------------
    #define oScreenMapKeyOffset 0x007D3BA5 //0x09 = TAB - 0x10 = SHIFT




    void MiniMap::Load()
    {
    SetOp((LPVOID)oMapCheckerHook1, (LPVOID)MapCheckerCore1, ASM::CALL);
    SetOp((LPVOID)oMapCheckerHook2, (LPVOID)MapCheckerCore1, ASM::CALL);
    SetOp((LPVOID)oMapCheckerHook3, (LPVOID)MapCheckerCore2, ASM::CALL);
    }
    MiniMap.h
    #pragma once// ----------------------------------------------------------------------------------------------




    #include "Import.h" // -> This is not necesary.. on my zClient Modified Source I only use this.. to make a small new mod (is TEST) xD


    // ----------------------------------------------------------------------------------------------




    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);




    class MiniMap
    {
    public:
    void Load();
    // ----
    }; extern MiniMap gMiniMap;
    dllmain.cpp
    #include "stdafx.h"#include "Other.h"
    #include "TMemory.h"
    #include "Item.h"
    #include "User.h"
    #include "Controller.h"
    #include "Interface.h"
    #include "CheatGuard.h"
    #include "Protocol.h"
    #include "Monster.h"
    #include "ResetSystem.h"
    #include "ItemPrice.h"
    #include "ChatExpanded.h"
    #include "ConnectEx.h"
    #include "TDebugLog.h"
    #ifdef __NOVUS__
    #include "CraftSystem.h"
    #endif
    #include "VisualFix.h"
    #include "OffTrade.h"
    #include "ItemRank.h"
    #include "ItemModel.h"
    #include "SocketItem.h"
    #include <string>
    #include "CRC.h"
    #include "Font.h"
    #include "MiniMap.h"
    // ----------------------------------------------------------------------------------------------
    std::vector<std::string> GetArguments()
    {
    std::vector<std::string> list;
    LPSTR arguments = GetCommandLineA();
    if(!arguments)
    {
    return list;
    }
    size_t i = 0;
    bool quote = false;
    bool it = false;
    std::string argument = "";
    std::string commandline = arguments;
    while(i < commandline.length())
    {
    if(quote)
    {
    if(commandline.at(i) == '"')
    {
    quote = false;
    }
    else
    {
    argument += commandline.at(i);
    it = true;
    }
    }
    else
    {
    switch(commandline.at(i))
    {
    case '"':
    quote = true;
    break;
    case ' ':
    case '\t':
    case '\r':
    case '\n':
    if(it)
    {
    list.push_back(argument);
    argument = "";
    it = false;
    }
    break;
    default:
    argument += commandline.at(i);
    it = true;
    break;
    }
    }
    i++;
    }
    if(argument != "")
    {
    list.push_back(argument);
    }
    return list;
    }


    void CheckArguments()
    {
    std::vector<std::string> argumentos = GetArguments();
    if(argumentos.size() == 2)
    {
    if(argumentos[1] == "Season 6 zTema")
    {
    return;
    }
    }
    ShellExecute(GetDesktopWindow(), "Open", "Launcher.exe", NULL, NULL, SW_SHOWNORMAL);
    ExitProcess(0);
    }


    extern "C" __declspec(dllexport)void Init()


    {
    DWORD OldProtect;
    // ----
    if(VirtualProtect(LPVOID(0x00401000),0x00D21FFF,PAGE_EXECUTE_READWRITE,&OldProtect))



    #ifdef PROTECT
    if( VMProtectIsDebuggerPresent(TRUE) != 0 )
    {
    MessageBox(0, "Protect system found debugger, process will be closed", "CheatGuard", ERROR);
    ExitProcess(0);
    }
    #endif


    VMBEGIN
    #ifdef __MUANGEL__
    if( pMUIsLoaded == 1 )
    {
    CreateMutex(0, 1, "MuOnline");
    // ----
    if( GetLastError() == 183 )
    {
    ExitProcess(0);
    }
    }
    #endif
    // ----
    #if defined __MIX__ || __WHITE__ || __MUANGEL__
    #ifndef __ROOT__
    char ** Command = 0;
    CommandLineToArg(GetCommandLine(), &Command);
    if( strcmp("Updater", Command[1]) )
    {
    MessageBoxA(0, "Please start game from Launcher", "Start Error", ERROR);
    ExitProcess(0);
    }
    #endif
    #endif
    // ----
    // ----
    #ifdef __NOVUS__
    gCraftSystem.Load();
    #endif


    gConnectEx.Load();
    gController.Load();
    gChatExpanded.Load();
    gItemPrice.Load();
    gItem.Load();
    gResetSystem.Load();
    gProtocol.Load();
    gCheatGuard.Load();
    gObjUser.Load();
    gOther.Load();
    gInterface.Load();
    gVisualFix.InitVisualFix();
    g_ItemModel.Load();
    gOffTrade.Init();
    gFont.Load();
    gMiniMap.Load();


    #ifdef __RMOS__
    g_ItemRank.Load();
    #endif
    // ----
    LoadLibrary("ttlci.dll");
    #ifdef MUNEWAGE
    CheckArguments();
    #endif
    VMEND
    }
    // ----------------------------------------------------------------------------------------------


    BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
    {
    switch(dwReason)
    {
    case DLL_PROCESS_DETACH:
    {


    }
    break;
    // --
    case DLL_PROCESS_ATTACH:
    {
    gController.Instance = hModule;
    }
    break;
    }
    // ----
    return true;
    }
    // ----------------------------------------------------------------------------------------------
    Thanks in advance!




Advertisement