UPDATED OFFSETS 7/18/06
UPDATED PKT OPCODES... NPC Teleporters should work now. 7/5/06
UPDATED INI FILE 7/10/06
Added fix for Anti-zone code 4/16/06
Added MAX_ZONES Fix to /zone to PoR Content 7/5/06
All this plugin does is /zone /gate and /fade commands
---------
mq2piggyzone.ini
MQ2 Anti-zone code added...
MQ2Commands.cpp and comment this portion out
Noobhaxor
P.S. If you found this post helpful please click the R to give me a red cent
UPDATED PKT OPCODES... NPC Teleporters should work now. 7/5/06
UPDATED INI FILE 7/10/06
Added fix for Anti-zone code 4/16/06
Added MAX_ZONES Fix to /zone to PoR Content 7/5/06
All this plugin does is /zone /gate and /fade commands
---------
Rich (BB code):
// MQ2PiggyZone.cpp : Defines the entry point for the DLL application.
//
// updated to work with VC6 (previously only worked in VS.NET)
//
//
// /zone qeynos2 - takes you to North Qeynos if it knows a path
// /zone force qeynos - takes you directly to North Qeynos and crashes if you aren't adjacent
// /findpath qeynos2 - displays the path to North Qeynos
// /findpath North - displays all of the zonenames whose long name contains "North"
// /fade - zones you to the zone you are already in (even if its instanced)
// /gate - Returns you to your bind point
//
#include "../MQ2Plugin.h"
PreSetup("MQ2PiggyZone");
#undef ZoneToGoTo
#undef MAX_ZONES
#define MAX_ZONES 0x189
#define LocalCEverQuest__DoTheZone 0x4C6750 // 7/18
#define INFINITY ((1 << (8*sizeof (int) - 6)) - 4)
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif
#define PKT_UPDATE_POSITION 0x178A
#ifdef PKT_CHANNEL_MESSAGE
#undef PKT_CHANNEL_MESSAGE
#endif
#define PKT_CHANNEL_MESSAGE 0xB5A
typedef struct
{
int connections[100]; // An array of edges which has this as the starting node
int numconnect;
} FWVertice;
typedef struct
{
int Zone;
char Name[50];
char Phrase[20][50];
int Destination[20];
float X,Y,Z;
int DestCnt;
} NPCTeleporter;
FWVertice *V=NULL;
NPCTeleporter NPCs[100];
int NPCCnt;
int* distances=NULL;
int* predecessor=NULL;
class LocalCEverQuest;
class LocalCEverQuest
{
public:
__declspec(dllexport) char * LocalCEverQuest::DoTheZone(int,char *,int,int,float,float,float,int);
};
#ifdef LocalCEverQuest__DoTheZone
FUNCTION_AT_ADDRESS(char * LocalCEverQuest::DoTheZone(int,char *,int,int,float,float,float,int),LocalCEverQuest__DoTheZone);
#endif
LocalCEverQuest **ppLEQ;
#define pLEQ (*ppLEQ)
void Setup();
bool UseNPC(PSPAWNINFO pChar, int dest);
PLUGIN_API VOID OnZoned(PSPAWNINFO pChar, PCHAR szLine);
PLUGIN_API VOID OnPulse(VOID);
DWORD ListSimilarZones(PCHAR ZoneShortName);
VOID ChangeZones(PSPAWNINFO pChar, PCHAR szLine);
void FloydWarshall(FWVertice* vertices, int nodecount);
VOID FindPath(PSPAWNINFO pChar, PCHAR szLine);
VOID SimFade(PSPAWNINFO pChar, PCHAR szLine);
VOID SimGate(PSPAWNINFO pChar, PCHAR szLine);
bool ZoneChange=false;
float X,Y,Z;
int Heading;
int DestZone;
int ChainZone[100];
int ChainZoneCnt=0;
int DestType; // 0=use supplied coords 1=succorpoint
int ChainZoneType; // 0=use supplied coords 1=succorpoint
int ZoneReason;
int LastKnownZone=-1; //don't fire MyOnZoned when you first log in
void MyOnZoned(PSPAWNINFO pChar)
{
if (ChainZoneCnt>0)
{
if (pChar->Zone != ChainZone[ChainZoneCnt])
{
ChainZoneCnt=0;
return;
}
ChainZoneCnt--;
DestZone=ChainZone[ChainZoneCnt];
if (ChainZoneCnt==0) DestType=ChainZoneType;
WriteChatColor("Attempting ChainZone...", USERCOLOR_DEFAULT);
if ( UseNPC(pChar,DestZone) == false)
{
ZoneChange=true;
}
}
return;
}
PLUGIN_API VOID OnPulse(VOID)
{
PSPAWNINFO pChar = NULL;
if (ppCharSpawn && pCharSpawn) {
pChar = (PSPAWNINFO)pCharSpawn;
if ((pChar) && (!gZoning))
{
if (LastKnownZone == -1) LastKnownZone=pChar->Zone;
if (pChar->Zone != LastKnownZone)
{
LastKnownZone=pChar->Zone;
MyOnZoned(pChar);
}
}
}
char aa[100]="test";
if(ZoneChange)
{
ZoneChange=false;
pLEQ->DoTheZone(DestZone,aa,DestType,ZoneReason,Y,X,Z,Heading);
}
return;
}
DWORD ListSimilarZones(PCHAR PartialName)
{
CHAR szMsg[MAX_STRING] = "Bad Zone.ShortName. Suggest: ";
CHAR szName[MAX_STRING] = {0};
char *partial,*longname;
PZONELIST pZone = NULL;
partial=_strlwr(_strdup(PartialName));
if (!ppWorldData | !pWorldData) return -1;
for (int nIndex=0; nIndex < MAX_ZONES+1; nIndex++) {
pZone = ((PWORLDDATA)pWorldData)->ZoneArray[nIndex];
if(pZone )
{
longname=_strlwr(_strdup(pZone->LongName));
if (strstr(longname,partial)) {
sprintf(szName,"%s(%s) ",pZone->LongName,pZone->ShortName);
if ((strlen(szMsg)+strlen(szName))>=300)
{
WriteChatColor(szMsg,USERCOLOR_DEFAULT);
szMsg[0]=0;
}
strcat(szMsg,szName);
}
free(longname);
}
}
WriteChatColor(szMsg,USERCOLOR_DEFAULT);
free(partial);
return -1;
}
VOID ChangeZones(PSPAWNINFO pChar, PCHAR szLine)
{
CHAR szMsg[MAX_STRING] = {0};
CHAR szParam[MAX_STRING] = {0};
CHAR sZoneName[MAX_STRING] ={0};
CHAR sWPName[MAX_STRING] ={0};
CHAR sKeyData[MAX_STRING]={0};
DWORD ZoneToGoTo;
int rLen;
int i,j,cnt=0;
bool IgnoreChain=false;
int Param=1;
GetArg(szParam,szLine,Param);
if (_stricmp(szParam,"setwp")==0)
{
Param++;
GetArg(sWPName,szLine,Param);
if (sWPName[0]==0)
{
WriteChatColor("Usage: /zone setwp <WayPointName>", CONCOLOR_RED);
return;
}
sprintf(sKeyData,"%.2f %.2f %2.f %d",pChar->Y,pChar->X,pChar->Z,(int)pChar->Heading);
WritePrivateProfileString(GetShortZone(pChar->Zone), sWPName, sKeyData, INIFileName);
WriteChatColor("Waypoint recorded", USERCOLOR_DEFAULT);
return;
}
if (_stricmp(szParam,"clearwp")==0)
{
Param++;
GetArg(sWPName,szLine,Param);
if (sWPName[0]==0)
{
WriteChatColor("Usage: /zone clearwp <WayPointName>", CONCOLOR_RED);
return;
}
WritePrivateProfileString(GetShortZone(pChar->Zone), sWPName, NULL, INIFileName);
WriteChatColor("Waypoint cleared", USERCOLOR_DEFAULT);
return;
}
if (_stricmp(szParam,"force")==0)
{
IgnoreChain=true;
Param++;
}
GetArg(sZoneName,szLine,Param++);
ZoneToGoTo = GetZoneID(sZoneName);
if (ZoneToGoTo == -1) {
ListSimilarZones(sZoneName);
return;
}
Setup();
if (IgnoreChain==false)
{
i=pChar->Zone;
j=ZoneToGoTo;
if (distances[i*MAX_ZONES+j]==0)
{
WriteChatColor("Poof! You are already there.", CONCOLOR_RED);
return;
}
if (distances[i*MAX_ZONES+j]==INFINITY)
{
WriteChatColor("I don't know a route to that zone.", CONCOLOR_RED);
return;
}
}
GetArg(sWPName,szLine,Param++);
if (sWPName[0]!=0)
{
CHAR sDefault[MAX_STRING]="none";
GetPrivateProfileString(sZoneName,sWPName, sDefault, sKeyData, MAX_STRING, INIFileName);
if (_stricmp(sKeyData,"none")==0)
{
rLen=GetPrivateProfileString(sZoneName,NULL, sDefault, sKeyData, MAX_STRING, INIFileName);
for (int i=0;i<rLen-1;i++) if (sKeyData==0) sKeyData=',';
sprintf(szMsg,"Bad Waypoint. Suggest: %s",sKeyData);
WriteChatColor(szMsg,USERCOLOR_DEFAULT);
return;
}
sscanf(sKeyData,"%f %f %f %d",&Y,&X,&Z,&Heading);
DestType=0;
}
else
{
sprintf(sWPName,"default");
CHAR sDefault[MAX_STRING]="none";
GetPrivateProfileString(sZoneName,sWPName, sDefault, sKeyData, MAX_STRING, INIFileName);
if (_stricmp(sKeyData,"none")!=0)
{
sscanf(sKeyData,"%f %f %f %d",&Y,&X,&Z,&Heading);
DestType=0;
}
else
{
Y=pChar->Y;
X=pChar->X;
Z=pChar->Z;
Heading = (int)pChar->Heading;
DestType=1;
}
}
ChainZoneCnt=0; //reset in case we failed to finish previous chain-zone attempt
if (IgnoreChain==false)
{
while (i!=j)
{
ChainZone[ChainZoneCnt++]=j;
j=predecessor[i*MAX_ZONES+j];
}
if (ChainZoneCnt>1)
{
ChainZoneType=DestType;
DestType=1;
}
DestZone = ChainZone[--ChainZoneCnt];
}
else
{
DestZone=ZoneToGoTo;
}
sprintf(szMsg,"Zoneing...");
WriteChatColor(szMsg,USERCOLOR_DEFAULT);
ZoneReason=0;
if (UseNPC(pChar,DestZone) == false) ZoneChange=true;
return;
}
VOID FindPath(PSPAWNINFO pChar, PCHAR szLine)
{
CHAR sDest[MAX_STRING]={0};
int ZoneToGoTo;
int i,j,cnt=0,stops[100];
GetArg(sDest,szLine,1);
if (sDest[0]==0)
{
WriteChatColor("Usage: /FindPath <ShortZoneName>", CONCOLOR_RED);
return;
}
ZoneToGoTo = GetZoneID(sDest);
if (ZoneToGoTo == -1) {
ListSimilarZones(sDest);
return;
}
Setup();
i=pChar->Zone;
j=ZoneToGoTo;
if (distances[i*MAX_ZONES+j]==0)
{
WriteChatColor("Poof! You are already there.", CONCOLOR_RED);
return;
}
if (distances[i*MAX_ZONES+j]==INFINITY)
{
WriteChatColor("I don't know a route to that zone.", CONCOLOR_RED);
return;
}
WriteChatColor("My path:", CONCOLOR_RED);
while (i!=j)
{
stops[cnt++]=j;
j=predecessor[i*MAX_ZONES+j];
}
while (cnt>0)
{
cnt--;
WriteChatColor(GetShortZone(stops[cnt]),USERCOLOR_DEFAULT);
}
}
void Setup()
{
char sKey[300];
char sKeyData[300];
char *p;
int i;
if (distances!=NULL) free(distances);
if (predecessor!=NULL) free(predecessor);
if (V!=NULL) free(V);
V = (FWVertice *)malloc(MAX_ZONES*sizeof(FWVertice));
int tmp[100],cnt;
for (i=0;i<MAX_ZONES;i++)
{
sprintf(sKey,"%d",i);
V.numconnect=0;
GetPrivateProfileString("ZoneConnections",sKey,"none",sKeyData,300,INIFileName);
if (_stricmp(sKeyData,"none")!=0)
{
strtok(sKeyData,"\"");
strtok(NULL,"\"");
cnt=0;
while ( (p=strtok(NULL,",")) != NULL)
{
tmp[cnt++]=atoi(p);
}
V.numconnect=cnt+1;
for (int j=0;j<cnt;j++) V.connections[j]=tmp[j];
}
V.connections[V.numconnect++]=GetCharInfo2()->ZoneBoundID; //always connected to my bind point
}
//NPCTeleporter support
NPCCnt=0;
for (i=0;i<100;i++)
{
sprintf(sKey,"%d",(i+1));
GetPrivateProfileString("NPCTeleporters",sKey,"none",sKeyData,300,INIFileName);
if (_stricmp(sKeyData,"none")==0) break;
NPCCnt++;
NPCs.Zone=atoi(strtok(sKeyData," \""));
strcpy(NPCs.Name,strtok(NULL,"\""));
NPCs.Y=(float)atof(strtok(NULL," "));
NPCs.X=(float)atof(strtok(NULL," "));
NPCs.Z=(float)atof(strtok(NULL," "));
NPCs.DestCnt=0;
p=strtok(NULL," \"");
while (p!=NULL)
{
NPCs.Destination[NPCs.DestCnt]=atoi(p);
strcpy(NPCs.Phrase[NPCs.DestCnt],strtok(NULL,"\""));
V[NPCs.Zone].connections[V[NPCs.Zone].numconnect++]=NPCs.Destination[NPCs.DestCnt];
NPCs.DestCnt++;
p=strtok(NULL," \"");
}
}
FloydWarshall(V,MAX_ZONES);
}
bool UseNPC(PSPAWNINFO pChar,int dest)
{
for (int i=0;i<NPCCnt;i++)
{
if (NPCs.Zone != pChar->Zone) continue;
for (int j=0;j<NPCs.DestCnt;j++)
{
if (NPCs.Destination[j]==dest)
{
// MOVEPKT Code updated 7/10/06
struct _MOVEPKT {
/*0000*/ unsigned short SpawnID;
/*0002*/ unsigned short TimeStamp;
/*0004*/ int Heading:16;
/*0006*/ int unknown1:16; //??
/*0008*/ float DeltaZ; // ?? not sure
/*0012*/ int Animation:16;
/*0014*/ int padding014:16; //??
/*0016*/ int DeltaHeading:16; //?? not sure
/*0018*/ int unknown2:16; //??
/*0020*/ float Y;
/*0024*/ float DeltaY; //?? not sure
/*0028*/ float DeltaX; //?? not sure
/*0032*/ float Z;
/*0036*/ float X;
} P;
struct _MSGPACKET {
/*0000*/ char target[64];
/*0064*/ char sender[64];
/*0128*/ unsigned int language;
/*0132*/ unsigned int channel;
/*0136*/ char padding136[8];
/*0144*/ unsigned int languageskill;
/*0148*/ char message[100];
} M;
// init packets
ZeroMemory(&P, sizeof(P));
ZeroMemory(&M, sizeof(M));
P.SpawnID = (unsigned short)pChar->SpawnID;
P.Heading = (unsigned int)(pChar->Heading * 4);
PSPAWNINFO psTarget = NULL;
Target(pChar,NPCs.Name);
if (ppTarget && pTarget) {
psTarget = (PSPAWNINFO)pTarget;
}
if (psTarget)
{
strcpy(M.target,psTarget->Name);
}
strcpy(M.sender,pChar->Name);
M.channel=8;
M.languageskill=100;
// jump to
P.Z = NPCs.Z;
P.Y = NPCs.Y;
P.X = NPCs.X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
sprintf(M.message,"%s",NPCs.Phrase[j]);
SendEQMessage(PKT_CHANNEL_MESSAGE,&M,sizeof(M));
return true;
}
}
}
return false;
}
void FloydWarshall(FWVertice* vertices, int nodecount) // Vertices numbered from 0 to nodecount-1
{
distances = (int*) malloc(nodecount*nodecount*sizeof(int)*8);
predecessor = (int*) malloc(nodecount*nodecount*sizeof(int)*8);
int i,j,k;
for(i = 0; i < nodecount; i++)
{
for(j = 0; j < nodecount; j++)
{
distances[i*nodecount+j] = 0;
predecessor[i*nodecount+j] = i;
}
}
for(i = 0; i < nodecount; i++)
{
for(j = 0; j < vertices.numconnect; j++)
{
distances[i*nodecount + vertices.connections[j]] =1;
// vertices.connections[j].weight;
}
for(j = 0; j < nodecount; j++)
{
if(!distances[i*nodecount+j] && (i^j))
// i ^ j returns 0 if they are equal
{
distances[i*nodecount+j] = INFINITY;
}
}
}
for(k = 0; k < nodecount; k++)
{
for(i = 0; i < nodecount; i++)
{
for(j = 0; j < nodecount; j++)
{
if(distances[i*nodecount+j] > distances[i*nodecount+k] + distances[k*nodecount+j])
{
distances[i*nodecount+j] = distances[i*nodecount+k] + distances[k*nodecount+j];
predecessor[i*nodecount+j] = predecessor[k*nodecount+j];
}
}
}
}
}
VOID SimGate(PSPAWNINFO pChar, PCHAR szLine)
{
CHAR szMsg[MAX_STRING] = {0};
PCHARINFO2 pChar2 = GetCharInfo2();
sprintf(szMsg,"Gating...");
WriteChatColor(szMsg,USERCOLOR_DEFAULT);
DestZone=pChar2->ZoneBoundID;
DestType=0;
ZoneReason=11;
Y=pChar2->ZoneBoundY;
X=pChar2->ZoneBoundX;
Z=pChar2->ZoneBoundZ;
Heading=0;
ZoneChange=true;
return;
}
VOID SimFade(PSPAWNINFO pChar, PCHAR szLine)
{
CHAR szMsg[MAX_STRING] = {0};
if (pChar->Instance != 0)
{
DestZone = *((int *)(&(pChar->Instance)-1));
}
else
{
DestZone = pChar->Zone;
}
sprintf(szMsg,"Fading...");
WriteChatColor(szMsg,USERCOLOR_DEFAULT);
DestType=0;
ZoneReason=0;
Y=pChar->Y;
X=pChar->X;
Z=pChar->Z;
Heading =(int)pChar->Heading;
ZoneChange=true;
return;
}
// Called once, when the plugin is to initialize
PLUGIN_API VOID InitializePlugin(VOID)
{
DebugSpewAlways("Initializing MQ2PiggyZone");
ppLEQ=(LocalCEverQuest**)pinstCEverQuest;
AddCommand("/zone",ChangeZones);
AddCommand("/gate",SimGate);
AddCommand("/fade",SimFade);
AddCommand("/findpath",FindPath);
}
// Called once, when the plugin is to shutdown
PLUGIN_API VOID ShutdownPlugin(VOID)
{
DebugSpewAlways("Shutting down MQ2PiggyZone");
RemoveCommand("/zone");
RemoveCommand("/gate");
RemoveCommand("/fade");
RemoveCommand("/findpath");
}
mq2piggyzone.ini
Rich (BB code):
[qeytoqrg]
south=230.70 106.47 -3 505
[qeynos2]
default=203.61 484.94 4 257
alt2=306.74 533.17 4 484
[NPCTeleporters]
1=344 "Magus Alaria" 601 -7 2 68 "Butcherblock" 22 "East Commonlands" 30 "Everfrost" 34 "North Ro" 35 "South Ro" 182 "Nedaria"
2=182 "Magus Wenla" 1023 1525 82 68 "Butcherblock" 22 "East Commonlands" 30 "Everfrost" 34 "North Ro" 35 "South Ro" 280 "Natimbi" 279 "Abysmal Sea"
3=279 "Magus Pellen" -150 48 140 280 "Natimbi" 182 "Nedaria"
4=280 "Magus Releua" -693 -1585 246 182 "Nedaria" 279 "Abysmal Sea"
5=68 "Magus Tira" -1084 -2450 0 22 "East Commonlands" 30 "Everfrost" 34 "North Ro" 35 "South Ro" 182 "Nedaria"
6=30 "Magus Delin" 1802 -5041 -60 22 "East Commonlands" 68 "Butcherblock" 34 "North Ro" 35 "South Ro" 182 "Nedaria"
7=22 "Magus Zeir" -1626 -178 4 30 "Everfrost" 68 "Butcherblock" 34 "North Ro" 35 "South Ro" 182 "Nedaria"
8=34 "Magus Arindri" 2678 917 -25 30 "Everfrost" 68 "Butcherblock" 22 "East Commonlands" 35 "South Ro" 182 "Nedaria"
9=35 "Magus Jerira" -1468 1066 -23 30 "Everfrost" 68 "Butcherblock" 22 "East Commonlands" 34 "North Ro" 182 "Nedaria"
10=37 "Translocator Tradil" 881 -831 0 96 "Travel to Timorous Deep"
11=96 "Translocator Jorbin" 5862 3623 2 37 "travel to Oasis" 93 "travel to overthere"
12=93 "Translocator Breya" 3435 2747 -158 96 "Travel to Timorous Deep"
13=34 "Translocator Ionie" 781 -843 0 110 "travel to Iceclad"
14=110 "Translocator Kurione" 5341 360 -16 34 "travel to North Ro"
15=68 "Translocator Gethia" 854 3167 12 96 "Travel to Timorous Deep"
16=68 "Translocator Fithop" 1351 3253 12 69 "Travel to Ocean of Tears"
17=96 "Translocator Deela" -4545 -3253 19 68 "Travel to Butcherblock" 84 "Travel to Firiona Vie"
18=84 "Translocator Drabilt" -4388 1386 -103 96 "Travel to Timorous Deep"
19=69 "Translocator Narrik" 273 -9200 4 68 "Travel to Butcherblock" 10 "Travel to Freeport"
20=10 "Translocator Setikan" -20 -1020 -52 69 "Travel to Ocean of Tears"
21=1 "Translocator Sedina" 14 221 4 98 "Travel to Crossing"
22=98 "Translocator Jempar" -1768 670 4 1 "Travel to Qeynos" 24 "Travel to Erudin"
23=24 "Translocator Eniela" 96 -354 24 98 "Travel to Crossing"
24=202 "Priest_of_Discord00" 49 577 4 302 "Wish to go"
25=344 "Sage Vonglor" 12 -1 -.12 202 "test subject"
[ZoneConnections]
1=qeynos "South Qeynos",2,45
2=qeynos2 "North Qeynos",45,4,1,202
3=qrg "Surefall Glade",4,181
4=qeytoqrg "Qeynos Hills",17,3,2,12
5=highpass "Highpass Hold",6,15,20
6=highkeep "HighKeep",5
8=freportn "North Freeport"
9=freportw "West Freeport"
10=freporte "East Freeport"
11=runnyeye "Clan RunnyEye",33,16
12=qey2hh1 "West Karana",4,13
13=northkarana "North Karana",12,15,14
14=southkarana "South Karana",13,18,51
15=eastkarana "East Karana",13,5,16
16=beholder "Gorge of King Xorbb",15,11
17=blackburrow "BlackBurrow",4,30
18=paw "Infected Paw",14
19=rivervale "Rivervale",20,33,202
20=kithicor "Kithicor Forest",19,5,21
21=commons "West Commonlands",20,22,36
22=ecommons "East Commonlands",21,25,383,393
23=erudnint "Erudin Palace",24
24=erudnext "Erudin",23,38
25=nektulos "Nektulos Forest",27,40,22,202,365
26=cshome "Sunset Home"
27=lavastorm "Lavastorm Mountains",80,44,25,31,32,337,341
28=nektropos "Nektropos"
29=halas "Halas",30
30=everfrost "Everfrost Peaks",29,73,17,202
31=soldunga "Solusek's Eye",32,27,278
32=soldungb "Nagafen's Lair",31,27,278
33=misty "Misty Thicket",11,19,202
34=nro "North Ro"
35=sro "South Ro"
36=befallen "Befallen",21
37=oasis "Oasis of Marr",393,394
38=tox "Toxxulia Forest",24,75,74,202
39=hole "The Ruins of Old Paineel",75
40=neriaka "Neriak Foreign Quarter",25,41
41=neriakb "Neriak Commons",40,42
42=neriakc "Neriak Third Gate",41
43=neriakd "Neriak Palace"
44=najena "Najena",44
45=qcat "Qeynos Catacombs",1,2
46=innothule "Innothule Swamp",394,65,52,47,202
47=feerrott "The Feerrott",49,46,48,50,202
48=cazicthule "Cazic-Thule",47
49=oggok "Oggok",47
50=rathemtn "Mountains of Rathe",47,51
51=lakerathe "Lake Rathetear",14,50,77
52=grobb "Grobb",46
53=aviak "Aviak Village"
54=gfaydark "Greater Faydark",58,61,57,68,202
55=akanon "Ak'Anon",56
56=steamfont "Steamfont Mountains",55,57,202
57=lfaydark "Lesser Faydark",54,56,59
58=crushbone "Clan Crushbone",54
59=mistmoore "Castle Mistmoore",57
60=kaladima "Kaladim",67,68
61=felwithea "Felwithe",62,54
62=felwitheb "Felwithe",61
63=unrest "Estate of Unrest",70
64=kedge "Kedge Keep",70
65=guktop "Upper Guk",46,66
66=gukbottom "Lower Guk",66
67=kaladimb "Kaladim",60
68=butcher "Butcherblock Mountains",60,54,70,69,202
69=oot "Ocean of Tears",382,68
70=cauldron "Dagnor's Cauldron",68,63,64
71=airplane "Plane of Sky"
72=fearplane "Plane of Fear"
73=permafrost "Permafrost Keep",30
74=kerraridge "Kerra Isle",38
75=paineel "Paineel",38,39,101
76=hateplane "The Plane of Hate"
77=arena "The Arena",51
78=fieldofbone "The Field of Bone",97,94,88,83,106,79,202
79=warslikswood "Warsliks Wood",104,78,82,85,93
80=soltemple "Temple of Solusek Ro",27
81=droga "Temple of Droga",92,107
82=cabwest "West Cabilis",106,85,79
83=swampofnohope "Swamp of No Hope",78,95,84,106
84=firiona "Firiona Vie",83,86,85,202
85=lakeofillomen "Lake of Ill Omen",79,82,84,92,109
86=dreadlands "Dreadlands",92,84,102,87
87=burningwood "Burning Woods",91,103,92,86
88=kaesora "Kaesora",78
89=sebilis "Old Sebilis",95
90=citymist "City of Mist",94
91=skyfire "Skyfire Mountains",108,93,87
92=frontiermtns "Frontier Mountains",93,85,86,81,107,87
93=overthere "The Overthere",105,79,92,91,202
94=emeraldjungle "The Emerald Jungle",90,95,78
95=trakanon "Trakanon's Teeth",94,89,83
96=timorous "Timorous Deep"
97=kurn "Kurn's Tower",78
98=erudsxing "Erud's Crossing"
100=stonebrunt "Stonebrunt Mountains"
101=warrens "The Warrens"
102=karnor "Karnor's Castle",86
103=chardok "Chardok",87
104=dalnir "Dalnir",79
105=charasis "Howling Stones",93
106=cabeast "East Cabilis",78,83,82
107=nurga "Mines of Nurga",81,92
108=veeshan "Veeshan's Peak"
109=veksar "Veksar",85
110=iceclad "Iceclad Ocean",111,116
111=frozenshadow "Tower of Frozen Shadow",110
112=velketor "Velketor's Labyrinth",118
113=kael "Kael Drakkal",116,119
114=skyshrine "Skyshrine",117,119
115=thurgadina "Thurgadin",129,118
116=eastwastes "Eastern Wastes",110,121,118,113,128
117=cobaltscar "Cobalt Scar",125,114
118=greatdivide "Great Divide",116,115,112,202
119=wakening "The Wakening Land",113,127,114
120=westwastes "Western Wastes",124,125,123
121=crystal "Crystal Caverns",116
123=necropolis "Dragon Necropolis",120
124=templeveeshan "Temple of Veeshan",126,120
125=sirens "Siren's Grotto",117,120
126=mischiefplane "Plane of Mischief"
127=growthplane "Plane of Growth"
128=sleeper "Sleeper's Tomb"
129=thurgadinb "Icewell Keep",115,118
130=erudsxing2 "Marauder's Mire"
150=shadowhaven "Shadow Haven",151,156,153,152
151=bazaar "The Bazaar",150,152,202
152=nexus "The Nexus",161,150,151,202
153=echo "Echo Caverns",150,164,157
154=acrylia "Acrylia Caverns",167
155=sharvahl "Shar Vahl",166,165
156=paludal "Paludal Caverns",166,165,150
157=fungusgrove "Fungus Grove",170,153
158=vexthal "Vex Thal",176
159=sseru "Sanctus Seru",168,174
160=katta "Katta Castellum",172,170
161=netherbian "Netherbian Lair",152,174,168
162=ssratemple "Ssraeshza Temple",171
163=griegsend "Grieg's End",175,174
164=thedeep "The Deep",153
165=shadeweaver "Shadeweaver's Thicket",156,155,202
166=hollowshade "Hollowshade Moor",167,155
167=grimling "Grimling Forest",172,166,154
168=mseru "Marus Seru",169,161,159
169=letalis "Mons Letalis",171,168
170=twilight "The Twilight Sea",160,157,175
171=thegrey "The Grey",162,175,169
172=tenebrous "The Tenebrous Mountains",167,160
173=maiden "The Maiden's Eye",176,179,174
174=dawnshroud "Dawnshroud Peaks",161,173,163,159
175=scarlet "The Scarlet Desert",163,170,171
176=umbral "The Umbral Plains",158,173
179=akheva "Akheva Ruins",173
180=arena2 "The Arena"
181=jaggedpine "The Jaggedpine Forest",3,182
182=nedaria "Nedaria's Landing",181
183=tutorial "Tutorial Zone"
184=load "Loading"
185=load2 "Loading"
186=hateplaneb "The Plane of Hate"
187=shadowrest "Shadowrest"
188=tutoriala "The Mines of Gloomingdeep"
189=tutorialb "The Mines of Gloomingdeep"
190=clz "Loading"
200=codecay "Ruins of Lxanvom",203
201=pojustice "Plane of Justice",203
202=poknowledge "Plane of Knowledge",19,54,68,30,38,152,118,165,2,203,84,56,78,46,25,4 7,93,224,151,344,33
203=potranquility "Plane of Tranquility",202,200,201,204,205,206,207,208,209,210,211,212,2 13,214,215,216,217,218,219
204=ponightmare "Plane of Nightmare",203,221
205=podisease "Plane of Disease",203,200
206=poinnovation "Plane of Innovation",203
207=potorment "Plane of Torment",203
208=povalor "Plane of Valor",203,211
209=bothunder "Torden, The Bastion of Thunder",203
210=postorms "Plane of Storms",203,209
211=hohonora "Halls of Honor",203,220,
212=solrotower "Solusek Ro's Tower",203,217
213=powar "Plane of War",203
214=potactics "Drunder, Fortress of Zek",203
215=poair "Eryslai, the Kingdom of Wind",203
216=powater "Reef of Coirnav",203
217=pofire "Doomfire, The Burning Lands",203
218=poeartha "Vegarlson, The Earthen Badlands",203,222
219=potimea "Plane of Time",203
220=hohonorb "Temple of Marr",211
221=nightmareb "Lair of Terris Thule",204
222=poearthb "Stronghold of the Twelve",218
223=potimeb "Plane of Time",219
224=gunthak "Gulf of Gunthak",202,225,227
225=dulak "Dulak's Harbor",224,226
226=torgiran "Torgiran Mines",225
227=nadox "Crypt of Nadox",224,228
228=hatesfury "Hate's Fury, The Scorned Maiden",227
229=guka "The Cauldron of Lost Souls"
230=ruja "The Bloodied Quarries"
231=taka "The Sunken Library"
232=mira "The Silent Gallery"
233=mmca "The Forlorn Caverns"
234=gukb "The Drowning Crypt"
235=rujb "The Halls of War"
236=takb "The Shifting Tower"
237=mirb "The Maw of the Menagerie"
238=mmcb "The Dreary Grotto"
239=gukc "The Ancient Aqueducts"
240=rujc "The Wind Bridges"
241=takc "The Fading Temple"
242=mirc "The Spider Den"
243=mmcc "The Asylum of Invoked Stone"
244=gukd "The Mushroom Grove"
245=rujd "The Gladiator Pits"
246=takd "The Royal Observatory"
247=mird "The Hushed Banquet"
248=mmcd "The Chambers of Eternal Affliction"
249=guke "The Foreboding Prison"
250=ruje "The Drudge Hollows"
251=take "The River of Recollection"
252=mire "The Frosted Halls"
253=mmce "The Sepulcher of the Damned"
254=gukf "The Chapel of the Witnesses"
255=rujf "The Fortified Lair of the Taskmasters"
256=takf "The Sandfall Corridors"
257=mirf "The Forgotten Wastes"
258=mmcf "The Ritualistic Summoning Grounds"
259=gukg "The Root Garden"
260=rujg "The Hidden Vale"
261=takg "The Balancing Chamber"
262=mirg "The Heart of the Menagerie"
263=mmcg "The Cesspits of Putrescence"
264=gukh "The Accursed Sanctuary"
265=rujh "The Blazing Forge"
266=takh "The Sweeping Tides"
267=mirh "The Morbid Laboratory"
268=mmch "The Aisles of Blood"
269=ruji "The Arena of Chance"
270=taki "The Antiquated Palace"
271=miri "The Theater of Imprisoned Horrors"
272=mmci "The Halls of Sanguinary Rites"
273=rujj "The Barracks of War"
274=takj "The Prismatic Corridors"
275=mirj "The Grand Library"
276=mmcj "The Infernal Sanctuary"
277=chardokb "The Halls of Betrayal",103
278=soldungc "The Caverns of Exile",32
279=abysmal "Abysmal Sea"
280=natimbi "Natimbi, The Broken Shores",281,293
281=qinimi "Qinimi, Court of Nihilia",280,282,284,283
282=riwwi "Riwwi, Coliseum of Games",283,284,281
283=barindu "Barindu, Hanging Gardens",282,281,290,289,284,285,286,287,288
284=ferubi "Ferubi, Forgotten Temple of Taelosia",283,281,282
285=snpool "Sewers of Nihilia, Pool of Sludge",283
286=snlair "Sewers of Nihilia, Lair of Trapped Ones",283
287=snplant "Sewers of Nihilia, Purifying Plant",283
288=sncrematory "Sewers of Nihilia, the Crematory",283
289=tipt "Tipt, Treacherous Crags",283
290=vxed "Vxed, The Crumbling Caverns",283
291=yxtta "Yxtta, Pulpit of Exiles",294,292
292=uqua "Uqua, The Ocean God Chantry",291
293=kodtaz "Kod'Taz, Broken Trial Grounds",280,294,295,291
294=ikkinz "Ikkinz, Chambers of Destruction",293
295=qvic "Qvic, Prayer Grounds of Calling",293,297,295
296=inktuta "Inktu`Ta, The Unmasked Chapel",295
297=txevu "Txevu, Lair of the Elite",295,298
298=tacvi "Tacvi, Seat of the Slaver",295
299=qvicb "Qvic, the Hidden Vault"
300=wallofslaughter "Wall of Slaughter",303,316,317
301=bloodfields "The Bloodfields",302,336
302=draniksscar "Dranik's Scar",202,301,335,303
303=causeway "Nobles' Causeway",302,300
304=chambersa "Muramite Proving Grounds"
305=chambersb "Muramite Proving Grounds"
306=chambersc "Muramite Proving Grounds"
307=chambersd "Muramite Proving Grounds"
308=chamberse "Muramite Proving Grounds"
309=chambersf "Muramite Proving Grounds"
316=provinggrounds "Muramite Proving Grounds",300,334
317=anguish "Asylum of Anguish",300
318=dranikhollowsa "Dranik's Hollows"
319=dranikhollowsb "Dranik's Hollows"
320=dranikhollowsc "Dranik's Hollows"
321=dranikhollowsd "Dranik's Hollows"
322=dranikhollowse "Dranik's Hollows"
323=dranikhollowsf "Dranik's Hollows"
324=dranikhollowsg "Dranik's Hollows"
325=dranikhollowsh "Dranik's Hollows"
326=dranikhollowsi "Dranik's Hollows"
327=dranikhollowsj "Dranik's Hollows"
328=dranikcatacombsa "Catacombs of Dranik"
329=dranikcatacombsb "Catacombs of Dranik"
330=dranikcatacombsc "Catacombs of Dranik"
331=draniksewersa "Sewers of Dranik"
332=draniksewersb "Sewers of Dranik"
333=draniksewersc "Sewers of Dranik"
334=riftseekers "Riftseekers' Sanctum",316
335=harbingers "Harbingers' Spire",302
336=dranik "The Ruined City of Dranik",301
337=broodlands "The Broodlands",27,338,340,343
338=stillmoona "Stillmoon Temple",337
339=stillmoonb "The Ascent",338
340=thundercrest "Thundercrest Isles",337
341=delvea "Lavaspinner's Lair",337,27,342
342=delveb "Tirranun's Delve",341
343=thenest "The Accursed Nest",337
344=guildlobby "The Guild Lobby",202
345=guildhall "Guild Hall"
346=barter "The Barter Hall"
347=illsalin "Ruins of Illsalin",362
348=illsalina "Imperial Bazaar"
349=illsalinb "Temple of the Korlach"
350=illsalinc "The Nargilor Pits"
351=dreadspire "Dreadspire Keep",358
354=drachnidhive "The Hive",358
355=drachnidhivea "Living Larder"
356=drachnidhiveb "Coven of the Skinwalkers"
357=drachnidhivec "Queen Sendaii's Lair"
358=westkorlach "Stoneroot Falls",362,354,351
359=westkorlacha "Chambers of Xill"
360=westkorlachb "Caverns of the Lost"
361=westkorlachc "Lair of the Korlach"
362=eastkorlach "Undershore",365,347,358
363=eastkorlacha "Snarlstone Dens"
364=shadowspine "Shadowspine"
365=corathus "Corathus Creep",25,362
366=corathusa "Sporali Caverns"
367=corathusb "Corathus Lair"
368=nektulosa "Shadowed Grove"
369=arcstone "Arcstone",383,370,371
370=relic "Relic",369
371=skylance "Skylance"
372=devastation "The Devastation",382
373=devastationa "The Seething Wall",372
374=rage "Sverag, Stronghold of Rage",372
375=ragea "Razorthorn, Tower of Sullon Zek",374
376=takishruins "Ruins of Takish-Hiz",392,378
377=takishruinsa "The Root of Ro",376
378=elddar "The Elddar Forest",376,379
379=elddara "Tunare's Shrine",378
380=theater "Theater of Blood"
381=theatera "Deathknell, Tower of Dissonance"
382=freeporteast "Freeport East",383,393,384,372
383=freeportwest "Freeport West",202,384,22,382,369
384=freeportsewers "Freeport Sewers",393,382,383
385=freeportacademy "Academy of Arcane Sciences"
386=freeporttemple "Temple of Marr"
387=freeportmilitia "Freeport Militia House"
388=freeportarena "Arena"
390=freeportcityhall "City Hall"
391=freeporttheater "Theater"
392=freeporthall "Hall of Truth"
393=northro "North Ro",394,382,384,37
394=southro "South Ro",393,37,46,376
[frontiermtns]
default=737.62 3504.58 34 328
[guildlobby]
default=588.00 0.00 2 0
[poknowledge]
default=-212.79 -64.96 -158 162
[riftseekers]
default=120.72 2.48 -238 508
[qvic]
default=-651.00 -124.00 -425 505
[rage]
default=1071.13 0.85 6 3
[broodlands]
creator=512.73 1233.48 23 147
[freeportwest]
default=-188.30 -201.17 -70 119
[beholder]
forkintheroad=875 -409.38 -4.65
goblintracking=875 -409.38 -5.74
lordofthecastle=1262 -545 4.73
miningoperation=1261.88 -544.88 5.13 90
mudcrossing=848.13 -550.88 -.88
nicebridge=1261.88 -544.88 5.13
outpostonelowerpatrolroute=878.88 -462.06 -3.79
raisedwolves=98 -906 -4.63 90
roadtorunnyeye=922.61 -310.11 10.53
stagingaraid=514 -589 -71
[blackburrow]
gnollandgo=109 -3 3.75
[burningwood]
chardok=7043.24 -4157.55 -233 107
highlow=3233.13 2270.07 -253.71 107
upwardmobility=1713.19 -1696.04 -652.46 107
stirring=-2530.26 2596.00 -67.24 107
learninghornet=-2530.26 2596.00 -67.24 107
rubble=-1398.47 2240.45 -379 507
breadinggrounds=2932.95 -1729.06 -256 19
mindbees=-2530.00 2596.00 -67.25 19
mouthofthedragon=1861.41 -1715.46 -651.24 90
bigholeseverywhere=-276.10 2239.56 -548 94
earthsky=-853 -1180 -638
breeding=2955 -725 -255
fortifying=1106.22 1136.64 -206.44
task22=29.80 140.96 2.19
meteor=-744.45 -1078.34 -601 280
carrymoon=-250.40 2172.70 -521 115
craterrun=1310.53 1087.34 -434 139
bigholes=-324.42 2201.61 -492.53 139
[butcher]
deldryn=1423.38 2735.24 0 506
trans_oot=1350.89 3253.26 11 130
trans_timorous=855.36 3170.46 11 146
[charasis]
overlook=173.09 -423.74 23 258
[chardok]
upwardmobility=-535.09 639.32 -137 88
stirring=-574.40 1313.50 -157.44 107
learninghornet=-788 984 -213.63 107
rubble=178.82 436.19 53 23
meteor=0.10 30.56 3 377
default=-520.16 702.98 -137 126
[citymist]
serenitynearlake=230.25 -390.76 253.78 90
lookingoveredge=105.25 193.68 271.78 90
jungletrek=-97.00 209.00 2 301
throughmist=206.69 -368.11 -15 376
Preparations=-230.48 -309.89 75 6
Entrancedisaster=-207.32 -27.62 3 80
bandits?=-71.20 -527.51 3 51
mistysights=224.30 -401.45 35 375
[dreadlands]
default=806.37 -2095.80 26 127
giantexp=-430 1970 325 377
lookout=3069 9659 1047
mystic=2480.67 7751.34 1049.22
scarycaves=-2514 3498 712
marana=802.25 -2070.96 26 122
rubble=1691.59 -4939.24 56 362
breadinggrounds=1691.59 -4939.24 56 362
mindbees=1787.70 987.94 89.04 107
klok=778.75 9123.05 1063 125
hoobert=263.97 -4945.62 -13 97
statuegarden=2200.5 4930 1037.13 90
dreadedgiants=1817.81 941.19 92.76 377
tothecastle=-454.49 3458.92 385.57 377
landsofdread=-1556.41 -4869.58 56.29 377
empire=392.82 -4383.29 44.17
fortifying=2274, 4859.75 , 1049.47
task22=837.47 9667.65 1109.39
craterrun=3069.31 9654.56 1049 134
gianttidings=-2137.54 -128.04 6.97
safespot=1869.85 9192.32 1648.09
stoneworks=2552.25 7728.81 1050.38
[droga]
edge=-471.87 2066.23 -349 408
fallinggoblinterr=242.57 154.10 -189 507
plunge=538.84 382.17 -205 219
templemines=-488.00 215.00 -173 302
[dulak]
timeforbed=295.03 -1795.42 -25 9
leavinghome=-1121.14 -144.06 -29 126
itstradition=553.81 -1748.16 -25 508
stormwave=-1137.65 -86.06 -29 402
scornbywind=628.17 -1783.47 -25 163
payinghomage=2356.28 -990.66 41 398
[eastkarana]
droppinginonbandits=1388.88 105.52 -0.51
forkintheroad=1388.88 428 1.13
goblintracking=-2701 -2011 4.34
journeytohighholdkeep=11.08 260.04 2.77
karanarun=-2278.80 -3747.04 98.61
mining=8.57 923.74 -35.15 90
mudcrossing=-1733 -5987 389.13
nicebridge=11.08 917.40 -33.59
outpostone=-930.86 -4560.94 183.01
outpostonelowerpatrolroute=-927.72 -4560.93 183.05
raisedwolves=1323.88 -2681.88 1.75 90
roadtorunnyeye=-2406.86 -3812.43 103.04
stagingaraid=-938.48 -4554.83 182.56
stonefaced=-2264.40 -3767.43 95.79
throughhighhold=-863.23 -65.77 9.96
[emeraldjungle]
serenitynearlake=3455.33 -874.08 -364.78 90
lookingoveredge=3469.12 -407.88 -342.59 90
jungletrek=4191.00 -1458.00 -342 501
throughmist=1931.79 2816.17 -221 376
Preparations=3367.74 -423.15 -339 58
Entrancedisaster=-3378.80 1626.39 -342 356
bandits?=4202.00 -1428.00 -342 94
waterways=3809.83 -2106.14 -342 89
mistysights=4213.00 -1450.00 -341 127
[everfrost]
gnollandgo=2600.97 -3456.03 -38.06
[fieldofbone]
whatliesbelow=205.43 2697.05 -46 129
Below=304.76 2746.55 -46 273
[firiona]
default=-4397.43 1379.95 -103 153
lizardtour=-580.40 2480.15 -24 243
marchfordrolvarg=649.33 -2068.98 168 136
stonefacedlizards=-580.38 2480.13 -25 243
drowning=-1765.47 2817.23 -136 187
delvingmines=650 -2060 165 282
watchfordrolvarg=1513.00 -1395.00 -2 153
dangersofdeep=-1791 2724 -101.34 90
Drabilt=-4398.77 1386.86 -147 421
[frontiermtns]
droptemple=3482.25 2875.75 352 253
badgeringgoblins=-1955.70 2086.03 -375 42
mountaineering=1334.73 2024.6 961 42
statuegarden=-1749.85 -2145.28 78.03
watchoutoverthere=4894.78 1444 366.32 90
earthsky=-2846 -642 -477.63 90
default=-3686.75 -1634.78 -335 258
spires=-2534 -1296 -475.74
lefttower=-3038.27 121 -533.34
mining=-375.95 -645.88 -124.56
holdingfort=-39 -1435.38 -114.38
digin=797.88 -2753.63 15.16
blasted=-3111.30 49.58 -529 58
trailblazing=4784, 1401, 354.20
badgeringkunark=-1899.13 2020.88 -377 84
whatdotheydointhere=796.64 -2768.32 18.10
[guildlobby]
default=588.00 0.00 2 0
[gunthak]
default=1217.46 -1066.37 30 29
cadale=1511.43 -237.31 4 420
timeforbed=1624.11 -172.74 3 161
leavinghome=-1190.84 2250.90 68 290
itstradition=-206.12 -678.62 -39 262
whereunderground=-2078.78 -89.03 43 27
taskmaster=1511.41 -240.58 4 458
doyoubelieve=-1628.00 -95.00 43 256
scornbywind=-3586.40 2628.28 557 251
makingstand=-2136.72 -87.75 43 109
[hatesfury]
treasureforeveryone=906.30 1270.03 -605 134
[highkeep]
basementsandplains=57.77 -134.10 -41.26
bringingbooks=-27.17 -99.24 2.19 90
downthepass=-11.37 34.26 -0.25
ridgerun=68.55 -329.47 3.75
[highpass]
basementsandplains=281.21 -119.62 2.71
bringingbooks=604.25 143.13 30.03 90
downthepass=-247.83 191.37 3.75
droppinginonbandits=-24 105.52 4.39
journeytohighholdkeep=-259.85 -60.08 2.29
outpostone=-314 -165 3.75
ridgerun=589.11 105.17 31.75
stonefaced=-70.25 393.38 8.03
throughhighhold=65.21 -7.18 3.75
[karnor]
giantexp=170.49 -261.95 46.00 377
lookout=119.52 -32.67 32.19 377
mystic=108.11 -446.86 2.75 377
scarycaves=-48.92 -277.16 2.19 377
dreadedgiants=190.34 -216.08 43.85 377
tothecastle=-148.00 -192.88 43.85 377
landsofdread=-75.20 -593.49 15.88 377
empire=162.13 -250.87 44.17
gianttidings=-150.08 -209.57 44.68
stoneworks=193.13 -220.38 45.09
[kithicor]
overthebridge=-570 1930 225.13
[lakeofillomen]
stonefacedlizards=3787.53 -3542.99 59 400
pillarsofciv=163.12 -488.20 66 295
everythingruins=5579.88 -5218.00 36 400
watchfordrolvarg=-2749.00 3388.00 342 153
checkingcabilis=6295.89 -6656.14 38 26
brokenstone=-475.66 -1566.12 100 371
dinnertime=-2504.35 4703.57 227 125
mountaineering=5417.87 -4277 78.31 125
watchoutoverthere=-1154.36 2292.91 305.14 90
poortree=-2547.02 5022.31 228.44 90
dangersofdeep=190.91 -2672.40 140.77 90
onedeadtree=-3419.66 592.44 109.26 90
delvingmines=3425.01 3063.47 164 8
where=1369.25 -4184.15 218 327
spires=4846.18 -2872.24 104.24
mining=3373.13 3059.91 162.91
holdingfort=-1384.29 -2057.68 100.37
ruinseverywhere=3308.81 -1766.17 76.00
whatplaceisthis=5526.5 -5285.08 33.19
[nadox]
whereunderground=-464.09 1802.27 -166 135
doyoubelieve=-971.20 160.94 7 258
makingstand=-461.32 1793.41 -166 142
treasureforeveryone=-553.21 -401.13 7 377
[nektulos]
default=682.76 -170.29 17 487
MQ2 Anti-zone code added...
MQ2Commands.cpp and comment this portion out
Rich (BB code):
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;
}
*/
}
Noobhaxor
P.S. If you found this post helpful please click the R to give me a red cent
Last edited: