|
From: <iea...@us...> - 2008-04-21 01:20:26
|
Revision: 697
http://seq.svn.sourceforge.net/seq/?rev=697&view=rev
Author: ieatacid
Date: 2008-04-20 18:20:22 -0700 (Sun, 20 Apr 2008)
Log Message:
-----------
- Updated version to 5.12.3
- Updated structs
- Added "Use Update Radius" to the option menu
Modified Paths:
--------------
showeq/trunk/ChangeLog
showeq/trunk/conf/zoneopcodes.xml
showeq/trunk/configure.in
showeq/trunk/showeq.kdevelop
showeq/trunk/src/everquest.h
showeq/trunk/src/interface.cpp
showeq/trunk/src/interface.h
showeq/trunk/src/s_everquest.h
showeq/trunk/src/spawnshell.cpp
showeq/trunk/src/spawnshell.h
Modified: showeq/trunk/ChangeLog
===================================================================
--- showeq/trunk/ChangeLog 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/ChangeLog 2008-04-21 01:20:22 UTC (rev 697)
@@ -1,10 +1,16 @@
Version: $Id$ $Name$
+ieatacid (4/20/08)
+----------------
++ Updated version to 5.12.3
++ Updated structs
++ Added option to the Option menu to disable the update radius (this is still buggy)
+
ieatacid (1/23/08)
----------------
+ Updated version to 5.12.2
+ Updated the position structs that are used for debugging in
- player.cpp and spawnshell.cpp
+ player.cpp and spawnshell.cpp
ieatacid (1/21/08)
----------------
Modified: showeq/trunk/conf/zoneopcodes.xml
===================================================================
--- showeq/trunk/conf/zoneopcodes.xml 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/conf/zoneopcodes.xml 2008-04-21 01:20:22 UTC (rev 697)
@@ -9,7 +9,7 @@
<opcode id="7901" name="OP_ZoneEntry" updated="01/17/08">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
- <payload dir="server" typename="ServerZoneEntryStruct" sizechecktype="match"/>
+ <payload dir="server" typename="ServerZoneEntryStruct" sizechecktype="none"/>
</opcode>
<opcode id="72f8" name="OP_ZoneSpawns" updated="01/17/08">
<comment>old ZoneSpawnsCode</comment>
@@ -71,7 +71,7 @@
</opcode>
<opcode id="3164" name="OP_DeleteSpawn" updated="01/17/08">
<comment>old DeleteSpawnCode</comment>
- <payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
+ <payload dir="both" typename="deleteSpawnStruct" sizechecktype="none"/>
</opcode>
<opcode id="1B85" name="OP_Death" updated="01/17/08">
<comment>old NewCorpseCode</comment>
Modified: showeq/trunk/configure.in
===================================================================
--- showeq/trunk/configure.in 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/configure.in 2008-04-21 01:20:22 UTC (rev 697)
@@ -2,7 +2,7 @@
dnl $Id$ $Name$
AC_PREREQ(2.59)
-AC_INIT(showeq, 5.12.2.0)
+AC_INIT(showeq, 5.12.3.0)
AC_CONFIG_SRCDIR(src/main.cpp)
AC_CANONICAL_SYSTEM
Modified: showeq/trunk/showeq.kdevelop
===================================================================
--- showeq/trunk/showeq.kdevelop 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/showeq.kdevelop 2008-04-21 01:20:22 UTC (rev 697)
@@ -25,6 +25,7 @@
<language>C</language>
<language>Perl</language>
</secondaryLanguages>
+ <projectname>showeq</projectname>
</general>
<kdevautoproject>
<general>
@@ -170,8 +171,33 @@
<codeCompletionDelay>250</codeCompletionDelay>
<argumentsHintDelay>400</argumentsHintDelay>
<headerCompletionDelay>250</headerCompletionDelay>
+ <showOnlyAccessibleItems>false</showOnlyAccessibleItems>
+ <completionBoxItemOrder>0</completionBoxItemOrder>
+ <howEvaluationContextMenu>true</howEvaluationContextMenu>
+ <showCommentWithArgumentHint>true</showCommentWithArgumentHint>
+ <statusBarTypeEvaluation>false</statusBarTypeEvaluation>
+ <namespaceAliases>std=_GLIBCXX_STD;__gnu_cxx=std</namespaceAliases>
+ <processPrimaryTypes>true</processPrimaryTypes>
+ <processFunctionArguments>false</processFunctionArguments>
+ <preProcessAllHeaders>false</preProcessAllHeaders>
+ <parseMissingHeadersExperimental>false</parseMissingHeadersExperimental>
+ <resolveIncludePathsUsingMakeExperimental>false</resolveIncludePathsUsingMakeExperimental>
+ <alwaysParseInBackground>true</alwaysParseInBackground>
+ <usePermanentCaching>true</usePermanentCaching>
+ <alwaysIncludeNamespaces>false</alwaysIncludeNamespaces>
+ <includePaths>.;</includePaths>
</codecompletion>
<references/>
+ <qt>
+ <used>false</used>
+ <version>3</version>
+ <includestyle>3</includestyle>
+ <root>/usr/lib/qt-3.3</root>
+ <designerintegration>EmbeddedKDevDesigner</designerintegration>
+ <qmake>/usr/lib/qt-3.3/bin/qmake</qmake>
+ <designer>/usr/lib/qt-3.3/bin/designer</designer>
+ <designerpluginpaths/>
+ </qt>
</kdevcppsupport>
<kdevdocumentation>
<projectdoc>
Modified: showeq/trunk/src/everquest.h
===================================================================
--- showeq/trunk/src/everquest.h 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/src/everquest.h 2008-04-21 01:20:22 UTC (rev 697)
@@ -941,7 +941,7 @@
/*
** Generic Spawn Struct
-** Length: 897 Octets
+** Length: 532 Octets
** Used in:
** dbSpawnStruct
** petStruct
@@ -951,91 +951,93 @@
struct spawnStruct
{
-/*0000*/ uint8_t unknown0000[132];
-/*0132*/ uint32_t race; // Spawn race
-/*0136*/ uint8_t unknown0136[8];
-/*0144*/ uint8_t class_; // Player's class
-/*0145*/ uint8_t unknown0145[69];
-/*0214*/ uint8_t bodytype; // Bodytype
-/*0215*/ uint8_t unknown0215[39];
-/*0254*/ char name[64]; // Player's Name
-/*0318*/ uint8_t unknown0318[4];
-/*0322*/ char lastName[32]; // Player's Lastname
-/*0354*/ uint8_t unknown0354[12];
-/*0366*/ uint8_t anon; // 0=normal, 1=anon, 2=roleplay
-/*0367*/ uint8_t unknown0367[3];
-/*0370*/ int16_t deity; // Player's Deity
-/*0372*/ uint8_t unknown0372[45];
-/*0417*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
-/*0418*/ union
- {
- struct
- {
- /*0418*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
- /*0430*/ EquipStruct equip_chest; // Equiptment: Chest visual
- /*0442*/ EquipStruct equip_arms; // Equiptment: Arms visual
- /*0454*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
- /*0466*/ EquipStruct equip_hands; // Equiptment: Hands visual
- /*0478*/ EquipStruct equip_legs; // Equiptment: Legs visual
- /*0490*/ EquipStruct equip_feet; // Equiptment: Boots visual
- /*0502*/ EquipStruct equip_primary; // Equiptment: Main visual
- /*0514*/ EquipStruct equip_secondary; // Equiptment: Off visual
- } equip;
- /*0418*/ EquipStruct equipment[9];
- };
-/*0526*/ uint8_t unknown0526[2];
-/*0528*/ uint8_t gm;
-/*0529*/ char title[32]; // Title
-/*0561*/ uint8_t unknown0561[7];
-/*0568*/ uint8_t light; // Spawn's lightsource
-/*0569*/ uint32_t petOwnerId; // If this is a pet, the spawn id of owner
-/*0573*/ uint8_t unknown0573[5];
-/*0578*/ uint8_t state; // stand state
-/*0579*/ uint32_t spawnId; // Spawn Id
-/*0583*/ uint8_t unknown0583[6];
-/*0589*/ uint32_t guildID; // Current guild
-/*0593*/ uint8_t gender; // Gender (0=male, 1=female)
-/*0594*/ signed padding0000:12; // ***Placeholder
+/*0000*/ uint8_t unknown0000[6];
+/*0006*/ uint8_t bodytype; // Bodytype
+/*0007*/ uint8_t unknown0007[40];
+/*0047*/ char suffix[32]; // Player's suffix (of Veeshan, etc.)
+/*0079*/ char lastName[32]; // Player's Lastname
+/*0111*/ int16_t deity; // Player's Deity
+/*0113*/ uint8_t unknown0113[2];
+/*0115*/ uint8_t state; // stand state
+/*0116*/ uint8_t unknown0116[9];
+/*0125*/ char title[32]; // Title
+/*0157*/ uint8_t unknown0157[4];
+/*0161*/ signed padding0000:12; // ***Placeholder
signed deltaX:13; // change in x
signed padding0005:7; // ***Placeholder
-/*0598*/ signed deltaHeading:10;// change in heading
+/*0165*/ signed deltaHeading:10;// change in heading
signed deltaY:13; // change in y
signed padding0006:9; // ***Placeholder
-/*0602*/ signed y:19; // y coord
+/*0169*/ signed y:19; // y coord
signed animation:13; // animation
-/*0606*/ unsigned heading:12; // heading
+/*0173*/ unsigned heading:12; // heading
signed x:19; // x coord
signed padding0014:1; // ***Placeholder
-/*0610*/ signed z:19; // z coord
+/*0177*/ signed z:19; // z coord
signed deltaZ:13; // change in z
-/*0614*/ float walkspeed; // Speed when running
-/*0618*/ uint8_t unknown0618[43];
-/*0661*/ uint8_t curHp; // Current hp
-/*0662*/ uint8_t unknown0662;
-/*0663*/ uint8_t level; // Spawn Level
-/*0664*/ uint8_t unknown0664[7];
-/*0671*/ float runspeed; // Speed when walking
-/*0675*/ uint8_t unknown0675[7];
-/*0682*/ union
- {
- struct
- {
- /*0682*/ Color_Struct color_helmet; // Color of helmet item
- /*0686*/ Color_Struct color_chest; // Color of chest item
- /*0690*/ Color_Struct color_arms; // Color of arms item
- /*0694*/ Color_Struct color_bracers; // Color of bracers item
- /*0698*/ Color_Struct color_hands; // Color of hands item
- /*0702*/ Color_Struct color_legs; // Color of legs item
- /*0706*/ Color_Struct color_feet; // Color of feet item
- /*0710*/ Color_Struct color_primary; // Color of primary item
- /*0714*/ Color_Struct color_secondary; // Color of secondary item
- } equipment_colors;
- /*0682*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
- };
-/*0718*/ uint8_t unknown0718[137];
-/*0855*/ char suffix[32]; // Player's suffix (of Veeshan, etc.)
-/*0887*/ uint8_t unknown0887[10];
-/*0897*/
+/*0181*/ uint8_t unknown0181[25];
+/*0206*/ char name[64];// // Player's Name
+/*0270*/ uint8_t unknown0270[4];
+/*0274*/ uint8_t light; // Spawn's lightsource
+/*0275*/ uint8_t unknown0275[5];
+/*0280*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
+/*0281*/ uint8_t unknown0281[11];
+/*0292*/ uint8_t level; // Spawn Level
+/*0293*/ uint8_t unknown0293;
+/*0294*/ uint8_t gender; // Gender (0=male, 1=female)
+/*0295*/ uint8_t unknown0295[3];
+/*0298*/ uint32_t guildID; // Current guild
+/*0302*/ uint8_t unknown0302[15];
+/*0317*/ uint8_t anon; // 0=normal, 1=anon, 2=roleplay
+/*0318*/ uint8_t unknown0318[5];
+/*0323*/ uint32_t petOwnerId; // If this is a pet, the spawn id of owner
+/*0327*/ uint8_t class_; // Player's class
+/*0328*/ uint8_t unknown0328[15];
+/*0343*/ uint32_t spawnId; // Spawn Id
+/*0347*/ uint8_t unknown0347;
+/*0348*/ union
+ {
+ struct
+ {
+ /*0348*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
+ /*0360*/ EquipStruct equip_chest; // Equiptment: Chest visual
+ /*0372*/ EquipStruct equip_arms; // Equiptment: Arms visual
+ /*0384*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
+ /*0396*/ EquipStruct equip_hands; // Equiptment: Hands visual
+ /*0408*/ EquipStruct equip_legs; // Equiptment: Legs visual
+ /*0420*/ EquipStruct equip_feet; // Equiptment: Boots visual
+ /*0432*/ EquipStruct equip_primary; // Equiptment: Main visual
+ /*0444*/ EquipStruct equip_secondary; // Equiptment: Off visual
+ } equip;
+ /*0348*/ EquipStruct equipment[9];
+ };
+/*0456*/ uint8_t unknown0465[11];
+/*0467*/ uint8_t gm;
+/*0468*/ float runspeed; // Speed when running
+/*0472*/ uint8_t unknown0472[3];
+/*0475*/ union
+ {
+ struct
+ {
+ /*0475*/ Color_Struct color_helmet; // Color of helmet item
+ /*0479*/ Color_Struct color_chest; // Color of chest item
+ /*0483*/ Color_Struct color_arms; // Color of arms item
+ /*0487*/ Color_Struct color_bracers; // Color of bracers item
+ /*0491*/ Color_Struct color_hands; // Color of hands item
+ /*0495*/ Color_Struct color_legs; // Color of legs item
+ /*0499*/ Color_Struct color_feet; // Color of feet item
+ /*0503*/ Color_Struct color_primary; // Color of primary item
+ /*0507*/ Color_Struct color_secondary; // Color of secondary item
+ } equipment_colors;
+ /*0475*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
+ };
+/*0511*/ uint32_t race; // Spawn race
+/*0515*/ uint8_t unknown0515;
+/*0516*/ uint8_t curHp; // Current hp
+/*0517*/ uint8_t unknown0517[15];
+/*0532*/
+
+/*0891*/ //float walkspeed; // Speed when walking (couldn't find for 4/17/2008 patch - ieatacid)
};
@@ -1283,9 +1285,10 @@
*/
struct spawnShroudOther
{
-/*0000*/ uint32_t spawnId; // Spawn Id of the shrouded player
-/*0004*/ spawnStruct spawn; // Updated spawn struct for the player
-/*0586*/
+/*00000*/ uint32_t spawnId; // Spawn Id of the shrouded player
+/*00004*/ spawnStruct spawn; // Updated spawn struct for the player
+/*00536*/ uint8_t unknown00536[465];
+/*1001*/
};
/**
@@ -1301,11 +1304,23 @@
{
/*00000*/ uint32_t spawnId; // Spawn Id of you
/*00004*/ spawnStruct spawn; // Updated spawnStruct for you
-/*00586*/ playerProfileStruct profile; // Character profile for shrouded char
-/*13522*/ uint8_t items; // Items on the player
+/*00536*/ uint8_t unknown00536[465];
+/*01001*/ playerProfileStruct profile; // Character profile for shrouded char
+/*16153*/ uint8_t items; // Items on the player
/*xxxxx*/
};
+/*
+** Campfire spawn
+** Length: 997
+** OpCode: OP_ZoneEntry
+*/
+struct spawnCampfire
+{
+/*0000*/ spawnStruct spawn;
+/*0532*/ uint8_t unknown0532[465];
+/*0997*/
+};
/*
@@ -1572,14 +1587,26 @@
/*
-** Delete Spawn
+** Delete Self
** Length: 4 Octets
** OpCode: DeleteSpawnCode
*/
+struct deleteSpawnSelfStruct
+{
+/*0000*/ uint32_t spawnId; // Spawn ID to delete
+};
+
+/*
+** Delete Spawn
+** Length: 5 Octets
+** OpCode: DeleteSpawnCode
+*/
+
struct deleteSpawnStruct
{
/*0000*/ uint32_t spawnId; // Spawn ID to delete
+/*0004*/ uint8_t removeSpawn; // 0 if spawn is not in your update radius
};
/*
@@ -2056,7 +2083,8 @@
signed deltaY:13; // change in y
signed padding0006:9; // ***Placeholder
/*0010*/ signed y:19; // y coord
- signed animation:13; // animation
+ signed animation:10; // animation
+ signed padding0010:3; // ***Placeholder
/*0014*/ unsigned heading:12; // heading
signed x:19; // x coord
signed padding0014:1; // ***Placeholder
@@ -2085,7 +2113,7 @@
/*0024*/ float deltaY; // Change in y
/*0028*/ float z; // z coord (3rd loc value)
/*0032*/ float deltaZ; // Change in z
-/*0036*/ unsigned padding0036:10; // animation
+/*0036*/ unsigned padding0036:10; // ***Placeholder
unsigned heading:12; // Directional heading
unsigned padding0037:10; // ***Placeholder
/*0040*/
@@ -2357,17 +2385,6 @@
/*???*/ uint8_t unknownXXX[3];
};
-struct worldObfuscatorStruct
-{
- /*000*/ uint32_t var1;
- /*004*/ uint32_t Unknown1;
- /*008*/ uint32_t Unknown2;
- /*012*/ uint32_t Unknown3;
- /*016*/ uint32_t var2;
- /*020*/ uint32_t Unknown4;
- /*024*/
-};
-
// Restore structure packing to default
#pragma pack()
Modified: showeq/trunk/src/interface.cpp
===================================================================
--- showeq/trunk/src/interface.cpp 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/src/interface.cpp 2008-04-21 01:20:22 UTC (rev 697)
@@ -155,8 +155,8 @@
m_selectOnConsider = pSEQPrefs->getPrefBool("SelectOnCon", section, false);
m_selectOnTarget = pSEQPrefs->getPrefBool("SelectOnTarget", section, false);
+ m_useUpdateRadius = pSEQPrefs->getPrefBool("UseUpdateRadius", section, true);
-
const char* player_classes[] = {"Warrior", "Cleric", "Paladin", "Ranger",
"Shadow Knight", "Druid", "Monk", "Bard",
"Rogue", "Shaman", "Necromancer", "Wizard",
@@ -284,6 +284,7 @@
// Create the spawn shell
m_spawnShell = new SpawnShell(*m_filterMgr, m_zoneMgr, m_player, m_guildmgr);
+ m_spawnShell->setUseUpdateRadius(m_useUpdateRadius);
// Create the Category manager
m_categoryMgr = new CategoryMgr();
@@ -991,6 +992,10 @@
connect(conColorBaseMenu, SIGNAL(activated(int)),
this, SLOT(select_opt_conColorBase(int)));
pOptMenu->insertItem("Con &Colors", conColorBaseMenu);
+
+ m_id_opt_useUpdateRadius = pOptMenu->insertItem("&Use Update Radius (buggy if disabled)",
+ this, SLOT(toggle_opt_UseUpdateRadius()));
+ menuBar()->setItemChecked (m_id_opt_useUpdateRadius, m_useUpdateRadius);
// Network Menu
m_netMenu = new QPopupMenu;
@@ -1927,8 +1932,8 @@
"spawnStruct", SZC_Match,
m_spawnShell, SLOT(newSpawn(const uint8_t*)));
m_packet->connect2("OP_ZoneEntry", SP_Zone, DIR_Server,
- "ServerZoneEntryStruct", SZC_Match,
- m_spawnShell, SLOT(zoneEntry(const uint8_t*)));
+ "ServerZoneEntryStruct", SZC_None,
+ m_spawnShell, SLOT(zoneEntry(const uint8_t*, size_t)));
m_packet->connect2("OP_MobUpdate", SP_Zone, DIR_Server|DIR_Client,
"spawnPositionUpdate", SZC_Match,
m_spawnShell, SLOT(updateSpawns(const uint8_t*)));
@@ -1939,8 +1944,8 @@
"hpNpcUpdateStruct", SZC_Match,
m_spawnShell, SLOT(updateNpcHP(const uint8_t*)));
m_packet->connect2("OP_DeleteSpawn", SP_Zone, DIR_Server|DIR_Client,
- "deleteSpawnStruct", SZC_Match,
- m_spawnShell, SLOT(deleteSpawn(const uint8_t*)));
+ "deleteSpawnStruct", SZC_None,
+ m_spawnShell, SLOT(deleteSpawn(const uint8_t*, size_t)));
m_packet->connect2("OP_SpawnRename", SP_Zone, DIR_Server,
"spawnRenameStruct", SZC_Match,
m_spawnShell, SLOT(renameSpawn(const uint8_t*)));
@@ -3488,7 +3493,6 @@
{
showeq_params->fast_machine = !(showeq_params->fast_machine);
menuBar()->setItemChecked (m_id_opt_Fast, showeq_params->fast_machine);
-
pSEQPrefs->setPrefBool("FastMachine", "Misc", showeq_params->fast_machine);
}
@@ -3500,6 +3504,15 @@
pSEQPrefs->setPrefBool("KeepSelected", "Interface", showeq_params->keep_selected_visible);
}
+void
+EQInterface::toggle_opt_UseUpdateRadius (void)
+{
+ m_useUpdateRadius = !(m_useUpdateRadius);
+ m_spawnShell->toggleUseUpdateRadius();
+ menuBar()->setItemChecked (m_id_opt_useUpdateRadius, m_useUpdateRadius);
+ pSEQPrefs->setPrefBool("UseUpdateRadius", "Interface", m_useUpdateRadius);
+}
+
/* Check and uncheck Log menu options & set EQPacket logging flags */
void EQInterface::toggle_log_AllPackets (void)
{
Modified: showeq/trunk/src/interface.h
===================================================================
--- showeq/trunk/src/interface.h 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/src/interface.h 2008-04-21 01:20:22 UTC (rev 697)
@@ -286,6 +286,7 @@
void set_opt_save_BaseFilename();
void opt_clearChannelMsgs(int id);
void init_view_menu();
+ void toggle_opt_UseUpdateRadius();
void toggleTypeFilter(int);
void disableAllTypeFilters();
@@ -459,6 +460,7 @@
int m_id_net_sessiontrack;
int m_packetStartTime;
int m_initialcount;
+ int m_id_opt_useUpdateRadius;
MenuIDList IDList_StyleMenu;
@@ -477,6 +479,7 @@
bool m_selectOnConsider;
bool m_selectOnTarget;
+ bool m_useUpdateRadius;
};
#endif // EQINT_H
Modified: showeq/trunk/src/s_everquest.h
===================================================================
--- showeq/trunk/src/s_everquest.h 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/src/s_everquest.h 2008-04-21 01:20:22 UTC (rev 697)
@@ -46,6 +46,7 @@
AddStruct(spawnIllusionStruct);
AddStruct(spawnShroudOther);
AddStruct(spawnShroudSelf);
+AddStruct(spawnCampfire);
AddStruct(dbSpawnStruct);
AddStruct(petStruct);
AddStruct(sysMsgStruct);
@@ -66,6 +67,7 @@
AddStruct(groupFollowStruct);
AddStruct(groupAltFollowStruct);
AddStruct(groupDisbandStruct);
+AddStruct(deleteSpawnSelfStruct);
AddStruct(deleteSpawnStruct);
AddStruct(remDropStruct);
AddStruct(considerStruct);
Modified: showeq/trunk/src/spawnshell.cpp
===================================================================
--- showeq/trunk/src/spawnshell.cpp 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/src/spawnshell.cpp 2008-04-21 01:20:22 UTC (rev 697)
@@ -96,7 +96,8 @@
m_spawns(701),
m_drops(211),
m_doors(307),
- m_players(2)
+ m_players(2),
+ m_useUpdateRadius(0)
{
m_cntDeadSpawnIDs = 0;
m_posDeadSpawnIDs = 0;
@@ -480,29 +481,45 @@
}
}
-void SpawnShell::zoneEntry(const uint8_t* data)
+void SpawnShell::zoneEntry(const uint8_t* data, size_t len)
{
const spawnStruct* spawn = (const spawnStruct*)data;
#ifdef SPAWNSHELL_DIAG
seqDebug("SpawnShell::zoneEntry(spawnStruct *(name='%s'))", spawn->name);
#endif
+ // Zone Entry. This is a semi-filled in spawnStruct that we
+ // see for ourself when entering a zone. We also get sent this
+ // when shrouding and when respawning from corpse hover mode. Auras
+ // also get sent this sometimes.
- // Zone Entry. This is a semi-filled in spawnStruct that we
- // see for ourself when entering a zone. We also get sent this
- // when shrouding and when respawning from corpse hover mode. Auras
- // also get sent this sometimes.
- if (spawn->NPC == 0)
+ /* Now all PCs are 0, including self
+ if (spawn->NPC==0)
+ {
+ // Align the player instance with these values
+ m_player->update(spawn);
+
+ emit changeItem(m_player, tSpawnChangedALL);
+ }*/
+
+ if(len==sizeof(spawnStruct) || len==sizeof(spawnCampfire))
{
- // Align the player instance with these values
- m_player->update(spawn);
-
- emit changeItem(m_player, tSpawnChangedALL);
+ if(!strcmp(spawn->name,m_player->name()))
+ {
+ // Multiple zoneEntry packets are received for your spawn after you zone.
+ m_player->update(spawn);
+ emit changeItem(m_player, tSpawnChangedALL);
+ }
+ else
+ {
+ // Auras, all other PCs and NPCs
+ newSpawn(data);
+ }
}
else
{
- // Auras.
- newSpawn(data);
+ seqWarn("OP_ZoneEntry (datalen: %d) doesn't match: sizeof(spawnStruct):%d or sizeof(spawnCampfire):%d",
+ len,sizeof(spawnStruct),sizeof(spawnCampfire));
}
}
@@ -1103,23 +1120,41 @@
} // else not yourself
} // end consMessage()
-void SpawnShell::deleteSpawn(const uint8_t* data)
+void SpawnShell::deleteSpawn(const uint8_t* data, size_t len)
{
- const deleteSpawnStruct* delspawn = (const deleteSpawnStruct*)data;
+ const deleteSpawnStruct* delSpawn = (const deleteSpawnStruct*)data;
#ifdef SPAWNSHELL_DIAG
- seqDebug("SpawnShell::deleteSpawn(id=%d)", delspawn->spawnId);
+ seqDebug("SpawnShell::deleteSpawn(id=%d)", delSpawn->spawnId);
#endif
- if (m_posDeadSpawnIDs < (MAX_DEAD_SPAWNIDS - 1))
- m_posDeadSpawnIDs++;
- else
- m_posDeadSpawnIDs = 0;
-
- if (m_cntDeadSpawnIDs < MAX_DEAD_SPAWNIDS)
- m_cntDeadSpawnIDs++;
+ if(len==sizeof(deleteSpawnStruct) || len==sizeof(deleteSpawnSelfStruct))
+ {
+ if(len==sizeof(deleteSpawnStruct))
+ {
+ if(delSpawn->removeSpawn)
+ {
+ if (m_posDeadSpawnIDs < (MAX_DEAD_SPAWNIDS - 1))
+ m_posDeadSpawnIDs++;
+ else
+ m_posDeadSpawnIDs = 0;
- m_deadSpawnID[m_posDeadSpawnIDs] = delspawn->spawnId;
+ if (m_cntDeadSpawnIDs < MAX_DEAD_SPAWNIDS)
+ m_cntDeadSpawnIDs++;
- deleteItem(tSpawn, delspawn->spawnId);
+ m_deadSpawnID[m_posDeadSpawnIDs] = delSpawn->spawnId;
+
+ deleteItem(tSpawn, delSpawn->spawnId);
+ }
+ else if(!delSpawn->removeSpawn && m_useUpdateRadius)
+ {
+ deleteItem(tSpawn, delSpawn->spawnId);
+ }
+ }
+ }
+ else
+ {
+ seqWarn("OP_DeleteSpawn (datalen: %d) doesn't match: sizeof(deleteSpawnStruct):%d or sizeof(deleteSpawnSelfStruct):%d",
+ len,sizeof(deleteSpawnStruct),sizeof(deleteSpawnSelfStruct));
+ }
}
void SpawnShell::killSpawn(const uint8_t* data)
Modified: showeq/trunk/src/spawnshell.h
===================================================================
--- showeq/trunk/src/spawnshell.h 2008-01-23 21:43:17 UTC (rev 696)
+++ showeq/trunk/src/spawnshell.h 2008-04-21 01:20:22 UTC (rev 697)
@@ -84,6 +84,8 @@
const ItemMap& spawns(void) const;
const ItemMap& drops(void) const;
const ItemMap& doors(void) const;
+ void toggleUseUpdateRadius(void);
+ void setUseUpdateRadius(bool useUpdateRadius);
signals:
void addItem(const Item* item);
void delItem(const Item* item);
@@ -103,7 +105,7 @@
void newDoorSpawns(const uint8_t*, size_t, uint8_t);
void newDoorSpawn(const doorStruct&, size_t, uint8_t);
void zoneSpawns(const uint8_t* zspawns, size_t len);
- void zoneEntry(const uint8_t* spawn);
+ void zoneEntry(const uint8_t* spawn, size_t len);
void newSpawn(const uint8_t* spawn);
void newSpawn(const spawnStruct& s);
void playerUpdate(const uint8_t*pupdate, size_t, uint8_t);
@@ -122,7 +124,7 @@
void updateNpcHP(const uint8_t* hpupdate);
void spawnWearingUpdate(const uint8_t* wearing);
void consMessage(const uint8_t* con, size_t, uint8_t);
- void deleteSpawn(const uint8_t* delspawn);
+ void deleteSpawn(const uint8_t* delspawn, size_t len);
void killSpawn(const uint8_t* deadspawn);
void respawnFromHover(const uint8_t* respawn);
void corpseLoc(const uint8_t* corpseLoc);
@@ -161,6 +163,9 @@
// timer for saving spawns
QTimer* m_timer;
+
+ // flag for using the update radius
+ bool m_useUpdateRadius;
};
inline
@@ -217,6 +222,18 @@
return m_doors;
}
+inline
+void SpawnShell::toggleUseUpdateRadius(void)
+{
+ m_useUpdateRadius=!m_useUpdateRadius;
+}
+
+inline
+void SpawnShell::setUseUpdateRadius(bool useUpdateRadius)
+{
+ m_useUpdateRadius=useUpdateRadius;
+}
+
//--------------------------------------------------
#endif // SPAWNSHELL_H
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|