I do run it. I do not have access to a few zones. Several people would do the job much quicker. I have barely hit 100 zones so far.
I have a very good reason for doing this, I'd just rather not say right at this moment. if you are that curious, pm me and I'll explain.
Here is the code that S0rc wrote for me.
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
// MQ2DumpIT.cpp | /dumpspawn will dump current zone npc spawn
// Author: s0rCieR |
// Version: 0.001 |
// Date: 20060804 |
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
#include "../MQ2Plugin.h"
#include <map>
PreSetup("MQ2DumpIT"); PLUGIN_VERSION(0.001);
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
long SpawnMask(PSPAWNINFO xSpawn) {
if(!xSpawn) return 0x0000;
if(xSpawn->Type==SPAWN_PLAYER) return 0x0001;
if(xSpawn->Type==SPAWN_CORPSE) return xSpawn->Deity?0x0010:0x0020;
if(xSpawn->Type!=SPAWN_NPC) return 0x0000;
if(strstr(xSpawn->Name,"s_Mount")) return 0x0000;
if(!xSpawn->MasterID) return 0x0002;
PSPAWNINFO mSpawn=(PSPAWNINFO)GetSpawnByID(xSpawn->MasterID);
return (!mSpawn || mSpawn->Type!=SPAWN_PLAYER)?0x0008:0x0004;
}
PLUGIN_API VOID dumpspawn(PSPAWNINFO pChar, PCHAR Cmd) {
map<DWORD,SPAWNINFO> ZoneSpawn;
PSPAWNINFO xSpawn=(PSPAWNINFO)pSpawnList;
while (xSpawn) {
if(GetSpawnType(xSpawn)==NPC && (SpawnMask(xSpawn)&0x0002)) {
ZoneSpawn.insert(map<DWORD,SPAWNINFO>::value_type(xSpawn->SpawnID,*xSpawn));
}
xSpawn=xSpawn->pNext;
}
char Section[MAX_STRING]; strcpy(Section,((PZONEINFO)pZoneInfo)->LongName);
char Keyword[MAX_STRING];
char Outputs[MAX_STRING];
WritePrivateProfileString(Section,NULL,NULL,INIFileName);
for(map<DWORD,SPAWNINFO>::iterator i=ZoneSpawn.begin(); i!=ZoneSpawn.end(); i++) {
sprintf(Outputs,"\"%d\",\"%.f\",\"%.f\",\"%.f\",\"%s\"",GetCharInfo()->zoneId,(*i).second.Y,(*i).second.X,(*i).second.Z,(*i).second.DisplayedName);
sprintf(Keyword,"%d",(*i).second.SpawnID);
WritePrivateProfileString(Section,Keyword,Outputs,INIFileName);
}
}
PLUGIN_API VOID InitializePlugin(VOID) {
AddCommand("/dumpspawn",dumpspawn);
}
PLUGIN_API VOID ShutdownPlugin(VOID) {
RemoveCommand("/dumpspawn");
}
And this is what the output looks like:
[The Plane of Tranquility]
382="203","1844","-741","-657","Vortix"
384="203","-252","-1355","-905","Iramai Sacredsoul"
388="203","-258","-1356","-906","Phanti Sacredsoul"
390="203","703","-1734","-909","Bor Wharhammer"
392="203","254","-2115","-921","Ronar Flametip"
396="203","-305","-1396","-907","Veriok Dreik"
400="203","583","-1637","-911","Jimmik Greenstone"
403="203","583","-1621","-911","Jasir Amisan"
407="203","499","-1750","-912","Dubbel Strohbarrel"
411="203","479","-1716","-911","Aliia Tal Almad"
414="203","512","-1719","-910","Samusk Hariij"
418="203","504","-1552","-911","Malakar Ay`Ayat"
422="203","627","-1847","-908","Gregory Maligus
Once you have some zones to submit, just email it to me at
[email protected]. feel free to zip them if you want.