TomTom menu

Shout-Out

User Tag List

Thread: TomTom

Results 1 to 3 of 3
  1. #1
    kosacid's Avatar Active Member
    Reputation
    19
    Join Date
    May 2009
    Posts
    127
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    TomTom

    here a fun bot its for 3.3.5 but just change the mem address for to use on any version, run around pressing f1 once your done press f2 and it will follow the path you plotted out

    header.h
    Code:
    #include <windows.h>
    #include <iostream>
    #include <vector>
    #include <math.h>
    #include <tlhelp32.h>
    
    typedef unsigned int uint;
    
    enum ObjectManager
    {
        CurMgrPointer = 0x879CE0,
        CurMgrOffset = 0x2ED0,
        NextObject = 0x3C,
        FirstObject = 0xAC,
        LocalGUID = 0xC0
    };
    
    enum WowObject
    {
        X = 0x798,
        Y = X + 0x4,
        Z = X + 0x8,
    };
    
    enum CTM
    {
    	CTM_Base = 0x8A11D8,
    	CTM_Push = 0x1C,
    	CTM_X = 0x8C,
    	CTM_Y = 0x4,
    	CTM_Z = 0x8,
    	CTM_Distance = 0xC,
    };
    
    class NAV
    {
    public:
    	NAV();
    	NAV(float,float,float);
    	~NAV();
    	float getx()const;
    	float gety()const;
    	float getz()const;
    private:
    	float x;
    	float y;
    	float z;
    };
    
    void ReadProcMem(void *pAddress, void *pMem, int iSize);
    void WriteProcMem(void *pAddress, void *pMem, int iSize);
    void ClickToMove(float x,float y,float z);
    void LoadSetting();
    unsigned long GetPid(char *procName);
    DWORD GetBase(char* DllName, DWORD tPid);
    UINT ReadCoords();
    float distance(float x, float y, float z, float dx, float dy, float dz);
    main.cpp
    Code:
    #include "header.h"
    
    DWORD Pid;
    uint BaseAddress;
    HWND hwnd;
    float mx,my,mz;
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	bool NavMode=false;
    	int ClickTimer=0;
    	int NextCoord=0;
    	LoadSetting();
    	vector<NAV> StoreCoords;
    	while(true)
    	{
    		if(GetAsyncKeyState(VK_F1))
    		{
    			NAV coords(mx,my,mz);
    			StoreCoords.push_back(coords);
    			cout << "Storing: " << " x: " << coords.getx() << " y: " << coords.gety() << " z: " << coords.getz() << endl;
    			Sleep(1000);
    		}
    		if(GetAsyncKeyState(VK_F2))
    		{
    			if(!NavMode)
    			{
    				NavMode=true;
    			}
    			else
    			{
    				NavMode=false;
    			}
    			Sleep(500);
    		}
    		if(NavMode)
    		{
    			if(ClickTimer==5000)
    			{
    				ClickToMove(StoreCoords[NextCoord].getx(),StoreCoords[NextCoord].gety(),StoreCoords[NextCoord].getz());
    				ClickTimer=0;
    			}
    			if(distance(StoreCoords[NextCoord].getx(),StoreCoords[NextCoord].gety(),StoreCoords[NextCoord].getz(),mx,my,mz)<=5.0f)
    			{
    				cout << "Going To: " << " x: " << StoreCoords[NextCoord].getx() << " y: " << StoreCoords[NextCoord].gety() << " z: " << StoreCoords[NextCoord].getz() << endl;
    				NextCoord+=1;
    			}
    			ClickTimer+=1;
    			if(NextCoord>=StoreCoords.size())
    				NextCoord=0;
    		}
    	}
    	system("pause");
    	return 0;
    }
    
    void LoadSetting()
    {
    	Pid = GetPid("Wow.exe");
    	BaseAddress = GetBase("Wow.exe",Pid);
    	hwnd = ::FindWindow(NULL,"World of Warcraft");
    	CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ReadCoords,NULL, 0, NULL);
    }
    
    UINT ReadCoords()
    {
    	while(true)
    	{
    	    uint ObjectPointer;
    	    ReadProcMem((LPVOID)(BaseAddress + CurMgrPointer),&ObjectPointer,4);
    	    ReadProcMem((LPVOID)(ObjectPointer + CurMgrOffset),&ObjectPointer,4);
    	    UINT64 me;
    	    ReadProcMem((LPVOID)(ObjectPointer + LocalGUID),&me, 8);
    	    ReadProcMem((LPVOID)(ObjectPointer + FirstObject),&ObjectPointer,4);
    	    while (ObjectPointer != 0 && ObjectPointer % 2 == 0)
    	    {
    		    UINT64 cobj;
    		    ReadProcMem((LPVOID)(ObjectPointer + 0x30),&cobj, 8);
    		    if(me == cobj)
    		    {
    			    ReadProcMem((LPVOID)(ObjectPointer + X),&mx, 4);
    			    ReadProcMem((LPVOID)(ObjectPointer + Y),&my, 4);
    			    ReadProcMem((LPVOID)(ObjectPointer + Z),&mz, 4);
    		    }
    		    ReadProcMem((LPVOID)(ObjectPointer + NextObject),&ObjectPointer,4);
    	    }
    	}
    }
    
    float distance(float x, float y, float z, float dx, float dy, float dz)
    {
    	float dist_x = x-dx;
    	float dist_y = y-dy;
    	float dist_z = z-dz;
        float dist = sqrt(dist_x * dist_x + dist_y * dist_y + dist_z * dist_z);
        return dist;
    }
    
    void ClickToMove(float x,float y,float z)
    {
    	uint Action = 0x04;
    	float Dist = 0.0f;
    	WriteProcMem((LPVOID)(BaseAddress + CTM_Base + CTM_X),&x, 4);
    	WriteProcMem((LPVOID)(BaseAddress + CTM_Base + CTM_X + CTM_Y),&y, 4);
    	WriteProcMem((LPVOID)(BaseAddress + CTM_Base + CTM_X + CTM_Z),&z, 4);
    	WriteProcMem((LPVOID)(BaseAddress + CTM_Base + CTM_Push),&Action, 4);
    	WriteProcMem((LPVOID)(BaseAddress + CTM_Base + CTM_Distance),&Dist, 4);
    }
    
    void ReadProcMem(void *pAddress, void *pMem, int iSize)
    {
    	HANDLE hProc = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ, FALSE, Pid);
    	DWORD dwOld;
    	VirtualProtectEx(hProc, pAddress, iSize, PAGE_EXECUTE_READWRITE, &dwOld);
    	ReadProcessMemory(hProc, pAddress, pMem, iSize, 0);
    	CloseHandle(hProc);
    }
    
    void WriteProcMem(void *pAddress, void *pMem, int iSize)
    {
    	HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);
    	DWORD dwOld;
    	VirtualProtectEx(hProc, pAddress, iSize, PAGE_EXECUTE_READWRITE, &dwOld);
    	WriteProcessMemory(hProc, pAddress, pMem, iSize, 0);
    	CloseHandle(hProc);
    }
    
    unsigned long GetPid(char *procName)
    {
       PROCESSENTRY32 pe;
       HANDLE thSnapshot;
       BOOL retval, ProcFound = false;
       thSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
       if(thSnapshot == INVALID_HANDLE_VALUE)
       {
          MessageBox(NULL, "Error: unable to create toolhelp snapshot","Error", NULL);
          return false;
       }
       pe.dwSize = sizeof(PROCESSENTRY32);
       retval = Process32First(thSnapshot, &pe);
       while(retval)
       {
          if(strcmp(pe.szExeFile, procName) == 0)
          {
             ProcFound = true;
             break;
          }
          retval    = Process32Next(thSnapshot,&pe);
          pe.dwSize = sizeof(PROCESSENTRY32);
       }
       if (!ProcFound) return 0;
       return pe.th32ProcessID;
    }
    
    DWORD GetBase(char* DllName, DWORD tPid)
    {
        HANDLE snapMod;
        MODULEENTRY32 me32;
        if (tPid == 0) return 0;
        snapMod = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, tPid);
        me32.dwSize = sizeof(MODULEENTRY32);
        if (Module32First(snapMod, &me32))
    	{
            do{
                  if (strcmp(DllName,me32.szModule) == 0)
    			  {
                      CloseHandle(snapMod);
                      return (DWORD) me32.modBaseAddr;
    			  }
    		}while(Module32Next(snapMod,&me32));
        }
        CloseHandle(snapMod);
    	return 0;
    }
    
    NAV::NAV()
    {
    	x=0;
    	y=0;
    	z=0;
    }
    
    NAV::NAV(float ix,float iy,float iz)
    {
    	x=ix;
    	y=iy;
    	z=iz;
    }
    
    NAV::~NAV()
    {
    }
    
    float NAV::getx()const
    {
    	return x;
    }
    
    float NAV::gety()const
    {
    	return y;
    }
    
    float NAV::getz()const
    {
    	return z;
    }
    Last edited by kosacid; 07-30-2013 at 07:12 PM.

    TomTom
  2. #2
    kosacid's Avatar Active Member
    Reputation
    19
    Join Date
    May 2009
    Posts
    127
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Download my projects from SourceForge.net
    I added a ini for the updates but here is a compiled version its not hard to use just run around or hold in f1 when your done press f2 and it will follow the path
    remember enable click to move give the ground a click to make sure ctm is ready
    the ini is for ver 5.3.0_17128

  3. #3
    kosacid's Avatar Active Member
    Reputation
    19
    Join Date
    May 2009
    Posts
    127
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    oh forgot to say if you delete the ini it will default to 3.3.5 for eny other versions find the settings on the site

Similar Threads

  1. Bonfires waypoints to your ingame map using TomTom
    By Ylts in forum World of Warcraft Guides
    Replies: 10
    Last Post: 06-23-2009, 05:56 PM
  2. Elders waypoints to your map using TomTom
    By Ylts in forum World of Warcraft Guides
    Replies: 4
    Last Post: 01-24-2009, 11:41 PM
  3. [Guide] Get Tomtom working with Zygor
    By deadca7 in forum World of Warcraft Guides
    Replies: 9
    Last Post: 10-22-2008, 10:05 AM
  4. [REQUEST] tomtom/quest helper
    By Jaguar in forum World of Warcraft Bots and Programs
    Replies: 13
    Last Post: 08-03-2008, 04:29 AM
All times are GMT -5. The time now is 12:44 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search