• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Warp Source, must compile & find offset (1 Viewer)

Status
Not open for further replies.

Machiavelli

New member
Joined
Nov 14, 2004
RedCents
10¢
Hello. Like to warp? Me too.

Compile this like you would any other plugin. This works for the Oct. 13th patch.

MQ2Warp.cpp
Rich (BB code):
#include "../MQ2Plugin.h" 
#define CDisplay__MoveLocalPlayerToSafeCoords   0x43437B 

PreSetup("MQ2Warp"); 

VOID DoWarp(float y, float x, float z); 
VOID Warp(PSPAWNINFO pChar, PCHAR szLine); 
VOID zWarp(PSPAWNINFO pChar, PCHAR szLine); 
VOID ExactLocation(PSPAWNINFO pChar); 

VOID ExactLocation(PSPAWNINFO pChar, PCHAR szLine) 
{  CHAR LocMsg[MAX_STRING] = {0}; 
   sprintf(LocMsg, "Your location is %3.6f, %3.6f, %3.6f", pChar->Y, pChar->X, pChar->Z); 
   WriteChatColor(LocMsg); 
   return; 
} 

VOID zWarp(PSPAWNINFO pChar, PCHAR szLine) 
{   CHAR Z[MAX_STRING] = {0}; 
        GetArg(Z,szLine,1); 
        float MyY = pChar->Y; 
        float MyX = pChar->X; 


        if (Z[0]==0) { 
      WriteChatColor("Usage: /zwarp <dist>", CONCOLOR_RED); 
      return; 
        } 

        float NewZ = pChar->Z; 
        NewZ = NewZ + (FLOAT)atof(Z); 
        DoWarp(MyY, MyX, NewZ); 
        return; 
} 

VOID Warp(PSPAWNINFO pChar, PCHAR szLine) 
{ 
   static float LastY; 
   static float LastX; 
   static float LastZ; 
   bRunNextCommand = TRUE; 
   PSPAWNINFO psTarget = NULL; 
   PZONEINFO Zone = (PZONEINFO)pZoneInfo; 
    CHAR command[MAX_STRING]; GetArg(command,szLine,1); 
   CHAR Y[MAX_STRING]; GetArg(Y,szLine,2); 
   CHAR X[MAX_STRING]; GetArg(X,szLine,3); 
   CHAR Z[MAX_STRING]; GetArg(Z,szLine,4); 
   if ( 
      stricmp(command, "succor") != 0 && 
      stricmp(command, "loc") != 0 && 
      stricmp(command, "last") != 0 && 
      stricmp(command, "target") != 0 && 
      stricmp(command, "dir") != 0 
   ) { 
      WriteChatColor("Usage: /warp <succor|last|loc <y x z>|dir <dist>| target>", CONCOLOR_RED); 
      return; 
      } else { 
      if (!stricmp(command,"target"))  { 
         if (ppTarget && pTarget) { 
         psTarget = (PSPAWNINFO)pTarget; 
         } 
         if (!psTarget) { 
            WriteChatColor("You must have a target for /warp target.", CONCOLOR_RED); 
            return; 
         } 
         float TargetZ = float (psTarget->Z); 
         float TargetY = float (psTarget->Y); 
         float TargetX = float (psTarget->X); 
                        LastY = TargetY; 
         LastX = TargetX; 
         LastZ = TargetZ; 
         DoWarp(TargetY, TargetX, TargetZ); 
      } else if (!stricmp(command,"succor"))  { 
         static float north = 0; 
         ((PSPAWNINFO)pCharSpawn)->Heading = north; 
         DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords; 
         __asm call dword ptr [MLPTSC]; 
         return; 
      } else if (!stricmp(command,"loc")) { 
      if ((Y[0] == 0) || (X[0] == 0) || (Z[0] == 0)) 
      { 
         WriteChatColor("You must provide <y> <x> <z> if going to a location.", CONCOLOR_RED); 
         return; 
      } 
         LastY = (float)atof(Y); 
         LastX = (float)atof(X); 
         LastZ = (float)atof(Z); 
      DoWarp((float)atof(Y), (float)atof(X), (float)atof(Z)); 
      return; 
      } else if (!stricmp(command,"last")) { 
      if ((LastY==0) || (LastX==0) || (LastZ==0)) 
      { 
         WriteChatColor("You must have warped before to use this command!.", CONCOLOR_RED); 
         return; 
      } 
      DoWarp(LastY, LastX, LastZ); 
      return; 
      } else if (!stricmp(command,"dir")) { 
      if (Y[0]==0) { 
         WriteChatColor("You MUST provide <dist> if going in your current direction.", CONCOLOR_RED); 
         return; 
      } 
      FLOAT angle = (FLOAT)((pChar->Heading)*0.0123); 
      FLOAT dissafegoto = (FLOAT)atof(Y); 
      DoWarp(pChar->Y + (FLOAT)(dissafegoto * cos(angle)), pChar->X + (FLOAT)(dissafegoto * sin(angle)), pChar->Z); 
      return; 
                } 
   } 
} 


