|
From: <iea...@us...> - 2008-09-23 02:20:43
|
Revision: 711
http://seq.svn.sourceforge.net/seq/?rev=711&view=rev
Author: ieatacid
Date: 2008-09-23 01:37:37 +0000 (Tue, 23 Sep 2008)
Log Message:
-----------
+ Fixed crash issue that happened if you left a group then zoned
+ Updated version to 5.12.5.2
Modified Paths:
--------------
showeq/trunk/ChangeLog
showeq/trunk/configure.in
showeq/trunk/src/group.cpp
showeq/trunk/src/group.h
showeq/trunk/src/interface.cpp
showeq/trunk/src/races.h
Modified: showeq/trunk/ChangeLog
===================================================================
--- showeq/trunk/ChangeLog 2008-09-17 01:11:16 UTC (rev 710)
+++ showeq/trunk/ChangeLog 2008-09-23 01:37:37 UTC (rev 711)
@@ -1,3 +1,8 @@
+ieatacid (9/22/08)
+----------------
+- Updated version to 5.12.5.2
+- Fixed crash issue that happened if you left a group then zoned
+
ieatacid (9/16/08)
----------------
- Updated version to 5.12.5.1
Modified: showeq/trunk/configure.in
===================================================================
--- showeq/trunk/configure.in 2008-09-17 01:11:16 UTC (rev 710)
+++ showeq/trunk/configure.in 2008-09-23 01:37:37 UTC (rev 711)
@@ -2,7 +2,7 @@
dnl $Id$ $Name$
AC_PREREQ(2.59)
-AC_INIT(showeq, 5.12.5.1)
+AC_INIT(showeq, 5.12.5.2)
AC_CONFIG_SRCDIR(src/main.cpp)
AC_CANONICAL_SYSTEM
Modified: showeq/trunk/src/group.cpp
===================================================================
--- showeq/trunk/src/group.cpp 2008-09-17 01:11:16 UTC (rev 710)
+++ showeq/trunk/src/group.cpp 2008-09-23 01:37:37 UTC (rev 711)
@@ -42,21 +42,28 @@
}
}
-// 9/3/2008 - Not used. Group data is no longer sent in charProfile
-#if 0
void GroupMgr::player(const charProfileStruct* player)
{
- // reset counters
+ // We receive a groupUpdate packet after playerProfile so we'll clear the
+ // member list then repopulate it in case we lost someone during zoning
m_memberCount = 0;
m_membersInZoneCount = 0;
+ for(int i = 0; i < MAX_GROUP_MEMBERS; i++)
+ {
+ m_members[i]->m_name = "";
+ m_members[i]->m_spawn = 0;
+ }
+
emit cleared();
+// 9/3/2008 - Not used. Group data is no longer sent in charProfile. We still
+// need to reset the data as done above.
+#if 0
// initialize the array of members with information from the player profile
for (int i = 0; i < MAX_GROUP_MEMBERS; i++)
{
-// so it compiles
-// m_members[i]->m_name = player->groupMembers[i];
+ m_members[i]->m_name = player->groupMembers[i];
if (!m_members[i]->m_name.isEmpty())
m_memberCount++;
@@ -72,8 +79,8 @@
emit added(m_members[i]->m_name, m_members[i]->m_spawn);
}
+#endif
}
-#endif
void GroupMgr::groupUpdate(const uint8_t* data, size_t size)
{
@@ -110,7 +117,7 @@
// increment the member count
m_memberCount++;
- // attempt to retrieve the members spawn
+ // attempt to retrieve the member's spawn
m_members[i]->m_spawn = m_spawnShell->findSpawnByName(m_members[i]->m_name);
// incremement the spawn count
@@ -172,26 +179,43 @@
{
const groupDisbandStruct* gmem = (const groupDisbandStruct*)data;
- for (int i = 0; i < MAX_GROUP_MEMBERS; i++)
+ // If we're disbanding, reset counters and clear member slots
+ if(!strcmp(gmem->membername, m_player->name()))
{
- // is this the member?
- if (m_members[i]->m_name == gmem->membername)
+ m_memberCount = 0;
+ m_membersInZoneCount = 0;
+
+ for(int i = 0; i < MAX_GROUP_MEMBERS; i++)
{
- // yes, announce its removal
- emit removed(m_members[i]->m_name, m_members[i]->m_spawn);
+ m_members[i]->m_name = "";
+ m_members[i]->m_spawn = 0;
+ }
- // decrement member count
- m_memberCount--;
+ emit cleared();
+ }
+ else
+ {
+ for(int i = 0; i < MAX_GROUP_MEMBERS; i++)
+ {
+ // is this the member?
+ if(m_members[i]->m_name == gmem->membername)
+ {
+ // yes, announce its removal
+ emit removed(m_members[i]->m_name, m_members[i]->m_spawn);
- // if the member is in zone decrement zone count
- m_members[i]->m_spawn = m_spawnShell->findSpawnByName(m_members[i]->m_name);
- if(m_members[i]->m_spawn)
- m_membersInZoneCount--;
+ // decrement member count
+ m_memberCount--;
- // clear it
- m_members[i]->m_name = "";
- m_members[i]->m_spawn = 0;
- break;
+ // if the member is in zone decrement zone count
+ m_members[i]->m_spawn = m_spawnShell->findSpawnByName(m_members[i]->m_name);
+ if(m_members[i]->m_spawn)
+ m_membersInZoneCount--;
+
+ // clear it
+ m_members[i]->m_name = "";
+ m_members[i]->m_spawn = 0;
+ break;
+ }
}
}
}
Modified: showeq/trunk/src/group.h
===================================================================
--- showeq/trunk/src/group.h 2008-09-17 01:11:16 UTC (rev 710)
+++ showeq/trunk/src/group.h 2008-09-23 01:37:37 UTC (rev 711)
@@ -43,7 +43,7 @@
unsigned long totalLevels();
public slots:
-// void player(const charProfileStruct* player);
+ void player(const charProfileStruct* player);
void groupUpdate(const uint8_t* data, size_t size);
void addGroupMember(const uint8_t* data);
void removeGroupMember(const uint8_t* data);
Modified: showeq/trunk/src/interface.cpp
===================================================================
--- showeq/trunk/src/interface.cpp 2008-09-17 01:11:16 UTC (rev 710)
+++ showeq/trunk/src/interface.cpp 2008-09-23 01:37:37 UTC (rev 711)
@@ -1652,13 +1652,8 @@
if (m_groupMgr != 0)
{
-// 9/3/2008 - Group data is no longer sent in charProfile
-// connect(m_zoneMgr, SIGNAL(playerProfile(const charProfileStruct*)),
-// m_groupMgr, SLOT(player(const charProfileStruct*)));
- //remove this
-// m_packet->connect2("OP_GroupUpdate", SP_Zone, DIR_Server,
-// "groupUpdateStruct", SZC_None,
-// m_groupMgr, SLOT(groupUpdate(const uint8_t*, size_t)));
+ connect(m_zoneMgr, SIGNAL(playerProfile(const charProfileStruct*)),
+ m_groupMgr, SLOT(player(const charProfileStruct*)));
m_packet->connect2("OP_GroupUpdate", SP_Zone, DIR_Server,
"uint8_t", SZC_None,
m_groupMgr, SLOT(groupUpdate(const uint8_t*, size_t)));
Modified: showeq/trunk/src/races.h
===================================================================
--- showeq/trunk/src/races.h 2008-09-17 01:11:16 UTC (rev 710)
+++ showeq/trunk/src/races.h 2008-09-23 01:37:37 UTC (rev 711)
@@ -595,4 +595,42 @@
"Banner", // 586
"Elven Ghost", // 587
"Human Ghost", // 588
+ "Chest", // 589
+ "Chest", // 590
+ "Crystal", // 591
+ "Coffin", // 592
+ "Guardian CPU", // 593
+ "Worg", // 594
+ "Mansion", // 595
+ "Floating Island", // 596
+ "Cragslither", // 597
+ "Wrulon", // 598
+ "UNKNOWN RACE", // 599
+ "UNKNOWN RACE", // 600
+ "UNKNOWN RACE", // 601
+ "Burynai", // 602
+ "Frog", // 603
+ "Dracolich", // 604
+ "Iksar Ghost", // 605
+ "Iksar Skeleton", // 606
+ "Mephit", // 607
+ "Muddite", // 608
+ "Raptor", // 609
+ "Sarnak", // 610
+ "Scorpion", // 611
+ "Tsetsian", // 612
+ "Wurm", // 613
+ "Balrog", // 614
+ "Hydra Crystal", // 615
+ "Crystal Sphere", // 616
+ "Gnoll", // 617
+ "Sokokar", // 618
+ "Stone Pylon", // 619
+ "Demon Vulture", // 620
+ "Wagon", // 621
+ "God of Discord", // 622
+ "Wrulon Mount", // 623
+ "UNKNOWN RACE", // 624
+ "Sokokar Mount", // 625
+ "UNKNOWN RACE", // 626
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|