Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.

oTheZone(int,char *,int,int,float,float,float,int);
oTheZone(int,char *,int,int,float,float,float,int),LocalCEverQuest__DoTheZone);Riddlerr said:i am no longer updating this plugin. do to the fact i no longer play.. best info that i have. is to read the first post on this thread. and do what it says.. find offsets (or wait tell someone else does) and update those. iam also sure that this code needs some major tweaks to even work.. better off using someone elses code. unless someone wants to take over the job up keeping this one up to date..

A brief glance by one (me) who doesn't understand more than 1/3 - 2/3 of what is going on in the code can't seem to find any differences /shrug 
EvenLessSpam said:Are there any difference between MQ2RWarp and MQ2PiggyZone? If yes, then what?A brief glance by one (me) who doesn't understand more than 1/3 - 2/3 of what is going on in the code can't seem to find any differences /shrug
![]()
RWarp does this too. So RWarp is PiggyZone with warp functionality?Sosafina said:PiggyZone - allows you to automatically zone to wherever you want without you running thru each zone. Example, if you are in PoKnowledge and you type /zone pofire. It will zone you to potranq then to pofire without you having to run and click on anything.
Kraze said:Is there a way to force zone your character into a zone that you're not flagged for?
I tried entering Qvic with an unflagged toon (level 70) with RWarp (PiggyZone), before the 20051116 patch, I just got booted to server select.Sosafina said:Yes, it just depends what zone. For example you can zone into qvic if you arent flagged for it, but it will kick you out in 2 minutes (unless you get 85'ed in after) but if its a zone that you need a key for like... Vex Thal or Sebilis, you can zone in and will not be kicked out.
Compiling...
MQ2RWarp.cpp
EQLIB_IMPORTS
MQ2RWarp.cpp(55) : error C2071: 'LocalCEverQuest::LocalCEverQuest' : illegal storage class
MQ2RWarp.cpp(55) : error C2461: 'LocalCEverQuest' : constructor syntax missing formal parameters
MQ2RWarp.cpp(55) : error C2144: syntax error : 'int' should be preceded by ')'
MQ2RWarp.cpp(55) : error C3861: 'oTheZone': identifier not found, even with argument-dependent lookup
MQ2RWarp.cpp(55) : error C2071: 'LocalCEverQuest::LocalCEverQuest' : illegal storage class
MQ2RWarp.cpp(55) : error C2461: 'LocalCEverQuest' : constructor syntax missing formal parameters
MQ2RWarp.cpp(59) : error C2470: 'LocalCEverQuest' : looks like a function definition, but there is no formal parameter list; skipping apparent body
MQ2RWarp.cpp(59) : error C2144: syntax error : 'int' should be preceded by ')'
MQ2RWarp.cpp(59) : error C2612: trailing 'type' illegal in base/member initializer list
MQ2RWarp.cpp(915) : fatal error C1004: unexpected end of file found
//MQ2RWarp.cpp
/////////////////////////////////////////////////////////////////////////////////
//
//
// Comment this out in your MQ2CommandsAPI.cpp:
//
// /* if (!stricmp(Command,"/warp"))
// {
// Function=0;
// }
// */
//
//
/////////////////////////////////////////////////////////////////////////////////
//
//
// Comment this out from MQ2Commands.cpp due to anti-warp coding
//
// VOID PluginCmdSort(VOID)
// {
// /*
// PMQCOMMAND pCmd=pCommands;
// int i;
// while(pCmd) {
// if (pCmd->EQ==0) {
// //
// for(i=0;i<sizeof(keyarray)/4;i+=4) {
// if (!stricmp(pCmd->Command, (char *)&keyarray)) {
// pCmd->Function=CmdCmd;
// }
// }
// }
// pCmd=pCmd->pNext;
// }
// */
// }
//
//
////////////////////////////////////////////////////////////////////////////////
#include "../MQ2Plugin.h"
PreSetup("MQ2Rwarp");
#undef dothewrap
#undef wrap
#undef zwrap
#undef ExLoc
#undef waypoint
#define CDisplay__MoveLocalPlayerToSuccorCoords 0x45EBF0
VOID dothewrap(float y, float x, float z);
VOID wrap(PSPAWNINFO pChar, PCHAR szLine);
VOID zwrap(PSPAWNINFO pChar, PCHAR szLine);
VOID ExLoc(PSPAWNINFO pChar);
VOID waypoint(PSPAWNINFO pChar, PCHAR szLine);
VOID ExLoc(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 dothewrap(float y, float x, float z)
{
PZONEINFO Zone = (PZONEINFO)pZoneInfo;
float SafeY = Zone->Unknown0x24c[0];
float SafeX = Zone->Unknown0x24c[1];
float SafeZ = Zone->Unknown0x24c[2];
Zone->Unknown0x24c[0] = y;
Zone->Unknown0x24c[1] = x;
Zone->Unknown0x24c[2] = z;
CHAR szMsg[MAX_STRING] = {0};
sprintf(szMsg, "Warping to: %3.2f, %3.2f, %3.2f.", Zone->Unknown0x24c[0], Zone->Unknown0x24c[1], Zone->Unknown0x24c[2]);
WriteChatColor(szMsg, COLOR_PURPLE);
DWORD MLPTSC = CDisplay__MoveLocalPlayerToSuccorCoords;
__asm call dword ptr [MLPTSC];
Zone->Unknown0x24c[0] = SafeY;
Zone->Unknown0x24c[1] = SafeX;
Zone->Unknown0x24c[2] = SafeZ;
}
VOID zwrap(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);
dothewrap(MyY, MyX, NewZ);
return;
}
VOID wrap(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, "t") != 0 &&
stricmp(command, "dir") != 0 &&
stricmp(command, "wp") != 0
) {
WriteChatColor("Usage: /warp <succor|last|loc <y x z>|dir <dist>| target|wp name>", CONCOLOR_RED);
return;
} else {
if (!stricmp(command, "t") || !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;
dothewrap(TargetY, TargetX, TargetZ);
} else if (!stricmp(command,"succor")) {
static float north = 0;
((PSPAWNINFO)pCharSpawn)->Heading = north;
DWORD MLPTSC = CDisplay__MoveLocalPlayerToSuccorCoords;
__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);
dothewrap((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;
}
dothewrap(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 disSuccorgoto = (FLOAT)atof(Y);
dothewrap(pChar->Y + (FLOAT)(disSuccorgoto * cos(angle)), pChar->X + (FLOAT)(disSuccorgoto * sin(angle)), pChar->Z);
return;
}
{
char szLoc[MAX_STRING] = {0};
char szName[MAX_STRING] = {0};
char WaypointsINI[MAX_STRING] = {0};
char szBuf[MAX_STRING] = {0};
char szHeading[MAX_STRING] = {0};
char szDestwrapX[MAX_STRING] = {0};
char szDestwrapY[MAX_STRING] = {0};
char szDestwrapZ[MAX_STRING] = {0};
char szMsg[MAX_STRING] = {0};
sprintf(WaypointsINI,"%s\\waypoints.ini",gszINIPath);
GetArg(szName, szLine, 2);
if(!strnicmp(szName, "", 1))
{
WriteChatColor("You didn't specify a waypoint.", COLOR_LIGHTGREY);
}
else
{
GetPrivateProfileString(Zone->ShortName,szName,"",szLoc,MAX_STRING,WaypointsINI);
if (!strnicmp(szLoc, "", 1))
{
sprintf(szMsg, "Waypoint \'%s\' does not exist.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
else
{
// get destination locs
GetArg(szDestwrapX, szLoc, 2);
GetArg(szDestwrapY, szLoc, 1);
GetArg(szDestwrapZ, szLoc, 3);
// get heading
GetArg(szBuf, szLoc, 4);
GetArg(szHeading,szBuf,1,0,0,0,':');
dothewrap((float)atof(szDestwrapY), (float)atof(szDestwrapX), (float)atof(szDestwrapZ));
}
}
}
}
}
VOID waypoint(PSPAWNINFO pChar, PCHAR szLine)
{
PZONEINFO Zone = (PZONEINFO)pZoneInfo;
CHAR WaypointsINI[MAX_STRING] = {0};
CHAR szTemp[10] = {0};
CHAR szData[MAX_STRING] = {0};
CHAR szDesc[MAX_STRING] = {0};
CHAR szName[MAX_STRING] = {0};
CHAR szCommand[MAX_STRING] = {0};
CHAR szBuffer[MAX_STRING] = {0};
CHAR szMsg[MAX_STRING] = {0};
CHAR WaypointList[MAX_STRING*10] = {0};
PCHAR pWaypointList = WaypointList;
CHAR szKey[MAX_STRING] = {0};
CHAR szValue[MAX_STRING] = {0};
sprintf(WaypointsINI,"%s\\waypoints.ini",gszINIPath);
GetArg(szCommand, szLine, 1);
if (!strnicmp(szCommand, "add", 3))
{
GetArg(szName, szLine, 2);
if(!strnicmp(szName, "", 1))
{
WriteChatColor("You didn't specify a name for the waypoint.", COLOR_LIGHTGREY);
}
else
{
GetPrivateProfileString(Zone->ShortName,szName,"",szBuffer,MAX_STRING,WaypointsINI);
if (!strnicmp(szBuffer, "", 1))
{
GetArg(szDesc, szLine, 3);
sprintf(szData, "%1.2f %1.2f %1.2f %1.2f:%s", pChar->Y, pChar->X, pChar->Z, (float)pChar->Heading*0.703125f, szDesc);
WritePrivateProfileString(Zone->ShortName,szName,szData,WaypointsINI);
sprintf(szMsg, "Waypoint \'%s\' added.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
else
{
sprintf(szMsg, "Waypoint \'%s\' already exists.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
}
}
else if (!strnicmp(szCommand, "delete", 6))
{
GetArg(szName, szLine, 2);
if(!strnicmp(szName, "", 1))
{
WriteChatColor("You didn't specify a waypoint to delete.", COLOR_LIGHTGREY);
}
else
{
GetPrivateProfileString(Zone->ShortName,szName,"",szBuffer,MAX_STRING,WaypointsINI);
if (!strnicmp(szBuffer, "", 1))
{
sprintf(szMsg, "Waypoint \'%s\' does not exist.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
else
{
WritePrivateProfileString(Zone->ShortName,szName,"",WaypointsINI);
// rewrite the section minus the deleted waypoint
GetPrivateProfileSection(Zone->ShortName,WaypointList,MAX_STRING*10,WaypointsINI);
WritePrivateProfileSection(Zone->ShortName,"",WaypointsINI);
pWaypointList = WaypointList;
while (pWaypointList[0]!=0)
{
GetArg(szKey,pWaypointList,1,0,0,0,'=');
GetArg(szValue,pWaypointList,2,0,0,0,'=');
if (strnicmp(szValue, "", 1))
{
WritePrivateProfileString(Zone->ShortName,szKey,szValue,WaypointsINI);
}
pWaypointList+=strlen(pWaypointList)+1;
}
sprintf(szMsg, "Waypoint \'%s\' deleted.", szName);
WriteChatColor(szMsg, COLOR_LIGHTGREY);
}
}
}
else if (!strnicmp(szCommand, "list", 4))
{
GetPrivateProfileSection(Zone->ShortName,WaypointList,MAX_STRING*10,WaypointsINI);
pWaypointList = WaypointList;
sprintf(szMsg, "Waypoints for %s", Zone->LongName);
WriteChatColor(szMsg, CONCOLOR_YELLOW);
while (pWaypointList[0]!=0)
{
GetArg(szName,pWaypointList,1,0,0,0,'=');
GetArg(szData,pWaypointList,2,0,0,0,'=');
GetArg(szDesc,szData,2,0,0,0,':');
if (strnicmp(szDesc,"",1))
{
sprintf(szMsg, "- %s ( %s )", szName, szDesc);
}
else
{
sprintf(szMsg, "- %s", szName);
}
WriteChatColor(szMsg, COLOR_LIGHTGREY);
pWaypointList+=strlen(pWaypointList)+1;
}
}
else
{
WriteChatColor("Invalid syntax. Usage:", COLOR_LIGHTGREY);
WriteChatColor("/waypoint add name", COLOR_LIGHTGREY);
WriteChatColor("/waypoint delete name", COLOR_LIGHTGREY);
WriteChatColor("/waypoint list", COLOR_LIGHTGREY);
}
}
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/warp",wrap);
AddCommand("/zwarp",zwrap);
AddCommand("/exactloc",ExLoc);
AddCommand("/waypoint", waypoint);
// ppLEQ=(LocalCEverQuest**)pinstCEverQuest;
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
DebugSpewAlways("Shutting down MQ2Rwarp");
RemoveCommand("/warp");
RemoveCommand("/exactloc");
RemoveCommand("/zwarp");
RemoveCommand("/waypoint");
}