VOID DoWarp(float y, float x, float z) 
{ 

        PZONEINFO Zone = (PZONEINFO)pZoneInfo; 

   float SafeY = Zone->SafeYLoc; 
   float SafeX = Zone->SafeXLoc; 
   float SafeZ = Zone->SafeZLoc; 

   Zone->SafeYLoc = y; 
   Zone->SafeXLoc = x; 
   Zone->SafeZLoc = z; 

   CHAR szMsg[MAX_STRING] = {0}; 
   sprintf(szMsg, "Warping to: %3.2f, %3.2f, %3.2f.", Zone->SafeYLoc, Zone->SafeXLoc, Zone->SafeZLoc); 
   WriteChatColor(szMsg, COLOR_PURPLE); 

   DWORD MLPTSC = CDisplay__MoveLocalPlayerToSafeCoords; 
   __asm call dword ptr [MLPTSC]; 

   Zone->SafeYLoc = SafeY; 
   Zone->SafeXLoc = SafeX; 
   Zone->SafeZLoc = SafeZ; 
} 

PLUGIN_API VOID InitializePlugin(VOID) 
{ 
   AddCommand("/warp",Warp); 
   AddCommand("/zwarp",zWarp); 
        AddCommand("/exactloc",ExactLocation); 
} 


PLUGIN_API VOID ShutdownPlugin(VOID) 
{ 
   DebugSpewAlways("Shutting down MQ2Warp"); 
   RemoveCommand("/warp"); 
   RemoveCommand("/exactloc"); 
   RemoveCommand("/zwarp"); 
}

Struct Changes

Open up MQ2Main\EQData.h
Go to line 1201 (This is the line as of our latest MQ2 Release), it will look like
Rich (BB code):
/*0x1ec*/   FLOAT   Unknown0x1ec[3];

Delete that line and add these 3 in its place:
Rich (BB code):
/*0x1ec*/ FLOAT SafeYLoc; 
/*0x1f0*/ FLOAT SafeXLoc; 
/*0x1f4*/ FLOAT SafeZLoc;

Do I get tenure or what?
 
Machiavelli said:
Do I get tenure or what?

If you can post that offset from the last couple patches, or keep us up to date for a few patches so we can eventually do it ourselves, you've got a deal.
 
Will this be updated to work with Dec's patch ?
Also where does one find Mq2zone plugin at ?
 
Posted mq2zone plugin, includes /gate too.

Here is the new warp offset, as well as some others you might want. Cut & Pasted from figerprints.

