• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Spawn log (1 Viewer)

fatal!

Member
Joined
Mar 25, 2006
RedCents
30¢
Heya..

I have a plugin that dumps all mobs and their locs in to a text file. Pretty simple really, but I need some people willing to run it for me. Basically, once in a zone, type /dumpspawn and it will generate a text file that you could email to me.
I could post the DLL and source code so you can ensure it is doing what I say.

So the question is.. would anyone be willing to load and run this for me? Obviously, the more dumps of zones I get, the better the info will be.

So.. anyone interested in helping me with this?
 
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.


Rich (BB code):
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
// 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.
 
Last edited:
If this would work, i think the best way to do this would be to make the plugin dump at ONZONED or if the command is ran, but with it running at onzone, you can now just chainzone through most zones and it should be able to pick all the spawns up... I don't know how fast or slow it is, but its an idea
 
This is just to build the base population of mobs. The next plugin will run while you ar ein a zone and log the mobs at their spawn points. The above plugin will give me all of the mobs up and where they are in a zone but it doesn't know how the got thre. Were they pulled there to be killed? Is someone kiting them? is it a roamer?

While I expect 90% of the mobs in the database initially will be at their real spawn point, the second plugin will actually know the true spawn point because it will ignore the initial spawns sent to you onzone and only record those that spawn while you are in the zone. But that's later.
 
Spawn log

Users who are viewing this thread

Back
Top