Doors for Newer Zones
I am trying to add some doors to Dreadspire and I was wondering if anyone could tell me where to pull the door names from. I notice that PEQ has something like 700+ door names and I was wondering if those were attained from packet collecting, or if the door names could be found from the EQG files or something somehow.
I tried setting all of the ones currently in PEQ (from the list of doors in the wiki), but I was only able to find 3 or 4 that actually worked in Dreadspire and they all seemed like Global objects like the message board, a crate, and the PoK scroll. I am sure there are at least 3 or 4 doors that must be custom loaded to Dreadspire from somewhere. I just need to find their names so I can start adding them. If anyone knows how to do this, I will gladly post the SQL needed to add them all into the zone for anyone else who wants to do so. I am pretty sure the doors I am looking for are a bookcase, a wall looking door and maybe 1 or 2 others. Most of them are for secret passageways and they aren't very secret without doors lol! I imagine once I have them, it might take a while for me to get them all in, but I will definitely share the database info once they are all complete. I am guessing that the best person to answer this question is Cavedude. So, if you see this one, can you please let me know the answer? Or if anyone else knows where to pull these names from, it would be appreciated. Thanks! For reference, I figured I would post links to the door related Wiki pages. So, anyone who finds this post in the future can easily get most of the door related information they might be looking for. Here are the links: Door Table Schema wiki page: http://www.eqemulator.net/wiki/wikka...uDBSchemadoors Door List from PEQ wiki page: http://www.eqemulator.net/wiki/wikka...=DoorsNameList |
Doors come from packet collects. Looking through my files, I don't have any logs for Dreadspire at all. Now the problem of course is we don't have a packet collector that works with Live that can export to a format that eqextractor can use (that's the tool used to extract door data) Worse yet, eqextractor wouldn't work with Live collects anyway, as it also would need to be updated :(
If anybody feels brave and wants to try to update both the packet collector and eqextractor (so that it can extract door/object/etc data AND export to EQBuilder) I would forever be in your debt, and would spend the summer collecting all of the newer zones. The big problem is going to be the spawn opcodes, as they are a royal pain to get. |
Woot! I was sure that info had to be in the EQG files somewhere, so I kept trying to figure out how to find the names. Finally, I remembered trying out S3DSpy a while back and seeing object names in there. I installed it and sure enough, it lists all EQG files as well!
When you pull up the list, you can see all of the object names, because they all end in .mod. The naming convention has changed as well and actually seems much better than the old door and object naming system lol. Here is a Link to GeorgeS emu page where you can find the S3DSpy app in the bottom section there. http://66.159.225.58/eqemu/eq.html And here is an example of the new format for doors and other objects. I didn't think it was going to work because the format is much different now. They now have OBJ in front of all object names and they also use underscores as well. Some of the new names are slightly longer than the old names, so the table might need to be adjusted to allow for longer names so it doesn't cut them off. Here is the list I made for Dreadspire: OBJ_BDRM_LDOOR OBJ_BDRM_RDOOR OBJ_ARTIFACTS_DO OBJ_BEAKER_A OBJ_CAULDREN_A OBJ_CENTER_PIECE OBJ_DINE_LDOOR OBJ_DINE_RDOOR OBJ_DOORFACADE OBJ_HIDDENDOOR OBJ_LIBRARY_CASE OBJ_LIBRY_HIDEDO OBJ_LIBRY_LDOOR OBJ_LIBRY_RDOOR OBJ_LIBRY_SWITCH OBJ_LIBRYSWTCHB OBJ_MAINCASTLE_D OBJ_MNGBOOKS OBJ_RESEARCH_DOO OBJ_RESEARCHDOOR OBJ_SEEING_DOOR OBJ_STAIRWELL_DO OBJ_STUDY_BOOKSH OBJ_STUDY_DOOR OBJ_TORTURE_DOOR OBJ_WHITEBLOCK That worked perfectly. If you have Navicat, you can copy the following and paste it into your table to view these doors. Just go to the loc near where the doors are: Field Order: ID DOORID ZONE NAME POS_Y POS_X POS_Z HEADING OPENTYPE GUILD LOCKPICK KEYITEM TRIGGERDOOR TRIGGERTYPE DOORISOPEN DOOR_PERAM DEST_ZONE DEST_X DEST_Y DEST_Z DEST_HEADING INVERT_STATE INCLINE SIZE BUFFER Code:
13001 1 dreadspire OBJ_BDRM_LDOOR 2450 0 100.1 0 55 0 0 0 0 0 0 -1 NONE 0 0 0 0 0 0 10 0 |
Quote:
|
Looks like many of the doors for the later expansions (using dreadspire as an example) are more than 16 characters. This may also be the case for other objects as well. But, I am only focusing on doors at this point.
So, I changed my table design to use 32 max characters for the door name field. And, it still wasn't working, so I started looking at the source and saw that it was set to 16 in many places there as well. Every case that I found 16 set for door names, I changed it. After the following changes, all doors were gone when I started the server, so it must have messed something up lol. Here are the changes I made. All code changes are marked in red: zone/doors.cpp: Code:
Doors::Doors(const Door* door) Code:
if (RunQuery(query, strlen(query), errbuf, &result)) { zone/doors.h: Code:
private: zone/entity.cpp: Code:
bool EntityList::MakeDoorSpawnPacket(EQApplicationPacket* app) common/dbsharemem.cpp: Code:
max_door_type = atoi(row[0]); common/eq_packet_structs.h: Code:
struct Door_Struct utils/schema.xml: Code:
<TABLE ID="4543" Tablename="doors" PrevTableName="" XPos="2108" YPos="2375" TableType="0" TablePrefix="0" nmTable="0" Temporary="0" UseStandardInserts="0" StandardInserts="" TableOptions="" Comments="" Collapsed="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="14" > zone/zonedump.h: Code:
struct Door { common/patches/anniversary_structs.h: Code:
struct Door_Struct common/patches/client62_structs.h: Code:
struct Door_Struct common/patches/live_structs.h Code:
struct Door_Struct common/patches/titanium_structs.h Code:
struct Door_Struct |
Any name you pull out of an .eqg file can be any size - apparently, SOE changed that with the newer eqg format, and is why a lot of things will not work.
Quote:
|
Maybe I accidentally changed something else door related in the source while I was making these changes. I will go through them all again tonight and make absolutely sure that nothing else was changed that might have caused it to get messed up.
What I did was search the source directory for all files containing the word "door" and then 1 by 1, I went through each file and looked to see if any of them had door name set to 16. I am pretty sure I got them all, but there is still the possibility I missed something. I don't see why this change would cause doors to disappear. Maybe there is some setting that limits the field to 16 that I am not aware of (maybe like a uint setting or something). I am not a coder, so I would really appreciate if a coder could have a quick look at this. This might not seem too major, but as far as using zones from later expansions go, we will always be limited with objects until this is fixed. I imagine that the object table will probably need similar name updates as well. I think this is the final thing needed to allow all Titanium zones to be used fully. Sure, you can use them now without doors, but IMO, doors are required in many to complete the zone. Now that I look at it, maybe my changes in utils/schema.xml are what caused the problem. I don't know much about that file and have never changed it before. Maybe this change is what broke it: Quote:
|
Here are the sections of code that I suspect one of them being the cause of doors disappearing when I change them. I changed all of the ones highlighted in red to 32 as shown in the earlier post. The red values here show the original values for coders to compare. All other changes above were all 16 to begin with.
dbmemshare.cpp: (note that this one was previously set to 10 and not 16 like all of the others. So, this leads me to believe that it either isn't used anymore, or maybe I need to leave it set to 10 for whatever reason...) Code:
bool Database::DBLoadDoors(int32 iDoorCount, int32 iMaxDoorID) { doors.cpp: Code:
Doors::Doors(const Door* door) Code:
// Door tmpDoor; Code:
private: Code:
bool EntityList::MakeDoorSpawnPacket(EQApplicationPacket* app) |
Well, I didn't get any code working for greater than 16 char door names yet, but I did get a new wiki page added. Noting it here since it is door related. I tested every opentype and created a nice reference list with descriptions for anyone wanting to create their own doors. Here is the completed list:
http://www.eqemulator.net/wiki/wikka.php?wakka=OpenType I still want to get the 16 char limit raised in the source, but I think I may need more help with it. |
Quote:
|
Quote:
|
I haven't had time to look into this a lot, but I noticed this:
Code:
struct Door_Struct |
Ahh, worth a shot! So, 2 parts of the packet would essentially become 1 but use the same space so that packet structure doesn't change?
I will see if I can get a compiler working on my windows pc so I can compile the source over and over testing each way without having to impact my players all night lol. And to Derision; I think this should be adjustable because of the note in the comment below showing that it was previously set to 10 and it is now 16. So, if it can go from 10 to 16, it should be able to go higher. Quote:
|
Quote:
|
Quote:
Here's the link. http://www.eqemulator.net/forums/showthread.php?t=25372 |
All times are GMT -4. The time now is 04:27 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.