Rich (BB code):
#define warp 		0x437B62
#define AddFriends 		0x46414E
#define eb 		0x4A04A9
#define EnviroFall 		0x5393F0
#define EZFollow 		0x4672BC
#define Face 		0x4C8509
#define Jumpendurance 		0x4B966D
#define LuclinTime 		0x4B036F
#define map 		0x71EFB0
#define Mapwoloy 		0x4F4CD2
#define Mountskills 		0x48C716
#define noanon 		0x4B3B4F
#define NoAutotarget 		0x4BCF1A
#define nodelayjump 		0x518673
#define nodelayjump 		0x521BA2
#define nodelayjump 		0x745639
#define NoDrunk 		0x4897CC
#define NoDrunk 		0x495ED4
#define NoDrunk 		0x4E0C14
#define NoDrunk 		0x5B0AE6
#define NoDrunk 		0x5B7625
#define NoDrunk 		0x5C1991
#define NoDrunk 		0x5C19DA
#define NoEncumber 		0x48A985
#define NoEnviro 		0x48E6A6
#define NoFall0 		0x41535A
#define NoFall0 		0x41785B
#define NoFall0 		0x42C7D7
#define NoFall0 		0x44F27B
#define NoFall0 		0x451D08
#define NoFall0 		0x45462F
#define NoFall0 		0x458BC3
#define NoFall0 		0x47820B
#define NoFall0 		0x47826A
#define NoFall0 		0x4AEBF2
#define NoFall0 		0x4AFD43
#define NoFall0 		0x4B3BFA
#define NoFall1 		0x4918C1
#define Nofooddrink 		0x48E7A9
#define Noweather0 		0x43D906
#define Noweather0 		0x43DA4D
#define Noweather0 		0x43DA7D
#define Noweather1 		0x46838F
#define Noweather1 		0x496DAE
#define NpConWho 		0x41319B
#define NpConWho 		0x532EDB
#define StealStunned 		0x48D4B1
#define talk2self 		0x4B07AF
#define Usehotkeys 		0x4DAC75
 
When new offsets are available what do we with them? Put them in a file or what? I didn't see this mentioned in the guide, but I might be blind ... a point the right direction would be very appreciated ... and how are the new offsets found is there anything I can do to help contribute?

Alatyami
 
i figure the MQ2DoCrack offsets go along with the mq2docrack.ini file in the release folder, but where do i plug in the offsets for the warp?
 
The warp offsets go in with the warp plugin. Right at the beginning of the plugin you'll see some code that looks like this:

#define CDisplay__MoveLocalPlayerToSafeCoords 0x43437B

So you put in the new offset, and then compile, and you're good to go.
 
I tried getting this and Zone running. Zone is working like a champ but get an EQ crash when ever I try to use Warp. Everything has been triple checked so Im at a loss as to what the problem may be (excluding a possible overlooked bonehead on my part). Do the offset listed above work with the latest EQ patch? If not where can I find it? Thanks in advance.

Sledge
 
I have tried adding #define warp 0x437B62 after the original #define CDisplay__MoveLocalPlayerToSafeCoords 0x43437B and have tried replacing it with the same with the same results. No errors returned in the compile and get the right cues if the /warp command is not entered correctly. When using /warp target or /warp succor I get the crash msg.

Sledge
 
Sending you a private message. If anyone else has problems let me or machiavelli know.
 
Ok I Give You Guys Props Can You Hook Us Up With A Download Link That'd Be Sweet

got it workin but seems to be a prob with dawnshroud i can go from pok to nexus to netherbian but across neth to DSP i LD

other then that succor works fine do not suggest using in knowledge i just think its to much publisity if you warp there

BTW the command i use if /zone dawnshroud

then i ld
 
Last edited:
1/27/05

offsets all untested & unverified.

EQ devs don't patch like they used to. We had over a month of hack glory. back to the grind....

