|
From: Chad M. <cmm...@us...> - 2005-06-19 11:55:46
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24225/src Modified Files: Tag: pre_5_0_beta everquest.h group.cpp group.h spawnshell.cpp typenames.h Log Message: Added OP_Logout, OP_Animation to zoneopcodes Updated spawnStruct a bit with some more known fields. Futzed with the group manager even though I got no idea if I did anything. Debugging why we get illusion messages that don't work a lot. Added Muramite to body types. Index: group.h =================================================================== RCS file: /cvsroot/seq/showeq/src/group.h,v retrieving revision 1.4.16.3 retrieving revision 1.4.16.4 diff -u -d -r1.4.16.3 -r1.4.16.4 --- group.h 21 Feb 2005 05:56:13 -0000 1.4.16.3 +++ group.h 19 Jun 2005 11:55:36 -0000 1.4.16.4 @@ -12,6 +12,7 @@ #include <qobject.h> #include <qstring.h> +#include "everquest.h" //---------------------------------------------------------------------- @@ -63,7 +64,7 @@ { QString m_name; const Spawn* m_spawn; - } * m_members; + }* m_members[MAX_GROUP_MEMBERS]; size_t m_memberCount; size_t m_membersInZoneCount; }; Index: typenames.h =================================================================== RCS file: /cvsroot/seq/showeq/src/typenames.h,v retrieving revision 1.4.6.1 retrieving revision 1.4.6.2 diff -u -d -r1.4.6.1 -r1.4.6.2 --- typenames.h 7 Nov 2004 23:10:26 -0000 1.4.6.1 +++ typenames.h 19 Jun 2005 11:55:36 -0000 1.4.6.2 @@ -26,7 +26,7 @@ NULL, // 17 NULL, // 18 "Zek", // 19 - NULL, // 20 + "Luggald", // 20 "Animal", // 21 "Insect", // 22 "ExtraPlanar", // 23 @@ -34,13 +34,13 @@ "Plant", // 25 "Dragonkin", // 26 "Elemental", // 27 - "Doppleganger", // 28 + "Summoned Creature", // 28 "Dragon", // 29 "BaneDragon", // 30 "Familiar", // 31 NULL, // 32 NULL, // 33 - NULL, // 34 + "Muramite", // 34 NULL, // 35 NULL, // 36 NULL, // 37 Index: spawnshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnshell.cpp,v retrieving revision 1.42.6.9 retrieving revision 1.42.6.10 diff -u -d -r1.42.6.9 -r1.42.6.10 --- spawnshell.cpp 5 Jun 2005 01:01:15 -0000 1.42.6.9 +++ spawnshell.cpp 19 Jun 2005 11:55:36 -0000 1.42.6.10 @@ -696,8 +696,8 @@ illusion->spawnId, illusion->name, illusion->race); #endif - const Item* item = findID(tSpawn, illusion->spawnId); - + Item* item = m_spawns.find(illusion->spawnId); + if (item != NULL) { Spawn* spawn = (Spawn*) item; @@ -708,10 +708,17 @@ spawn->updateLastChanged(); emit changeItem(spawn, tSpawnChangedALL); +#ifdef SPAWNSHELL_DIAG + seqDebug("SpawnShell: Illusioned %s (id=%d) into race %d", + illusion->name, illusion->spawnId, illusion->race); +#endif } else { - seqWarn("SpawnShell: tried to illusion %s (id=%d) to race %d, but the mob didn't exist in the spawn list", illusion->name, illusion->spawnId, illusion->race); + // Someone with an illusion up zoning in will generate an + // OP_Illusion BEFORE the OP_NewSpawn, so they won't be + // in the spawn list. Their spawnStruct will have their + // illusioned race anyways. } } Index: group.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/group.cpp,v retrieving revision 1.6.16.4 retrieving revision 1.6.16.5 diff -u -d -r1.6.16.4 -r1.6.16.5 --- group.cpp 21 Feb 2005 05:56:13 -0000 1.6.16.4 +++ group.cpp 19 Jun 2005 11:55:36 -0000 1.6.16.5 @@ -12,10 +12,6 @@ #include "everquest.h" #include "diagnosticmessages.h" -// ZBTEMP: Will re-enable the group manager when someone figures out -// how to fix it's crashing bug. -//#define ENABLE_GROUPMGR 1 - GroupMgr::GroupMgr(SpawnShell* spawnShell, Player* player, QObject* parent, const char* name) @@ -25,20 +21,18 @@ m_memberCount(0), m_membersInZoneCount(0) { - // create the array of group members - m_members = new GroupMember[MAX_GROUP_MEMBERS]; + for (int i=0; i<MAX_GROUP_MEMBERS; i++) + { + m_members[i] = new GroupMember(); + } // clear the array of members for (int i = 0; i < MAX_GROUP_MEMBERS; i++) - m_members[i].m_spawn = 0; + m_members[i]->m_spawn = 0; } GroupMgr::~GroupMgr() { - if (m_members) - { - delete[] m_members; - } } void GroupMgr::player(const uint8_t* data) @@ -54,21 +48,21 @@ // initialize the array of members with information from the player profile for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { - m_members[i].m_name = player->groupMembers[i]; + m_members[i]->m_name = player->groupMembers[i]; - if (!m_members[i].m_name.isEmpty()) + if (!m_members[i]->m_name.isEmpty()) m_memberCount++; - if (m_members[i].m_name != player->name) - m_members[i].m_spawn = 0; + if (m_members[i]->m_name != player->name) + m_members[i]->m_spawn = 0; else { - m_members[i].m_spawn = (const Spawn*)m_player; + m_members[i]->m_spawn = (const Spawn*)m_player; m_membersInZoneCount++; } - emit added(m_members[i].m_name, m_members[i].m_spawn); + emit added(m_members[i]->m_name, m_members[i]->m_spawn); } } @@ -95,21 +89,21 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // copy the member name - m_members[i].m_name = gfupdate->membernames[i]; + m_members[i]->m_name = gfupdate->membernames[i]; // if their is a member, increment the member count - if (!m_members[i].m_name.isEmpty()) + if (!m_members[i]->m_name.isEmpty()) m_memberCount++; // attempt to retrieve the members spawn - m_members[i].m_spawn = - m_spawnShell->findSpawnByName(m_members[i].m_name); + m_members[i]->m_spawn = + m_spawnShell->findSpawnByName(m_members[i]->m_name); // incremement the spawn count - if (m_members[i].m_spawn) + if (m_members[i]->m_spawn) m_membersInZoneCount++; - emit added(m_members[i].m_name, m_members[i].m_spawn); + emit added(m_members[i]->m_name, m_members[i]->m_spawn); } } } @@ -124,25 +118,25 @@ // iterate over all the slots until an empty one is found for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { - if (m_members[i].m_name.isEmpty()) + if (m_members[i]->m_name.isEmpty()) { // copy the member name - m_members[i].m_name = gupdate->membername; + m_members[i]->m_name = gupdate->membername; // if their is a member, increment the member count - if (!m_members[i].m_name.isEmpty()) + if (!m_members[i]->m_name.isEmpty()) m_memberCount++; // attempt to retrieve the members spawn - m_members[i].m_spawn = - m_spawnShell->findSpawnByName(m_members[i].m_name); + m_members[i]->m_spawn = + m_spawnShell->findSpawnByName(m_members[i]->m_name); // incremement the spawn count - if (m_members[i].m_spawn) + if (m_members[i]->m_spawn) m_membersInZoneCount++; // signal the addition - emit added(m_members[i].m_name, m_members[i].m_spawn); + emit added(m_members[i]->m_name, m_members[i]->m_spawn); // added it, so break break; @@ -154,14 +148,14 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // is this the member? - if (m_members[i].m_name == gupdate->membername) + if (m_members[i]->m_name == gupdate->membername) { // yes, announce its removal - emit removed(m_members[i].m_name, m_members[i].m_spawn); + emit removed(m_members[i]->m_name, m_members[i]->m_spawn); // clear it - m_members[i].m_name = ""; - m_members[i].m_spawn = 0; + m_members[i]->m_name = ""; + m_members[i]->m_spawn = 0; break; } } @@ -175,8 +169,8 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // clear the member - m_members[i].m_name = ""; - m_members[i].m_spawn = 0; + m_members[i]->m_name = ""; + m_members[i]->m_spawn = 0; } emit cleared(); @@ -201,10 +195,10 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // is this spawn a group member? - if (m_members[i].m_name == spawn->name()) + if (m_members[i]->m_name == spawn->name()) { // yes, so note its Spawn object - m_members[i].m_spawn = spawn; + m_members[i]->m_spawn = spawn; // decrement member in zone count m_membersInZoneCount++; @@ -229,10 +223,10 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // is this spawn a group member? - if (m_members[i].m_name == spawn->name()) + if (m_members[i]->m_name == spawn->name()) { // yes, so clear its Spawn object - m_members[i].m_spawn = 0; + m_members[i]->m_spawn = 0; // decrement member in zone count m_membersInZoneCount--; @@ -257,10 +251,10 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // is this spawn a group member? - if (m_members[i].m_name == spawn->name()) + if (m_members[i]->m_name == spawn->name()) { // yes, so clear its Spawn object - m_members[i].m_spawn = 0; + m_members[i]->m_spawn = 0; // decrement members in zone count m_membersInZoneCount--; @@ -288,15 +282,15 @@ // iterate over the group members for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { - if (m_members[i].m_name.isEmpty()) + if (m_members[i]->m_name.isEmpty()) continue; - out << "Member (" << i << "): " << m_members[i].m_name; + out << "Member (" << i << "): " << m_members[i]->m_name; - if (m_members[i].m_spawn) - out << " level " << m_members[i].m_spawn->level() - << " " << m_members[i].m_spawn->raceString() - << " " << m_members[i].m_spawn->classString(); + if (m_members[i]->m_spawn) + out << " level " << m_members[i]->m_spawn->level() + << " " << m_members[i]->m_spawn->raceString() + << " " << m_members[i]->m_spawn->classString(); out << endl; } @@ -327,8 +321,8 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // add up the group member levels - if (m_members[i].m_spawn) - total += m_members[i].m_spawn->level(); + if (m_members[i]->m_spawn) + total += m_members[i]->m_spawn->level(); } // shouldn't happen, but just in-case @@ -344,8 +338,8 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // if this member is in zone, and the spawnid matches, return it - if (m_members[i].m_spawn && (m_members[i].m_spawn->id() == id)) - return m_members[i].m_spawn; + if (m_members[i]->m_spawn && (m_members[i]->m_spawn->id() == id)) + return m_members[i]->m_spawn; } // not found @@ -358,8 +352,8 @@ for (int i = 0; i < MAX_GROUP_MEMBERS; i++) { // if this member has the name, return its spawn - if (m_members[i].m_name == name) - return m_members[i].m_spawn; + if (m_members[i]->m_name == name) + return m_members[i]->m_spawn; } // not found @@ -373,7 +367,7 @@ return 0; // return the spawn object associated with the group slot, if any - return m_members[slot].m_spawn; + return m_members[slot]->m_spawn; } #include "group.moc" Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.27 retrieving revision 1.74.6.28 diff -u -d -r1.74.6.27 -r1.74.6.28 --- everquest.h 5 Jun 2005 01:01:14 -0000 1.74.6.27 +++ everquest.h 19 Jun 2005 11:55:36 -0000 1.74.6.28 @@ -859,10 +859,15 @@ */ struct spawnStruct { -/*0000*/ uint8_t unknown0000[5]; // ***Placeholder +/*0000*/ uint8_t is_pet; // 0=no, 1=yes +/*0001*/ uint8_t face; // Face id for players +/*0002*/ uint8_t unknown0002; // ***Placeholder +/*0003*/ uint8_t is_npc; // 0=no, 1=yes +/*0004*/ uint8_t unknown0004; // ***Placeholder /*0005*/ int8_t aa_title; // 0=none, 1=general, 2=archtype, 3=class /*0006*/ uint8_t bodytype; // Bodytype -/*0007*/ uint8_t unknown0010[4]; // ***Placeholder +/*0007*/ uint8_t unknown0010[3]; // ***Placeholder +/*0010*/ uint8_t hairstyle; // Hair style /*0011*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse,a /*0012*/ float size; // Model size /*0016*/ char title[32]; // Player's title @@ -888,7 +893,8 @@ /*0094*/ uint8_t unknown0094[4]; // ***Placeholder /*0098*/ char suffix[32]; // Player's suffix (of Veeshan, etc.) /*0130*/ uint8_t class_; // Player's class -/*0131*/ uint8_t unknown0131[6]; // ***Placeholder +/*0131*/ uint8_t eyecolor1; // Player's left eye color +/*0131*/ uint8_t unknown0131[5]; // ***Placeholder /*0137*/ uint8_t light; // Spawn's lightsource /*0138*/ float runspeed; // Speed when running /*0142*/ uint8_t unknown0142[6]; // ***Placeholder @@ -904,7 +910,8 @@ }; /*0175*/ uint8_t level; // Spawn Level /*0176*/ uint8_t anon; // 0=normal, 1=anon, 2=roleplay -/*0177*/ uint8_t unknown0177[2]; // ***Placeholder +/*0177*/ uint8_t beardcolor; // Beard color +/*0178*/ uint8_t unknown0178; // ***Placeholder /*0179*/ union { struct @@ -940,30 +947,23 @@ /*0251*/ char name[64]; // Player's Name /*0315*/ uint32_t petOwnerId; // If this is a pet, the spawn id of owner /*0319*/ uint8_t afk; // 0=no, 1=afk -/*0320*/ uint8_t unknown0320[2]; // ***Placeholder +/*0320*/ uint8_t haircolor; // Hair color +/*0321*/ uint8_t helm; // Helm texture /*0322*/ char lastName[32]; // Players last name /*0354*/ uint8_t gm; // 0=no, 1=gm -/*0355*/ uint8_t unknown0354[13]; //***Placeholder +/*0355*/ uint8_t unknown0354[12]; //***Placeholder +/*0367*/ uint8_t eyecolor2; // Player right eye color /*0368*/ uint8_t lfg; // 0=off, 1=lfg on /*0369*/ uint8_t unknown0369[8]; //***Placeholder -/*0378*/ uint32_t race; // Spawn race -/*0382*/ uint8_t unknown0381[2]; //***Placeholder +/*0378*/ uint32_t race; // Spawn race +/*0382*/ uint8_t unknown0381[2]; //***Placeholder /*0383*/ #if 0 // Need placed in spawn struct still... %%% -/*001*/ int8_t eyecolor1; // Player left eye color -/*002*/ int8_t eyecolor2; // Player right eye color - -/*118*/ uint8_t haircolor; // hair color /*121*/ int8_t maxHp; // max hp /*122*/ uint8_t pvp; // 0=Not pvp,1=pvp -/*141*/ int8_t beardcolor; -/*142*/ int8_t hairstyle; -/*143*/ int8_t face; - -/*155*/ uint8_t helm; #endif }; |