Rich (BB code):
#define warp 		0x4370CA
#define AddFriends 		0x4664E4
#define eb 		0x4A1E58
#define EZFollow 		0x468C3C
#define Face 		0x4CA3BD
#define Fisheyes 		0x4AE509
#define Jumpendurance 		0x4BB63F
#define LuclinTime 		0x4B23D5
#define map 		0x71C0D0
#define Mapwoloy 		0x4FA98D
#define Mountskills 		0x48DBB6
#define noanon 		0x4B5B19
#define NoAutotarget 		0x4BEC4F
#define nodelayjump 		0x51F452
#define nodelayjump 		0x528AFB
#define nodelayjump 		0x741639
#define NoDrunk 		0x48AB4F
#define NoDrunk 		0x5AB376
#define NoDrunk 		0x5B22F5
#define NoDrunk 		0x5BC9A1
#define NoDrunk 		0x5BC9EA
#define NoEncumber 		0x48C601
#define NoFall1 		0x492B9E
#define Nofooddrink 		0x48CAB7
#define Noweather0 		0x43CE51
#define Noweather0 		0x43CF98
#define Noweather0 		0x43CFC8
#define Noweather1 		0x461683
#define Noweather1 		0x498111
#define NpConWho 		0x41318B
#define NpConWho 		0x539C7E
#define RealMap0 		0x4FAA39
#define RealMap1 		0x4F74EB
#define SneakAtk 		0x48EB86
#define SneakAtk 		0x48ED5E
#define StealStunned 		0x48E95A
#define talk2self 		0x4B2818
#define Usehotkeys 		0x44ED15
#define Usehotkeys 		0x47870F
#define Usehotkeys 		0x478740
 
A few questions. Does this need MQ2docrack? I can't find a way to compile this as I don't have .net. Also, how is this used exactly? Say I want to go to 500, 400, 200. Another thing, when I use /who npc I don't get a loc I just get like 2100 NWN. How would I warp to that location, or is this not possible? Thanks.
 
Easy_Moder said:
A few questions. Does this need MQ2docrack?

No.

I can't find a way to compile this as I don't have .net.

Read Zedmix's thread.

Also, how is this used exactly? Say I want to go to 500, 400, 200. Another thing, when I use /who npc I don't get a loc I just get like 2100 NWN.

/warp 500,200,300
Or
/warp target

warp target is the best in my opinion. Open up your in-game map, turn on NPC's, click one, type
/warp target
and you're there
 
GOT IT! Holy crap thank you so much! Makes the game so much less time consuming. I seriously hope you get a tenure here. You rock!
 
Last edited:
Anyway we can get the new offsets for /warp? Also, anyway your willing to post a quick guide on how trigger the event to see the /warp offset? What is the command you type in winhack?
 
Last edited:
whats the new offset for this for 1-31-05 patch?when i try it i crash with this one...
 
hey I was wondering if I could the figerprint for this offset? would be WONDERFUL not having to wait for updates :D
 
When you get the raw offset, like Mach posted, is it just a matter of going into the .dll and changing the number, then recompiling it? Or is it more sophisticated than that?
 
The line:
#define CDisplay__MoveLocalPlayerToSafeCoords 0x43437B
Will become:
#define CDisplay__MoveLocalPlayerToSafeCoords 0x4371B6
 
Last edited:
Working for me. Are you getting any errors on compile, and I assume you did replace the old offset?
 
i get a ctd...


edit: fixed
haha fogot to add mq2warp to compile... god
 
heh... I'm tryin' to get it to work now myself. :mad: I've been way too Zedmix-dependent. =P
 
Yup. I just got it to work for myself... except now Zed posts that he has everything for us. lol... thanks Easy
 
I would like to use this, just not sure how to compile plugins for MQ2. I compiled MQ2 myself using Visual Studio .net and that is working, just not sure what to do with the sorce codes posted for other things. Sorry if this has been addressed before, I looked for quite a while and couldn't really find any solutions.
Thanks
 
Ok, now I got it to compile, but when I try to /warp <coords> it just says "DoCommand - Couldn't parse /warp <coords>. I change the original line in MQ2Warp.cpp to #define CDisplay__MoveLocalPlayerToSafeCoords 0x437B62, and re-compiled. Any thoughts?

Bah, helps if I load it first.
Just need to find the right offset now I think.
 
Last edited:
Warp Source, must compile & find offset
Status
Not open for further replies.

Users who are viewing this thread

Back
Top
Cart