You can subscribe to this list here.
| 2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(18) |
Oct
(11) |
Nov
(9) |
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2005 |
Jan
|
Feb
(6) |
Mar
|
Apr
(10) |
May
(38) |
Jun
(15) |
Jul
(32) |
Aug
|
Sep
(17) |
Oct
(11) |
Nov
|
Dec
(14) |
| 2006 |
Jan
(2) |
Feb
(5) |
Mar
(3) |
Apr
(2) |
May
(3) |
Jun
(7) |
Jul
|
Aug
|
Sep
(3) |
Oct
(2) |
Nov
(6) |
Dec
(3) |
| 2007 |
Jan
|
Feb
(17) |
Mar
(5) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2008 |
Jan
(11) |
Feb
|
Mar
|
Apr
(4) |
May
|
Jun
(6) |
Jul
|
Aug
|
Sep
(6) |
Oct
(4) |
Nov
(1) |
Dec
|
| 2009 |
Jan
(3) |
Feb
(2) |
Mar
(4) |
Apr
|
May
(4) |
Jun
(3) |
Jul
|
Aug
(5) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
(6) |
| 2010 |
Jan
|
Feb
(6) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(8) |
Aug
|
Sep
(2) |
Oct
(2) |
Nov
(4) |
Dec
(5) |
| 2013 |
Jan
(2) |
Feb
|
Mar
(2) |
Apr
(2) |
May
(1) |
Jun
(2) |
Jul
(2) |
Aug
(2) |
Sep
|
Oct
(2) |
Nov
(2) |
Dec
(2) |
| 2014 |
Jan
(3) |
Feb
(2) |
Mar
(3) |
Apr
(4) |
May
(4) |
Jun
(3) |
Jul
(4) |
Aug
(5) |
Sep
|
Oct
(2) |
Nov
(5) |
Dec
(2) |
| 2015 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(10) |
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
(2) |
Sep
(2) |
Oct
(3) |
Nov
(4) |
Dec
(2) |
| 2017 |
Jan
(2) |
Feb
|
Mar
(2) |
Apr
(4) |
May
(2) |
Jun
(2) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
| 2018 |
Jan
(4) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(2) |
Jun
(2) |
Jul
(8) |
Aug
(2) |
Sep
(2) |
Oct
(2) |
Nov
(4) |
Dec
(6) |
| 2019 |
Jan
(2) |
Feb
(2) |
Mar
(2) |
Apr
(4) |
May
(2) |
Jun
(3) |
Jul
(3) |
Aug
(2) |
Sep
(2) |
Oct
(13) |
Nov
(6) |
Dec
(4) |
| 2020 |
Jan
(7) |
Feb
(7) |
Mar
(7) |
Apr
(8) |
May
(5) |
Jun
(3) |
Jul
(10) |
Aug
(4) |
Sep
|
Oct
(37) |
Nov
(30) |
Dec
(8) |
| 2021 |
Jan
(14) |
Feb
(9) |
Mar
(7) |
Apr
(17) |
May
(3) |
Jun
(10) |
Jul
(7) |
Aug
(3) |
Sep
(3) |
Oct
(4) |
Nov
(15) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(3) |
Mar
(3) |
Apr
(3) |
May
(3) |
Jun
(3) |
Jul
(3) |
Aug
(5) |
Sep
(6) |
Oct
(4) |
Nov
(34) |
Dec
(17) |
| 2023 |
Jan
(3) |
Feb
(3) |
Mar
(29) |
Apr
(2) |
May
(18) |
Jun
(12) |
Jul
(12) |
Aug
(2) |
Sep
(7) |
Oct
(2) |
Nov
(2) |
Dec
(2) |
| 2024 |
Jan
(2) |
Feb
(10) |
Mar
(17) |
Apr
(6) |
May
(3) |
Jun
(9) |
Jul
(22) |
Aug
(48) |
Sep
(3) |
Oct
(2) |
Nov
(2) |
Dec
(8) |
| 2025 |
Jan
(3) |
Feb
(2) |
Mar
(9) |
Apr
(7) |
May
(3) |
Jun
(3) |
Jul
(2) |
Aug
(2) |
Sep
(11) |
Oct
(6) |
Nov
(9) |
Dec
(4) |
| 2026 |
Jan
(5) |
Feb
(6) |
Mar
(3) |
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Chad M. <cmm...@us...> - 2005-05-10 15:42:43
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9826/src Modified Files: Tag: pre_5_0_beta interface.cpp player.cpp Log Message: Fixed alt exp updated to be properly process. Made the statur bar alt-exp message more useful (showing percent) also. Index: player.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/player.cpp,v retrieving revision 1.42.6.10 retrieving revision 1.42.6.11 diff -u -d -r1.42.6.10 -r1.42.6.11 --- player.cpp 7 Apr 2005 03:19:37 -0000 1.42.6.10 +++ player.cpp 10 May 2005 15:42:08 -0000 1.42.6.11 @@ -573,6 +573,10 @@ { const altExpUpdateStruct* altexp = (const altExpUpdateStruct*)data; + /* purple: I got no idea what is up here. This seems to be written like + * the packet from the server gives the entire exp bump and not + * just the proper percent. This makes it behave funny. Taking out + * the multiply by percent here. uint32_t realExp = altexp->altexp * altexp->percent * (15000000 / 33000); uint32_t expIncrement; @@ -580,6 +584,18 @@ expIncrement = realExp - m_currentAltExp; else expIncrement = 0; + */ + uint32_t realExp = altexp->altexp * (15000000 / 33000); + uint32_t expIncrement; + + if (realExp > m_currentExp) + { + expIncrement = realExp - m_currentAltExp; + } + else + { + expIncrement = 0; + } m_currentAApts = altexp->aapoints; m_currentAltExp = realExp; Index: interface.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/interface.cpp,v retrieving revision 1.67.6.13 retrieving revision 1.67.6.14 diff -u -d -r1.67.6.13 -r1.67.6.14 --- interface.cpp 7 Apr 2005 03:19:35 -0000 1.67.6.13 +++ interface.cpp 10 May 2005 15:42:02 -0000 1.67.6.14 @@ -2077,6 +2077,9 @@ m_packet->connect2("OP_ExpUpdate", SP_Zone, DIR_Server, "expUpdateStruct", SZC_Match, m_player, SLOT(updateExp(const uint8_t*))); + m_packet->connect2("OP_AAExpUpdate", SP_Zone, DIR_Server, + "altExpUpdateStruct", SZC_Match, + m_player, SLOT(updateAltExp(const uint8_t*))); m_packet->connect2("OP_LevelUpdate", SP_Zone, DIR_Server, "levelUpUpdateStruct", SZC_Match, m_player, SLOT(updateLevel(const uint8_t*))); @@ -2098,10 +2101,6 @@ m_packet->connect2("OP_SwapSpell", SP_Zone, DIR_Server, "tradeSpellBookSlotsStruct", SZC_Match, m_player, SLOT(tradeSpellBookSlots(const uint8_t*, size_t, uint8_t))); -#if 0 // ZBTEMP - connect(m_packet, SIGNAL(updateAltExp(const uint8_t*, size_t, uint8_t)), - m_player, SLOT(updateAltExp(const uint8_t*))); -#endif // interface statusbar slots connect (this, SIGNAL(newZoneName(const QString&)), @@ -4369,8 +4368,13 @@ uint32_t aapoints) { if (m_stsbarExpAA) - m_stsbarExpAA->setText(QString("ExpAA: %1 (%2/330)") - .arg(Commanate(totalExp)).arg(totalTick)); + { + char aaperc[5]; + sprintf(aaperc, "%.2f", totalExp*100.0/maxExp); + + m_stsbarExpAA->setText(QString("ExpAA: %1 (%2/330, %3%)") + .arg(Commanate(totalExp)).arg(totalTick).arg(aaperc)); + } } void EQInterface::levelChanged(uint8_t level) |
|
From: Chad M. <cmm...@us...> - 2005-05-10 15:42:43
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9826 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Fixed alt exp updated to be properly process. Made the statur bar alt-exp message more useful (showing percent) also. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.9 retrieving revision 1.1.2.10 diff -u -d -r1.1.2.9 -r1.1.2.10 --- ChangeLog 10 May 2005 15:22:57 -0000 1.1.2.9 +++ ChangeLog 10 May 2005 15:41:47 -0000 1.1.2.10 @@ -3,6 +3,8 @@ purple (05/11/05) ---------------------- + Added some session-related opcodes to worldopcodes.xml ++ Fixed opcodes for alt exp and hooked altExpUpdateStruct so alt exp updating + maps properly dophaZ (04/17/05) ----------------------- |
|
From: Chad M. <cmm...@us...> - 2005-05-10 15:23:08
|
Update of /cvsroot/seq/showeq/conf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4834/conf Modified Files: Tag: pre_5_0_beta worldopcodes.xml Log Message: Filled in some world opcodes to better describe world session handling. Might be useful if we want to use world server sessions to manage zone server sessions properly. Index: worldopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/worldopcodes.xml,v retrieving revision 1.1.4.8 retrieving revision 1.1.4.9 diff -u -d -r1.1.4.8 -r1.1.4.9 --- worldopcodes.xml 21 Feb 2005 05:56:12 -0000 1.1.4.8 +++ worldopcodes.xml 10 May 2005 15:22:59 -0000 1.1.4.9 @@ -54,7 +54,10 @@ <comment></comment> </opcode> <opcode id="1f7b" name="OP_SendLoginInfo" updated="02/15/05"> - <comment></comment> + <comment>Client starting world session by asking for login information</comment> + </opcode> + <opcode id="7402" name="OP_WorldComplete" updated="02/15/05"> + <comment>Client telling world server it is done. World replies by disconnecting.</comment> </opcode> <opcode id="47b6" name="OP_World_Client_CRC1" updated="02/15/05"> <comment>Contains a snippet of spell data</comment> |
|
From: Chad M. <cmm...@us...> - 2005-05-10 15:23:07
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4834 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Filled in some world opcodes to better describe world session handling. Might be useful if we want to use world server sessions to manage zone server sessions properly. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.8 retrieving revision 1.1.2.9 diff -u -d -r1.1.2.8 -r1.1.2.9 --- ChangeLog 18 Apr 2005 03:17:21 -0000 1.1.2.8 +++ ChangeLog 10 May 2005 15:22:57 -0000 1.1.2.9 @@ -1,5 +1,9 @@ Version: $Id$ $Name$ +purple (05/11/05) +---------------------- ++ Added some session-related opcodes to worldopcodes.xml + dophaZ (04/17/05) ----------------------- + Updated version to 5.0.0.20 |
|
From: Erik B. <do...@us...> - 2005-04-18 03:17:46
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29609 Modified Files: Tag: pre_5_0_beta ChangeLog INSTALL.newbies ROADMAP Log Message: Update to 5.0.0.20 Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.7 retrieving revision 1.1.2.8 diff -u -d -r1.1.2.7 -r1.1.2.8 --- ChangeLog 7 Apr 2005 02:34:13 -0000 1.1.2.7 +++ ChangeLog 18 Apr 2005 03:17:21 -0000 1.1.2.8 @@ -1,5 +1,27 @@ Version: $Id$ $Name$ +dophaZ (04/17/05) +----------------------- ++ Updated version to 5.0.0.20 ++ Update INSTALL to reflect new minimum autoconf 2.59 requirement for + Makefile.dist users. ++ cleanup configure.am, and acinclude.m4 warnings and issues. ++ Fixed need to run Makefile.dist twice problem. ++ Incorporated Purples "5.0.0.19-purple2" patch. ++ - Added to charProfileStruct: ++ - - Leadership AAs (thanks to FatherNitwit for a lot of this) ++ - - Intoxication, Toxicity, Autosplit (from Glee) ++ - - Spell refresh ++ - - expAA ++ - Fixed hpNpcUpdateStruct for 4/12 by rearranging and making hp int32 ++ - Properly name drop codes for new combine containers (from uRit2CBBA) ++ - Fixed a problem with drop codes higher than 0x90 in most of the drop code mappings ++ - Added tutorial zones to zone.h (from uRit2CBBA) ++ - Spawns that rename themselves will properly filter themselves now, so they show up if they match the map's runtime filter or your zone filters ++ - Made offline tcpdump reading set pcap filters to test session tracking better ++ Fixed src/Makefile.am to include new weapons29.h and weapons2a.h headers to + fix 'make distcheck' + dophaZ (04/06/05) ----------------------- + Updated version to 5.0.0.19 |
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28899/src Modified Files: Tag: pre_5_0_beta everquest.h itemdb.cpp itemdbtool.cpp messageshell.cpp packet.cpp packetcapture.cpp spawn.cpp spawnshell.cpp weapons1.h weapons27.h weapons28.h weapons2b.h zones.h Added Files: Tag: pre_5_0_beta weapons29.h weapons2a.h Log Message: Incorporate 5.0.0.19-purple2 patch. Index: packet.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.cpp,v retrieving revision 1.62.6.7 retrieving revision 1.62.6.8 diff -u -d -r1.62.6.7 -r1.62.6.8 --- packet.cpp 7 Apr 2005 03:19:37 -0000 1.62.6.7 +++ packet.cpp 18 Apr 2005 03:16:22 -0000 1.62.6.8 @@ -752,7 +752,7 @@ { // reseting the pcap filter to a non-exclusive form allows us to beat // the race condition between timer and processing the zoneServerInfo - if(m_playbackPackets == PLAYBACK_OFF) + if(m_playbackPackets == PLAYBACK_OFF || m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) { m_packetCapture->setFilter(m_device, m_ip, m_realtime, IP_ADDRESS_TYPE, 0, 0); @@ -775,7 +775,8 @@ m_serverPort = serverPort; m_clientPort = clientPort; - if (m_playbackPackets == PLAYBACK_OFF) + if (m_playbackPackets == PLAYBACK_OFF || + m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) { if (m_mac.length() == 17) { @@ -977,7 +978,8 @@ resetEQPacket(); seqInfo("Listening for IP client: %s", (const char*)m_ip); - if (m_playbackPackets == PLAYBACK_OFF) + if (m_playbackPackets == PLAYBACK_OFF || + m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) { m_packetCapture->setFilter(m_device, m_ip, m_realtime, @@ -1002,7 +1004,8 @@ seqInfo("Listening for MAC client: %s", (const char*)m_mac); - if (m_playbackPackets == PLAYBACK_OFF) + if (m_playbackPackets == PLAYBACK_OFF || + m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) { m_packetCapture->setFilter(m_device, m_ip, m_realtime, @@ -1026,7 +1029,8 @@ seqInfo("Listening for next client seen. (you must zone for this to work!)"); - if (m_playbackPackets == PLAYBACK_OFF) + if (m_playbackPackets == PLAYBACK_OFF || + m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) { m_packetCapture->setFilter(m_device, NULL, m_realtime, --- NEW FILE: weapons2a.h --- /* * weapons2a.h * * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ #ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0x00 NULL, // 0x01 NULL, // 0x02 NULL, // 0x03 NULL, // 0x04 NULL, // 0x05 NULL, // 0x06 NULL, // 0x07 NULL, // 0x08 NULL, // 0x09 NULL, // 0x0a NULL, // 0x0b NULL, // 0x0c NULL, // 0x0d NULL, // 0x0e NULL, // 0x0f NULL, // 0x10 NULL, // 0x11 NULL, // 0x12 NULL, // 0x13 NULL, // 0x14 NULL, // 0x15 NULL, // 0x16 NULL, // 0x17 NULL, // 0x18 NULL, // 0x19 NULL, // 0x1a NULL, // 0x1b NULL, // 0x1c NULL, // 0x1d NULL, // 0x1e NULL, // 0x1f NULL, // 0x20 NULL, // 0x21 NULL, // 0x22 NULL, // 0x23 NULL, // 0x24 NULL, // 0x25 NULL, // 0x26 NULL, // 0x27 NULL, // 0x28 NULL, // 0x29 NULL, // 0x2a NULL, // 0x2b NULL, // 0x2c NULL, // 0x2d NULL, // 0x2e NULL, // 0x2f "PotteryWheel", // 0x30 "Kiln", // 0x31 "Loom", // 0x32 "Oven", // 0x33 "Forge", // 0x34 "BrewBarrel", // 0x35 NULL, // 0x36 NULL, // 0x37 NULL, // 0x38 NULL, // 0x39 NULL, // 0x3a NULL, // 0x3b NULL, // 0x3c NULL, // 0x3d NULL, // 0x3e NULL, // 0x3f NULL, // 0x40 NULL, // 0x41 NULL, // 0x42 NULL, // 0x43 NULL, // 0x44 NULL, // 0x45 NULL, // 0x46 NULL, // 0x47 NULL, // 0x48 NULL, // 0x49 NULL, // 0x4a NULL, // 0x4b NULL, // 0x4c NULL, // 0x4d NULL, // 0x4e NULL, // 0x4f NULL, // 0x50 NULL, // 0x51 NULL, // 0x52 NULL, // 0x53 NULL, // 0x54 NULL, // 0x55 NULL, // 0x56 NULL, // 0x57 NULL, // 0x58 NULL, // 0x59 NULL, // 0x5a NULL, // 0x5b NULL, // 0x5c NULL, // 0x5d NULL, // 0x5e NULL, // 0x5f NULL, // 0x60 NULL, // 0x61 NULL, // 0x62 NULL, // 0x63 NULL, // 0x64 NULL, // 0x65 NULL, // 0x66 NULL, // 0x67 NULL, // 0x68 NULL, // 0x69 NULL, // 0x6a NULL, // 0x6b NULL, // 0x6c NULL, // 0x6d NULL, // 0x6e NULL, // 0x6f NULL, // 0x70 NULL, // 0x71 NULL, // 0x72 NULL, // 0x73 NULL, // 0x74 NULL, // 0x75 NULL, // 0x76 NULL, // 0x77 NULL, // 0x78 NULL, // 0x79 NULL, // 0x7a NULL, // 0x7b NULL, // 0x7c NULL, // 0x7d NULL, // 0x7e NULL, // 0x7f NULL, // 0x80 NULL, // 0x81 NULL, // 0x82 NULL, // 0x83 NULL, // 0x84 NULL, // 0x85 NULL, // 0x86 NULL, // 0x87 NULL, // 0x88 NULL, // 0x89 NULL, // 0x8a NULL, // 0x8b NULL, // 0x8c NULL, // 0x8d NULL, // 0x8e NULL, // 0x8f NULL, // 0x90 NULL, // 0x91 NULL, // 0x92 NULL, // 0x93 NULL, // 0x94 NULL, // 0x95 NULL, // 0x96 NULL, // 0x97 NULL, // 0x98 NULL, // 0x99 NULL, // 0x9a NULL, // 0x9b NULL, // 0x9c NULL, // 0x9d NULL, // 0x9e NULL, // 0x9f NULL, // 0xa0 NULL, // 0xa1 NULL, // 0xa2 NULL, // 0xa3 NULL, // 0xa4 NULL, // 0xa5 NULL, // 0xa6 NULL, // 0xa7 NULL, // 0xa8 NULL, // 0xa9 NULL, // 0xaa NULL, // 0xab NULL, // 0xac NULL, // 0xad NULL, // 0xae NULL, // 0xaf NULL, // 0xb0 NULL, // 0xb1 NULL, // 0xb2 NULL, // 0xb3 NULL, // 0xb4 NULL, // 0xb5 NULL, // 0xb6 NULL, // 0xb7 NULL, // 0xb8 NULL, // 0xb9 NULL, // 0xba NULL, // 0xbb NULL, // 0xbc NULL, // 0xbd NULL, // 0xbe NULL, // 0xbf NULL, // 0xc0 NULL, // 0xc1 NULL, // 0xc2 NULL, // 0xc3 NULL, // 0xc4 NULL, // 0xc5 NULL, // 0xc6 NULL, // 0xc7 NULL, // 0xc8 NULL, // 0xc9 NULL, // 0xca NULL, // 0xcb NULL, // 0xcc NULL, // 0xcd NULL, // 0xce NULL, // 0xcf NULL, // 0xd0 NULL, // 0xd1 NULL, // 0xd2 NULL, // 0xd3 NULL, // 0xd4 NULL, // 0xd5 NULL, // 0xd6 NULL, // 0xd7 NULL, // 0xd8 NULL, // 0xd9 NULL, // 0xda NULL, // 0xdb NULL, // 0xdc NULL, // 0xdd NULL, // 0xde NULL, // 0xdf NULL, // 0xe0 NULL, // 0xe1 NULL, // 0xe2 NULL, // 0xe3 NULL, // 0xe4 NULL, // 0xe5 NULL, // 0xe6 NULL, // 0xe7 NULL, // 0xe8 NULL, // 0xe9 NULL, // 0xea NULL, // 0xeb NULL, // 0xec NULL, // 0xed NULL, // 0xee NULL, // 0xef NULL, // 0xf0 NULL, // 0xf1 NULL, // 0xf2 NULL, // 0xf3 NULL, // 0xf4 NULL, // 0xf5 NULL, // 0xf6 NULL, // 0xf7 NULL, // 0xf8 NULL, // 0xf9 NULL, // 0xfa NULL, // 0xfb NULL, // 0xfc NULL, // 0xfd NULL, // 0xfe NULL, // 0xff #endif /* DOXYGEN_SHOULD_SKIP_THIS */ Index: packetcapture.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetcapture.cpp,v retrieving revision 1.2.4.3 retrieving revision 1.2.4.4 diff -u -d -r1.2.4.3 -r1.2.4.4 --- packetcapture.cpp 7 Apr 2005 03:19:37 -0000 1.2.4.3 +++ packetcapture.cpp 18 Apr 2005 03:16:23 -0000 1.2.4.4 @@ -383,6 +383,8 @@ exit (0); } + seqDebug("PCAP Filter Set: %s", filter_buf); + if (realtime) { memset (&sp, 0, sizeof (sp)); Index: weapons28.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons28.h,v retrieving revision 1.1.16.1 retrieving revision 1.1.16.2 diff -u -d -r1.1.16.1 -r1.1.16.2 --- weapons28.h 7 Nov 2004 23:10:26 -0000 1.1.16.1 +++ weapons28.h 18 Apr 2005 03:16:23 -0000 1.1.16.2 @@ -167,22 +167,6 @@ NULL, // 0x9d NULL, // 0x9e NULL, // 0x9f - NULL, // 0x90 - NULL, // 0x91 - NULL, // 0x92 - NULL, // 0x93 - NULL, // 0x94 - NULL, // 0x95 - NULL, // 0x96 - NULL, // 0x97 - NULL, // 0x98 - NULL, // 0x99 - NULL, // 0x9a - NULL, // 0x9b - NULL, // 0x9c - NULL, // 0x9d - NULL, // 0x9e - NULL, // 0x9f NULL, // 0xa0 NULL, // 0xa1 NULL, // 0xa2 Index: spawn.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawn.cpp,v retrieving revision 1.31.6.2 retrieving revision 1.31.6.3 diff -u -d -r1.31.6.2 -r1.31.6.3 --- spawn.cpp 16 Jan 2004 20:22:11 -0000 1.31.6.2 +++ spawn.cpp 18 Apr 2005 03:16:23 -0000 1.31.6.3 @@ -72,6 +72,18 @@ #include "weapons28.h" }; + // sparse array of item names (in 0x29 range), some are NULL + static const char* itemnames29[] = + { +#include "weapons29.h" + }; + + // sparse array of item names (in 0x2a range), some are NULL + static const char* itemnames2a[] = + { +#include "weapons2a.h" + }; + // sparse array of item names (in 0x2b range), some are NULL static const char* itemnames2b[] = { @@ -108,6 +120,18 @@ if (itemLo < (sizeof(itemnames28) / sizeof (char*))) itemStr = itemnames28[itemLo]; } + else if (itemHi == 0x29) + { + // retrieve pointer to item name + if (itemLo < (sizeof(itemnames29) / sizeof (char*))) + itemStr = itemnames29[itemLo]; + } + else if (itemHi == 0x2a) + { + // retrieve pointer to item name + if (itemLo < (sizeof(itemnames2a) / sizeof (char*))) + itemStr = itemnames2a[itemLo]; + } else if (itemHi == 0x2b) { // retrieve pointer to item name Index: weapons27.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons27.h,v retrieving revision 1.4.10.1 retrieving revision 1.4.10.2 diff -u -d -r1.4.10.1 -r1.4.10.2 --- weapons27.h 7 Nov 2004 23:10:26 -0000 1.4.10.1 +++ weapons27.h 18 Apr 2005 03:16:23 -0000 1.4.10.2 @@ -167,22 +167,6 @@ NULL, // 0x9d NULL, // 0x9e NULL, // 0x9f - NULL, // 0x90 - NULL, // 0x91 - NULL, // 0x92 - NULL, // 0x93 - NULL, // 0x94 - NULL, // 0x95 - NULL, // 0x96 - NULL, // 0x97 - NULL, // 0x98 - NULL, // 0x99 - NULL, // 0x9a - NULL, // 0x9b - NULL, // 0x9c - NULL, // 0x9d - NULL, // 0x9e - NULL, // 0x9f NULL, // 0xa0 NULL, // 0xa1 NULL, // 0xa2 Index: messageshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messageshell.cpp,v retrieving revision 1.1.4.8 retrieving revision 1.1.4.9 diff -u -d -r1.1.4.8 -r1.1.4.9 --- messageshell.cpp 7 Apr 2005 03:19:36 -0000 1.1.4.8 +++ messageshell.cpp 18 Apr 2005 03:16:22 -0000 1.1.4.9 @@ -689,8 +689,8 @@ const charProfileStruct* player = (const charProfileStruct*)data; QString message; - message.sprintf("Name: '%s' Last: '%s'", - player->name, player->lastName); + message.sprintf("Name: '%s' Last: '%s' Title: '%s' Suffix: '%s'", + player->name, player->lastName, player->title, player->suffix); m_messages->addMessage(MT_Player, message); message.sprintf("Level: %d", player->level); @@ -715,14 +715,25 @@ player->platinum_shared); m_messages->addMessage(MT_Player, message); + message.sprintf("DoN Crystals: Radiant=%d Ebon=%d", + player->currentRadCrystals, player->currentEbonCrystals); + m_messages->addMessage(MT_Player, message); + message = "Exp: " + Commanate(player->exp); m_messages->addMessage(MT_Player, message); message = "ExpAA: " + Commanate(player->expAA) + - "(aa spent: " + Commanate(player->aa_spent) + + " (aa spent: " + Commanate(player->aa_spent) + ", aa unspent: " + Commanate(player->aa_unspent) + ")"; m_messages->addMessage(MT_Player, message); + message.sprintf("GroupLeadAA: %.1f%% (unspent: %d)", + (player->expGroupLeadAA)/10.0, player->groupLeadAAUnspent); + m_messages->addMessage(MT_Player, message); + message.sprintf("RaidLeadAA: %.1f%% (unspent: %d)", + (player->expRaidLeadAA)/20.0, player->raidLeadAAUnspent); + m_messages->addMessage(MT_Player, message); + message.sprintf("Group: %s %s %s %s %s %s", player->groupMembers[0], player->groupMembers[1], player->groupMembers[2], --- NEW FILE: weapons29.h --- /* * weapons29.h * * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ #ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0x00 NULL, // 0x01 NULL, // 0x02 NULL, // 0x03 NULL, // 0x04 NULL, // 0x05 NULL, // 0x06 NULL, // 0x07 NULL, // 0x08 NULL, // 0x09 NULL, // 0x0a NULL, // 0x0b NULL, // 0x0c NULL, // 0x0d NULL, // 0x0e NULL, // 0x0f NULL, // 0x10 NULL, // 0x11 NULL, // 0x12 NULL, // 0x13 NULL, // 0x14 NULL, // 0x15 NULL, // 0x16 NULL, // 0x17 NULL, // 0x18 NULL, // 0x19 NULL, // 0x1a NULL, // 0x1b NULL, // 0x1c NULL, // 0x1d NULL, // 0x1e NULL, // 0x1f NULL, // 0x20 NULL, // 0x21 NULL, // 0x22 NULL, // 0x23 NULL, // 0x24 NULL, // 0x25 NULL, // 0x26 NULL, // 0x27 NULL, // 0x28 NULL, // 0x29 NULL, // 0x2a NULL, // 0x2b NULL, // 0x2c NULL, // 0x2d NULL, // 0x2e NULL, // 0x2f NULL, // 0x30 NULL, // 0x31 NULL, // 0x32 NULL, // 0x33 NULL, // 0x34 NULL, // 0x35 NULL, // 0x36 NULL, // 0x37 NULL, // 0x38 NULL, // 0x39 NULL, // 0x3a NULL, // 0x3b NULL, // 0x3c NULL, // 0x3d NULL, // 0x3e NULL, // 0x3f NULL, // 0x40 NULL, // 0x41 NULL, // 0x42 NULL, // 0x43 NULL, // 0x44 NULL, // 0x45 NULL, // 0x46 NULL, // 0x47 NULL, // 0x48 NULL, // 0x49 NULL, // 0x4a NULL, // 0x4b NULL, // 0x4c NULL, // 0x4d NULL, // 0x4e NULL, // 0x4f NULL, // 0x50 NULL, // 0x51 NULL, // 0x52 NULL, // 0x53 NULL, // 0x54 NULL, // 0x55 NULL, // 0x56 NULL, // 0x57 NULL, // 0x58 NULL, // 0x59 NULL, // 0x5a NULL, // 0x5b NULL, // 0x5c NULL, // 0x5d NULL, // 0x5e NULL, // 0x5f NULL, // 0x60 NULL, // 0x61 NULL, // 0x62 NULL, // 0x63 NULL, // 0x64 NULL, // 0x65 NULL, // 0x66 NULL, // 0x67 NULL, // 0x68 NULL, // 0x69 NULL, // 0x6a NULL, // 0x6b NULL, // 0x6c NULL, // 0x6d NULL, // 0x6e NULL, // 0x6f NULL, // 0x70 NULL, // 0x71 NULL, // 0x72 NULL, // 0x73 NULL, // 0x74 NULL, // 0x75 NULL, // 0x76 NULL, // 0x77 NULL, // 0x78 NULL, // 0x79 NULL, // 0x7a NULL, // 0x7b NULL, // 0x7c NULL, // 0x7d NULL, // 0x7e NULL, // 0x7f NULL, // 0x80 NULL, // 0x81 NULL, // 0x82 NULL, // 0x83 NULL, // 0x84 NULL, // 0x85 NULL, // 0x86 NULL, // 0x87 NULL, // 0x88 NULL, // 0x89 NULL, // 0x8a NULL, // 0x8b NULL, // 0x8c NULL, // 0x8d NULL, // 0x8e NULL, // 0x8f NULL, // 0x90 NULL, // 0x91 NULL, // 0x92 NULL, // 0x93 NULL, // 0x94 NULL, // 0x95 NULL, // 0x96 NULL, // 0x97 NULL, // 0x98 NULL, // 0x99 NULL, // 0x9a NULL, // 0x9b NULL, // 0x9c NULL, // 0x9d NULL, // 0x9e NULL, // 0x9f NULL, // 0xa0 NULL, // 0xa1 NULL, // 0xa2 NULL, // 0xa3 NULL, // 0xa4 NULL, // 0xa5 NULL, // 0xa6 NULL, // 0xa7 NULL, // 0xa8 NULL, // 0xa9 NULL, // 0xaa NULL, // 0xab NULL, // 0xac NULL, // 0xad NULL, // 0xae NULL, // 0xaf NULL, // 0xb0 NULL, // 0xb1 NULL, // 0xb2 NULL, // 0xb3 NULL, // 0xb4 NULL, // 0xb5 NULL, // 0xb6 NULL, // 0xb7 NULL, // 0xb8 NULL, // 0xb9 NULL, // 0xba NULL, // 0xbb NULL, // 0xbc NULL, // 0xbd NULL, // 0xbe NULL, // 0xbf NULL, // 0xc0 NULL, // 0xc1 NULL, // 0xc2 NULL, // 0xc3 NULL, // 0xc4 NULL, // 0xc5 NULL, // 0xc6 NULL, // 0xc7 NULL, // 0xc8 NULL, // 0xc9 NULL, // 0xca NULL, // 0xcb NULL, // 0xcc NULL, // 0xcd NULL, // 0xce NULL, // 0xcf NULL, // 0xd0 NULL, // 0xd1 NULL, // 0xd2 NULL, // 0xd3 NULL, // 0xd4 NULL, // 0xd5 NULL, // 0xd6 NULL, // 0xd7 NULL, // 0xd8 NULL, // 0xd9 "AugmentSealer", // 0xda NULL, // 0xdb NULL, // 0xdc NULL, // 0xdd NULL, // 0xde NULL, // 0xdf NULL, // 0xe0 NULL, // 0xe1 NULL, // 0xe2 NULL, // 0xe3 NULL, // 0xe4 NULL, // 0xe5 NULL, // 0xe6 NULL, // 0xe7 NULL, // 0xe8 NULL, // 0xe9 NULL, // 0xea NULL, // 0xeb NULL, // 0xec NULL, // 0xed NULL, // 0xee NULL, // 0xef NULL, // 0xf0 NULL, // 0xf1 NULL, // 0xf2 NULL, // 0xf3 NULL, // 0xf4 NULL, // 0xf5 NULL, // 0xf6 NULL, // 0xf7 NULL, // 0xf8 NULL, // 0xf9 NULL, // 0xfa NULL, // 0xfb NULL, // 0xfc NULL, // 0xfd NULL, // 0xfe NULL, // 0xff #endif /* DOXYGEN_SHOULD_SKIP_THIS */ Index: weapons2b.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons2b.h,v retrieving revision 1.1.16.1 retrieving revision 1.1.16.2 diff -u -d -r1.1.16.1 -r1.1.16.2 --- weapons2b.h 7 Nov 2004 23:10:27 -0000 1.1.16.1 +++ weapons2b.h 18 Apr 2005 03:16:23 -0000 1.1.16.2 @@ -167,22 +167,6 @@ NULL, // 0x9d NULL, // 0x9e NULL, // 0x9f - NULL, // 0x90 - NULL, // 0x91 - NULL, // 0x92 - NULL, // 0x93 - NULL, // 0x94 - NULL, // 0x95 - NULL, // 0x96 - NULL, // 0x97 - NULL, // 0x98 - NULL, // 0x99 - NULL, // 0x9a - NULL, // 0x9b - NULL, // 0x9c - NULL, // 0x9d - NULL, // 0x9e - NULL, // 0x9f NULL, // 0xa0 NULL, // 0xa1 NULL, // 0xa2 Index: weapons1.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons1.h,v retrieving revision 1.1.10.1 retrieving revision 1.1.10.2 diff -u -d -r1.1.10.1 -r1.1.10.2 --- weapons1.h 7 Nov 2004 23:10:26 -0000 1.1.10.1 +++ weapons1.h 18 Apr 2005 03:16:23 -0000 1.1.10.2 @@ -167,22 +167,6 @@ NULL, // 0x9d NULL, // 0x9e NULL, // 0x9f - NULL, // 0x90 - NULL, // 0x91 - NULL, // 0x92 - NULL, // 0x93 - NULL, // 0x94 - NULL, // 0x95 - NULL, // 0x96 - NULL, // 0x97 - NULL, // 0x98 - NULL, // 0x99 - NULL, // 0x9a - NULL, // 0x9b - NULL, // 0x9c - NULL, // 0x9d - NULL, // 0x9e - NULL, // 0x9f NULL, // 0xa0 NULL, // 0xa1 NULL, // 0xa2 Index: spawnshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnshell.cpp,v retrieving revision 1.42.6.5 retrieving revision 1.42.6.6 diff -u -d -r1.42.6.5 -r1.42.6.6 --- spawnshell.cpp 7 Apr 2005 03:19:37 -0000 1.42.6.5 +++ spawnshell.cpp 18 Apr 2005 03:16:23 -0000 1.42.6.6 @@ -653,6 +653,14 @@ if (renameMe != NULL) { renameMe->setName(rename->new_name); + + uint32_t changeType = tSpawnChangedName; + + if (updateFilterFlags(renameMe)) + changeType |= tSpawnChangedFilter; + if (updateRuntimeFilterFlags(renameMe)) + changeType |= tSpawnChangedRuntimeFilter; + renameMe->updateLastChanged(); emit changeItem(renameMe, tSpawnChangedName); } Index: zones.h =================================================================== RCS file: /cvsroot/seq/showeq/src/zones.h,v retrieving revision 1.7.16.5 retrieving revision 1.7.16.6 diff -u -d -r1.7.16.5 -r1.7.16.6 --- zones.h 7 Apr 2005 03:19:37 -0000 1.7.16.5 +++ zones.h 18 Apr 2005 03:16:23 -0000 1.7.16.6 @@ -195,8 +195,8 @@ { "load2", "Loading" }, // 185 { "hateplaneb", "The Plane of Hate" }, // 186 { "shadowrest", "Shadowrest" }, // 187 -{ NULL, NULL }, // 188 -{ NULL, NULL }, // 189 +{ "tutoriala", "The Mines of Gloomingdeep" }, // 188 +{ "tutorialb", "The Mines of Gloomingdeep" }, // 189 { NULL, NULL }, // 190 { NULL, NULL }, // 191 { NULL, NULL }, // 192 Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.20 retrieving revision 1.74.6.21 diff -u -d -r1.74.6.20 -r1.74.6.21 --- everquest.h 7 Apr 2005 03:19:34 -0000 1.74.6.20 +++ everquest.h 18 Apr 2005 03:16:14 -0000 1.74.6.21 @@ -102,6 +102,7 @@ //Maximum limits of certain types of data #define MAX_KNOWN_SKILLS 75 +#define MAX_SPELL_SLOTS 9 #define MAX_KNOWN_LANGS 25 #define MAX_SPELLBOOK_SLOTS 400 #define MAX_GROUP_MEMBERS 6 @@ -266,6 +267,46 @@ GUA_Started = 9, }; +/** + * Leadership AAs enum, used to index into leadershipAAs in charProfileStruct + */ +enum LeadershipAAIndex +{ + groupMarkNPC = 0, + groupNPCHealth, + groupDelegateMainAssist, + groupDelegateMarkNPC, + groupUnknown4, + groupUnknown5, + groupInspectBuffs, + groupUnknown7, + groupSpellAwareness, + groupOffenseEnhancement, + groupManaEnhancement, + groupHealthEnhancement, + groupHealthRegeneration, + groupFindPathToPC, + groupHealthOfTargetsTarget, + groupUnknown15, + raidMarkNPC, //0x10 + raidNPCHealth, + raidDelegateMainAssist, + raidDelegateMarkNPC, + raidUnknown4, + raidUnknown5, + raidUnknown6, + raidSpellAwareness, + raidOffenseEnhancement, + raidManaEnhancement, + raidHealthEnhancement, + raidHealthRegeneration, + raidFindPathToPC, + raidHealthOfTargetsTarget, + raidUnknown14, + raidUnknown15, + MAX_LEAD_AA //=32 +}; + /* ** Compiler override to ensure @@ -610,7 +651,10 @@ /*0242*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon /*0243*/ uint8_t gm; // 0=no, 1=yes /*0244*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader -/*0245*/ uint8_t unknown0245[55]; // *** Placeholder +/*0245*/ uint8_t unknown0245[7]; // *** Placeholder +/*0252*/ uint32_t intoxication; // Alcohol level (in ticks till sober?) +/*0256*/ uint32_t spellSlotRefresh[MAX_SPELL_SLOTS]; // Refresh time (millis) +/*0292*/ uint8_t unknown0292[8]; // *** Placeholder /*0300*/ uint8_t haircolor; // Player hair color /*0301*/ uint8_t beardcolor; // Player beard color /*0302*/ uint8_t eyecolor1; // Player left eye color @@ -623,7 +667,9 @@ /*0396*/ Color_Struct item_tint[9]; // RR GG BB 00 /*0432*/ AA_Array aa_array[MAX_AA]; // AAs /*1392*/ char servername[32]; // server the char was created on -/*1424*/ uint8_t unknown1452[68]; // *** Placeholder +/*1424*/ char title[32]; // Current character title +/*1456*/ char suffix[32]; // Current character suffix +/*1488*/ uint8_t unknown1452[4]; // *** Placeholder /*1492*/ uint32_t exp; // Current Experience /*1496*/ uint32_t unknown1496; // *** Placeholder /*1500*/ uint32_t points; // Unspent Practice points @@ -643,7 +689,7 @@ /*1617*/ uint8_t unknown1617[7]; // All 0x00 (language buffer?) /*1624*/ int32_t sSpellBook[400]; // List of the Spells in spellbook /*3224*/ uint8_t unknown3224[448]; // all 0xff after last spell -/*3672*/ int32_t sMemSpells[9]; // List of spells memorized +/*3672*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized /*3708*/ uint8_t unknown3708[32]; // *** Placeholder /*3740*/ float x; // Players x position /*3744*/ float y; // Players y position @@ -665,11 +711,14 @@ /*3808*/ uint32_t platinum_shared; // Shared platinum pieces /*3812*/ uint8_t unknown3812[20]; // Unknown - all zero /*3832*/ uint32_t skills[75]; // List of skills (MAX_KNOWN_SKILLS) -/*4132*/ uint8_t unknown4132[348]; // *** Placeholder -/*4480*/ uint32_t expAA; // Current AA experience -/*4484*/ uint8_t unknown4484[4]; // *** Placeholder +/*4132*/ uint8_t unknown4132[312]; // *** Placeholder +/*4444*/ uint32_t autosplit; // 0 = off, 1 = on +/*4448*/ uint8_t unknown4448[8]; // *** Placeholder +/*4456*/ uint32_t zoneCounter; // No idea. Goes up by 2 each zone. +/*4460*/ uint8_t unknown4460[28]; // *** Placeholder /*4488*/ uint32_t expansions; // Bitmask for expansions -/*4492*/ uint8_t unknown4492[20]; // *** Placeholder +/*4492*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3) +/*4496*/ uint8_t unknown4496[16]; // *** Placeholder /*4512*/ uint32_t hunger; // Food (ticks till next eat) /*4516*/ uint32_t thirst; // Drink (ticks till next drink) /*4520*/ uint8_t unknown4520[20]; // *** Placeholder @@ -696,11 +745,16 @@ /*6200*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines /*6400*/ uint8_t unknown6400[440]; // *** Placeholder /*6840*/ uint32_t endurance; // Current endurance -/*6844*/ uint8_t unknown6844[276]; // *** Placeholder +/*6844*/ uint32_t expGroupLeadAA; // Current group lead AA exp (0-1000) +/*6848*/ uint32_t expRaidLeadAA; // Current raid lead AA exp (0-2000) +/*6852*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points +/*6856*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points +/*6860*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks +/*6988*/ uint8_t unknown6988[132]; // *** Placeholder /*7120*/ uint32_t airRemaining; // Air supply (seconds) -/*7124*/ uint8_t unknown7124[4608]; // *** Placeholder +/*7124*/ uint8_t unknown7274[4608]; // *** Placeholder /*11732*/ uint32_t aa_spent; // Number of spent AA points -/*11736*/ uint32_t unknown11736; // *** Placeholder +/*11736*/ uint32_t expAA; // Exp earned in current AA point /*11740*/ uint32_t aa_unspent; // Unspent AA points /*11744*/ uint8_t unknown11744[36]; // *** Placeholder /*11780*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents @@ -1724,16 +1778,16 @@ /* ** NPC Hp Update -** Length: 6 Octets +** Length: 10 Octets ** Opcode NpcHpUpdateCode */ struct hpNpcUpdateStruct { -/*0000*/ uint16_t spawnId; -/*0002*/ int16_t maxHP; -/*0004*/ int16_t curHP; -/*0006*/ +/*0000*/ int32_t curHP; +/*0004*/ int32_t maxHP; +/*0008*/ uint16_t spawnId; +/*0010*/ }; /* |
|
From: Erik B. <do...@us...> - 2005-04-18 03:15:26
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28575/src Modified Files: Tag: pre_5_0_beta Makefile.am Log Message: Add weapons29.h and weapons2a.h Index: Makefile.am =================================================================== RCS file: /cvsroot/seq/showeq/src/Makefile.am,v retrieving revision 1.22.6.6 retrieving revision 1.22.6.7 diff -u -d -r1.22.6.6 -r1.22.6.7 --- Makefile.am 7 Nov 2004 23:09:55 -0000 1.22.6.6 +++ Makefile.am 18 Apr 2005 03:15:16 -0000 1.22.6.7 @@ -132,7 +132,7 @@ EXTRA_DIST = h2info.pl -noinst_HEADERS = classes.h compass.h everquest.h interface.h main.h map.h filter.h vpacket.h editor.h packet.h packetcapture.h packetcommon.h packetformat.h packetstream.h packetfragment.h packetinfo.h races.h skills.h spells.h util.h experiencelog.h combatlog.h spawn.h spawnshell.h spawnlist.h spellshell.h spelllist.h languages.h weapons.h weapons1.h weapons27.h weapons28.h weapons2b.h decode.h itemdb.h gdbmconv.h cgiconv.h skilllist.h statlist.h db3conv.h dbcommon.h deity.h player.h crctab.h filtermgr.h point.h pointarray.h mapcore.h category.h compassframe.h group.h guild.h fixpt.h netdiag.h zones.h logger.h xmlconv.h xmlpreferences.h seqwindow.h seqlistview.h zonemgr.h spawnmonitor.h spawnpointlist.h typenames.h spawnlistcommon.h spawnlist2.h datetimemgr.h spawnlog.h packetlog.h datalocationmgr.h eqstr.h messages.h messagefilter.h messagewindow.h messageshell.h terminal.h filteredspawnlog.h messagefilterdialog.h diagnosticmessages.h mapicon.h mapicondialog.ui mapicondialog.ui.h filternotifications.h netstream.h guildshell.h guildlist.h bazaarlog.h message.h s_everquest.h staticspells.h +noinst_HEADERS = classes.h compass.h everquest.h interface.h main.h map.h filter.h vpacket.h editor.h packet.h packetcapture.h packetcommon.h packetformat.h packetstream.h packetfragment.h packetinfo.h races.h skills.h spells.h util.h experiencelog.h combatlog.h spawn.h spawnshell.h spawnlist.h spellshell.h spelllist.h languages.h weapons.h weapons1.h weapons27.h weapons28.h weapons29.h weapons2a.h weapons2b.h decode.h itemdb.h gdbmconv.h cgiconv.h skilllist.h statlist.h db3conv.h dbcommon.h deity.h player.h crctab.h filtermgr.h point.h pointarray.h mapcore.h category.h compassframe.h group.h guild.h fixpt.h netdiag.h zones.h logger.h xmlconv.h xmlpreferences.h seqwindow.h seqlistview.h zonemgr.h spawnmonitor.h spawnpointlist.h typenames.h spawnlistcommon.h spawnlist2.h datetimemgr.h spawnlog.h packetlog.h datalocationmgr.h eqstr.h messages.h messagefilter.h messagewindow.h messageshell.h terminal.h filteredspawnlog.h messagefilterdialog.h diagnosticmessages.h mapicon.h mapicondialog.ui mapicondialog.ui.h filternotifications.h netstream.h guildshell.h guildlist.h bazaarlog.h message.h s_everquest.h staticspells.h CLEANFILES = $(nodist_showeq_SOURCES) |
|
From: Erik B. <do...@us...> - 2005-04-18 03:14:47
|
Update of /cvsroot/seq/showeq/m4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28126/m4 Modified Files: Tag: pre_5_0_beta doxygen.m4 Log Message: Remove duplicate line. Index: doxygen.m4 =================================================================== RCS file: /cvsroot/seq/showeq/m4/Attic/doxygen.m4,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- doxygen.m4 7 Nov 2004 23:09:55 -0000 1.1.4.1 +++ doxygen.m4 18 Apr 2005 03:14:32 -0000 1.1.4.2 @@ -167,7 +167,6 @@ AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])]) AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])]) AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) -AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])]) AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])]) |
|
From: Erik B. <do...@us...> - 2005-04-18 03:14:17
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28054 Modified Files: Tag: pre_5_0_beta configure.in Log Message: Fix warnings, and update to 5.0.0.20 Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.20 retrieving revision 1.49.4.21 diff -u -d -r1.49.4.20 -r1.49.4.21 --- configure.in 7 Apr 2005 02:34:13 -0000 1.49.4.20 +++ configure.in 18 Apr 2005 03:14:06 -0000 1.49.4.21 @@ -1,13 +1,13 @@ dnl Process this file with autoconf to produce a configure script. dnl $Id$ $Name$ -AC_PREREQ(2.53) -AC_INIT(showeq, 5.0.0.19) +AC_PREREQ(2.59) +AC_INIT(showeq, 5.0.0.20) AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(1.7) +AM_INIT_AUTOMAKE(1.9 dist-bzip2) AM_MAINTAINER_MODE dnl doxygen macros @@ -43,7 +43,7 @@ ;; esac] ) -AC_DEFUN(CHECK_COMPILER,[ +AC_DEFUN([CHECK_COMPILER],[ ac_save_cxxflags="$CXXFLAGS" if [[ "$ac_cv_showeq_old_compiler" == "yes" ]]; then CXXFLAGS="$CXXFLAGS -DOLDCOMPILER" @@ -158,7 +158,7 @@ AC_LANG_CPLUSPLUS dnl Check taken from SINS 0.5 -AC_DEFUN(SHOWEQ_CHECK_THREADING,[ +AC_DEFUN([SHOWEQ_CHECK_THREADING],[ AC_LANG_CPLUSPLUS USE_THREADS="" LIBGETOPT="" @@ -531,7 +531,7 @@ CFLAGS="$USE_THREADS $USE_OPT_C $USE_DEBUG_C $USE_INLINE_C $USE_PROFILE_C $CFLAGS" CXXFLAGS="$USE_THREADS $USE_OPT_CXX $USE_DEBUG_CXX $USE_INLINE_CXX $USE_PROFILE_CXX -DQT_THREAD_SUPPORT=1 -DDISPLAY_ICONS=${CGI_ICONS} -DICON_DIR=\\\"${CGI_ICON_DIR}\\\" $CXXFLAGS" -AC_DEFUN(SUCCESS,[ +AC_DEFUN([SUCCESS],[ echo "Success!" case $target_os in solaris*) |
|
From: Erik B. <do...@us...> - 2005-04-18 03:13:49
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27825 Modified Files: Tag: pre_5_0_beta acinclude.m4 Log Message: Fix MANY warnings Index: acinclude.m4 =================================================================== RCS file: /cvsroot/seq/showeq/acinclude.m4,v retrieving revision 1.9.16.5 retrieving revision 1.9.16.6 diff -u -d -r1.9.16.5 -r1.9.16.6 --- acinclude.m4 8 Nov 2004 03:14:39 -0000 1.9.16.5 +++ acinclude.m4 18 Apr 2005 03:13:23 -0000 1.9.16.6 @@ -33,7 +33,7 @@ dnl Find a file (or one of more files in a list of dirs) dnl ------------------------------------------------------------------------ dnl -AC_DEFUN(AC_FIND_FILE, +AC_DEFUN([AC_FIND_FILE], [ $3=NO for i in $2; @@ -48,7 +48,7 @@ done ]) -AC_DEFUN(MOC_ERROR_MESSAGE, +AC_DEFUN([MOC_ERROR_MESSAGE], [ HEADER="No working Qt meta object compiler (moc) found! @@ -91,7 +91,7 @@ dnl more usual places dnl ------------------------------------------------------------------------ dnl -AC_DEFUN(AC_PATH_QT_MOC, +AC_DEFUN([AC_PATH_QT_MOC], [ if [[ -n "$ac_qt_includes" ]]; then @@ -162,7 +162,7 @@ fi ]) -AC_DEFUN(UIC_ERROR_MESSAGE, +AC_DEFUN([UIC_ERROR_MESSAGE], [ HEADER="No working Qt user interface compiler (uic) found! @@ -206,7 +206,7 @@ dnl more usual places dnl ------------------------------------------------------------------------ dnl -AC_DEFUN(AC_PATH_QT_UIC, +AC_DEFUN([AC_PATH_QT_UIC], [ if [[ -n "$ac_qt_includes" ]]; then @@ -277,7 +277,7 @@ fi ]) -AC_DEFUN(KDE_MISC_TESTS, +AC_DEFUN([KDE_MISC_TESTS], [ AC_LANG_C dnl Checks for libraries. @@ -347,7 +347,7 @@ dnl macro AC_PATH_X dnl ------------------------------------------------------------------------ dnl -AC_DEFUN(K_PATH_X, +AC_DEFUN([K_PATH_X], [ AC_REQUIRE([AC_PROG_CPP]) dnl AC_MSG_CHECKING(for X) @@ -482,7 +482,7 @@ ]) ]) -AC_DEFUN(PRINT_QT_PROGRAM, +AC_DEFUN([PRINT_QT_PROGRAM], [ cat > conftest.$ac_ext <<EOF #define QT_THREAD_SUPPORT 1 @@ -509,7 +509,7 @@ EOF ]) -AC_DEFUN(CHECK_QT_DIRECT, +AC_DEFUN([CHECK_QT_DIRECT], [ AC_MSG_CHECKING([if Qt compiles without flags]) AC_CACHE_VAL(cv_qt_direct, @@ -567,7 +567,7 @@ dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed) dnl ------------------------------------------------------------------------ dnl -AC_DEFUN(AC_PATH_QT_1_3, +AC_DEFUN([AC_PATH_QT_1_3], [ AC_REQUIRE([K_PATH_X]) LIBQT="-lqt-mt" @@ -1014,12 +1014,12 @@ ]) -AC_DEFUN(AC_PATH_QT, +AC_DEFUN([AC_PATH_QT], [ AC_PATH_QT_1_3 ]) -AC_DEFUN(KDE_CHECK_FINAL, +AC_DEFUN([KDE_CHECK_FINAL], [ AC_ARG_ENABLE(final, [ --enable-final build size optimized apps (needs lots of memory)], kde_use_final=yes, kde_use_final=no, kde_use_final=no) @@ -1036,7 +1036,7 @@ AC_SUBST(KDE_USE_FINAL_FALSE) ]) -AC_DEFUN(SHOWEQ_CHECK_EXTRA_LIBS, +AC_DEFUN([SHOWEQ_CHECK_EXTRA_LIBS], [ AC_MSG_CHECKING(for extra includes) AC_ARG_WITH(extra-includes, [ --with-extra-includes=DIR @@ -1091,7 +1091,7 @@ ]) -AC_DEFUN(KDE_CHECK_KIMGIO, +AC_DEFUN([KDE_CHECK_KIMGIO], [ AC_REQUIRE([AC_BASE_PATH_KDE]) AC_REQUIRE([SHOWEQ_CHECK_EXTRA_LIBS]) @@ -1121,7 +1121,7 @@ AC_SUBST(LIB_KIMGIO) ]) -AC_DEFUN(KDE_CREATE_LIBS_ALIASES, +AC_DEFUN([KDE_CREATE_LIBS_ALIASES], [ AC_REQUIRE([KDE_MISC_TESTS]) AC_REQUIRE([KDE_CHECK_LIBDL]) @@ -1166,7 +1166,7 @@ fi ]) -AC_DEFUN(AC_PATH_KDE, +AC_DEFUN([AC_PATH_KDE], [ AC_BASE_PATH_KDE AC_ARG_ENABLE(path-check, [ --disable-path-check don't try to find out, where to install], @@ -1185,7 +1185,7 @@ ]) dnl slightly changed version of AC_CHECK_FUNC(setenv) -AC_DEFUN(AC_CHECK_SETENV, +AC_DEFUN([AC_CHECK_SETENV], [AC_MSG_CHECKING([for setenv]) AC_CACHE_VAL(ac_cv_func_setenv, [AC_LANG_C @@ -1220,7 +1220,7 @@ fi ]) -AC_DEFUN(AC_CHECK_GETDOMAINNAME, +AC_DEFUN([AC_CHECK_GETDOMAINNAME], [ AC_LANG_CPLUSPLUS save_CXXFLAGS="$CXXFLAGS" @@ -1248,7 +1248,7 @@ CXXFLAGS="$save_CXXFLAGS" ]) -AC_DEFUN(AC_CHECK_GETHOSTNAME, +AC_DEFUN([AC_CHECK_GETHOSTNAME], [ AC_LANG_CPLUSPLUS save_CXXFLAGS="$CXXFLAGS" @@ -1277,7 +1277,7 @@ CXXFLAGS="$save_CXXFLAGS" ]) -AC_DEFUN(AC_CHECK_USLEEP, +AC_DEFUN([AC_CHECK_USLEEP], [ AC_LANG_CPLUSPLUS @@ -1303,7 +1303,7 @@ LIBS="$ac_libs_safe" ]) -AC_DEFUN(AC_CHECK_RANDOM, +AC_DEFUN([AC_CHECK_RANDOM], [ AC_LANG_CPLUSPLUS @@ -1328,7 +1328,7 @@ LIBS="$ac_libs_safe" ]) -AC_DEFUN(AC_FIND_GIF, +AC_DEFUN([AC_FIND_GIF], [AC_MSG_CHECKING([for giflib]) AC_CACHE_VAL(ac_cv_lib_gif, [ac_save_LIBS="$LIBS" @@ -1358,7 +1358,7 @@ fi ]) -AC_DEFUN(KDE_FIND_JPEG_HELPER, +AC_DEFUN([KDE_FIND_JPEG_HELPER], [ AC_MSG_CHECKING([for libjpeg$2]) AC_CACHE_VAL(ac_cv_lib_jpeg_$1, @@ -1398,7 +1398,7 @@ ]) -AC_DEFUN(AC_FIND_JPEG, +AC_DEFUN([AC_FIND_JPEG], [ KDE_FIND_JPEG_HELPER(6b, 6b, KDE_FIND_JPEG_HELPER(normal, [], @@ -1430,7 +1430,7 @@ ]) -AC_DEFUN(AC_FIND_ZLIB, +AC_DEFUN([AC_FIND_ZLIB], [ AC_REQUIRE([SHOWEQ_CHECK_EXTRA_LIBS]) AC_MSG_CHECKING([for libz]) @@ -1463,7 +1463,7 @@ fi ]) -AC_DEFUN(KDE_TRY_TIFFLIB, +AC_DEFUN([KDE_TRY_TIFFLIB], [ AC_MSG_CHECKING([for libtiff $1]) @@ -1504,7 +1504,7 @@ ]) -AC_DEFUN(AC_FIND_TIFF, +AC_DEFUN([AC_FIND_TIFF], [ AC_REQUIRE([K_PATH_X]) AC_REQUIRE([AC_FIND_ZLIB]) @@ -1518,7 +1518,7 @@ ]) -AC_DEFUN(AC_FIND_PNG, +AC_DEFUN([AC_FIND_PNG], [ AC_REQUIRE([AC_FIND_ZLIB]) AC_REQUIRE([SHOWEQ_CHECK_EXTRA_LIBS]) @@ -1557,7 +1557,7 @@ fi ]) -AC_DEFUN(AC_CHECK_BOOL, +AC_DEFUN([AC_CHECK_BOOL], [ AC_MSG_CHECKING([for bool]) AC_CACHE_VAL(ac_cv_have_bool, @@ -1574,7 +1574,7 @@ fi ]) -AC_DEFUN(AC_CHECK_GNU_EXTENSIONS, +AC_DEFUN([AC_CHECK_GNU_EXTENSIONS], [ AC_MSG_CHECKING(if you need GNU extensions) AC_CACHE_VAL(ac_cv_gnu_extensions, @@ -1602,7 +1602,7 @@ fi ]) -AC_DEFUN(KDE_CHECK_COMPILER_FLAG, +AC_DEFUN([KDE_CHECK_COMPILER_FLAG], [ AC_REQUIRE([AC_CHECK_COMPILERS]) AC_MSG_CHECKING(whether $CXX supports -$1) @@ -1628,7 +1628,7 @@ fi ]) -AC_DEFUN(AC_CHECK_COMPILERS, +AC_DEFUN([AC_CHECK_COMPILERS], [ dnl this is somehow a fat lie, but prevents other macros from double checking AC_PROVIDE([AC_PROG_CC]) @@ -1877,14 +1877,14 @@ AC_SUBST(KDE_CXXFLAGS) ]) -AC_DEFUN(KDE_ADD_DEPENDENCIES, +AC_DEFUN([KDE_ADD_DEPENDENCIES], [ [A]M_DEPENDENCIES(CC) [A]M_DEPENDENCIES(CXX) ]) dnl just a wrapper to clean up configure.in -AC_DEFUN(KDE_PROG_LIBTOOL, +AC_DEFUN([KDE_PROG_LIBTOOL], [ AC_REQUIRE([AC_CHECK_COMPILERS]) AC_REQUIRE([AC_ENABLE_SHARED]) @@ -1910,7 +1910,7 @@ fi ]) -AC_DEFUN(KDE_DO_IT_ALL, +AC_DEFUN([KDE_DO_IT_ALL], [ AC_CANONICAL_SYSTEM AC_ARG_PROGRAM @@ -1923,7 +1923,7 @@ AC_PATH_KDE ]) -AC_DEFUN(AC_CHECK_RPATH, +AC_DEFUN([AC_CHECK_RPATH], [ AC_MSG_CHECKING(for rpath) AC_ARG_ENABLE(rpath, @@ -1952,7 +1952,7 @@ ]) dnl Check for the type of the third argument of getsockname -AC_DEFUN(AC_CHECK_KSIZE_T, +AC_DEFUN([AC_CHECK_KSIZE_T], [AC_MSG_CHECKING(for the third argument of getsockname) AC_CACHE_VAL(ac_cv_ksize_t, AC_LANG_SAVE @@ -2012,7 +2012,7 @@ dnl > dnl for this file it is relicensed under LGPL -AC_DEFUN(AM_KDE_WITH_NLS, +AC_DEFUN([AM_KDE_WITH_NLS], [AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, @@ -2065,7 +2065,7 @@ dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN(AM_PATH_PROG_WITH_TEST_KDE, +AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) @@ -2107,7 +2107,7 @@ # serial 1 -AC_DEFUN(AM_LC_MESSAGES, +AC_DEFUN([AM_LC_MESSAGES], [if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES], @@ -2123,7 +2123,7 @@ # serial 1 # Stephan Kulow: I put a KDE in it to avoid name conflicts -AC_DEFUN(AM_KDE_GNU_GETTEXT, +AC_DEFUN([AM_KDE_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_HEADER_STDC])dnl @@ -2187,7 +2187,7 @@ ]) -AC_DEFUN(AC_HAVE_XPM, +AC_DEFUN([AC_HAVE_XPM], [AC_REQUIRE_CPP()dnl AC_REQUIRE([SHOWEQ_CHECK_EXTRA_LIBS]) @@ -2239,7 +2239,7 @@ AC_SUBST(XPMLIB) ]) -AC_DEFUN(AC_HAVE_DPMS, +AC_DEFUN([AC_HAVE_DPMS], [AC_REQUIRE_CPP()dnl AC_REQUIRE([SHOWEQ_CHECK_EXTRA_LIBS]) @@ -2291,7 +2291,7 @@ AC_SUBST(DPMSLIB) ]) -AC_DEFUN(AC_HAVE_GL, +AC_DEFUN([AC_HAVE_GL], [AC_REQUIRE_CPP()dnl AC_REQUIRE([SHOWEQ_CHECK_EXTRA_LIBS]) @@ -2363,7 +2363,7 @@ dnl PAM pam dnl Should test for PAM (Pluggable Authentication Modules) - AC_DEFUN(AC_PATH_PAM_DIRECT, + AC_DEFUN([AC_PATH_PAM_DIRECT], [ test -z "$pam_direct_test_library" && pam_direct_test_library=pam test -z "$pam_direct_test_include" && pam_direct_test_include=security/pam_appl.h @@ -2408,7 +2408,7 @@ done ]) -AC_DEFUN(AC_PATH_PAM, +AC_DEFUN([AC_PATH_PAM], [ AC_REQUIRE([KDE_CHECK_LIBDL]) AC_REQUIRE_CPP()dnl @@ -2509,7 +2509,7 @@ ]) -AC_DEFUN(KDE_CHECK_LIBDL, +AC_DEFUN([KDE_CHECK_LIBDL], [ AC_CHECK_LIB(dl, dlopen, [ LIBDL="-ldl" @@ -2524,7 +2524,7 @@ AC_SUBST(LIBDL) ]) -AC_DEFUN(KDE_CHECK_DLOPEN, +AC_DEFUN([KDE_CHECK_DLOPEN], [ KDE_CHECK_LIBDL AC_CHECK_HEADERS(dlfcn.h dl.h) @@ -2565,7 +2565,7 @@ ]) -AC_DEFUN(KDE_CHECK_DYNAMIC_LOADING, +AC_DEFUN([KDE_CHECK_DYNAMIC_LOADING], [ KDE_CHECK_DLOPEN(libtool_enable_shared=yes, libtool_enable_static=no) KDE_PROG_LIBTOOL @@ -2585,7 +2585,7 @@ fi ]) -AC_DEFUN(KDE_ADD_INCLUDES, +AC_DEFUN([KDE_ADD_INCLUDES], [ if test -z "$1"; then test_include="Pix.h" @@ -2623,7 +2623,7 @@ ]) -AC_DEFUN(KDE_CHECK_MICO, +AC_DEFUN([KDE_CHECK_MICO], [ AC_REQUIRE([KDE_CHECK_LIBDL]) AC_REQUIRE([KDE_MISC_TESTS]) @@ -2732,7 +2732,7 @@ ]) -AC_DEFUN(KDE_CHECK_MINI_STL, +AC_DEFUN([KDE_CHECK_MINI_STL], [ AC_REQUIRE([KDE_CHECK_MICO]) @@ -2770,13 +2770,13 @@ ]) -AC_DEFUN(KDE_CHECK_LIBPTHREAD, +AC_DEFUN([KDE_CHECK_LIBPTHREAD], [ AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"], LIBPTHREAD= ) AC_SUBST(LIBPTHREAD) ]) -AC_DEFUN(KDE_TRY_LINK_PYTHON, +AC_DEFUN([KDE_TRY_LINK_PYTHON], [ if test "$kde_python_link_found" = no; then @@ -2829,7 +2829,7 @@ ]) -AC_DEFUN(KDE_CHECK_STL_SGI, +AC_DEFUN([KDE_CHECK_STL_SGI], [ AC_MSG_CHECKING([if STL implementation is SGI like]) AC_CACHE_VAL(kde_cv_stl_type_sgi, @@ -2852,7 +2852,7 @@ fi ]) -AC_DEFUN(KDE_CHECK_STL_HP, +AC_DEFUN([KDE_CHECK_STL_HP], [ AC_MSG_CHECKING([if STL implementation is HP like]) AC_CACHE_VAL(kde_cv_stl_type_hp, @@ -2874,7 +2874,7 @@ fi ]) -AC_DEFUN(KDE_CHECK_STL, +AC_DEFUN([KDE_CHECK_STL], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS @@ -2891,7 +2891,7 @@ AC_LANG_RESTORE ]) -AC_DEFUN(AC_FIND_QIMGIO, +AC_DEFUN([AC_FIND_QIMGIO], [AC_REQUIRE([AC_FIND_JPEG]) AC_REQUIRE([SHOWEQ_CHECK_EXTRA_LIBS]) AC_MSG_CHECKING([for qimgio]) @@ -2930,11 +2930,11 @@ fi ]) -AC_DEFUN(KDE_CHECK_ANSI, +AC_DEFUN([KDE_CHECK_ANSI], [ ]) -AC_DEFUN(KDE_CHECK_INSURE, +AC_DEFUN([KDE_CHECK_INSURE], [ AC_ARG_ENABLE(insure, [ --enable-insure use insure++ for debugging [default=no]], [ @@ -2951,7 +2951,7 @@ fi ]) -AC_DEFUN(AM_DISABLE_LIBRARIES, +AC_DEFUN([AM_DISABLE_LIBRARIES], [ AC_PROVIDE([AM_ENABLE_STATIC]) AC_PROVIDE([AM_ENABLE_SHARED]) @@ -2960,7 +2960,7 @@ ]) -AC_DEFUN(AC_CHECK_UTMP_FILE, +AC_DEFUN([AC_CHECK_UTMP_FILE], [ AC_MSG_CHECKING([for utmp file]) @@ -2989,7 +2989,7 @@ ]) -AC_DEFUN(KDE_CREATE_SUBDIRSLIST, +AC_DEFUN([KDE_CREATE_SUBDIRSLIST], [ DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin" @@ -3033,7 +3033,7 @@ AC_SUBST(TOPSUBDIRS) ]) -AC_DEFUN(KDE_CHECK_NAMESPACES, +AC_DEFUN([KDE_CHECK_NAMESPACES], [ AC_MSG_CHECKING(whether C++ compiler supports namespaces) AC_LANG_SAVE @@ -3059,7 +3059,7 @@ AC_LANG_RESTORE ]) -AC_DEFUN(KDE_CHECK_NEWLIBS, +AC_DEFUN([KDE_CHECK_NEWLIBS], [ ]) @@ -3068,7 +3068,7 @@ dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. fa...@kd... dnl ------------------------------------------------------------------------ dnl -AC_DEFUN(AC_CHECK_S_ISSOCK, +AC_DEFUN([AC_CHECK_S_ISSOCK], [ AC_MSG_CHECKING(for S_ISSOCK) AC_CACHE_VAL(ac_cv_have_s_issock, @@ -3097,7 +3097,7 @@ dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. fa...@kd... dnl ------------------------------------------------------------------------ dnl -AC_DEFUN(AC_CHECK_KDEMAXPATHLEN, +AC_DEFUN([AC_CHECK_KDEMAXPATHLEN], [ AC_MSG_CHECKING(for MAXPATHLEN) AC_CACHE_VAL(ac_cv_maxpathlen, @@ -3132,7 +3132,7 @@ dnl ------------------------------------------------------------------------- dnl See if the compiler supports a template repository be...@re... dnl ------------------------------------------------------------------------- -AC_DEFUN(KDE_COMPILER_REPO, +AC_DEFUN([KDE_COMPILER_REPO], [ REPO="" NOREPO="" @@ -3161,7 +3161,7 @@ AC_SUBST(NOREPO) ]) -AC_DEFUN(KDE_CHECK_HEADER, +AC_DEFUN([KDE_CHECK_HEADER], [ AC_LANG_SAVE kde_safe_cxxflags=$CXXFLAGS @@ -3172,7 +3172,7 @@ AC_LANG_RESTORE ]) -AC_DEFUN(KDE_CHECK_QWSPRITEFIELD, +AC_DEFUN([KDE_CHECK_QWSPRITEFIELD], [ KDE_CHECK_HEADER(QwSpriteField.h, , [ @@ -3182,7 +3182,7 @@ ]) ]) -AC_DEFUN(KDE_SET_PREFIX, +AC_DEFUN([KDE_SET_PREFIX], [ dnl make $KDEDIR the default for the installation AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde}) |
|
From: Erik B. <do...@us...> - 2005-04-18 03:13:07
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27607 Modified Files: Tag: pre_5_0_beta Makefile.dist Log Message: Fix need to run Makefile.dist twice. Index: Makefile.dist =================================================================== RCS file: /cvsroot/seq/showeq/Makefile.dist,v retrieving revision 1.3.16.2 retrieving revision 1.3.16.3 diff -u -d -r1.3.16.2 -r1.3.16.3 --- Makefile.dist 7 Nov 2004 23:09:53 -0000 1.3.16.2 +++ Makefile.dist 18 Apr 2005 03:12:56 -0000 1.3.16.3 @@ -90,10 +90,10 @@ automake: install-sh missing Makefile.in src/Makefile.in conf/Makefile.in -install-sh missing Makefile.in: config.h.in aclocal.m4 Makefile.dist +install-sh missing Makefile.in src/Makefile.in conf/Makefile.in: config.h.in aclocal.m4 Makefile.dist @echo -n "Generating Makefile.in from Makefile.am....................." @echo -e "\n*!* automake ... *!*" >> Makefile.dist.dbg - @$(AUTOMAKE) $(AUTOMAKE_ARGS) Makefile >> Makefile.dist.dbg 2>&1 + @$(AUTOMAKE) $(AUTOMAKE_ARGS) >> Makefile.dist.dbg 2>&1 @echo "!*! automake ... !*!" >> Makefile.dist.dbg @if [ -s "$@" ]; then { \ echo " done!"; \ @@ -103,18 +103,6 @@ exit -1; \ } fi -%.in: %.am aclocal Makefile.dist - @echo -n "Generating $< from $@ ....................." - @echo -e "\n*!* automake ... *!*" >> Makefile.dist.dbg - @$(AUTOMAKE) $(AUTOMAKE_ARGS) $* >> Makefile.dist.dbg 2>&1 - @echo "!*! automake ... !*!" >> Makefile.dist.dbg - @if [ -s "$@" ]; then { \ - echo " done!"; \ - } else { \ - echo " failed! ";\ - echo "See Makefile.dist.dbg for details"; \ - exit -1; \ - } fi autoheader: config.h.in |
|
From: Erik B. <do...@us...> - 2005-04-07 03:20:14
|
Update of /cvsroot/seq/showeq/conf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11217/conf Modified Files: Tag: pre_5_0_beta zoneopcodes.xml Log Message: Include purples changes. Update to 5.0.0.19 Index: zoneopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/zoneopcodes.xml,v retrieving revision 1.1.4.14 retrieving revision 1.1.4.15 diff -u -d -r1.1.4.14 -r1.1.4.15 --- zoneopcodes.xml 21 Feb 2005 05:56:12 -0000 1.1.4.14 +++ zoneopcodes.xml 7 Apr 2005 03:19:29 -0000 1.1.4.15 @@ -286,6 +286,9 @@ <comment></comment> <payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/> </opcode> + <opcode id="417c" name="OP_GuildTributeStatus" updated="02/15/05"> + <comment>Guild tribute stats send on zone</comment> + </opcode> <opcode id="7dca" name="OP_Track" updated="02/15/05"> <comment>Clicked Track</comment> </opcode> @@ -364,6 +367,10 @@ <comment>old DeleteSpawnCode</comment> <payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/> </opcode> + <opcode id="0b8b" name="OP_SpawnRename" updated="02/15/05"> + <comment>Spawns getting renamed after initial NewSpawn</comment> + <payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/> + </opcode> <opcode id="5f64" name="OP_ReqNewZone" updated="02/15/05"> <comment>Client requesting NewZone_Struct</comment> </opcode> @@ -486,11 +493,15 @@ <comment>old ZoneChangeCode</comment> <payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/> </opcode> + <opcode id="2c2f" name="OP_RequestZoneChange" updated="02/15/05"> + <comment>Send by server when a click causes zone. Also, origin</comment> + <payload dir="server" typename="requestZoneChangeStruct" sizechecktype="match"/> + </opcode> <opcode id="2f76" name="OP_SendZonePoints" updated="02/15/05"> <comment>Coords in a zone that will port you to another zone</comment> <payload dir="server" typename="zonePointsStruct" sizechecktype="none"/> </opcode> - <opcode id="1d38" name="OP_MemorizeSpell" updated="02/15/05"> + <opcode id="1d3b" name="OP_MemorizeSpell" updated="02/15/05"> <comment>old MemSpellCode</comment> <payload dir="both" typename="memSpellStruct" sizechecktype="match"/> </opcode> |
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11217/src Modified Files: Tag: pre_5_0_beta everquest.h guildshell.cpp guildshell.h interface.cpp main.cpp messageshell.cpp packet.cpp packet.h packetcapture.cpp packetcapture.h packetcommon.h packetstream.cpp player.cpp spawnlist2.cpp spawnshell.cpp spawnshell.h zones.h Log Message: Include purples changes. Update to 5.0.0.19 Index: packet.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.h,v retrieving revision 1.39.6.2 retrieving revision 1.39.6.3 diff -u -d -r1.39.6.2 -r1.39.6.3 --- packet.h 9 Feb 2005 07:07:38 -0000 1.39.6.2 +++ packet.h 7 Apr 2005 03:19:37 -0000 1.39.6.3 @@ -60,7 +60,7 @@ bool m_realtime, bool m_session_tracking, bool m_recordPackets, - bool m_playbackPackets, + int m_playbackPackets, int8_t m_playbackSpeed, QObject *parent, const char *name); @@ -77,7 +77,7 @@ in_port_t clientPort(void); in_port_t serverPort(void); uint8_t session_tracking_enabled(void); - bool playbackPackets(void); + int playbackPackets(void); int playbackSpeed(void); size_t currentCacheSize(int); uint16_t serverSeqExp(int); @@ -157,7 +157,7 @@ bool m_realtime; bool m_session_tracking; bool m_recordPackets; - bool m_playbackPackets; + int m_playbackPackets; int8_t m_playbackSpeed; // Should be signed since -1 is pause EQPacketStream* m_client2WorldStream; @@ -202,7 +202,7 @@ return m_session_tracking; } -inline bool EQPacket::playbackPackets(void) +inline int EQPacket::playbackPackets(void) { return m_playbackPackets; } Index: packet.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.cpp,v retrieving revision 1.62.6.6 retrieving revision 1.62.6.7 diff -u -d -r1.62.6.6 -r1.62.6.7 --- packet.cpp 21 Feb 2005 05:56:14 -0000 1.62.6.6 +++ packet.cpp 7 Apr 2005 03:19:37 -0000 1.62.6.7 @@ -61,7 +61,7 @@ const in_port_t WorldServerGeneralPort = 9000; const in_port_t WorldServerChatPort = 9876; -const in_port_t WorldServerChat2Port = 9875; //%%% what is this? +const in_port_t WorldServerChat2Port = 9875; // xgame tells, mail const in_port_t LoginServerMinPort = 15900; const in_port_t LoginServerMaxPort = 15910; const in_port_t ChatServerPort = 5998; @@ -86,7 +86,7 @@ bool realtime, bool sessionTrackingFlag, bool recordPackets, - bool playbackPackets, + int playbackPackets, int8_t playbackSpeed, QObject * parent, const char *name) : QObject (parent, name), @@ -351,7 +351,7 @@ } } - if (!m_playbackPackets) + if (m_playbackPackets == PLAYBACK_OFF) { // create the pcap object and initialize, either with MAC or IP m_packetCapture = new PacketCaptureThread(); @@ -365,6 +365,18 @@ m_realtime, IP_ADDRESS_TYPE ); emit filterChanged(); } + else if (m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) + { + // Create the pcap object and initialize with the file input given + m_packetCapture = new PacketCaptureThread(); + + const char* filename = + pSEQPrefs->getPrefString("Filename", "VPacket"); + + m_packetCapture->startOffline(filename, m_playbackSpeed); + seqInfo("Playing back packets from '%s' at speed '%d'", + filename, m_playbackSpeed); + } // Flag session tracking properly on streams session_tracking(sessionTrackingFlag); @@ -374,14 +386,20 @@ if ((geteuid() == 0) && (getuid() != geteuid())) setuid(getuid()); - /* Create timer object */ m_timer = new QTimer (this); - if (!m_playbackPackets) + if (m_playbackPackets == PLAYBACK_OFF || + m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) + { + // Normal pcap packet handler connect (m_timer, SIGNAL (timeout ()), this, SLOT (processPackets ())); + } else + { + // Special internal playback handler connect (m_timer, SIGNAL (timeout ()), this, SLOT (processPlaybackPackets ())); + } /* setup VPacket */ m_vPacket = NULL; @@ -402,7 +420,7 @@ if (pSEQPrefs->getPrefString("FlushPackets", section)) m_vPacket->setFlushPacket(true); } - else if (m_playbackPackets) + else if (m_playbackPackets == PLAYBACK_FORMAT_SEQ) { m_vPacket = new VPacket(filename, 1, false); m_vPacket->setCompressTime(pSEQPrefs->getPrefInt("CompressTime", section, 0)); @@ -416,7 +434,7 @@ else { m_recordPackets = 0; - m_playbackPackets = 0; + m_playbackPackets = PLAYBACK_OFF; } } @@ -734,7 +752,7 @@ { // reseting the pcap filter to a non-exclusive form allows us to beat // the race condition between timer and processing the zoneServerInfo - if(!m_playbackPackets) + if(m_playbackPackets == PLAYBACK_OFF) { m_packetCapture->setFilter(m_device, m_ip, m_realtime, IP_ADDRESS_TYPE, 0, 0); @@ -757,7 +775,7 @@ m_serverPort = serverPort; m_clientPort = clientPort; - if (!m_playbackPackets) + if (m_playbackPackets == PLAYBACK_OFF) { if (m_mac.length() == 17) { @@ -767,9 +785,6 @@ MAC_ADDRESS_TYPE, 0, m_clientPort); emit filterChanged(); - seqInfo("EQPacket: SEQStart detected, pcap filter: EQ Client %s, Client port %d", - (const char*)m_mac, - m_clientPort); } else { @@ -779,11 +794,20 @@ IP_ADDRESS_TYPE, 0, m_clientPort); emit filterChanged(); - seqInfo("EQPacket: SEQStart detected, pcap filter: EQ Client %s, Client port %d", - (const char*)m_ip, - m_clientPort); } } + + // Wanted this message even if we're running on playback... + if (m_mac.length() == 17) + { + seqInfo("EQPacket: SEQStart detected, pcap filter: EQ Client %s, Client port %d. Server port %d", + (const char*)m_mac, m_clientPort, m_serverPort); + } + else + { + seqInfo("EQPacket: SEQStart detected, pcap filter: EQ Client %s, Client port %d. Server port %d", + (const char*)m_ip, m_clientPort, m_serverPort); + } emit clientPortLatched(m_clientPort); } @@ -826,8 +850,8 @@ { if (m_vPacket) return m_vPacket->playbackSpeed(); - - return 1; // if not a vpacket stream, then is realtime + else + return m_packetCapture->getPlaybackSpeed(); } /////////////////////////////////////////// @@ -837,90 +861,107 @@ if (m_vPacket) { m_vPacket->setPlaybackSpeed(speed); + } + else + { + m_packetCapture->setPlaybackSpeed(speed); + } - QString string(""); + QString string(""); - if (speed == 0) - string.sprintf("Playback speed set Fast as possible"); - else if (speed < 0) - string.sprintf("Playback paused (']' to resume)"); - else - string.sprintf("Playback speed set to %d", speed); + if (speed == 0) + string.sprintf("Playback speed set Fast as possible"); + else if (speed < 0) + string.sprintf("Playback paused (']' to resume)"); + else + string.sprintf("Playback speed set to %d", speed); - emit stsMessage(string, 5000); + emit stsMessage(string, 5000); - emit resetPacket(m_client2WorldStream->packetCount(), client2world); - emit resetPacket(m_world2ClientStream->packetCount(), world2client); - emit resetPacket(m_client2ZoneStream->packetCount(), client2zone); - emit resetPacket(m_zone2ClientStream->packetCount(), zone2client); + emit resetPacket(m_client2WorldStream->packetCount(), client2world); + emit resetPacket(m_world2ClientStream->packetCount(), world2client); + emit resetPacket(m_client2ZoneStream->packetCount(), client2zone); + emit resetPacket(m_zone2ClientStream->packetCount(), zone2client); - emit playbackSpeedChanged(speed); - } + emit playbackSpeedChanged(speed); } /////////////////////////////////////////// // Increment the packet playback speed void EQPacket::incPlayback(void) { + int x; + if (m_vPacket) { - int x = m_vPacket->playbackSpeed(); + x = m_vPacket->playbackSpeed(); + } + else + { + x = m_packetCapture->getPlaybackSpeed(); + } - switch(x) - { + switch(x) + { // if we were paused go to 1X not full speed - case -1: - x = 1; - break; + case -1: + x = 1; + break; - // can't go faster than full speed - case 0: - return; + // can't go faster than full speed + case 0: + return; - case 9: - x = 0; - break; + case 9: + x = 0; + break; - default: - x += 1; - break; - } - - setPlayback(x); + default: + x += 1; + break; } + + setPlayback(x); } /////////////////////////////////////////// // Decrement the packet playback speed void EQPacket::decPlayback(void) { + int x; + if (m_vPacket) { - int x = m_vPacket->playbackSpeed(); - switch(x) - { - // paused - case -1: - return; - break; - - // slower than 1 is paused - case 1: - x = -1; - break; + x = m_vPacket->playbackSpeed(); + } + else + { + x = m_packetCapture->getPlaybackSpeed(); + } + + switch(x) + { + // paused + case -1: + return; + break; + + // slower than 1 is paused + case 1: + x = -1; + break; - // if we were full speed goto 9 - case 0: - x = 9; - break; + // if we were full speed goto 9 + case 0: + x = 9; + break; - default: - x -= 1; - break; - } - - setPlayback(x); + default: + x -= 1; + break; } + + setPlayback(x); } /////////////////////////////////////////// @@ -936,7 +977,7 @@ resetEQPacket(); seqInfo("Listening for IP client: %s", (const char*)m_ip); - if (!m_playbackPackets) + if (m_playbackPackets == PLAYBACK_OFF) { m_packetCapture->setFilter(m_device, m_ip, m_realtime, @@ -961,7 +1002,7 @@ seqInfo("Listening for MAC client: %s", (const char*)m_mac); - if (!m_playbackPackets) + if (m_playbackPackets == PLAYBACK_OFF) { m_packetCapture->setFilter(m_device, m_ip, m_realtime, @@ -985,7 +1026,7 @@ seqInfo("Listening for next client seen. (you must zone for this to work!)"); - if (!m_playbackPackets) + if (m_playbackPackets == PLAYBACK_OFF) { m_packetCapture->setFilter(m_device, NULL, m_realtime, @@ -1002,7 +1043,7 @@ m_device = dev; // make sure we aren't playing back packets - if (m_playbackPackets) + if (m_playbackPackets != PLAYBACK_OFF) return; // stop the current packet capture @@ -1142,7 +1183,7 @@ const QString EQPacket::pcapFilter() { // make sure we aren't playing back packets - if (m_playbackPackets) + if (m_playbackPackets != PLAYBACK_OFF) return QString("Playback"); return m_packetCapture->getFilter(); Index: packetcapture.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetcapture.cpp,v retrieving revision 1.2.4.2 retrieving revision 1.2.4.3 diff -u -d -r1.2.4.2 -r1.2.4.3 --- packetcapture.cpp 21 Feb 2005 05:56:14 -0000 1.2.4.2 +++ packetcapture.cpp 7 Apr 2005 03:19:37 -0000 1.2.4.3 @@ -20,7 +20,8 @@ // PacketCaptureThread // start and stop the thread // get packets to the processing engine(dispatchPacket) -PacketCaptureThread::PacketCaptureThread() +PacketCaptureThread::PacketCaptureThread() : + m_playbackSpeed(0) { } @@ -47,6 +48,27 @@ pthread_mutex_unlock (&m_pcache_mutex); } +void PacketCaptureThread::setPlaybackSpeed(int playbackSpeed) +{ + if (playbackSpeed < -1) + { + m_playbackSpeed = -1; + } + else if (playbackSpeed > 9) + { + m_playbackSpeed = 9; + } + else if (playbackSpeed == 0) + { + // Fast as possible. But using 0 makes the UI unresponsive! + m_playbackSpeed = 100; + } + else + { + m_playbackSpeed = playbackSpeed; + } +} + void PacketCaptureThread::start(const char *device, const char *host, bool realtime, uint8_t address_type) { @@ -151,6 +173,39 @@ } } +//------------------------------------------------------------------------ +// Capture thread for offline packet capture. Input filename should be a +// tcpdump file. playbackSpeed is how fast to playback. 1 = realtime, +// 2 = 2x speed, 3 = 3x speed, etc. 0 = no throttle. -1 = paused. +// +void PacketCaptureThread::startOffline(const char* filename, int playbackSpeed) +{ + char ebuf[256]; // pcap error buffer + + seqInfo("Initializing Offline Packet Capture Thread: "); + m_pcache_closed = false; + + // initialize the pcap object + m_pcache_pcap = pcap_open_offline(filename, ebuf); + + if (!m_pcache_pcap) + { + seqWarn("pcap_error:pcap_open_offline(%s): %s", filename, ebuf); + exit(0); + } + + // Set the speed + setPlaybackSpeed(playbackSpeed); + + m_tvLastProcessedActual.tv_sec = 0; + m_tvLastProcessedOriginal.tv_sec = 0; + + m_pcache_first = m_pcache_last = NULL; + + pthread_mutex_init(&m_pcache_mutex, NULL); + pthread_create(&m_tid, NULL, loop, (void*)this); +} + void PacketCaptureThread::stop() { // close the pcap session @@ -175,6 +230,66 @@ memcpy (pc->data, data, ph->len); pc->next = NULL; + // Throttle offline playback properly if applicable. + int speed = myThis->m_playbackSpeed; + + if (speed != 0) + { + if (speed == -1) + { + // We are paused. Need to wait for it to unpause. + while ((speed = myThis->m_playbackSpeed) == -1) + { + sleep(1); + } + } + + // Playing back from a file. Need to honor playback speed and packet + // timestamps properly. + timeval now; + + if (gettimeofday(&now, NULL) == 0) + { + // Anchor the first run through. + if (myThis->m_tvLastProcessedActual.tv_sec == 0) + { + myThis->m_tvLastProcessedActual = now; + } + if (myThis->m_tvLastProcessedOriginal.tv_sec == 0) + { + myThis->m_tvLastProcessedOriginal = ph->ts; + } + + // The goal here is to make sure that time elapsed since last + // packet / playbackSpeed > time elapsed between original + // previous packet and this packet. If it is not, we need to sleep + // for the difference. + long usecDiffActual = + ((now.tv_sec - myThis->m_tvLastProcessedActual.tv_sec)*1000000 + + (now.tv_usec - myThis->m_tvLastProcessedActual.tv_usec)); + long usecDiffOriginal = + ((ph->ts.tv_sec - myThis->m_tvLastProcessedOriginal.tv_sec)*1000000 + + (ph->ts.tv_usec - myThis->m_tvLastProcessedOriginal.tv_usec)) / + ((long) speed); + + if (usecDiffActual < usecDiffOriginal) + { + // Need to wait out the difference. + timeval tvWait; + + tvWait.tv_usec = (usecDiffOriginal - usecDiffActual) % 1000000; + tvWait.tv_sec = (usecDiffOriginal - usecDiffActual) / 1000000; + + select(1, NULL, NULL, NULL, &tvWait); + } + + // And get ready for next one + myThis->m_tvLastProcessedActual = now; + } + } + + myThis->m_tvLastProcessedOriginal = ph->ts; + pthread_mutex_lock (&myThis->m_pcache_mutex); if (! myThis->m_pcache_closed) Index: packetstream.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetstream.cpp,v retrieving revision 1.1.6.7 retrieving revision 1.1.6.8 diff -u -d -r1.1.6.7 -r1.1.6.8 --- packetstream.cpp 21 Feb 2005 05:56:14 -0000 1.1.6.7 +++ packetstream.cpp 7 Apr 2005 03:19:37 -0000 1.1.6.8 @@ -665,69 +665,59 @@ uint16_t seq = packet.arqSeq(); emit seqReceive(seq, (int)m_streamid); - if (seq >= m_arqSeqExp) + // Future packet? + if (seq == m_arqSeqExp) { - // Future packet? - if (seq == m_arqSeqExp) - { - // Expected packet. - m_arqSeqExp++; - emit seqExpect(m_arqSeqExp, (int)m_streamid); + // Expected packet. + m_arqSeqExp++; + emit seqExpect(m_arqSeqExp, (int)m_streamid); - // OpCode next. Net order for op codes. - uint16_t subOpCode = *(uint16_t*)(packet.payload()); + // OpCode next. Net order for op codes. + uint16_t subOpCode = *(uint16_t*)(packet.payload()); #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("SEQ: Found next sequence number in data stream %s (%d), incrementing expected seq, %04x (op code %04x, sub opcode %04x)", - EQStreamStr[m_streamid], m_streamid, seq, - packet.getNetOpCode(), subOpCode); + seqDebug("SEQ: Found next sequence number in data stream %s (%d), incrementing expected seq, %04x (op code %04x, sub opcode %04x)", + EQStreamStr[m_streamid], m_streamid, seq, + packet.getNetOpCode(), subOpCode); #endif - // App opcode or net opcode? - if (IS_NET_OPCODE(subOpCode)) - { - // Net opcode. false = no copy. true = subpacket. - EQProtocolPacket spacket(packet.payload(), - packet.payloadLength(), false, true); - - processPacket(spacket, true); - } - else - { - // App opcode. Dispatch, skipping opcode. - dispatchPacket(&packet.payload()[2], packet.payloadLength()-2, - subOpCode, m_opcodeDB.find(subOpCode)); - } - } - else if (seq < (uint32_t(m_arqSeqExp + arqSeqWrapCutoff)) || - seq < (int32_t(m_arqSeqExp - arqSeqWrapCutoff))) + // App opcode or net opcode? + if (IS_NET_OPCODE(subOpCode)) { - // Yeah, future packet. Push it on the packet cache. -#ifdef PACKET_PROCESS_DIAG - seqDebug("SEQ: out of order sequence %04x stream %s (%d) expecting %04x, sending to cache, %04d", - seq, EQStreamStr[m_streamid], m_streamid, - m_arqSeqExp, m_cache.size()); -#endif - setCache(seq, packet); + // Net opcode. false = no copy. true = subpacket. + EQProtocolPacket spacket(packet.payload(), + packet.payloadLength(), false, true); + + processPacket(spacket, true); } else { - // Past packet outside the cut off - seqWarn("SEQ: received sequenced %spacket outside the bounds of reasonableness on stream %s (%d) netopcode=%04x size=%d. Expecting seq=%04x got seq=%04x, reasonableness being %d in the future.", - (isSubpacket ? "sub" : ""), - EQStreamStr[m_streamid], m_streamid, - packet.getNetOpCode(), packet.payloadLength(), - m_arqSeqExp, seq, arqSeqWrapCutoff); + // App opcode. Dispatch, skipping opcode. + dispatchPacket(&packet.payload()[2], packet.payloadLength()-2, + subOpCode, m_opcodeDB.find(subOpCode)); } } + else if ((seq > m_arqSeqExp && + seq < (uint32_t(m_arqSeqExp + arqSeqWrapCutoff))) || + seq < (int32_t(m_arqSeqExp) - arqSeqWrapCutoff)) + { + // Yeah, future packet. Push it on the packet cache. +#ifdef PACKET_PROCESS_DIAG + seqDebug("SEQ: out of order sequence %04x stream %s (%d) expecting %04x, sending to cache, %04d", + seq, EQStreamStr[m_streamid], m_streamid, + m_arqSeqExp, m_cache.size()); +#endif + setCache(seq, packet); + } else { - // Spooky packet from the past. Boo! -#if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("discarding %spacket netopcode=%04x seq=%d size=%d on stream %s (%d). Packet is in the past. We've moved on.", +#ifdef PACKET_PROCESS_DIAG + // Past packet outside the cut off + seqWarn("SEQ: received sequenced %spacket outside expected window on stream %s (%d) netopcode=%04x size=%d. Expecting seq=%04x got seq=%04x, window size %d, dropping packet as in the past.", (isSubpacket ? "sub" : ""), - packet.getNetOpCode(), seq, packet.payloadLength(), - EQStreamStr[m_streamid], m_streamid); + EQStreamStr[m_streamid], m_streamid, + packet.getNetOpCode(), packet.payloadLength(), + m_arqSeqExp, seq, arqSeqWrapCutoff); #endif } } @@ -738,68 +728,59 @@ uint16_t seq = packet.arqSeq(); emit seqReceive(seq, (int)m_streamid); - if (seq >= m_arqSeqExp) + // Future packet? + if (seq == m_arqSeqExp) { - // Future packet? - if (seq == m_arqSeqExp) - { - // Expected packet. - m_arqSeqExp++; - emit seqExpect(m_arqSeqExp, (int)m_streamid); + // Expected packet. + m_arqSeqExp++; + emit seqExpect(m_arqSeqExp, (int)m_streamid); #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("SEQ: Found next sequence number in data stream %s (%d), incrementing expected seq, %04x (op code %04x)", - EQStreamStr[m_streamid], m_streamid, seq, packet.getNetOpCode()); + seqDebug("SEQ: Found next sequence number in data stream %s (%d), incrementing expected seq, %04x (op code %04x)", + EQStreamStr[m_streamid], m_streamid, seq, packet.getNetOpCode()); #endif - // Push the fragment on. - m_fragment.addFragment(packet); + // Push the fragment on. + m_fragment.addFragment(packet); - if (m_fragment.isComplete()) - { - // OpCode from fragment. In network order. - uint16_t fragOpCode = *(uint16_t*)(m_fragment.data()); + if (m_fragment.isComplete()) + { + // OpCode from fragment. In network order. + uint16_t fragOpCode = *(uint16_t*)(m_fragment.data()); #ifdef PACKET_PROCESS_DIAG - seqDebug("SEQ: Completed oversized app packet on stream %s with seq %04x, total size %d opcode %04x", - EQStreamStr[m_streamid], seq, m_fragment.size()-2, fragOpCode); + seqDebug("SEQ: Completed oversized app packet on stream %s with seq %04x, total size %d opcode %04x", + EQStreamStr[m_streamid], seq, m_fragment.size()-2, fragOpCode); #endif - // dispatch fragment. Skip opcode. - dispatchPacket(&m_fragment.data()[2], m_fragment.size()-2, - fragOpCode, m_opcodeDB.find(fragOpCode)); + // dispatch fragment. Skip opcode. + dispatchPacket(&m_fragment.data()[2], m_fragment.size()-2, + fragOpCode, m_opcodeDB.find(fragOpCode)); - m_fragment.reset(); - } + m_fragment.reset(); } - else if (seq < (uint32_t(m_arqSeqExp + arqSeqWrapCutoff)) || - seq < (int32_t(m_arqSeqExp - arqSeqWrapCutoff))) - { - // Yeah, future packet. Push it on the packet cache. + } + else if ((seq > m_arqSeqExp && + seq < (uint32_t(m_arqSeqExp + arqSeqWrapCutoff))) || + seq < (int32_t(m_arqSeqExp) - arqSeqWrapCutoff)) + { + // Yeah, future packet. Push it on the packet cache. #ifdef PACKET_PROCESS_DIAG - seqDebug("SEQ: out of order sequence %04x stream %s (%d) expecting %04x, sending to cache, %04d", - seq, EQStreamStr[m_streamid], m_streamid, - m_arqSeqExp, m_cache.size()); + seqDebug("SEQ: out of order sequence %04x stream %s (%d) expecting %04x, sending to cache, %04d", + seq, EQStreamStr[m_streamid], m_streamid, + m_arqSeqExp, m_cache.size()); #endif - setCache(seq, packet); - } - else - { - // Past packet outside the cut off - seqWarn("SEQ: received sequenced %spacket outside the bounds of reasonableness on stream %s (%d) netopcode=%04x size=%d. Expecting seq=%04x got seq=%04x, reasonableness being %d in the future.", - (isSubpacket ? "sub" : ""), - EQStreamStr[m_streamid], m_streamid, - packet.getNetOpCode(), packet.payloadLength(), - m_arqSeqExp, seq, arqSeqWrapCutoff); - } + setCache(seq, packet); } else { - // Spooky packet from the past. Boo! -#if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("discarding packet netopcode=%04x seq=%04x size=%d on stream %s (%d). Packet is in the past. We've moved on, expecting %04x.", - packet.getNetOpCode(), seq, packet.payloadLength(), - EQStreamStr[m_streamid], m_streamid, m_arqSeqExp); +#ifdef PACKET_PROCESS_DIAG + // Past packet outside the cut off + seqWarn("SEQ: received sequenced %spacket outside expected window on stream %s (%d) netopcode=%04x size=%d. Expecting seq=%04x got seq=%04x, window size %d, dropping packet as in the past.", + (isSubpacket ? "sub" : ""), + EQStreamStr[m_streamid], m_streamid, + packet.getNetOpCode(), packet.payloadLength(), + m_arqSeqExp, seq, arqSeqWrapCutoff); #endif } } Index: packetcommon.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetcommon.h,v retrieving revision 1.1.6.1 retrieving revision 1.1.6.2 diff -u -d -r1.1.6.1 -r1.1.6.2 --- packetcommon.h 7 Dec 2003 06:30:44 -0000 1.1.6.1 +++ packetcommon.h 7 Apr 2005 03:19:37 -0000 1.1.6.2 @@ -38,6 +38,11 @@ // Constants const char* const AUTOMATIC_CLIENT_IP = "127.0.0.0"; +// Preference constants for VPacket.Playback. +#define PLAYBACK_OFF 0 +#define PLAYBACK_FORMAT_SEQ 1 +#define PLAYBACK_FORMAT_TCPDUMP 2 + //---------------------------------------------------------------------- // Enumerated types enum EQStreamID Index: messageshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messageshell.cpp,v retrieving revision 1.1.4.7 retrieving revision 1.1.4.8 diff -u -d -r1.1.4.7 -r1.1.4.8 --- messageshell.cpp 21 Feb 2005 05:56:14 -0000 1.1.4.7 +++ messageshell.cpp 7 Apr 2005 03:19:36 -0000 1.1.4.8 @@ -40,9 +40,12 @@ { const channelMessageStruct* cmsg = (const channelMessageStruct*)data; - // Tells happen twice *shrug* - if (dir == DIR_Client && cmsg->chanNum == MT_Tell) + // Tells and Group by us happen twice *shrug*. Ignore the client->server one. + if (dir == DIR_Client && + (cmsg->chanNum == MT_Tell || cmsg->chanNum == MT_Group)) + { return; + } QString tempStr; @@ -715,7 +718,9 @@ message = "Exp: " + Commanate(player->exp); m_messages->addMessage(MT_Player, message); - message = "ExpAA: " + Commanate(player->altexp); + message = "ExpAA: " + Commanate(player->expAA) + + "(aa spent: " + Commanate(player->aa_spent) + + ", aa unspent: " + Commanate(player->aa_unspent) + ")"; m_messages->addMessage(MT_Player, message); message.sprintf("Group: %s %s %s %s %s %s", player->groupMembers[0], Index: main.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/main.cpp,v retrieving revision 1.33.6.6 retrieving revision 1.33.6.7 diff -u -d -r1.33.6.6 -r1.33.6.7 --- main.cpp 21 Feb 2005 05:56:14 -0000 1.33.6.6 +++ main.cpp 7 Apr 2005 03:19:36 -0000 1.33.6.7 @@ -71,6 +71,7 @@ #define SPAWNLOG_FILENAME_OPTION 23 #define DISABLE_SPAWNLOG_OPTION 24 #define ITEMDB_ENABLE 25 +#define PLAYBACK_TCPDUMP_FILE_OPTION 26 #define ITEMDB_DATA_FILENAME_OPTION 28 #define ITEMDB_RAW_FILENAME_OPTION 29 #define ITEMDB_DATABASES_ENABLED 30 @@ -105,6 +106,7 @@ {"filter-file", required_argument, NULL, 'f'}, {"playback-filename", optional_argument, NULL, 'j'}, {"playback-speed", required_argument, NULL, PLAYBACK_SPEED_OPTION}, + {"playback-tcpdump-filename", optional_argument, NULL, PLAYBACK_TCPDUMP_FILE_OPTION}, {"record-filename", optional_argument, NULL, 'g'}, {"filter-case-sensitive", no_argument, NULL, 'C'}, {"use-retarded-coords", no_argument, NULL, 'c'}, @@ -298,7 +300,7 @@ pSEQPrefs->setPrefString("Filename", "VPacket", optarg, XMLPreferences::Runtime); - pSEQPrefs->setPrefBool("Playback", "VPacket", true, + pSEQPrefs->setPrefInt("Playback", "VPacket", PLAYBACK_FORMAT_SEQ, XMLPreferences::Runtime); pSEQPrefs->setPrefBool("Record", "VPacket", false, XMLPreferences::Runtime); @@ -313,7 +315,7 @@ pSEQPrefs->setPrefString("Filename", "VPacket", optarg, XMLPreferences::Runtime); - pSEQPrefs->setPrefBool("Playback", "VPacket", false, + pSEQPrefs->setPrefInt("Playback", "VPacket", PLAYBACK_OFF, XMLPreferences::Runtime); pSEQPrefs->setPrefBool("Record", "VPacket", true, XMLPreferences::Runtime); @@ -564,6 +566,17 @@ break; } + /* TCPDump playback file */ + case PLAYBACK_TCPDUMP_FILE_OPTION: + { + pSEQPrefs->setPrefString("Filename", "VPacket", optarg, + XMLPreferences::Runtime); + pSEQPrefs->setPrefInt("Playback", "VPacket", PLAYBACK_FORMAT_TCPDUMP, + XMLPreferences::Runtime); + pSEQPrefs->setPrefBool("Record", "VPacket", false, + XMLPreferences::Runtime); + break; + } case PLAYBACK_SPEED_OPTION: { @@ -785,6 +798,8 @@ printf (" -N, --show-packet-numbers Show network info dialog\n"); printf (" -j, --playback-file=FILENAME Playback packets in FILENAME, previously\n"); printf (" recorded with -g option\n"); + printf (" --playback-tcpdump-filename=FILE Playback packets in FILE, previously\n"); + printf (" recorded with tcpdump\n"); printf (" --playback-speed=SPEED -1 = Paused, 0 = Max, 1 = Slow, 9 = Fast\n"); printf (" -g, --record-file=FILENAME Record packets to FILENAME to playback\n"); printf (" with the -j option\n"); Index: spawnshell.h =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnshell.h,v retrieving revision 1.21.12.2 retrieving revision 1.21.12.3 diff -u -d -r1.21.12.2 -r1.21.12.3 --- spawnshell.h 16 Jan 2004 20:22:11 -0000 1.21.12.2 +++ spawnshell.h 7 Apr 2005 03:19:37 -0000 1.21.12.3 @@ -76,7 +76,7 @@ int16_t x, int16_t y, double& minDistance); - const Spawn* findSpawnByName(const QString& name); + Spawn* findSpawnByName(const QString& name); void dumpSpawns(spawnItemType type, QTextStream& out); FilterMgr* filterMgr(void) { return &m_filterMgr; } @@ -113,6 +113,8 @@ uint8_t animation); void updateSpawns(const uint8_t* updates); void updateSpawnInfo(const uint8_t* spawnupdate); + void renameSpawn(const uint8_t* renameupdate); + void updateSpawnAppearance(const uint8_t* appearanceupdate); void updateNpcHP(const uint8_t* hpupdate); void spawnWearingUpdate(const uint8_t* wearing); void consMessage(const uint8_t* con, size_t, uint8_t); Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.19 retrieving revision 1.74.6.20 diff -u -d -r1.74.6.19 -r1.74.6.20 --- everquest.h 21 Feb 2005 05:56:13 -0000 1.74.6.19 +++ everquest.h 7 Apr 2005 03:19:34 -0000 1.74.6.20 @@ -106,6 +106,12 @@ #define MAX_SPELLBOOK_SLOTS 400 #define MAX_GROUP_MEMBERS 6 #define MAX_BUFFS 25 +#define MAXGUILDS 1500 +#define MAX_AA 120 +#define MAX_BANDOLIERS 4 +#define MAX_POTIONS_IN_BELT 4 +#define MAX_TRIBUTES 5 +#define MAX_DISCIPLINES 50 //Item Flags #define ITEM_NORMAL 0x0000 @@ -370,12 +376,50 @@ /* * Used in charProfileStruct - * Size: 2 octets + * Size: 8 octets */ struct AA_Array { -/*000*/ uint8_t AA; -/*001*/ uint8_t value; +/*000*/ uint32_t AA; +/*004*/ uint32_t value; +/*008*/ +}; + +/** + * An item inline in the stream, used in Bandolier and Potion Belt. + * Size: 72 Octets + */ +struct InlineItem +{ +/*000*/ uint32_t itemId; +/*004*/ uint32_t icon; +/*008*/ char itemName[64]; +/*072*/ +}; + +/** + * Used in charProfileStruct. Contents of a Bandolier. + * Size: 320 Octets + */ +struct BandolierStruct +{ +/*000*/ char bandolierName[32]; +/*032*/ InlineItem mainHand; +/*104*/ InlineItem offHand; +/*176*/ InlineItem range; +/*248*/ InlineItem ammo; +/*320*/ +}; + +/** + * A tribute a player can have loaded. + * Size: 8 Octets + */ +struct TributeStruct +{ +/*000*/ uint32_t tribute; +/*004*/ uint32_t rank; +/*008*/ }; /* @@ -393,6 +437,22 @@ }; /* +** Type: Request Zone Change (server asking the client to change zones) +** Size: 24 Octets +** OpCode: OP_RequestZoneChange +*/ +struct requestZoneChangeStruct +{ +/*0000*/ uint16_t zoneId; // Zone to change to +/*0002*/ uint16_t zoneInstance; // Instance to change to +/*0004*/ float x; // Zone in x coord in next zone +/*0008*/ float y; // Zone in y coord in next zone +/*0012*/ float z; // Zone in z coord in next zone +/*0016*/ float heading; // Zone in heading in next zone +/*0020*/ uint32_t unknown0020; // *** Placeholder +}; + +/* ** Client Zone Entry struct ** Length: 70 Octets ** OpCode: ZoneEntryCode (when direction == client) @@ -528,18 +588,18 @@ struct charProfileStruct { /*0000*/ uint32_t checksum; // -/*0004*/ char name[64]; // Name of player sizes not right -/*0068*/ char lastName[32]; // Last name of player sizes not right +/*0004*/ char name[64]; // Name of player +/*0068*/ char lastName[32]; // Last name of player /*0100*/ uint32_t gender; // Player Gender - 0 Male, 1 Female /*0104*/ uint32_t race; // Player race /*0108*/ uint32_t class_; // Player class -/*0112*/ uint32_t aapoints; // unspent ability points? (wrong?) +/*0112*/ uint32_t unknown0112; // *** Placeholder /*0116*/ uint32_t level; // Level of player (might be one byte) -/*0120*/ uint32_t bind_zone_id[5]; // Zone player is bound in -/*0140*/ float bind_x[5]; // Bind loc x coord -/*0160*/ float bind_y[5]; // Bind loc y coord -/*0180*/ float bind_z[5]; // Bind loc z coord -/*0200*/ float bind_heading[5]; // *** PLaceholder +/*0120*/ uint32_t bind_zone_id[5]; // Bind info (zone, x, y, z, heading) +/*0140*/ float bind_x[5]; // 0 is normal bind +/*0160*/ float bind_y[5]; // 5 is some weird point in newbie zone +/*0180*/ float bind_z[5]; // (which is secondary bind for wiz/dru?) +/*0200*/ float bind_heading[5]; // Unused slots show newbie bind /*0220*/ uint32_t deity; // deity /*0224*/ int32_t guildID; // guildID /*0228*/ uint32_t birthdayTime; // character birthday @@ -548,30 +608,28 @@ /*0240*/ uint8_t pvp; // 1=pvp, 0=not pvp /*0241*/ uint8_t level1; // Level of Player /*0242*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon -/*0243*/ uint8_t unknown243; // *** Placeholder +/*0243*/ uint8_t gm; // 0=no, 1=yes /*0244*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader /*0245*/ uint8_t unknown0245[55]; // *** Placeholder -/*0296*/ uint8_t haircolor; // Player hair color -/*0297*/ uint8_t beardcolor; // Player beard color -/*0298*/ uint8_t eyecolor1; // Player left eye color -/*0299*/ uint8_t eyecolor2; // Player right eye color -/*0300*/ uint8_t hairstyle; // Player hair style -/*0301*/ uint8_t beard; // Player beard type -/*0302*/ uint8_t unknown0302[2]; // *** Placeholder -/*0304*/ uint32_t item_material[9]; // Item texture/material of worn/held items -/*0340*/ uint8_t unknown0256[52]; // *** Placeholder -/*0392*/ Color_Struct item_tint[9]; // RR GG BB 00 -/*0428*/ AA_Array aa_array[122]; // Length may not be right -/*0672*/ uint8_t unknown0672[716]; // ?? pet data? 7-14 +/*0300*/ uint8_t haircolor; // Player hair color +/*0301*/ uint8_t beardcolor; // Player beard color +/*0302*/ uint8_t eyecolor1; // Player left eye color +/*0303*/ uint8_t eyecolor2; // Player right eye color +/*0304*/ uint8_t hairstyle; // Player hair style +/*0305*/ uint8_t beard; // Player beard type +/*0306*/ uint8_t unknown0302[6]; // *** Placeholder +/*0312*/ uint32_t item_material[9]; // Item texture/material of worn items +/*0348*/ uint8_t unknown0348[48]; // *** Placeholder +/*0396*/ Color_Struct item_tint[9]; // RR GG BB 00 +/*0432*/ AA_Array aa_array[MAX_AA]; // AAs /*1392*/ char servername[32]; // server the char was created on -/*1420*/ char title[32]; // title before the characters name -/*1452*/ uint8_t unknown1452[36]; // unknown +/*1424*/ uint8_t unknown1452[68]; // *** Placeholder /*1492*/ uint32_t exp; // Current Experience /*1496*/ uint32_t unknown1496; // *** Placeholder /*1500*/ uint32_t points; // Unspent Practice points /*1504*/ uint32_t MANA; // Current MANA /*1508*/ uint32_t curHp; // Current HP without +HP equipment -/*1512*/ uint32_t unknown1308; // 0x05 +/*1512*/ uint32_t unknown1512; // 0x05 /*1516*/ uint32_t STR; // Strength /*1520*/ uint32_t STA; // Stamina /*1524*/ uint32_t CHA; // Charisma @@ -582,11 +640,11 @@ /*1544*/ uint8_t face; // Player face /*1545*/ uint8_t unknown1545[47]; // *** Placeholder /*1592*/ uint8_t languages[25]; // List of languages (MAX_KNOWN_LANGS) -/*1617*/ uint8_t unknown1617[7]; // All 0x00 +/*1617*/ uint8_t unknown1617[7]; // All 0x00 (language buffer?) /*1624*/ int32_t sSpellBook[400]; // List of the Spells in spellbook /*3224*/ uint8_t unknown3224[448]; // all 0xff after last spell /*3672*/ int32_t sMemSpells[9]; // List of spells memorized -/*3708*/ uint8_t unknown3580[32]; // *** Placeholder +/*3708*/ uint8_t unknown3708[32]; // *** Placeholder /*3740*/ float x; // Players x position /*3744*/ float y; // Players y position /*3748*/ float z; // Players z position @@ -607,25 +665,53 @@ /*3808*/ uint32_t platinum_shared; // Shared platinum pieces /*3812*/ uint8_t unknown3812[20]; // Unknown - all zero /*3832*/ uint32_t skills[75]; // List of skills (MAX_KNOWN_SKILLS) -/*4132*/ uint8_t unknown4132[408]; // *** Placeholder -/*4540*/ uint32_t zoneId; // see zones.h -/*4544 uint32_t zoneInstance; // Used to be here... */ +/*4132*/ uint8_t unknown4132[348]; // *** Placeholder +/*4480*/ uint32_t expAA; // Current AA experience +/*4484*/ uint8_t unknown4484[4]; // *** Placeholder +/*4488*/ uint32_t expansions; // Bitmask for expansions +/*4492*/ uint8_t unknown4492[20]; // *** Placeholder +/*4512*/ uint32_t hunger; // Food (ticks till next eat) +/*4516*/ uint32_t thirst; // Drink (ticks till next drink) +/*4520*/ uint8_t unknown4520[20]; // *** Placeholder +/*4540*/ uint16_t zoneId; // see zones.h +/*4542*/ uint16_t zoneInstance; // Instance id /*4544*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player -/*4864*/ char groupMembers[MAX_GROUP_MEMBERS][64];// all the members in group, including self -/*5248*/ uint8_t unknown5248[668]; // *** Placeholder -/*5916*/ uint32_t ldon_guk_points; // Earned GUK points -/*5920*/ uint32_t ldon_mir_points; // Earned MIR points -/*5924*/ uint32_t ldon_mmc_points; // Earned MMC points -/*5928*/ uint32_t ldon_ruj_points; // Earned RUJ points -/*5932*/ uint32_t ldon_tak_points; // Earned TAK points -/*5936*/ uint32_t ldon_avail_points; // Available LDON points -/*5940*/ uint8_t unknown5940[448]; // *** Placeholder -/*6388*/ uint8_t unknown6388[84]; // *** Placeholder -/*6472*/ uint8_t unknown6472[176]; // *** Placeholder -/*6648*/ uint32_t endurance; // Current endurance -/*6652*/ uint8_t unknown6652[4888]; // *** Placeholder -/*11540*/ uint16_t altexp; // Total aaxp points -/*11542*/ uint8_t unknown11542[6874]; // *** Placeholder +/*4944*/ char groupMembers[MAX_GROUP_MEMBERS][64];// all the members in group, including self +/*5328*/ uint8_t unknown5328[668]; // *** Placeholder +/*5996*/ uint32_t ldon_guk_points; // Earned GUK points +/*6000*/ uint32_t ldon_mir_points; // Earned MIR points +/*6004*/ uint32_t ldon_mmc_points; // Earned MMC points +/*6008*/ uint32_t ldon_ruj_points; // Earned RUJ points +/*6012*/ uint32_t ldon_tak_points; // Earned TAK points +/*6016*/ uint32_t ldon_avail_points; // Available LDON points +/*6020*/ uint8_t unknown6020[112]; // *** Placeholder +/*6132*/ uint32_t tributeTime; // Time remaining on tribute (millisecs) +/*6136*/ uint32_t unknown6136; // *** Placeholder +/*6140*/ uint32_t careerTribute; // Total favor points for this char +/*6144*/ uint32_t unknown6144; // *** Placeholder +/*6148*/ uint32_t currentTribute; // Current tribute points +/*6152*/ uint32_t unknown6152; // *** Placeholder +/*6156*/ uint32_t tributeActive; // 0 = off, 1=on +/*6160*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout +/*6200*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines +/*6400*/ uint8_t unknown6400[440]; // *** Placeholder +/*6840*/ uint32_t endurance; // Current endurance +/*6844*/ uint8_t unknown6844[276]; // *** Placeholder +/*7120*/ uint32_t airRemaining; // Air supply (seconds) +/*7124*/ uint8_t unknown7124[4608]; // *** Placeholder +/*11732*/ uint32_t aa_spent; // Number of spent AA points +/*11736*/ uint32_t unknown11736; // *** Placeholder +/*11740*/ uint32_t aa_unspent; // Unspent AA points +/*11744*/ uint8_t unknown11744[36]; // *** Placeholder +/*11780*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents +/*13060*/ uint8_t unknown13060[5120]; // *** Placeholder +/*18180*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt +/*18468*/ uint8_t unknown18468[8]; // *** Placeholder +/*18476*/ uint32_t currentRadCrystals; // Current count of radiant crystals +/*18480*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever +/*18484*/ uint32_t currentEbonCrystals;// Current count of ebon crystals +/*18488*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever +/*18492*/ uint32_t unknown18492; // *** Placeholder }; /* 18496 */ #if 1 @@ -905,7 +991,8 @@ /*0004*/ uint32_t nextObject; // Next object in the linked list /*0008*/ uint32_t unknown0008; // ***Placeholder /*0012*/ uint32_t dropId; // DropID -/*0016*/ uint32_t zoneId; // ZoneID +/*0016*/ uint16_t zoneId; // ZoneID +/*0018*/ uint16_t zoneInstance; // Zone instance id /*0014*/ uint8_t unknown0014[8]; // ***Placeholder /*0028*/ float heading; // Heading /*0032*/ float z; // Z Position @@ -1018,6 +1105,20 @@ /*0010*/ }; +/* +** Rename a spawn +** Length: 200 Octets +** OpCode: SpawnRename +*/ +struct spawnRenameStruct +{ +/*000*/ char old_name[64]; +/*064*/ char old_name_again[64]; //not sure what the difference is +/*128*/ char new_name[64]; +/*192*/ uint32_t unknown192; //set to 0 +/*196*/ uint32_t unknown196; //set to 1 +}; + /* ** ShowEQ Specific Structures @@ -1755,7 +1856,7 @@ { /*0000*/ uint16_t spawnId; // ID of the spawn /*0002*/ uint16_t type; // Type of data sent -/*0004*/ uint32_t paramter; // Values associated with the type +/*0004*/ uint32_t parameter; // Values associated with the type /*0008*/ }; @@ -1925,7 +2026,7 @@ struct GuildMemberUpdate { -/*000*/ uint32_t type; // update type (0xe3 seems to update zone and last on time) +/*000*/ uint32_t guildId; // guild id /*004*/ char name[64]; // member name /*068*/ uint16_t zoneId; // zone id /*070*/ uint16_t zoneInstance; // zone instance @@ -1997,7 +2098,6 @@ ** Guild List (from world server) ** Length: 96064 Octets */ -#define MAXGUILDS 1500 struct worldGuildListStruct { /*000*/ guildListStruct dummy; Index: guildshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/guildshell.cpp,v retrieving revision 1.1.4.3 retrieving revision 1.1.4.4 diff -u -d -r1.1.4.3 -r1.1.4.4 --- guildshell.cpp 7 Nov 2004 23:10:03 -0000 1.1.4.3 +++ guildshell.cpp 7 Apr 2005 03:19:35 -0000 1.1.4.4 @@ -23,18 +23,43 @@ //---------------------------------------------------------------------- // constants -static const QString guildRanks[] = { "M", "O", "L", "?", }; +static const QString guildRanks[] = { "M", "O", "L", "?", "MB", "OB", "LB", "?B" }; //---------------------------------------------------------------------- // GuildMember implementation GuildMember::GuildMember(NetStream& netStream) { + // Null-terminated name m_name = netStream.readText(); + + // 4 byte level m_level = uint8_t(netStream.readUInt32()); + + // 4 byte banker flag (0 = no, 1 = banker) + m_banker = uint8_t(netStream.readUInt32()); + + // 4 byte class m_class = uint8_t(netStream.readUInt32()); + + // 4 byte rank (0 = member, 1 = officer, 2 = leader) m_guildRank = netStream.readUInt32(); + + // 4 byte date/time for last on m_lastOn = time_t(netStream.readUInt32()); + + // 4 byte guild tribute on/off (0 = off, 1 = on) + m_guildTributeOn = netStream.readUInt32(); + + // 4 byte guild tribute total donated + m_guildTributeDonated = netStream.readUInt32(); + + // 4 byte guild tribute last donation timestamp + m_guildTributeLastDonation = time_t(netStream.readUInt32()); + + // Null-terminated public note m_publicNote = netStream.readText(); + + // 2 byte zoneInstance and zoneId for current zone m_zoneInstance = netStream.readUInt16(); m_zoneId = netStream.readUInt16(); } @@ -45,12 +70,21 @@ void GuildMember::update(const GuildMemberUpdate* gmu) { - if (gmu->type == 0xe3) - { - m_zoneId = gmu->zoneId; - m_zoneInstance = gmu->zoneInstance; - m_lastOn = gmu->lastOn; - } + m_zoneId = gmu->zoneId; + m_zoneInstance = gmu->zoneInstance; + m_lastOn = gmu->lastOn; +#ifdef GUILDSHELL_DIAG + QDateTime dt; + QString dateFormat("ddd MMM dd hh:mm:ss yyyy"); + dt.setTime_t(m_lastOn); + + QString zone; + zone = QString::number(m_zoneId); + if (zoneInstance()) + zone += ":" + QString::number(m_zoneInstance); + + seqDebug("GuildShell: updated zone for member (member: %s, zone: %s, last on: %s", (const char*) m_name, (const char*) zone, (const char*) dt.toString(dateFormat)); +#endif } QString GuildMember::classString() const @@ -61,9 +95,9 @@ const QString& GuildMember::guildRankString() const { if (m_guildRank <= 2) - return guildRanks[m_guildRank]; + return guildRanks[m_guildRank + 4*m_banker]; else - return guildRanks[3]; // return the unknown rank character + return guildRanks[3 + 4*m_banker]; // return the unknown rank character } //---------------------------------------------------------------------- @@ -215,14 +249,6 @@ { member->update(gmu); emit updated(member); -#ifdef GUILDSHELL_DIAG - QDateTime dt; - dt.setTime_t(member->lastOn()); - seqDebug("%s is now in zone %s (lastOn: %s).", - (const char*)member->name(), - (const char*)m_zoneMgr->zoneNameFromID(member->zoneId()), - (const char*)dt.toString()); -#endif // GUILDSHELL_DIAG } else { Index: player.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/player.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 --- player.cpp 21 Feb 2005 05:56:14 -0000 1.42.6.9 +++ player.cpp 7 Apr 2005 03:19:37 -0000 1.42.6.10 @@ -283,7 +283,8 @@ seqDebug("Player::backfill(): Pos (%f/%f/%f) Heading: %f", player->x, player->y, player->z, player->heading); seqDebug("Player::backfill(bind): Pos (%f/%f/%f) Heading: %f", - player->bind_x, player->bind_y, player->bind_z, player->bind_heading); + player->bind_x[0], player->bind_y[0], player->bind_z[0], + player->bind_heading[0]); #endif // ZBTEMP setHeading((int8_t)lrintf(player->heading), 0); m_headingDegrees = 360 - ((((int8_t)lrintf(player->heading)) * 360) >> 11); @@ -352,8 +353,8 @@ m_tickExp = (m_maxExp - m_minExp) / 330; m_currentExp = player->exp; - m_currentAltExp = player->altexp; - m_currentAApts = player->aapoints; + m_currentAltExp = player->expAA; + m_currentAApts = player->aa_spent; emit expChangedInt (m_currentExp, m_minExp, m_maxExp); emit expAltChangedInt(m_currentAltExp, 0, 15000000); Index: interface.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/interface.cpp,v retrieving revision 1.67.6.12 retrieving revision 1.67.6.13 diff -u -d -r1.67.6.12 -r1.67.6.13 --- interface.cpp 21 Feb 2005 05:56:13 -0000 1.67.6.12 +++ interface.cpp 7 Apr 2005 03:19:35 -0000 1.67.6.13 @@ -222,8 +222,8 @@ pSEQPrefs->getPrefBool("SessionTracking", section, false), pSEQPrefs->getPrefBool("Record", vpsection, false), - pSEQPrefs->getPrefBool("Playback", vpsection, - false), + pSEQPrefs->getPrefInt("Playback", vpsection, + PLAYBACK_OFF), pSEQPrefs->getPrefInt("PlaybackRate", vpsection, false), this, "packet"); @@ -563,7 +563,7 @@ this, SLOT(saveSelectedSpawnPath(void))); pFileMenu->insertItem("Save NPC Spawn Paths", this, SLOT(saveSpawnPaths(void))); - if (m_packet->playbackPackets()) + if (m_packet->playbackPackets() != PLAYBACK_OFF) { pFileMenu->insertItem("Inc Playback Speed", m_packet, SLOT(incPlayback()), CTRL+Key_X); pFileMenu->insertItem("Dec Playback Speed", m_packet, SLOT(decPlayback()), CTRL+Key_Z); @@ -2005,6 +2005,12 @@ m_packet->connect2("OP_DeleteSpawn", SP_Zone, DIR_Server|DIR_Client, "deleteSpawnStruct", SZC_Match, m_spawnShell, SLOT(deleteSpawn(const uint8_t*))); + m_packet->connect2("OP_SpawnRename", SP_Zone, DIR_Server, + "spawnRenameStruct", SZC_Match, + m_spawnShell, SLOT(renameSpawn(const uint8_t*))); + m_packet->connect2("OP_SpawnAppearance", SP_Zone, DIR_Server|DIR_Client, + "spawnAppearanceStruct", SZC_Match, + m_spawnShell, SLOT(updateSpawnAppearance(const uint8_t*))); m_packet->connect2("OP_Death", SP_Zone, DIR_Server, "newCorpseStruct", SZC_Match, m_spawnShell, SLOT(killSpawn(const uint8_t*))); Index: spawnshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnshell.cpp,v retrieving revision 1.42.6.4 retrieving revision 1.42.6.5 diff -u -d -r1.42.6.4 -r1.42.6.5 --- spawnshell.cpp 21 Feb 2005 05:56:15 -0000 1.42.6.4 +++ spawnshell.cpp 7 Apr 2005 03:19:37 -0000 1.42.6.5 @@ -223,15 +223,15 @@ return closest; } -const Spawn* SpawnShell::findSpawnByName(const QString& name) +Spawn* SpawnShell::findSpawnByName(const QString& name) { ItemIterator it(m_spawns); - const Spawn* spawn; + Spawn* spawn; for (; it.current(); ++it) { // the item and coerce it to the Spawn type - spawn = (const Spawn*)it.current(); + spawn = (Spawn*)it.current(); if (name == spawn->name()) return spawn; @@ -640,6 +640,74 @@ } } +void SpawnShell::renameSpawn(const uint8_t* data) +{ + const spawnRenameStruct* rename = (const spawnRenameStruct*)data; +#ifdef SPAWNSHELL_DIAG + seqDebug("SpawnShell::renameSpawn(oldname=%s, newname=%s)", + rename->old_name, rename->new_name); +#endif + + Spawn* renameMe = findSpawnByName(rename->old_name); + + if (renameMe != NULL) + { + renameMe->setName(rename->new_name); + renameMe->updateLastChanged(); + emit changeItem(renameMe, tSpawnChangedName); + } + else + { + seqWarn("SpawnShell: tried to rename %s to %s, but the original mob didn't exist in the spawn list", rename->old_name, rename->new_name); + } +} + +void SpawnShell::updateSpawnAppearance(const uint8_t* data) +{ + const spawnAppearanceStruct* app = (const spawnAppearanceStruct*)data; +#ifdef SPAWNSHELL_DIAG + seqDebug("SpawnShell::updateSpawnAppearance(id=%d, sub=%d, parm=%08x)", + app->spawnId, app->type, app->parameter); +#endif + + Item* item = m_spawns.find(app->spawnId); + + if (item != NULL) + { + Spawn* spawn = (Spawn*)item; + switch(app->type) + { + case 1: // level update + spawn->setLevel(app->parameter); + spawn->updateLastChanged(); + emit changeItem(spawn, tSpawnChangedLevel); + break; + } + + /* Other types for OP_SpawnAppearance (from eqemu guys) + 0 - this causes the client to keel over and zone to bind point + 1 - level, parm = spawn level + 3 - 0 = visible, 1 = invisible + 4 - 0 = blue, 1 = pvp (red) + 5 - light type emitted by player (lightstone, shiny shield) + 14 - anim, 100=standing, 110=sitting, 111=ducking, 115=feigned, 105=looting + 15 - sneak, 0 = normal, 1 = sneaking + 16 - server to client, sets player spawn id + 17 - Client->Server, my HP has changed (like regen tic) + 18 - linkdead, 0 = normal, 1 = linkdead + 19 - lev, 0=off, 1=flymode, 2=levitate + 20 - GM, 0 = normal, 1 = GM - all odd numbers seem to make it GM + 21 - anon, 0 = normal, 1 = anon, 2 = roleplay + 22 - guild id + 23 - guild rank, 0=member, 1=officer, 2=leader + 24 - afk, 0 = normal, 1 = afk + 28 - autosplit, 0 = normal, 1 = autosplit on + 29 - spawn's size + 31 -change PC's name's color to NPC color 0 = normal, 1 = npc name + */ + } +} + void SpawnShell::updateNpcHP(const uint8_t* data) { const hpNpcUpdateStruct* hpupdate = (const hpNpcUpdateStruct*)data; Index: packetcapture.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetcapture.h,v retrieving revision 1.1.6.2 retrieving revision 1.1.6.3 diff -u -d -r1.1.6.2 -r1.1.6.3 --- packetcapture.h 21 Feb 2005 05:56:14 -0000 1.1.6.2 +++ packetcapture.h 7 Apr 2005 03:19:37 -0000 1.1.6.3 @@ -42,12 +42,20 @@ public: PacketCaptureThread(); ~PacketCaptureThread(); + + // Set the playback speed for offline packet capture. Valid values + // are -1-9, 1 is 1x, 2 is 2x, etc. -1 is paused. 0 is as fast as + // possible (no throttle) + void setPlaybackSpeed(int playbackSpeed); + int getPlaybackSpeed() { return (m_playbackSpeed == 100 ? 0 : m_playbackSpeed); } + void start (const char *device, const char *host, bool realtime, uint8_t address_type); - void stop (); + void startOffline(const char* filename, int playbackSpeed); + void stop (); uint16_t getPacket (unsigned char *buff); void setFilter (const char *device, const char *hostname, bool realtime, uint8_t address_type, uint16_t zone_server_port, uint16_t client_port); - const QString getFilter(); + const QString getFilter(); private: static void* loop(void *param); @@ -69,6 +77,11 @@ pcap_t *m_pcache_pcap; QString m_pcapFilter; + + // Playback controls for offline file processing + int m_playbackSpeed; // -1=paused, 0=max, 1=1x speed, 2=2x speed, up to 9 + timeval m_tvLastProcessedActual; + timeval m_tvLastProcessedOriginal; }; #endif // _PACKETCAPTURE_H_ Index: zones.h =================================================================== RCS file: /cvsroot/seq/showeq/src/zones.h,v retrieving revision 1.7.16.4 retrieving revision 1.7.16.5 diff -u -d -r1.7.16.4 -r1.7.16.5 --- zones.h 21 Feb 2005 05:56:31 -0000 1.7.16.4 +++ zones.h 7 Apr 2005 03:19:37 -0000 1.7.16.5 @@ -311,12 +311,12 @@ { "bloodfields", "The Bloodfields" }, // 301 { "draniksscar", "Dranik's Scar" }, // 302 { "causeway", "Nobles' Causeway" }, // 303 -{ "chambera", "Mata Muram's Labyrinth" }, // 304 -{ "chamberb", "Mata Muram's Labyrinth" }, // 305 -{ "chamberc", "Mata Muram's Labyrinth" }, // 306 -{ "chamberd", "Mata Muram's Labyrinth" }, // 307 -{ "chambere", "Mata Muram's Labyrinth" }, // 308 -{ "chamberf", "Mata Muram's Labyrinth" }, // 309 +{ "chambersa", "Mata Muram's Labyrinth" }, // 304 +{ "chambersb", "Mata Muram's Labyrinth" }, // 305 +{ "chambersc", "Mata Muram's Labyrinth" }, // 306 +{ "chambersd", "Mata Muram's Labyrinth" }, // 307 +{ "chamberse", "Mata Muram's Labyrinth" }, // 308 +{ "chambersf", "Mata Muram's Labyrinth" }, // 309 { NULL, NULL }, // 310 { NULL, NULL }, // 311 { NULL, NULL }, // 312 Index: spawnlist2.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnlist2.cpp,v retrieving revision 1.7.12.3 retrieving revision 1.7.12.4 diff -u -d -r1.7.12.3 -r1.7.12.4 --- spawnlist2.cpp 7 Nov 2004 23:10:25 -0000 1.7.12.3 +++ spawnlist2.cpp 7 Apr 2005 03:19:37 -0000 1.7.12.4 @@ -335,8 +335,10 @@ // if their is an item already, just update it if (litem != NULL) { - // just update the item + // just update the item and recalc the color in case it was based on + // something that we just changed. litem->update(m_player, changeItem); + litem->pickTextColor(item, m_player, m_currentCategory->color()); // make sure it's sorted into the proper place if (m_keepSorted) @@ -635,6 +637,7 @@ { // just update the item litem->update(m_player, tSpawnChangedALL); + litem->pickTextColor(item, m_player, m_currentCategory->color()); // nothing more to do for this item continue; Index: guildshell.h =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/guildshell.h,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- guildshell.h 7 Nov 2004 23:10:03 -0000 1.1.4.2 +++ guildshell.h 7 Apr 2005 03:19:35 -0000 1.1.4.3 @@ -50,10 +50,14 @@ protected: QString m_name; + uint8_t m_banker; // 0 = no, 1 = banker uint8_t m_level; uint8_t m_class; - uint32_t m_guildRank; + uint32_t m_guildRank; // 0 = member, 1 = officer, 2 = leader time_t m_lastOn; + uint8_t m_guildTributeOn; // 0 = off, 1 = on + uint8_t m_guildTributeDonated; + time_t m_guildTributeLastDonation; QString m_publicNote; uint16_t m_zoneId; uint16_t m_zoneInstance; |
|
From: Erik B. <do...@us...> - 2005-04-07 02:34:32
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13172 Modified Files: Tag: pre_5_0_beta ChangeLog INSTALL Makefile.am configure.in Log Message: Include purples changes. Update to 5.0.0.19 Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -u -d -r1.1.2.6 -r1.1.2.7 --- ChangeLog 21 Feb 2005 05:56:12 -0000 1.1.2.6 +++ ChangeLog 7 Apr 2005 02:34:13 -0000 1.1.2.7 @@ -1,5 +1,29 @@ Version: $Id$ $Name$ +dophaZ (04/06/05) +----------------------- ++ Updated version to 5.0.0.19 ++ Update INSTALL to reflect new minimum automake 1.9 requirement for + Makefile.dist users. ++ Incorporated Purple's "5.0.0.18-purple1" patch. ++ - Fix for sequence rollover in net layer with arqSeqWrapCutOff ++ - Oversized packets will check for arqSeqGiveUp properly ++ - Added a playback mode for tcpdump files (see notes) ++ - Cleanup in PlayerProfile (fixed offset comments, got rid of some unknowns) ++ - Handle spawns renaming themselves (new OP_SpawnRename). This renames fabled + mobs which spawn after you are already in zone properly ++ - Handle mobs changing level while you are in the zone (old + OP_SpawnAppearance, new handler in SpawnShell for it). This properly levels + fabled mobs which spawn after you are in the zone ++ - Group chat that you say won't echo to the message shell twice ++ - Fix to properly name the MPG trial zones chambersa-chambersf, instead of + chambera-chamberf. zones.h was wrong. ++ Incorporated Purple's added patch ++ - Guild member list is aligned properly ++ - Filled in unknowns in charProfileStruct for Bandolier, Potion Belt, air, + hunger, thirst, instanceId, disciplines, personal tribute ++ - fixed a type in opcode for OP_MemorizeSpell + BBobcat (02/20/05) ----------------------- Index: Makefile.am =================================================================== RCS file: /cvsroot/seq/showeq/Makefile.am,v retrieving revision 1.1.1.1.16.2 retrieving revision 1.1.1.1.16.3 diff -u -d -r1.1.1.1.16.2 -r1.1.1.1.16.3 --- Makefile.am 7 Nov 2004 23:09:53 -0000 1.1.1.1.16.2 +++ Makefile.am 7 Apr 2005 02:34:13 -0000 1.1.1.1.16.3 @@ -1,16 +1,16 @@ ACLOCAL_AMFLAGS = -I m4 -AUTOMAKE_OPTIONS = 1.7 dist-bzip2 +AUTOMAKE_OPTIONS = 1.9 dist-bzip2 SUBDIRS = src conf include doxygen.am EXTRA_DIST = BUGS ChangeLog FAQ INSTALL.newbies Makefile.dist README.libEQ \ -ROADMAP showeq.1 TODO showeq.kdevelop Doxyfile $(DX_CONFIG) +ROADMAP showeq.1 TODO showeq.kdevelop Doxyfile depcomp $(DX_CONFIG) MAINTAINERCLEANFILES = aclocal.m4 config.guess config.sub configure \ Makefile.in ltconfig libqt2.dbg libqt3.dbg Makefile.dist.dbg \ -configure.dbg config.log ltmain.sh stamp-h.in stamp-h qt.tag +configure.dbg config.log ltmain.sh stamp-h.in stamp-h qt.tag depcomp @DX_DOCDIR@/@PACKAGE@.tag: qt.tag Index: INSTALL =================================================================== RCS file: /cvsroot/seq/showeq/INSTALL,v retrieving revision 1.5.16.5 retrieving revision 1.5.16.6 diff -u -d -r1.5.16.5 -r1.5.16.6 --- INSTALL 7 Nov 2004 23:09:53 -0000 1.5.16.5 +++ INSTALL 7 Apr 2005 02:34:13 -0000 1.5.16.6 @@ -285,7 +285,7 @@ *** GNU tools *** libtool 1.3.4-3 Most recent... http://www.gnu.org/software/libtool/ autoconf 2.53 Most recent... http://www.gnu.org/software/autoconf/ - automake 1.7 Most recent... http://www.gnu.org/software/automake/ + automake 1.9 Most recent... http://www.gnu.org/software/automake/ perl 5.0 Most recent... http://www.perl.org/ --------------------------------------------------------------------------- Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.19 retrieving revision 1.49.4.20 diff -u -d -r1.49.4.19 -r1.49.4.20 --- configure.in 21 Feb 2005 05:56:12 -0000 1.49.4.19 +++ configure.in 7 Apr 2005 02:34:13 -0000 1.49.4.20 @@ -2,7 +2,7 @@ dnl $Id$ $Name$ AC_PREREQ(2.53) -AC_INIT(showeq, 5.0.0.18) +AC_INIT(showeq, 5.0.0.19) AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM |
|
From: Bonkers D B. <bon...@us...> - 2005-02-21 05:56:54
|
Update of /cvsroot/seq/showeq/conf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30260/conf Modified Files: Tag: pre_5_0_beta worldopcodes.xml zoneopcodes.xml Log Message: Support packet compression, new opcodes, and structures Index: worldopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/worldopcodes.xml,v retrieving revision 1.1.4.7 retrieving revision 1.1.4.8 diff -u -d -r1.1.4.7 -r1.1.4.8 --- worldopcodes.xml 9 Feb 2005 07:07:32 -0000 1.1.4.7 +++ worldopcodes.xml 21 Feb 2005 05:56:12 -0000 1.1.4.8 @@ -7,36 +7,12 @@ <opcode id="0018" name="OP_AckPacket" updated="02/10/04"> <comment>Appears to be generic ack at the presentation level</comment> </opcode> - <opcode id="00e3" name="OP_ExpansionInfo" updated="02/10/04"> - <comment>Which expansions user has</comment> - </opcode> - <opcode id="00ec" name="OP_DeleteCharacter" updated="02/10/04"> - <comment>Delete character @ char select</comment> - </opcode> <opcode id="0106" name="OP_CharacterCreate" updated="02/10/04"> <comment>Create character @ char select</comment> </opcode> <opcode id="0127" name="OP_ApproveName" updated="02/10/04"> <comment>Approving new character name @ char creation</comment> </opcode> - <opcode id="015a" name="OP_World_Client_CRC1" updated="07/14/04"> - <comment>Contains a snippet of spell data</comment> - </opcode> - <opcode id="0160" name="OP_World_Client_CRC2" updated="02/10/04"> - <comment>Second client verification packet</comment> - </opcode> - <opcode id="0188" name="OP_LogServer" updated="02/10/04"> - <comment></comment> - </opcode> - <opcode id="0196" name="OP_ApproveWorld" updated="02/10/04"> - <comment></comment> - </opcode> - <opcode id="0241" name="OP_SendLoginInfo" updated="02/10/04"> - <comment></comment> - </opcode> - <opcode id="0264" name="OP_EnterWorld" updated="02/10/04"> - <comment>Server approval for client to enter world</comment> - </opcode> <opcode id="02a5" name="OP_UserCompInfo" updated="02/10/04"> <comment>User submitted computer information</comment> </opcode> @@ -51,21 +27,48 @@ - <opcode id="1560" name="OP_ZoneServerInfo" updated="01/26/05"> + <opcode id="5ef9" name="OP_ZoneServerInfo" updated="02/15/05"> <comment>old ZoneServerInfo</comment> </opcode> - <opcode id="2628" name="OP_SendCharInfo" updated="01/26/05"> + <opcode id="16f7" name="OP_SendCharInfo" updated="02/15/05"> <comment>Send all chars visible @ char select</comment> </opcode> - <opcode id="4b97" name="OP_MOTD" updated="01/26/05"> + <opcode id="12ad" name="OP_MOTD" updated="02/15/05"> <comment>old MOTDCode Server message of the day</comment> <payload dir="server" typename="worldMOTDStruct" sizechecktype="none"/> </opcode> - <opcode id="5dd9" name="OP_GuildList" updated="01/26/05"> + <opcode id="0353" name="OP_GuildList" updated="02/15/05"> <comment>old GuildListCode</comment> <payload dir="server" typename="worldGuildListStruct" sizechecktype="match"/> </opcode> - <opcode id="7e66" name="OP_SetChatServer" updated="01/26/05"> + <opcode id="26ad" name="OP_SetChatServer" updated="02/15/05"> + <comment>Chatserver? IP,Port,servername.Charname,password(?)</comment> + </opcode> + <opcode id="1087" name="OP_SetChatServer2" updated="02/15/05"> <comment>Chatserver? IP,Port,servername.Charname,password(?)</comment> </opcode> + <opcode id="3bfb" name="OP_ApproveWorld" updated="02/15/05"> + <comment></comment> + </opcode> + <opcode id="1c3a" name="OP_LogServer" updated="02/15/05"> + <comment></comment> + </opcode> + <opcode id="1f7b" name="OP_SendLoginInfo" updated="02/15/05"> + <comment></comment> + </opcode> + <opcode id="47b6" name="OP_World_Client_CRC1" updated="02/15/05"> + <comment>Contains a snippet of spell data</comment> + </opcode> + <opcode id="09e6" name="OP_World_Client_CRC2" updated="02/15/05"> + <comment>Second client verification packet</comment> + </opcode> + <opcode id="7c66" name="OP_ExpansionInfo" updated="02/15/05"> + <comment>Which expansions user has</comment> + </opcode> + <opcode id="5a62" name="OP_EnterWorld" updated="02/15/05"> + <comment>Server approval for client to enter world</comment> + </opcode> + <opcode id="6748" name="OP_DeleteCharacter" updated="02/15/05"> + <comment>Delete character @ char select</comment> + </opcode> </seqopcodes> Index: zoneopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/zoneopcodes.xml,v retrieving revision 1.1.4.13 retrieving revision 1.1.4.14 diff -u -d -r1.1.4.13 -r1.1.4.14 --- zoneopcodes.xml 9 Feb 2005 07:07:33 -0000 1.1.4.13 +++ zoneopcodes.xml 21 Feb 2005 05:56:12 -0000 1.1.4.14 @@ -13,10 +13,6 @@ <comment>old LevelUpUpdateCode</comment> <payload dir="server" typename="levelUpUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="00d5" name="OP_GroupInvite2" updated="05/26/04"> - <payload dir="both" typename="groupInviteStruct" sizechecktype="match"/> - <comment></comment> - </opcode> <opcode id="003e" name="OP_MobUpdate" implicitlen="12" updated="05/26/04"> <comment>old MobUpdateCode</comment> <payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/> @@ -38,30 +34,18 @@ <opcode id="0020" name="OP_GMServers" updated="05/26/04"> <comment>GM /servers - ?</comment> </opcode> - <opcode id="0030" name="OP_ItemToTrade" updated="05/26/04"> - <comment></comment> - </opcode> <opcode id="0068" name="OP_Petition" updated="05/26/04"> <comment></comment> </opcode> <opcode id="0069" name="OP_PetitionUpdate" updated="05/26/04"> <comment>Updates the Petitions in the Que</comment> </opcode> - <opcode id="006e" name="OP_TraderItemUpdate" updated="05/26/04"> - <comment></comment> - </opcode> <opcode id="0074" name="OP_GMBecomeNPC" updated="05/26/04"> <comment>GM /becomenpc - Become an NPC</comment> </opcode> <opcode id="0076" name="OP_PetitionCheckout" updated="05/26/04"> <comment>Petition Checkout</comment> </opcode> - <opcode id="007a" name="OP_Split" updated="05/26/04"> - <comment></comment> - </opcode> - <opcode id="007d" name="OP_Mend" updated="05/26/04"> - <comment></comment> - </opcode> <opcode id="007e" name="OP_PetitionCheckIn" updated="05/26/04"> <comment>Petition Checkin</comment> </opcode> @@ -80,9 +64,6 @@ <opcode id="009a" name="OP_GuildPeace" updated="05/26/04"> <comment>/guildpeace</comment> </opcode> - <opcode id="009b" name="OP_MendHPUpdate" updated="05/26/04"> - <comment></comment> - </opcode> <opcode id="00a4" name="OP_GuildWar" updated="05/26/04"> <comment></comment> </opcode> @@ -104,12 +85,6 @@ <opcode id="00ef" name="OP_SafePoint" updated="05/26/04"> <comment></comment> </opcode> - <opcode id="00fb" name="OP_Save" updated="05/26/04"> - <comment>Client asking server to save user state</comment> - </opcode> - <opcode id="0100" name="?" implicitlen="136" updated="05/26/04"> - <comment>Unknown, but has implicit length</comment> - </opcode> <opcode id="010b" name="OP_GMGoto" updated="05/26/04"> <comment>GM /goto - Transport to another loc</comment> </opcode> @@ -135,12 +110,6 @@ <opcode id="0160" name="OP_Taunt" updated="05/26/04"> <comment>old ConsumeCode</comment> </opcode> - <opcode id="0161" name="OP_Feedback" updated="05/26/04"> - <comment>/feedback</comment> - </opcode> - <opcode id="0162" name="OP_TradeMoneyUpdate" updated="05/26/04"> - <comment></comment> - </opcode> <opcode id="016c" name="OP_Stun" updated="05/26/04"> <comment></comment> </opcode> @@ -151,12 +120,6 @@ <comment>old CloseGMCode</comment> <payload dir="both" typename="uint8_t" sizechecktype="none"/> </opcode> - <opcode id="0172" name="OP_DelItem" updated="05/26/04"> - <comment></comment> - </opcode> - <opcode id="017b" name="OP_TraderDelItem" updated="05/26/04"> - <comment></comment> - </opcode> <opcode id="0183" name="OP_GMZoneRequest" updated="05/26/04"> <comment>/zone</comment> </opcode> @@ -187,9 +150,6 @@ <opcode id="01c4" name="OP_Translocate" updated="05/26/04"> <comment></comment> </opcode> - <opcode id="01c3" name="OP_BecomeTrader" updated="05/26/04"> - <comment></comment> - </opcode> <opcode id="01c8" name="OP_SendAAStats" updated="05/26/04"> <comment></comment> </opcode> @@ -263,498 +223,510 @@ --> - <opcode id="0164" name="OP_ItemPlayerPacket" updated="01/26/05"> + <opcode id="00c7" name="OP_ItemPlayerPacket" updated="02/15/05"> <comment>old ItemCode</comment> <payload dir="server" typename="char" sizechecktype="none"/> </opcode> <opcode id="0165" name="OP_DeletePetition" updated="01/26/05"> <comment>Player /deletepetition</comment> </opcode> - <opcode id="01a9" name="OP_CombatAbility" updated="01/26/05"> + <opcode id="1ee8" name="OP_CombatAbility" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="01ed" name="OP_Dye" updated="01/26/05"> + <opcode id="1852" name="OP_Dye" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="028f" name="OP_Consume" updated="01/26/05"> + <opcode id="03fb" name="OP_Consume" updated="02/15/05"> <comment>old ConsumeCode</comment> </opcode> - <opcode id="03e0" name="OP_Begging" updated="01/26/05"> + <opcode id="2e1b" name="OP_Begging" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="06f6" name="OP_InspectRequest" updated="01/26/05"> + <opcode id="7e65" name="OP_InspectRequest" updated="02/15/05"> <comment>old InspectRequestCode</comment> </opcode> - <opcode id="0738" name="OP_Action2" implicitlen="23" updated="01/26/05"> + <opcode id="5f7b" name="OP_Action2" implicitlen="23" updated="02/15/05"> <comment>old ActionCode</comment> <payload dir="both" typename="action2Struct" sizechecktype="match"/> </opcode> - <opcode id="07f5" name="OP_BeginCast" implicitlen="8" updated="01/26/05"> + <opcode id="203d" name="OP_BeginCast" implicitlen="8" updated="02/15/05"> <comment>old BeginCastCode</comment> <payload dir="both" typename="beginCastStruct" sizechecktype="match"/> </opcode> - <opcode id="0860" name="OP_WhoAllRequest" updated="01/26/05"> + <opcode id="27b0" name="OP_WhoAllRequest" updated="02/15/05"> <comment>old WhoAllReqCode</comment> </opcode> - <opcode id="0880" name="OP_BuffFadeMsg" updated="01/26/05"> + <opcode id="0a1e" name="OP_BuffFadeMsg" updated="02/15/05"> <comment>old SpellFadeCode</comment> <payload dir="both" typename="spellFadedStruct" sizechecktype="none"/> </opcode> - <opcode id="090e" name="OP_Consent" updated="01/26/05"> + <opcode id="1a94" name="OP_Consent" updated="02/15/05"> <comment>/consent someone</comment> <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/> </opcode> - <opcode id="0972" name="OP_PetitionResolve" updated="01/26/05"> + <opcode id="53d0" name="OP_PetitionResolve" updated="02/15/05"> <comment>Client Petition Resolve Request</comment> </opcode> - <opcode id="09c7" name="OP_LFGCommand" updated="01/26/05"> + <opcode id="306f" name="OP_LFGCommand" updated="02/15/05"> <comment>old LFGReqCode</comment> </opcode> - <opcode id="09e2" name="OP_LootItem" updated="01/26/05"> + <opcode id="1e10" name="OP_LootItem" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="09f6" name="OP_TradeRequestAck" updated="01/26/05"> + <opcode id="1858" name="OP_TradeRequestAck" updated="02/15/05"> <comment>Trade request recipient is acknowledging they are able to trade</comment> </opcode> - <opcode id="0e2e" name="OP_RaidJoin" updated="01/26/05"> + <opcode id="396b" name="OP_RaidJoin" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="1134" name="OP_Bug" updated="01/26/05"> + <opcode id="0137" name="OP_Bug" updated="02/15/05"> <comment>/bug</comment> </opcode> - <opcode id="13a0" name="OP_GuildMemberUpdate" updated="01/26/05"> + <opcode id="5b61" name="OP_GuildMemberUpdate" updated="02/15/05"> <comment></comment> <payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/> </opcode> - <opcode id="141f" name="OP_Track" updated="01/26/05"> + <opcode id="7dca" name="OP_Track" updated="02/15/05"> <comment>Clicked Track</comment> </opcode> - <opcode id="1586" name="OP_TraderShop" updated="01/26/05"> + <opcode id="1e08" name="OP_TraderShop" updated="02/15/05"> <comment>old OpenTraderCode right-click on a trader in bazaar</comment> </opcode> - <opcode id="160d" name="OP_BoardBoat" updated="01/26/05"> + <opcode id="35b7" name="OP_BoardBoat" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="16d7" name="OP_LFGGetMatchesRequest" updated="01/26/05"> + <opcode id="584c" name="OP_LFGGetMatchesRequest" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="174a" name="OP_ClickObject" updated="01/26/05"> + <opcode id="2b80" name="OP_ClickObject" updated="02/15/05"> <comment>old RemDropCode</comment> <payload dir="both" typename="remDropStruct" sizechecktype="match"/> </opcode> - <opcode id="1838" name="OP_Camp" updated="01/26/05"> + <opcode id="383c" name="OP_Save" updated="02/15/05"> + <comment>Client asking server to save user state</comment> + </opcode> + <opcode id="3dc7" name="OP_Camp" updated="02/15/05"> <comment>old cStartCampingCode</comment> </opcode> - <opcode id="189a" name="OP_ShopPlayerSell" updated="01/26/05"> + <opcode id="2aa0" name="OP_ShopPlayerSell" updated="02/15/05"> <comment>old SellItemCode</comment> </opcode> - <opcode id="195c" name="OP_EndLootRequest" updated="01/26/05"> + <opcode id="7907" name="OP_EndLootRequest" updated="02/15/05"> <comment>old cDoneLootingCode</comment> </opcode> - <opcode id="19c3" name="OP_SendAAStats" updated="01/26/05"> + <opcode id="2056" name="OP_SendAAStats" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="19fa" name="OP_GroupDisband" updated="01/26/05"> + <opcode id="342b" name="OP_GroupDisband" updated="02/15/05"> <comment>Disband from group</comment> <payload dir="both" typename="groupDisbandStruct" sizechecktype="match"/> </opcode> - <opcode id="1a0f" name="OP_ReloadUI" updated="01/26/05"> - <comment></comment> - </opcode> - <opcode id="1b74" name="OP_LoadSpellSet" updated="01/26/05"> + <opcode id="3888" name="OP_LoadSpellSet" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="1ca3" name="OP_AutoAttack" updated="01/26/05"> + <opcode id="7334" name="OP_AutoAttack" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="1cc6" name="OP_Consider" updated="01/26/05"> + <opcode id="2f8c" name="OP_Consider" updated="02/15/05"> <comment>old ConsiderCode</comment> <payload dir="both" typename="considerStruct" sizechecktype="match"/> </opcode> - <opcode id="1e77" name="OP_ReqClientSpawn" updated="01/26/05"> + <opcode id="75a9" name="OP_ReqClientSpawn" updated="02/15/05"> <comment>Client requesting spawn data</comment> </opcode> - <opcode id="2014" name="OP_Emote" updated="01/26/05"> + <opcode id="2ef0" name="OP_Emote" updated="02/15/05"> <comment>old EmoteTextCode</comment> <payload dir="both" typename="emoteTextStruct" sizechecktype="none"/> </opcode> - <opcode id="207c" name="OP_GuildMOTD" updated="01/26/05"> + <opcode id="0b27" name="OP_GuildMOTD" updated="02/15/05"> <comment>GuildMOTD</comment> <payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/> </opcode> - <opcode id="218b" name="OP_CancelTrade" updated="01/26/05"> + <opcode id="779c" name="OP_CancelTrade" updated="02/15/05"> <comment>Cancel a trade window</comment> </opcode> - <opcode id="2217" name="OP_GroupInvite" updated="01/26/05"> + <opcode id="46d0" name="OP_GroupInvite" updated="02/15/05"> <payload dir="both" typename="groupInviteStruct" sizechecktype="match"/> <comment></comment> </opcode> - <opcode id="2303" name="OP_Trader" updated="01/26/05"> + <opcode id="2b3c" name="OP_Trader" updated="02/15/05"> <comment>People turning trader on and off</comment> <payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/> </opcode> - <opcode id="2622" name="OP_PetCommands" updated="01/26/05"> + <opcode id="7586" name="OP_PetCommands" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="26a2" name="OP_SpawnAppearance" implicitlen="8" updated="01/26/05"> + <opcode id="66cd" name="OP_SpawnAppearance" implicitlen="8" updated="02/15/05"> <comment>old SpawnAppearanceCode</comment> <payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/> </opcode> - <opcode id="2773" name="OP_DeleteSpawn" implicitlen="4" updated="01/26/05"> + <opcode id="202a" name="OP_DeleteSpawn" implicitlen="4" updated="02/15/05"> <comment>old DeleteSpawnCode</comment> <payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/> </opcode> - <opcode id="27db" name="OP_ReqNewZone" updated="01/26/05"> + <opcode id="5f64" name="OP_ReqNewZone" updated="02/15/05"> <comment>Client requesting NewZone_Struct</comment> </opcode> - <opcode id="28a6" name="OP_FormattedMessage" updated="01/26/05"> + <opcode id="3b4f" name="OP_FormattedMessage" updated="02/15/05"> <comment>old FormattedMessageCode</comment> <payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/> </opcode> - <opcode id="2a9c" name="OP_DisarmTraps" updated="01/26/05"> + <opcode id="6d66" name="OP_DisarmTraps" updated="02/15/05"> <comment>Clicked disarm traps</comment> </opcode> - <opcode id="2c67" name="OP_WhoAllResponse" updated="01/26/05"> + <opcode id="1573" name="OP_WhoAllResponse" updated="02/15/05"> <comment>old sWhoAllOutputCode</comment> </opcode> - <opcode id="2d06" name="OP_AutoAttack2" updated="01/26/05"> + <opcode id="22d6" name="OP_AutoAttack2" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="2d5f" name="OP_HPUpdate" implicitlen="6" updated="01/26/05"> + <opcode id="07b4" name="OP_HPUpdate" implicitlen="6" updated="02/15/05"> <comment>old NpcHpUpdateCode Update HP % of a PC or NPC</comment> <payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="2d77" name="OP_GuildMemberList" updated="01/26/05"> + <opcode id="265f" name="OP_GuildMemberList" updated="02/15/05"> <comment></comment> <payload dir="server" typename="uint8_t" sizechecktype="none"/> </opcode> - <opcode id="2e7e" name="OP_SetRunMode" updated="01/26/05"> + <opcode id="6529" name="OP_SetRunMode" updated="02/15/05"> <comment>old cRunToggleCode</comment> </opcode> - <opcode id="3007" name="OP_UpdateAA" updated="01/26/05"> + <opcode id="0c78" name="OP_UpdateAA" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="31d4" name="OP_GetGuildMOTD" updated="01/26/05"> + <opcode id="412a" name="OP_GetGuildMOTD" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="32f3" name="OP_SimpleMessage" updated="01/26/05"> + <opcode id="7a2e" name="OP_SimpleMessage" updated="02/15/05"> <comment>old SimpleMessageCode</comment> <payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/> </opcode> - <opcode id="3479" name="OP_Hide" updated="01/26/05"> + <opcode id="67dd" name="OP_Hide" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="34bc" name="OP_SaveOnZoneReq" updated="01/26/05"> + <opcode id="0a45" name="OP_SaveOnZoneReq" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="34de" name="OP_ShopEnd" updated="01/26/05"> + <opcode id="1830" name="OP_ShopEnd" updated="02/15/05"> <comment>old CloseVendorCode</comment> <payload dir="both" typename="unknown" sizechecktype="none"/> </opcode> - <opcode id="357f" name="OP_MoveDoor" updated="01/26/05"> + <opcode id="0855" name="OP_MoveDoor" updated="02/15/05"> <comment>old DoorClickCode</comment> </opcode> - <opcode id="3592" name="OP_SenseTraps" updated="01/26/05"> + <opcode id="678f" name="OP_SenseTraps" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="38df" name="OP_SenseHeading" updated="01/26/05"> + <opcode id="4144" name="OP_SenseHeading" updated="02/15/05"> <comment>old cSenseHeadingCode</comment> </opcode> - <opcode id="398a" name="OP_Buff" updated="01/26/05"> + <opcode id="4510" name="OP_Buff" updated="02/15/05"> <comment>old BuffDropCode</comment> <payload dir="both" typename="buffStruct" sizechecktype="match"/> </opcode> - <opcode id="3adf" name="OP_CommonMessage" updated="01/26/05"> + <opcode id="2b9a" name="OP_CommonMessage" updated="02/15/05"> <comment>old ChannelMessageCode</comment> <payload dir="both" typename="channelMessageStruct" sizechecktype="none"/> </opcode> - <opcode id="3b48" name="OP_LootComplete" updated="01/26/05"> + <opcode id="1964" name="OP_LootComplete" updated="02/15/05"> <comment>old sDoneLootingCode</comment> </opcode> - <opcode id="3bca" name="OP_EnvDamage" updated="01/26/05"> + <opcode id="270f" name="OP_EnvDamage" updated="02/15/05"> <comment>Environmental Damage</comment> <payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/> </opcode> - <opcode id="3d4d" name="OP_Surname" updated="01/26/05"> + <opcode id="440a" name="OP_Split" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="3d80" name="OP_ZoneEntry" updated="01/26/05"> + <opcode id="74e5" name="OP_Surname" updated="02/15/05"> + <comment></comment> + </opcode> + <opcode id="0981" name="OP_ZoneEntry" updated="02/15/05"> <comment>old ZoneEntryCode</comment> <payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/> <payload dir="server" typename="ServerZoneEntryStruct" sizechecktype="match"/> </opcode> - <opcode id="3e7e" name="OP_FinishTrade" updated="01/26/05"> + <opcode id="3335" name="OP_FinishTrade" updated="02/15/05"> <comment>Trade is over</comment> </opcode> - <opcode id="3eec" name="OP_ShopRequest" updated="01/26/05"> + <opcode id="2023" name="OP_ShopRequest" updated="02/15/05"> <comment>old OpenVendorCode</comment> <payload dir="both" typename="unknown" sizechecktype="none"/> </opcode> - <opcode id="4033" name="OP_MoveItem" updated="01/26/05"> + <opcode id="3fcd" name="OP_MoveItem" updated="02/15/05"> <comment>Client moving an item from one slot to another</comment> </opcode> - <opcode id="413b" name="OP_ZoneSpawns" updated="01/26/05"> + <opcode id="53f6" name="OP_ZoneSpawns" updated="02/15/05"> <comment>old ZoneSpawnsCode</comment> <payload dir="server" typename="spawnStruct" sizechecktype="modulus"/> </opcode> - <opcode id="4208" name="OP_FaceChange" updated="01/26/05"> + <opcode id="78cb" name="OP_FaceChange" updated="02/15/05"> <comment>/face</comment> </opcode> - <opcode id="4274" name="OP_GroupFollow" updated="01/26/05"> + <opcode id="50a3" name="OP_GroupFollow" updated="02/15/05"> <payload dir="both" typename="groupFollowStruct" sizechecktype="match"/> <comment>Accepting to join a group</comment> </opcode> - <opcode id="456c" name="OP_ItemPacket" updated="01/26/05"> + <opcode id="4bf1" name="OP_ItemPacket" updated="02/15/05"> <comment>old ItemCode</comment> <payload dir="server" typename="itemPacketStruct" sizechecktype="none"/> </opcode> - <opcode id="4665" name="OP_ItemLinkResponse" updated="01/26/05"> + <opcode id="103d" name="OP_ItemLinkResponse" updated="02/15/05"> <comment>old ItemInfoCode</comment> <payload dir="server" typename="itemInfoStruct" sizechecktype="none"/> <payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/> </opcode> - <opcode id="4636" name="OP_Sneak" updated="01/26/05"> + <opcode id="0674" name="OP_Sneak" updated="02/15/05"> <comment>Clicked sneak</comment> </opcode> - <opcode id="470c" name="OP_ClientReady" updated="01/26/05"> + <opcode id="05b1" name="OP_ClientReady" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="477a" name="OP_ZoneChange" updated="01/26/05"> + <opcode id="5bda" name="OP_ZoneChange" updated="02/15/05"> <comment>old ZoneChangeCode</comment> <payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/> </opcode> - <opcode id="486d" name="OP_SendZonePoints" updated="01/26/05"> + <opcode id="2f76" name="OP_SendZonePoints" updated="02/15/05"> <comment>Coords in a zone that will port you to another zone</comment> <payload dir="server" typename="zonePointsStruct" sizechecktype="none"/> </opcode> - <opcode id="4963" name="OP_MemorizeSpell" updated="01/26/05"> + <opcode id="1d38" name="OP_MemorizeSpell" updated="02/15/05"> <comment>old MemSpellCode</comment> <payload dir="both" typename="memSpellStruct" sizechecktype="match"/> </opcode> - <opcode id="4a35" name="OP_CancelInvite" updated="01/26/05"> + <opcode id="3357" name="OP_CancelInvite" updated="02/15/05"> <payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/> <comment>Declining to join a group</comment> </opcode> - <opcode id="4c5a" name="OP_ItemLinkClick" updated="01/26/05"> + <opcode id="52b5" name="OP_ItemLinkClick" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="4d26" name="OP_SwapSpell" updated="01/26/05"> + <opcode id="355a" name="OP_SwapSpell" updated="02/15/05"> <comment>old TradeSpellBookSlotsCode</comment> <payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/> </opcode> - <opcode id="4d59" name="OP_NewZone" updated="01/26/05"> + <opcode id="4785" name="OP_NewZone" updated="02/15/05"> <comment>old NewZoneCode</comment> <payload dir="server" typename="newZoneStruct" sizechecktype="match"/> </opcode> - <opcode id="4e48" name="OP_Forage" updated="01/26/05"> + <opcode id="76f7" name="OP_Forage" updated="02/15/05"> <comment>old ForageCode</comment> </opcode> - <opcode id="4f22" name="OP_ConsentResponse" updated="01/26/05"> + <opcode id="4c39" name="OP_ConsentResponse" updated="02/15/05"> <comment>Server replying with consent information after /consent</comment> <payload dir="server" typename="consentResponseStruct" sizechecktype="match"/> </opcode> - <opcode id="4fc1" name="OP_BazaarSearch" updated="01/26/05"> + <opcode id="5363" name="OP_BazaarSearch" updated="02/15/05"> <payload dir="client" typename="bazaarSearchQueryStruct" sizechecktype="none"/> <payload dir="server" typename="bazaarSearchResponseStruct" sizechecktype="modulus"/> <payload dir="server" typename="utf8" sizechecktype="none"/> <comment>Bazaar search tool</comment> </opcode> - <opcode id="5258" name="OP_NewSpawn" updated="01/26/05"> + <opcode id="0ff9" name="OP_NewSpawn" updated="02/15/05"> <comment>old NewSpawnCode</comment> <payload dir="server" typename="spawnStruct" sizechecktype="match"/> </opcode> - <opcode id="52a9" name="OP_WearChange" implicitlen="9" updated="01/26/05"> + <opcode id="656e" name="OP_WearChange" implicitlen="9" updated="02/15/05"> <comment>old SpawnUpdateCode</comment> <payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="54be" name="OP_Action" implicitlen="31" updated="01/26/05"> + <opcode id="428f" name="OP_Action" implicitlen="31" updated="02/15/05"> <comment></comment> <payload dir="both" typename="actionStruct" sizechecktype="match"/> </opcode> - <opcode id="54f2" name="OP_InitialHPUpdate" implicitlen="6" updated="01/26/05"> + <opcode id="4368" name="OP_InitialHPUpdate" implicitlen="6" updated="02/15/05"> <comment>First NpcHpUpdateCode Update HP % of a PC or NPC, subsequence in this zone will be OP_HPUpdate</comment> <payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="5622" name="OP_SpecialMesg" updated="01/26/05"> + <opcode id="1095" name="OP_SpecialMesg" updated="02/15/05"> <comment>Communicate textual info to client</comment> <payload dir="server" typename="specialMessageStruct" sizechecktype="none"/> </opcode> - <opcode id="5698" name="OP_TargetMouse" updated="01/26/05"> + <opcode id="3dd0" name="OP_TargetMouse" updated="02/15/05"> <comment>Targeting a person - old ClientTargetCode</comment> <payload dir="both" typename="clientTargetStruct" sizechecktype="match"/> </opcode> - <opcode id="56d3" name="OP_TradeRequest" updated="01/26/05"> + <opcode id="76d7" name="OP_TradeRequest" updated="02/15/05"> <comment>Client request trade session</comment> </opcode> - <opcode id="57a2" name="OP_Bazaar" updated="01/26/05"> + <opcode id="1e0b" name="OP_Bazaar" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="57e4" name="OP_SpawnDoor" updated="01/26/05"> + <opcode id="5339" name="OP_SpawnDoor" updated="02/15/05"> <comment>old DoorSpawnsCode</comment> <payload dir="server" typename="doorStruct" sizechecktype="modulus"/> </opcode> - <opcode id="58c9" name="OP_LeaveBoat" updated="01/26/05"> + <opcode id="2f6d" name="OP_LeaveBoat" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="58d8" name="OP_Weather" updated="01/26/05"> + <opcode id="7eae" name="OP_Weather" updated="02/15/05"> <comment>old WeatherCode</comment> </opcode> - <opcode id="59ea" name="OP_PlayerProfile" updated="01/26/05"> + <opcode id="2fee" name="OP_PlayerProfile" updated="02/15/05"> <comment>old CharProfileCode</comment> <payload dir="server" typename="charProfileStruct" sizechecktype="match"/> </opcode> - <opcode id="5b91" name="OP_LFPGetMatchesRequest" updated="01/26/05"> + <opcode id="3942" name="OP_LFPGetMatchesRequest" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="5d30" name="OP_FindResponse" updated="01/26/05"> + <opcode id="09f7" name="OP_FindResponse" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="5d87" name="OP_RaidInvite" updated="01/26/05"> + <opcode id="67a2" name="OP_RaidInvite" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="5f20" name="OP_Illusion" updated="01/26/05"> + <opcode id="0769" name="OP_Illusion" updated="02/15/05"> <comment>old IllusionCode</comment> <payload dir="both" typename="uint8_t" sizechecktype="none"/> </opcode> - <opcode id="6051" name="OP_AckPacket" updated="01/26/05"> + <opcode id="1ea9" name="OP_AckPacket" updated="02/15/05"> <comment>Appears to be generic ack at the presentation level</comment> </opcode> - <opcode id="6595" name="OP_TraderBuy" updated="01/26/05"> + <opcode id="6b2b" name="OP_TraderBuy" updated="02/15/05"> <comment>buy from a trader in bazaar</comment> </opcode> - <opcode id="662d" name="OP_InspectAnswer" updated="01/26/05"> + <opcode id="1288" name="OP_InspectAnswer" updated="02/15/05"> <comment>old InspectDataCode</comment> <payload dir="both" typename="inspectDataStruct" sizechecktype="match"/> </opcode> - <opcode id="66ee" name="OP_GMKill" updated="01/26/05"> + <opcode id="51fb" name="OP_GMKill" updated="02/15/05"> <comment>GM /kill - Insta kill mob/pc</comment> </opcode> - <opcode id="68b6" name="OP_MoneyOnCorpse" updated="01/26/05"> + <opcode id="20e1" name="OP_MoneyOnCorpse" updated="02/15/05"> <comment>old MoneyOnCorpseCode</comment> <payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/> </opcode> - <opcode id="695b" name="OP_ClickDoor" updated="01/26/05"> + <opcode id="4362" name="OP_ClickDoor" updated="02/15/05"> <comment>old DoorOpenCode</comment> <payload dir="both" typename="uint8_t" sizechecktype="none"/> </opcode> - <opcode id="6996" name="OP_GuildPublicNote" updated="01/26/05"> + <opcode id="6b81" name="OP_GuildPublicNote" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="6ac6" name="OP_LootRequest" updated="01/26/05"> + <opcode id="363a" name="OP_LootRequest" updated="02/15/05"> <comment>old cLootCorpseCode</comment> </opcode> - <opcode id="6ad1" name="OP_YellForHelp" updated="01/26/05"> + <opcode id="4196" name="OP_YellForHelp" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="6c15" name="OP_ManaChange" implicitlen="16" updated="01/26/05"> + <opcode id="1281" name="OP_ManaChange" implicitlen="16" updated="02/15/05"> <comment></comment> <payload dir="both" typename="manaDecrementStruct" sizechecktype="match"/> </opcode> - <opcode id="6d53" name="OP_ShopPlayerBuy" updated="01/26/05"> + <opcode id="4ee6" name="OP_ShopPlayerBuy" updated="02/15/05"> <comment>old BuyItemCode</comment> </opcode> - <opcode id="6d79" name="OP_ConsentDeny" updated="01/26/05"> + <opcode id="68d0" name="OP_ConsentDeny" updated="02/15/05"> <comment>/deny someone</comment> <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/> </opcode> - <opcode id="6d92" name="OP_LFPCommand" updated="01/26/05"> + <opcode id="390a" name="OP_LFPCommand" updated="02/15/05"> <comment>looking for players</comment> </opcode> - <opcode id="6ee0" name="OP_TradeCoins" updated="01/26/05"> + <opcode id="32af" name="OP_TradeCoins" updated="02/15/05"> <comment>Coins put in trade window</comment> </opcode> - <opcode id="6ee1" name="OP_RandomReply" updated="01/26/05"> + <opcode id="74bc" name="OP_RandomReply" updated="02/15/05"> <comment>old RandomCode</comment> <payload dir="server" typename="randomStruct" sizechecktype="match"/> </opcode> - <opcode id="6f2f" name="OP_DenyResponse" updated="01/26/05"> + <opcode id="53f3" name="OP_DenyResponse" updated="02/15/05"> <comment>Server replying with deny information after /deny</comment> <payload dir="server" typename="consentResponseStruct" sizechecktype="match"/> </opcode> - <opcode id="6f3c" name="OP_GroupUpdate" updated="01/26/05"> - <payload dir="server" typename="groupUpdateStruct" sizechecktype="match"/> + <opcode id="6980" name="OP_GroupUpdate" updated="02/15/05"> <payload dir="server" typename="groupFullUpdateStruct" sizechecktype="match"/> + <payload dir="server" typename="groupUpdateStruct" sizechecktype="match"/> <comment></comment> </opcode> - <opcode id="6f60" name="OP_ConsiderCorpse" updated="01/26/05"> + <opcode id="4549" name="OP_ConsiderCorpse" updated="02/15/05"> <comment>old cConCorpseCode</comment> </opcode> - <opcode id="700b" name="OP_TradeAcceptClick" updated="01/26/05"> + <opcode id="1112" name="OP_TradeAcceptClick" updated="02/15/05"> <comment>One side clicks Accept on the trade</comment> </opcode> - <opcode id="71b5" name="OP_TimeOfDay" updated="01/26/05"> + <opcode id="26fd" name="OP_TimeOfDay" updated="02/15/05"> <comment>old TimeOfDayCode</comment> <payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/> </opcode> - <opcode id="71f2" name="OP_ConfirmDelete" updated="01/26/05"> + <opcode id="0832" name="OP_ConfirmDelete" updated="02/15/05"> <comment>Client sends this to server to confirm op_deletespawn</comment> </opcode> - <opcode id="7032" name="OP_MobHealth" implicitlen="3" updated="01/26/05"> + <opcode id="3a04" name="OP_MobHealth" implicitlen="3" updated="02/15/05"> <comment>health sent when a player clicks on the mob</comment> </opcode> - <opcode id="7343" name="OP_SkillUpdate" updated="01/26/05"> + <opcode id="32e9" name="OP_SkillUpdate" updated="02/15/05"> <comment>old SkillIncCode</comment> <payload dir="server" typename="skillIncStruct" sizechecktype="match"/> </opcode> - <opcode id="7357" name="OP_RandomReq" updated="01/26/05"> + <opcode id="6464" name="OP_RandomReq" updated="02/15/05"> <comment>old RandomReqCode</comment> <payload dir="client" typename="randomReqStruct" sizechecktype="match"/> </opcode> - <opcode id="74ab" name="OP_CastSpell" updated="01/26/05"> + <opcode id="1022" name="OP_CastSpell" updated="02/15/05"> <comment>old StartCastCode</comment> <payload dir="both" typename="startCastStruct" sizechecktype="match"/> </opcode> - <opcode id="744f" name="OP_ClientUpdate" implicitlen="18" updated="01/26/05"> + <opcode id="7295" name="OP_ClientUpdate" implicitlen="18" updated="02/15/05"> <comment>old PlayerPosCode</comment> <payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/> <payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/> </opcode> - <opcode id="7455" name="OP_Report" updated="01/26/05"> + <opcode id="076f" name="OP_Report" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="74b2" name="OP_GroundSpawn" updated="01/26/05"> + <opcode id="7b8f" name="OP_GroundSpawn" updated="02/15/05"> <comment>old MakeDropCode</comment> <payload dir="server" typename="makeDropStruct" sizechecktype="match"/> </opcode> - <opcode id="74b5" name="OP_TargetCommand" updated="01/26/05"> + <opcode id="6ec2" name="OP_TargetCommand" updated="02/15/05"> <comment>Target user</comment> </opcode> - <opcode id="758e" name="OP_LFPGetMatchesResponse" updated="01/26/05"> + <opcode id="11d4" name="OP_LFPGetMatchesResponse" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="76d0" name="OP_Jump" updated="01/26/05"> + <opcode id="4231" name="OP_Jump" updated="02/15/05"> <comment>old cJumpCode?</comment> </opcode> - <opcode id="7745" name="OP_ExpUpdate" updated="01/26/05"> + <opcode id="240b" name="OP_ExpUpdate" updated="02/15/05"> <comment>old ExpUpdateCode</comment> <payload dir="server" typename="expUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="7847" name="OP_GMFind" updated="01/26/05"> + <opcode id="708a" name="OP_GMFind" updated="02/15/05"> <comment>GM /find - ?</comment> </opcode> <opcode id="790e" name="OP_GMKick" updated="01/26/05"> <comment>GM /kick - Boot player</comment> </opcode> - <opcode id="7a3d" name="OP_AAAction" updated="01/26/05"> + <opcode id="2ca6" name="OP_AAAction" updated="02/15/05"> <comment>Used for changing percent, buying? and activating skills</comment> </opcode> - <opcode id="7abe" name="OP_Death" updated="01/26/05"> + <opcode id="4211" name="OP_Death" updated="02/15/05"> <comment>old NewCorpseCode</comment> <payload dir="server" typename="newCorpseStruct" sizechecktype="match"/> </opcode> - <opcode id="7bef" name="OP_GMLastName" updated="01/26/05"> + <opcode id="7ae7" name="OP_GMLastName" updated="02/15/05"> <comment>GM /lastname - Change user lastname</comment> </opcode> - <opcode id="7c81" name="OP_TradeSkillCombine" updated="01/26/05"> + <opcode id="28af" name="OP_TradeSkillCombine" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="7dea" name="OP_InitialMobHealth" implicitlen="3" updated="01/26/05"> + <opcode id="2bf3" name="OP_InitialMobHealth" implicitlen="3" updated="02/15/05"> <comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment> </opcode> - <opcode id="7e46" name="OP_LFGResponse" updated="01/26/04"> + <opcode id="7328" name="OP_LFGResponse" updated="02/15/05"> <comment></comment> </opcode> - <opcode id="b61f" name="OP_LFGGetMatchesResponse" updated="01/26/05"> + <opcode id="0ef1" name="OP_LFGGetMatchesResponse" updated="02/15/05"> + <comment></comment> + </opcode> + <opcode id="65e3" name="OP_Mend" updated="02/15/05"> + <comment></comment> + </opcode> + <opcode id="5e1d" name="OP_MendHPUpdate" updated="02/15/05"> <comment></comment> </opcode> + <opcode id="2091" name="OP_Feedback" updated="02/15/05"> + <comment>/feedback</comment> + </opcode> </seqopcodes> |
|
From: Bonkers D B. <bon...@us...> - 2005-02-21 05:56:52
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30260 Modified Files: Tag: pre_5_0_beta ChangeLog configure.in Log Message: Support packet compression, new opcodes, and structures Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -u -d -r1.1.2.5 -r1.1.2.6 --- ChangeLog 9 Feb 2005 07:07:23 -0000 1.1.2.5 +++ ChangeLog 21 Feb 2005 05:56:12 -0000 1.1.2.6 @@ -1,5 +1,18 @@ Version: $Id$ $Name$ +BBobcat (02/20/05) +----------------------- + ++ Updated version to 5.0.0.18 ++ Included Purple's "-purple2" patch ++ + Deal with a now compressed protocol ++ + Increased buff slots (25) ++ + Updated world and game opcodes ++ + Updated structures ++ + Logging and console message clean up ++ + Memory cleanups ++ Included uRit1u2CBBA= zones.h update (For DoN zones) + purple (02/08/05) ----------------------- + Updated version to 5.0.0.17 Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.18 retrieving revision 1.49.4.19 diff -u -d -r1.49.4.18 -r1.49.4.19 --- configure.in 9 Feb 2005 07:07:32 -0000 1.49.4.18 +++ configure.in 21 Feb 2005 05:56:12 -0000 1.49.4.19 @@ -2,7 +2,7 @@ dnl $Id$ $Name$ AC_PREREQ(2.53) -AC_INIT(showeq, 5.0.0.17) +AC_INIT(showeq, 5.0.0.18) AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM |
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30260/src Modified Files: Tag: pre_5_0_beta category.cpp everquest.h group.cpp group.h interface.cpp main.cpp mapcore.cpp messageshell.cpp packet.cpp packetcapture.cpp packetcapture.h packetformat.cpp packetformat.h packetfragment.cpp packetfragment.h packetinfo.cpp packetlog.cpp packetstream.cpp player.cpp spawnshell.cpp spellshell.cpp spellshell.h xmlpreferences.cpp zonemgr.cpp zonemgr.h zones.h Log Message: Support packet compression, new opcodes, and structures Index: main.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/main.cpp,v retrieving revision 1.33.6.5 retrieving revision 1.33.6.6 diff -u -d -r1.33.6.5 -r1.33.6.6 --- main.cpp 24 Sep 2004 04:25:53 -0000 1.33.6.5 +++ main.cpp 21 Feb 2005 05:56:14 -0000 1.33.6.6 @@ -4,7 +4,7 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ * - * Copyright 2000-2004 by the respective ShowEQ Developers + * Copyright 2000-2005 by the respective ShowEQ Developers */ /* main.cpp is the entrypoint to ShowEQ, it parses the commandline @@ -702,7 +702,7 @@ { printf ("ShowEQ %s, released under the GPL.\n", VERSION); printf (" SINS 0.5, released under the GPL.\n"); - printf ("All ShowEQ source code is Copyright (C) 2000-2004 by the respective ShowEQ Developers\n"); + printf ("All ShowEQ source code is Copyright (C) 2000-2005 by the respective ShowEQ Developers\n"); printf ("ShowEQ comes with NO WARRANTY.\n\n"); Index: category.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/category.cpp,v retrieving revision 1.8.16.2 retrieving revision 1.8.16.3 diff -u -d -r1.8.16.2 -r1.8.16.3 --- category.cpp 7 Nov 2004 23:09:56 -0000 1.8.16.2 +++ category.cpp 21 Feb 2005 05:56:13 -0000 1.8.16.3 @@ -161,6 +161,18 @@ CategoryMgr::~CategoryMgr() { + // Clear the categories list. Since AutoDelete is off. This is manual. + if (m_categories.first()) + { + Category* deleteMe; + + while ((deleteMe = m_categories.current())) + { + m_categories.remove(); + + delete deleteMe; + } + } } const CategoryList CategoryMgr::findCategories(const QString& filterString, @@ -318,9 +330,9 @@ //seqDebug("%d: Got '%s' '%s' '%s'", i, name, filter, color); if (!name.isEmpty() && !filter.isEmpty()) { - Category* newcat = new Category(name, filter, filterout, color); + Category* newcat = new Category(name, filter, filterout, color); - m_categories.append(newcat); + m_categories.append(newcat); } } } Index: group.h =================================================================== RCS file: /cvsroot/seq/showeq/src/group.h,v retrieving revision 1.4.16.2 retrieving revision 1.4.16.3 diff -u -d -r1.4.16.2 -r1.4.16.3 --- group.h 13 Dec 2003 00:49:42 -0000 1.4.16.2 +++ group.h 21 Feb 2005 05:56:13 -0000 1.4.16.3 @@ -28,6 +28,7 @@ GroupMgr(SpawnShell* spawnShell, Player* player, QObject* parent = 0, const char* name = 0); + virtual ~GroupMgr(); const Spawn* memberByID( uint16_t id ); const Spawn* memberByName( const QString& name ); Index: packetstream.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetstream.cpp,v retrieving revision 1.1.6.6 retrieving revision 1.1.6.7 diff -u -d -r1.1.6.6 -r1.1.6.7 --- packetstream.cpp 9 Feb 2005 07:07:38 -0000 1.1.6.6 +++ packetstream.cpp 21 Feb 2005 05:56:14 -0000 1.1.6.7 @@ -14,8 +14,6 @@ #include "packetinfo.h" #include "diagnosticmessages.h" -#include <zlib.h> - #include <stdio.h> //---------------------------------------------------------------------- @@ -23,7 +21,7 @@ // The following defines are used to diagnose packet handling behavior // this define is used to diagnose packet processing (in processPacket mostly) -//#define PACKET_PROCESS_DIAG 3 +//#define PACKET_PROCESS_DIAG 2 // this define is used to diagnose cache handling (in processPacket mostly) //#define PACKET_CACHE_DIAG 3 @@ -31,8 +29,11 @@ // this define is used to debug packet info (in dispatchPacket mostly) //#define PACKET_INFO_DIAG 3 +// this define is used to debug packet decode info (decompression) +//#define PACKET_DECODE_DIAG 3 + // this define is used to debug sessions (request, response, disconnect) -//#define PACKET_SESSION_DIAG 2 +//#define PACKET_SESSION_DIAG 3 // diagnose structure size changes #define PACKET_PAYLOAD_SIZE_DIAG 1 @@ -68,7 +69,9 @@ m_arqSeqGiveUp(arqSeqGiveUp), m_arqSeqFound(false), m_fragment(streamid), + m_sessionId(0), m_sessionKey(0), + m_maxLength(0), m_decodeKey(0), m_validKey(true) { @@ -208,7 +211,9 @@ else { // replacing an existing entry, make sure the new data is valid +#ifdef APPLY_CRC_CHECK if (! packet.hasCRC() || calculateCRC(packet) == packet.crc()) +#endif { #ifdef PACKET_PROCESS_DIAG seqDebug("SEQ: Update arq (%04x) stream %d in cache", serverArqSeq, m_streamid); @@ -216,13 +221,11 @@ *it->second = packet; } - -#ifdef PACKET_PROCESS_DIAG +#if defined(PACKET_PROCESS_DIAG) && defined(APPLY_CRC_CHECK) else seqDebug("SEQ: Not Updating arq (%04x) stream %d into cache, CRC error!", serverArqSeq, m_streamid); #endif - } #ifdef PACKET_CACHE_DIAG @@ -295,45 +298,69 @@ m_arqSeqExp, EQStreamStr[m_streamid], m_cache.size()); #endif -#if defined (PACKET_CACHE_DIAG) && (PACKET_CACHE_DIAG > 2) - // validate the packet against a memory corruption - if (!packet->isValid()) + // validate the packet with a crc check. If the packet is for an old + // session, we probably shouldn't be using it! +#ifdef APPLY_CRC_CHECK + if (packet->hasCRC() && packet->crc() != calculateCRC(*packet)) { +#if defined (PACKET_CACHE_DIAG) // Something's screwed up - seqDebug("SEQ: INVALID PACKET: Bad CRC in packet in stream %s cache with arq %04x!", - EQStreamStr[m_streamid], packet->arqSeq()); - } + seqDebug("SEQ: INVALID PACKET: Bad CRC in packet in stream %s cache with arq %04x! Droping it, but leaving expected seq as %04x", + EQStreamStr[m_streamid], packet->arqSeq(), m_arqSeqExp); #endif - - + + // Need to drop from the cache + eraseIt = it; + + // increment the current position iterator + it++; + + // erase the packet from the cache + m_cache.erase(eraseIt); + emit cacheSize(m_cache.size(), (int)m_streamid); + + #ifdef PACKET_CACHE_DIAG + seqDebug("SEQ: REMOVING arq %04x from stream %s cache, cache count %04d", + packet->arqSeq(), EQStreamStr[m_streamid], m_cache.size()); + #endif + // delete the packet + delete packet; + + // No sense looping some more. + break; + } + else +#endif /* APPLY_CRC_CHECK */ + { #if defined (PACKET_CACHE_DIAG) && (PACKET_CACHE_DIAG > 2) - seqDebug("SEQ: Found next arq in stream %s cache, incrementing arq seq, %04x", - EQStreamStr[m_streamid], packet->arqSeq()); + seqDebug("SEQ: Found next arq in stream %s cache, incrementing arq seq, %04x", + EQStreamStr[m_streamid], packet->arqSeq()); #endif - // Process the packet since it's next in the sequence and was just - // received out of order - processPacket(*packet, packet->isSubpacket()); - - // Need to drop from the cache - eraseIt = it; - - // increment the current position iterator - it++; - - // erase the packet from the cache - m_cache.erase(eraseIt); - emit cacheSize(m_cache.size(), (int)m_streamid); + // Process the packet since it's next in the sequence and was just + // received out of order + processPacket(*packet, packet->isSubpacket()); + + // Need to drop from the cache + eraseIt = it; + + // increment the current position iterator + it++; + + // erase the packet from the cache + m_cache.erase(eraseIt); + emit cacheSize(m_cache.size(), (int)m_streamid); #ifdef PACKET_CACHE_DIAG - seqDebug("SEQ: REMOVING arq %04x from stream %s cache, cache count %04d", - packet->arqSeq(), EQStreamStr[m_streamid], m_cache.size()); + seqDebug("SEQ: REMOVING arq %04x from stream %s cache, cache count %04d", + packet->arqSeq(), EQStreamStr[m_streamid], m_cache.size()); #endif - // delete the packet - delete packet; - - if (m_arqSeqExp == 0) - it = m_cache.begin(); + // delete the packet + delete packet; + + if (m_arqSeqExp == 0) + it = m_cache.begin(); + } } #ifdef PACKET_CACHE_DIAG @@ -446,7 +473,7 @@ packet.getNetOpCode() != OP_SessionResponse && ! m_sessionKey) { -#if (defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1)) || defined(PACKET_SESSION_DIAG) +#if (defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1)) || (defined(PACKET_SESSION_DIAG) && PACKET_SESSION_DIAG > 1) seqDebug("discarding packet %s:%d ==>%s:%d netopcode=%04x size=%d. Session not initialized. Need to zone to start picking up packets. Session tracking %s.", (const char*)packet.getIPv4SourceA(), packet.getSourcePort(), (const char*)packet.getIPv4DestA(), packet.getDestPort(), @@ -457,7 +484,25 @@ return; } - emit rawPacket(packet.payload(), packet.payloadLength(), m_dir, + // Decode the packet first + if (! packet.decode(m_maxLength)) + { + seqWarn("Packet decode failed for stream %s (%d), op %04x, flags %02x packet dropped.", + EQStreamStr[m_streamid], m_streamid, packet.getNetOpCode(), + packet.getFlags()); + return; + } +#ifdef PACKET_DECODE_DIAG + else if (packet.hasFlags()) + { + seqDebug("Successful decode for stream %s (%d), op %04x, flags %02x.", + EQStreamStr[m_streamid], m_streamid, packet.getNetOpCode(), + packet.getFlags()); + } +#endif + + // Raw packet + emit rawPacket(packet.rawPayload(), packet.rawPayloadLength(), m_dir, packet.getNetOpCode()); processPacket(packet, false); // false = isn't subpacket @@ -483,7 +528,7 @@ // This is an app-opcode directly on the wire with no wrapping protocol // information. Weird, but whatever gets the stream read, right? dispatchPacket(packet.payload(), packet.payloadLength(), - packet.getNetOpCode(), m_opcodeDB.find(packet.getNetOpCode())); + packet.getNetOpCode(), m_opcodeDB.find(packet.getNetOpCode())); return; } @@ -494,7 +539,7 @@ { #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 2) seqDebug("EQPacket: found combined packet (net op: %04x, size %d) on stream %s (%d). Unrolling.", - packet.getNetOpCode(), packet.payloadLength(), + packet.getNetOpCode(), packet.payloadLength(), EQStreamStr[m_streamid], m_streamid); #endif @@ -550,7 +595,7 @@ { #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 2) seqDebug("EQPacket: found appcombined packet (net op: %04x, size %d) on stream %s (%d). Unrolling.", - packet.getNetOpCode(), packet.payloadLength(), + packet.getNetOpCode(), packet.payloadLength(), EQStreamStr[m_streamid], m_streamid); #endif @@ -617,7 +662,7 @@ case OP_Packet: { // Normal unfragmented sequenced packet. - uint16_t seq = eqntohuint16(packet.payload()); + uint16_t seq = packet.arqSeq(); emit seqReceive(seq, (int)m_streamid); if (seq >= m_arqSeqExp) @@ -630,27 +675,27 @@ emit seqExpect(m_arqSeqExp, (int)m_streamid); // OpCode next. Net order for op codes. - uint16_t subOpCode = *(uint16_t*)(&packet.payload()[2]); + uint16_t subOpCode = *(uint16_t*)(packet.payload()); #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) seqDebug("SEQ: Found next sequence number in data stream %s (%d), incrementing expected seq, %04x (op code %04x, sub opcode %04x)", - EQStreamStr[m_streamid], m_streamid, seq, packet.getNetOpCode(), - subOpCode); + EQStreamStr[m_streamid], m_streamid, seq, + packet.getNetOpCode(), subOpCode); #endif // App opcode or net opcode? if (IS_NET_OPCODE(subOpCode)) { // Net opcode. false = no copy. true = subpacket. - EQProtocolPacket spacket(&packet.payload()[2], - packet.payloadLength()-2, false, true); + EQProtocolPacket spacket(packet.payload(), + packet.payloadLength(), false, true); processPacket(spacket, true); } else { - // App opcode. Dispatch, skipping seq and opcode. - dispatchPacket(&packet.payload()[4], packet.payloadLength()-4, + // App opcode. Dispatch, skipping opcode. + dispatchPacket(&packet.payload()[2], packet.payloadLength()-2, subOpCode, m_opcodeDB.find(subOpCode)); } } @@ -668,8 +713,11 @@ else { // Past packet outside the cut off - seqWarn("SEQ: received sequenced %spacket outside the bounds of reasonableness. Expecting seq=%04x got seq=%04x, reasonableness being %d in the future.", - (isSubpacket ? "sub" : ""), m_arqSeqExp, seq, arqSeqWrapCutoff); + seqWarn("SEQ: received sequenced %spacket outside the bounds of reasonableness on stream %s (%d) netopcode=%04x size=%d. Expecting seq=%04x got seq=%04x, reasonableness being %d in the future.", + (isSubpacket ? "sub" : ""), + EQStreamStr[m_streamid], m_streamid, + packet.getNetOpCode(), packet.payloadLength(), + m_arqSeqExp, seq, arqSeqWrapCutoff); } } else @@ -678,7 +726,7 @@ #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) seqDebug("discarding %spacket netopcode=%04x seq=%d size=%d on stream %s (%d). Packet is in the past. We've moved on.", (isSubpacket ? "sub" : ""), - packet.getNetOpCode(), seq, packet.payloadLength(), + packet.getNetOpCode(), seq, packet.payloadLength(), EQStreamStr[m_streamid], m_streamid); #endif } @@ -687,23 +735,13 @@ case OP_Oversized: { // Fragmented sequenced data packet. - uint16_t seq = eqntohuint16(packet.payload()); + uint16_t seq = packet.arqSeq(); emit seqReceive(seq, (int)m_streamid); if (seq >= m_arqSeqExp) { // Future packet? - if (seq > m_arqSeqExp) - { - // Yeah, future packet. Push it on the packet cache. -#if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("SEQ: out of order sequence %04x stream %s (%d) expecting %04x, sending to cache, %04d", - seq, EQStreamStr[m_streamid], m_streamid, - m_arqSeqExp, m_cache.size()); -#endif - setCache(seq, packet); - } - else + if (seq == m_arqSeqExp) { // Expected packet. m_arqSeqExp++; @@ -734,14 +772,34 @@ m_fragment.reset(); } } + else if (seq < (uint32_t(m_arqSeqExp + arqSeqWrapCutoff)) || + seq < (int32_t(m_arqSeqExp - arqSeqWrapCutoff))) + { + // Yeah, future packet. Push it on the packet cache. +#ifdef PACKET_PROCESS_DIAG + seqDebug("SEQ: out of order sequence %04x stream %s (%d) expecting %04x, sending to cache, %04d", + seq, EQStreamStr[m_streamid], m_streamid, + m_arqSeqExp, m_cache.size()); +#endif + setCache(seq, packet); + } + else + { + // Past packet outside the cut off + seqWarn("SEQ: received sequenced %spacket outside the bounds of reasonableness on stream %s (%d) netopcode=%04x size=%d. Expecting seq=%04x got seq=%04x, reasonableness being %d in the future.", + (isSubpacket ? "sub" : ""), + EQStreamStr[m_streamid], m_streamid, + packet.getNetOpCode(), packet.payloadLength(), + m_arqSeqExp, seq, arqSeqWrapCutoff); + } } else { // Spooky packet from the past. Boo! #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("discarding packet netopcode=%04x seq=%d size=%d on stream %s (%d). Packet is in the past. We've moved on.", - packet.getNetOpCode(), seq, packet.payloadLength(), - EQStreamStr[m_streamid], m_streamid); + seqDebug("discarding packet netopcode=%04x seq=%04x size=%d on stream %s (%d). Packet is in the past. We've moved on, expecting %04x.", + packet.getNetOpCode(), seq, packet.payloadLength(), + EQStreamStr[m_streamid], m_streamid, m_arqSeqExp); #endif } } @@ -757,25 +815,32 @@ #endif // Pull off session request information - SessionRequestStruct* request = - (SessionRequestStruct*) packet.payload(); + SessionRequestStruct* request = (SessionRequestStruct*) packet.payload(); m_sessionId = eqntohuint32((uint8_t*)&(request->sessionId)); m_maxLength = eqntohuint32((uint8_t*)&(request->maxLength)); #if defined(PACKET_SESSION_DIAG) - seqDebug("EQPacket: SessionRequest sessionId %u maxLength %u, awaiting key for stream %s (%d)", - m_sessionId, - m_maxLength, - EQStreamStr[m_streamid], - m_streamid); + seqDebug("EQPacket: SessionRequest %s:%u->%s:%u, sessionId %u maxLength %u, awaiting key for stream %s (%d)", + ((EQUDPIPPacketFormat&) packet).getIPv4SourceA().ascii(), + ((EQUDPIPPacketFormat&) packet).getSourcePort(), + ((EQUDPIPPacketFormat&) packet).getIPv4DestA().ascii(), + ((EQUDPIPPacketFormat&) packet).getDestPort(), + m_sessionId, m_maxLength, EQStreamStr[m_streamid], m_streamid); #endif #if defined(PACKET_SESSION_DIAG) && (PACKET_SESSION_DIAG > 1) seqDebug("EQPacket: SessionRequest contents: unknown %u, sessionId %u, maxLength %u", - eqntohuint32((uint8_t*)&(request->unknown0000)), - m_sessionId, - m_maxLength); + eqntohuint32((uint8_t*)&(request->unknown0000)), + m_sessionId, m_maxLength); +#endif + +#if defined(PACKET_SESSION_DIAG) && (PACKET_SESSION_DIAG > 2) + seqDebug("EQPacket: Raw SessionRequest: %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x", + packet.payload()[0], packet.payload()[1], packet.payload()[2], + packet.payload()[3], packet.payload()[4], packet.payload()[5], + packet.payload()[6], packet.payload()[7], packet.payload()[8], + packet.payload()[9], packet.payload()[10], packet.payload()[11]); #endif m_arqSeqExp = 0; @@ -786,7 +851,11 @@ { // Session response from server #if defined(PACKET_PROCESS_DIAG) || defined(PACKET_SESSION_DIAG) - seqDebug("EQPacket: SessionResponse found, resetting expected seq, stream %s (%d) (session tracking %s)", + seqDebug("EQPacket: SessionResponse found %s:%u->%s:%u, resetting expected seq, stream %s (%d) (session tracking %s)", + ((EQUDPIPPacketFormat&) packet).getIPv4SourceA().ascii(), + ((EQUDPIPPacketFormat&) packet).getSourcePort(), + ((EQUDPIPPacketFormat&) packet).getIPv4DestA().ascii(), + ((EQUDPIPPacketFormat&) packet).getDestPort(), EQStreamStr[m_streamid], m_streamid, (m_session_tracking_enabled == 2 ? "locked on" : (m_session_tracking_enabled == 1 ? "enabled" : "disabled"))); @@ -802,23 +871,29 @@ #if defined(PACKET_SESSION_DIAG) seqDebug("EQPacket: SessionResponse sessionId %u maxLength %u, key is %u for stream %s (%d)", - m_sessionId, - m_maxLength, - m_sessionKey, - EQStreamStr[m_streamid], - m_streamid); + m_sessionId, m_maxLength, m_sessionKey, + EQStreamStr[m_streamid], m_streamid); #endif #if defined(PACKET_SESSION_DIAG) && (PACKET_SESSION_DIAG > 1) seqDebug("EQPacket: SessionResponse contents: sessionId %u, key %u, unknown %u, unknown %u, maxLength %u, unknown %u", - m_sessionId, - m_sessionKey, + m_sessionId, m_sessionKey, eqntohuint16((uint8_t*)&(response->unknown0008)), - response->unknown0010, - m_maxLength, + response->unknown0010, m_maxLength, eqntohuint32((uint8_t*) &(response->unknown0015))); #endif +#if defined(PACKET_SESSION_DIAG) && (PACKET_SESSION_DIAG > 2) + seqDebug("EQPacket: Raw SessionResponse: %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x%02x %02x", + packet.payload()[0], packet.payload()[1], packet.payload()[2], + packet.payload()[3], packet.payload()[4], packet.payload()[5], + packet.payload()[6], packet.payload()[7], packet.payload()[8], + packet.payload()[9], packet.payload()[10], packet.payload()[11], + packet.payload()[12], packet.payload()[13], packet.payload()[14], + packet.payload()[15], packet.payload()[16], packet.payload()[17], + packet.payload()[18]); +#endif + // Provide key to corresponding stream from this session/stream emit sessionKey(m_sessionId, m_streamid, m_sessionKey); @@ -854,12 +929,23 @@ case OP_SessionDisconnect: { #if defined(PACKET_PROCESS_DIAG) || defined(PACKET_SESSION_DIAG) - seqDebug("EQPacket: SessionDisconnect found, resetting expected seq, stream %s (%d) (session tracking %s)", + seqDebug("EQPacket: SessionDisconnect found %s:%u->%s:%u, resetting expected seq, stream %s (%d) (session tracking %s)", + ((EQUDPIPPacketFormat&) packet).getIPv4SourceA().ascii(), + ((EQUDPIPPacketFormat&) packet).getSourcePort(), + ((EQUDPIPPacketFormat&) packet).getIPv4DestA().ascii(), + ((EQUDPIPPacketFormat&) packet).getDestPort(), EQStreamStr[m_streamid], m_streamid, (m_session_tracking_enabled == 2 ? "locked on" : (m_session_tracking_enabled == 1 ? "enabled" : "disabled"))); #endif +#if defined(PACKET_SESSION_DIAG) && (PACKET_SESSION_DIAG > 2) + seqDebug("EQPacket: Raw SessionDisconnect: %02x%02x %02x%02x %02x%02x %02x%02x", + packet.payload()[0], packet.payload()[1], packet.payload()[2], + packet.payload()[3], packet.payload()[4], packet.payload()[5], + packet.payload()[6], packet.payload()[7]); +#endif + m_arqSeqExp = 0; // Clear cache @@ -876,11 +962,12 @@ } break; case OP_Ack: - case OP_Resend: + case OP_AckFuture: + case OP_AckAfterDisconnect: { #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 2) seqDebug("EQPacket: no-op on for net opcode %04x seq %04x, stream %s (%d)", - packet.getNetOpCode(), eqntohuint16(packet.payload()), + packet.getNetOpCode(), eqntohuint16(packet.payload()), EQStreamStr[m_streamid], m_streamid); #endif } @@ -926,7 +1013,7 @@ uint16_t EQPacketStream::calculateCRC(EQProtocolPacket& packet) { // CRC is at the end of the raw payload, 2 bytes. - return ::calcCRC16(packet.rawPayload(), packet.rawPayloadLength()-2, + return ::calcCRC16(packet.rawPacket(), packet.rawPacketLength()-2, m_sessionKey); } Index: zonemgr.h =================================================================== RCS file: /cvsroot/seq/showeq/src/zonemgr.h,v retrieving revision 1.4.6.2 retrieving revision 1.4.6.3 diff -u -d -r1.4.6.2 -r1.4.6.3 --- zonemgr.h 12 Feb 2004 00:39:28 -0000 1.4.6.2 +++ zonemgr.h 21 Feb 2005 05:56:31 -0000 1.4.6.3 @@ -35,6 +35,7 @@ public: ZoneMgr(QObject* parent = 0, const char* name =0); + virtual ~ZoneMgr(); QString zoneNameFromID(uint16_t zoneId); QString zoneLongNameFromID(uint16_t zoneId); Index: messageshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messageshell.cpp,v retrieving revision 1.1.4.6 retrieving revision 1.1.4.7 diff -u -d -r1.1.4.6 -r1.1.4.7 --- messageshell.cpp 9 Feb 2005 07:07:37 -0000 1.1.4.6 +++ messageshell.cpp 21 Feb 2005 05:56:14 -0000 1.1.4.7 @@ -38,12 +38,12 @@ void MessageShell::channelMessage(const uint8_t* data, size_t, uint8_t dir) { - // avoid client chatter and do nothing if not viewing channel messages - // if (dir == DIR_Client) - // return; - const channelMessageStruct* cmsg = (const channelMessageStruct*)data; + // Tells happen twice *shrug* + if (dir == DIR_Client && cmsg->chanNum == MT_Tell) + return; + QString tempStr; bool target = false; @@ -611,11 +611,38 @@ void MessageShell::groupUpdate(const uint8_t* data, size_t size, uint8_t dir) { + if (size != sizeof(groupUpdateStruct)) + { + // Ignore groupFullUpdateStruct + return; + } const groupUpdateStruct* gmem = (const groupUpdateStruct*)data; QString tempStr; - tempStr.sprintf ("Update: action:%d - %s - %s (unknown: %d)", - gmem->action, gmem->yourname, gmem->membername, - gmem->unknown0132); + + switch (gmem->action) + { + case GUA_Joined : + tempStr.sprintf ("Update: %s has joined the group.", gmem->membername); + break; + case GUA_Left : + tempStr.sprintf ("Update: %s has left the group.", gmem->membername); + break; + case GUA_LastLeft : + tempStr.sprintf ("Update: The group has been disbanded when %s left.", + gmem->membername); + break; + case GUA_MakeLeader : + tempStr.sprintf ("Update: %s is now the leader of the group.", + gmem->membername); + break; + case GUA_Started : + tempStr.sprintf ("Update: %s has formed the group.", gmem->membername); + break; + default : + tempStr.sprintf ("Update: Unknown Update action:%d - %s - %s)", + gmem->action, gmem->yourname, gmem->membername); + } + m_messages->addMessage(MT_Group, tempStr); } @@ -623,7 +650,7 @@ { const groupInviteStruct* gmem = (const groupInviteStruct*)data; QString tempStr; - tempStr.sprintf("Invite: %s invites %s", + tempStr.sprintf("Invite: %s invites %s to join the group", gmem->inviter, gmem->invitee); m_messages->addMessage(MT_Group, tempStr); } @@ -650,8 +677,7 @@ { const groupDisbandStruct* gmem = (const groupDisbandStruct*)data; QString tempStr; - tempStr.sprintf ("Disband: %s - %s", - gmem->membername, gmem->yourname); + tempStr.sprintf ("Disband: %s disbands from the group", gmem->membername); m_messages->addMessage(MT_Group, tempStr); } @@ -701,7 +727,7 @@ m_messages->addMessage(MT_Player, message); int buffnumber; - for (buffnumber=0;buffnumber<20;buffnumber++) + for (buffnumber=0;buffnumber<MAX_BUFFS;buffnumber++) { if (player->buffs[buffnumber].spellid && player->buffs[buffnumber].duration) { @@ -799,6 +825,7 @@ switch (con->level) { case 0: + case 20: msg += " (even)"; break; case 2: Index: zonemgr.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/zonemgr.cpp,v retrieving revision 1.8.6.5 retrieving revision 1.8.6.6 diff -u -d -r1.8.6.5 -r1.8.6.6 --- zonemgr.cpp 7 Nov 2004 23:10:27 -0000 1.8.6.5 +++ zonemgr.cpp 21 Feb 2005 05:56:31 -0000 1.8.6.6 @@ -61,6 +61,12 @@ restoreZoneState(); } +ZoneMgr::~ZoneMgr() +{ + if (m_zonePoints) + delete [] m_zonePoints; +} + struct ZoneNames { const char* shortName; Index: group.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/group.cpp,v retrieving revision 1.6.16.3 retrieving revision 1.6.16.4 diff -u -d -r1.6.16.3 -r1.6.16.4 --- group.cpp 7 Nov 2004 23:10:03 -0000 1.6.16.3 +++ group.cpp 21 Feb 2005 05:56:13 -0000 1.6.16.4 @@ -33,6 +33,14 @@ m_members[i].m_spawn = 0; } +GroupMgr::~GroupMgr() +{ + if (m_members) + { + delete[] m_members; + } +} + void GroupMgr::player(const uint8_t* data) { const charProfileStruct* player = (const charProfileStruct*)data; Index: xmlpreferences.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/xmlpreferences.cpp,v retrieving revision 1.3.16.3 retrieving revision 1.3.16.4 diff -u -d -r1.3.16.3 -r1.3.16.4 --- xmlpreferences.cpp 7 Nov 2004 23:10:27 -0000 1.3.16.3 +++ xmlpreferences.cpp 21 Feb 2005 05:56:31 -0000 1.3.16.4 @@ -54,7 +54,8 @@ // automatically delete removed sections m_userSections.setAutoDelete(true); m_defaultsSections.setAutoDelete(true); - + m_commentSections.setAutoDelete(true); + // load the preferences load(); } Index: packetformat.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetformat.h,v retrieving revision 1.1.6.3 retrieving revision 1.1.6.4 diff -u -d -r1.1.6.3 -r1.1.6.4 --- packetformat.h 9 Feb 2005 07:07:38 -0000 1.1.6.3 +++ packetformat.h 21 Feb 2005 05:56:14 -0000 1.1.6.4 @@ -55,14 +55,23 @@ static const uint16_t OP_SessionStatResponse= 0x0800; static const uint16_t OP_Packet = 0x0900; static const uint16_t OP_Oversized = 0x0d00; -static const uint16_t OP_Resend = 0x1100; +static const uint16_t OP_AckFuture = 0x1100; static const uint16_t OP_Ack = 0x1500; static const uint16_t OP_AppCombined = 0x1900; +static const uint16_t OP_AckAfterDisconnect = 0x1d00; // Detect app opcode vs net opcode by the 2nd byte. 0x00 = net opcode. #define IS_APP_OPCODE(uint16) (((uint16) & 0x00ff) != 0x0000) #define IS_NET_OPCODE(uint16) (((uint16) & 0x00ff) == 0x0000) +// Protocol flag bitmasks. Actually, we just flag straight to compressed +// which is 5a right now. I wonder what the significance of that is. +#define PROTOCOL_FLAG_COMPRESSED 0x5a + +// Should we apply CRC checking. This should be yes, but if for some reason +// it is getting in the way while debugging, can turn it off +#define APPLY_CRC_CHECK + //---------------------------------------------------------------------- // EQProtocolPacket // A wrapper around a byte array which is the wire data for an @@ -77,11 +86,13 @@ EQProtocolPacket() : m_packet(NULL), m_length(0), + m_flags(0), m_payload(NULL), + m_bAllocedPayload(false), + m_bDecoded(false), m_payloadLength(0), m_arqSeq(0), m_ownCopy(false), - m_isValid(false), m_subpacket(false) { } @@ -99,8 +110,33 @@ // operators EQProtocolPacket& operator=(const EQProtocolPacket& packet); + // Decode the packet. This processed compressed packets and readjusts + // alignments if needed. If this returns false, using the packet isn't + // recommended! + bool decode(uint32_t maxPacketLength); + uint16_t getNetOpCode() const { return m_netOp; } + bool hasFlags() const + { + // Subpackets don't have flags, the outer packet does. + if (m_subpacket) return false; + + switch (m_netOp) + { + case OP_SessionStatRequest: + case OP_SessionStatResponse: + case OP_Combined: + case OP_Packet: + case OP_Oversized: + case OP_AppCombined: + return true; + default : + return IS_APP_OPCODE(m_netOp); + } + } + uint8_t getFlags() const { return m_flags; } + bool hasArqSeq() const { return getNetOpCode() == OP_Packet || getNetOpCode() == OP_Oversized; @@ -133,27 +169,40 @@ bool isSubpacket() const { return m_subpacket; } + // Payload is uncompressed (after decode is called) and aligned to the + // beginning of the payload (after net op, flags, seq if applicable) uint8_t* payload() const { return m_payload; } uint16_t payloadLength() const { return m_payloadLength; } - uint8_t* rawPayload() const { return m_packet; } - uint16_t rawPayloadLength() const { return m_length; } + + // Raw Packet is compressed and aligned to the start of the net op. Length + // includes CRC if applicable. + uint8_t* rawPacket() const { return m_packet; } + uint16_t rawPacketLength() const { return m_length; } + + // Raw payload is uncompressed (after decode is called) and aligned to + // the beginning of what was decompressed. This is what is alloced if + // m_bAllocPayload is true. + uint8_t* rawPayload() const { return m_rawPayload; } + uint16_t rawPayloadLength() const { return m_rawPayloadLength; } protected: void init(); void init(uint8_t* packet, uint16_t length, bool copy=false, bool subpacket=false); - QString headerFlags(const QString& prefix, bool brief = false) const; - private: - uint8_t* m_packet; // raw packet - uint16_t m_length; - uint16_t m_netOp; - uint8_t* m_payload; // packet without netop, crc. Mem owned by m_packet. - uint16_t m_payloadLength; + uint8_t* m_packet; // raw packet, untouched starting at net opcode + uint16_t m_length; // raw packet length + uint16_t m_netOp; // protocol opcode + uint8_t m_flags; // protocol flags + uint8_t* m_payload; // packet payload. Aligned and uncompressed if necessary. + bool m_bAllocedPayload; // Whether payload was alloced or not + bool m_bDecoded; // Whether this packet has been decoded + uint16_t m_payloadLength; // length of payload + uint8_t* m_rawPayload; // decompressed but not aligned payload + uint16_t m_rawPayloadLength; // length of raw payload uint16_t m_arqSeq; // local copy to speed up comparisons bool m_ownCopy; - bool m_isValid; bool m_subpacket; }; @@ -215,8 +264,6 @@ // Don't currently support IPv6, so no IPv6 accessors - QString headerFlags(bool brief = false) const; - uint32_t getSessionKey() const { return m_sessionKey; } void setSessionKey(uint32_t sessionKey) { m_sessionKey = sessionKey; } Index: packetfragment.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetfragment.h,v retrieving revision 1.1.6.1 retrieving revision 1.1.6.2 diff -u -d -r1.1.6.1 -r1.1.6.2 --- packetfragment.h 9 Feb 2005 07:07:38 -0000 1.1.6.1 +++ packetfragment.h 21 Feb 2005 05:56:14 -0000 1.1.6.2 @@ -26,7 +26,7 @@ EQPacketFragmentSequence(EQStreamID streamid); ~EQPacketFragmentSequence(); void reset(); - void addFragment(EQProtocolPacket& pf); + void addFragment(EQProtocolPacket& packet); bool isComplete(); uint8_t* data(); Index: packetcapture.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetcapture.h,v retrieving revision 1.1.6.1 retrieving revision 1.1.6.2 diff -u -d -r1.1.6.1 -r1.1.6.2 --- packetcapture.h 7 Dec 2003 06:30:44 -0000 1.1.6.1 +++ packetcapture.h 21 Feb 2005 05:56:14 -0000 1.1.6.2 @@ -61,6 +61,7 @@ }; struct packetCache *m_pcache_first; struct packetCache *m_pcache_last; + bool m_pcache_closed; pthread_t m_tid; pthread_mutex_t m_pcache_mutex; Index: zones.h =================================================================== RCS file: /cvsroot/seq/showeq/src/zones.h,v retrieving revision 1.7.16.3 retrieving revision 1.7.16.4 diff -u -d -r1.7.16.3 -r1.7.16.4 --- zones.h 13 Aug 2004 06:25:52 -0000 1.7.16.3 +++ zones.h 21 Feb 2005 05:56:31 -0000 1.7.16.4 @@ -344,3 +344,665 @@ { "riftseekers", "Riftbreakers' Sanctum" }, // 334 { "harbingers", "Harbingers' Spire" }, // 335 { "dranik", "The Ruined City of Dranik" }, // 336 +{ "broodlands", "The Broodlands" }, // 337 +{ "stillmoona", "Stillmoon Temple" }, // 338 +{ "stillmoonb", "The Ascent" }, // 339 +{ "thundercrest", "Thundercrest Isles" }, // 340 +{ "delvea", "Lavaspinner's Lair" }, // 341 +{ "delveb", "Tirranum's Delve"}, // 342 +{ "thenest", "The Accursed Nest" }, // 343 +{ "guildlobby", "Guild Lobby" }, // 344 +{ "guildhall", "Guild Hall" }, // 345 +{ "barter", "Barter Hall" }, // 346 +{ NULL, NULL }, // 347 +{ NULL, NULL }, // 348 +{ NULL, NULL }, // 349 +{ NULL, NULL }, // 350 +{ NULL, NULL }, // 351 +{ NULL, NULL }, // 352 +{ NULL, NULL }, // 353 +{ NULL, NULL }, // 354 +{ NULL, NULL }, // 355 +{ NULL, NULL }, // 356 +{ NULL, NULL }, // 357 +{ NULL, NULL }, // 358 +{ NULL, NULL }, // 359 +{ NULL, NULL }, // 360 +{ NULL, NULL }, // 361 +{ NULL, NULL }, // 362 +{ NULL, NULL }, // 363 +{ NULL, NULL }, // 364 +{ NULL, NULL }, // 365 +{ NULL, NULL }, // 366 +{ NULL, NULL }, // 367 +{ NULL, NULL }, // 368 +{ NULL, NULL }, // 369 +{ NULL, NULL }, // 370 +{ NULL, NULL }, // 371 +{ NULL, NULL }, // 372 +{ NULL, NULL }, // 373 +{ NULL, NULL }, // 374 +{ NULL, NULL }, // 375 +{ NULL, NULL }, // 376 +{ NULL, NULL }, // 377 +{ NULL, NULL }, // 378 +{ NULL, NULL }, // 379 +{ NULL, NULL }, // 380 +{ NULL, NULL }, // 381 +{ NULL, NULL }, // 382 +{ NULL, NULL }, // 383 +{ NULL, NULL }, // 384 +{ NULL, NULL }, // 385 +{ NULL, NULL }, // 386 +{ NULL, NULL }, // 387 +{ NULL, NULL }, // 388 +{ NULL, NULL }, // 389 +{ NULL, NULL }, // 390 +{ NULL, NULL }, // 391 +{ NULL, NULL }, // 392 +{ NULL, NULL }, // 393 +{ NULL, NULL }, // 394 +{ NULL, NULL }, // 395 +{ NULL, NULL }, // 396 +{ NULL, NULL }, // 397 +{ NULL, NULL }, // 398 +{ NULL, NULL }, // 399 +{ NULL, NULL }, // 400 +{ NULL, NULL }, // 401 +{ NULL, NULL }, // 402 +{ NULL, NULL }, // 403 +{ NULL, NULL }, // 404 +{ NULL, NULL }, // 405 +{ NULL, NULL }, // 406 +{ NULL, NULL }, // 407 +{ NULL, NULL }, // 408 +{ NULL, NULL }, // 409 +{ NULL, NULL }, // 410 +{ NULL, NULL }, // 411 +{ NULL, NULL }, // 412 +{ NULL, NULL }, // 413 +{ NULL, NULL }, // 414 +{ NULL, NULL }, // 415 +{ NULL, NULL }, // 416 +{ NULL, NULL }, // 417 +{ NULL, NULL }, // 418 +{ NULL, NULL }, // 419 +{ NULL, NULL }, // 420 +{ NULL, NULL }, // 421 +{ NULL, NULL }, // 422 +{ NULL, NULL }, // 423 +{ NULL, NULL }, // 424 +{ NULL, NULL }, // 425 +{ NULL, NULL }, // 426 +{ NULL, NULL }, // 427 +{ NULL, NULL }, // 428 +{ NULL, NULL }, // 429 +{ NULL, NULL }, // 430 +{ NULL, NULL }, // 431 +{ NULL, NULL }, // 432 +{ NULL, NULL }, // 433 +{ NULL, NULL }, // 434 +{ NULL, NULL }, // 435 +{ NULL, NULL }, // 436 +{ NULL, NULL }, // 437 +{ NULL, NULL }, // 438 +{ NULL, NULL }, // 439 +{ NULL, NULL }, // 440 +{ NULL, NULL }, // 441 +{ NULL, NULL }, // 442 +{ NULL, NULL }, // 443 +{ NULL, NULL }, // 444 +{ NULL, NULL }, // 445 +{ NULL, NULL }, // 446 +{ NULL, NULL }, // 447 +{ NULL, NULL }, // 448 +{ NULL, NULL }, // 449 +{ NULL, NULL }, // 450 +{ NULL, NULL }, // 451 +{ NULL, NULL }, // 452 +{ NULL, NULL }, // 453 +{ NULL, NULL }, // 454 +{ NULL, NULL }, // 455 +{ NULL, NULL }, // 456 +{ NULL, NULL }, // 457 +{ NULL, NULL }, // 458 +{ NULL, NULL }, // 459 +{ NULL, NULL }, // 460 +{ NULL, NULL }, // 461 +{ NULL, NULL }, // 462 +{ NULL, NULL }, // 463 +{ NULL, NULL }, // 464 +{ NULL, NULL }, // 465 +{ NULL, NULL }, // 466 +{ NULL, NULL }, // 467 +{ NULL, NULL }, // 468 +{ NULL, NULL }, // 469 +{ NULL, NULL }, // 470 +{ NULL, NULL }, // 471 +{ NULL, NULL }, // 472 +{ NULL, NULL }, // 473 +{ NULL, NULL }, // 474 +{ NULL, NULL }, // 475 +{ NULL, NULL }, // 476 +{ NULL, NULL }, // 477 +{ NULL, NULL }, // 478 +{ NULL, NULL }, // 479 +{ NULL, NULL }, // 480 +{ NULL, NULL }, // 481 +{ NULL, NULL }, // 482 +{ NULL, NULL }, // 483 +{ NULL, NULL }, // 484 +{ NULL, NULL }, // 485 +{ NULL, NULL }, // 486 +{ NULL, NULL }, // 487 +{ NULL, NULL }, // 488 +{ NULL, NULL }, // 489 +{ NULL, NULL }, // 490 +{ NULL, NULL }, // 491 +{ NULL, NULL }, // 492 +{ NULL, NULL }, // 493 +{ NULL, NULL }, // 494 +{ NULL, NULL }, // 495 +{ NULL, NULL }, // 496 +{ NULL, NULL }, // 497 +{ NULL, NULL }, // 498 +{ NULL, NULL }, // 499 +{ NULL, NULL }, // 500 +{ NULL, NULL }, // 501 +{ NULL, NULL }, // 502 +{ NULL, NULL }, // 503 +{ NULL, NULL }, // 504 +{ NULL, NULL }, // 505 +{ NULL, NULL }, // 506 +{ NULL, NULL }, // 507 +{ NULL, NULL }, // 508 +{ NULL, NULL }, // 509 +{ NULL, NULL }, // 510 +{ NULL, NULL }, // 511 +{ NULL, NULL }, // 512 +{ NULL, NULL }, // 513 +{ NULL, NULL }, // 514 +{ NULL, NULL }, // 515 +{ NULL, NULL }, // 516 +{ NULL, NULL }, // 517 +{ NULL, NULL }, // 518 +{ NULL, NULL }, // 519 +{ NULL, NULL }, // 520 +{ NULL, NULL }, // 521 +{ NULL, NULL }, // 522 +{ NULL, NULL }, // 523 +{ NULL, NULL }, // 524 +{ NULL, NULL }, // 525 +{ NULL, NULL }, // 526 +{ NULL, NULL }, // 527 +{ NULL, NULL }, // 528 +{ NULL, NULL }, // 529 +{ NULL, NULL }, // 530 +{ NULL, NULL }, // 531 +{ NULL, NULL }, // 532 +{ NULL, NULL }, // 533 +{ NULL, NULL }, // 534 +{ NULL, NULL }, // 535 +{ NULL, NULL }, // 536 +{ NULL, NULL }, // 537 +{ NULL, NULL }, // 538 +{ NULL, NULL }, // 539 +{ NULL, NULL }, // 540 +{ NULL, NULL }, // 541 +{ NULL, NULL }, // 542 +{ NULL, NULL }, // 543 +{ NULL, NULL }, // 544 +{ NULL, NULL }, // 545 +{ NULL, NULL }, // 546 +{ NULL, NULL }, // 547 +{ NULL, NULL }, // 548 +{ NULL, NULL }, // 549 +{ NULL, NULL }, // 550 +{ NULL, NULL }, // 551 +{ NULL, NULL }, // 552 +{ NULL, NULL }, // 553 +{ NULL, NULL }, // 554 +{ NULL, NULL }, // 555 +{ NULL, NULL }, // 556 +{ NULL, NULL }, // 557 +{ NULL, NULL }, // 558 +{ NULL, NULL }, // 559 +{ NULL, NULL }, // 560 +{ NULL, NULL }, // 561 +{ NULL, NULL }, // 562 +{ NULL, NULL }, // 563 +{ NULL, NULL }, // 564 +{ NULL, NULL }, // 565 +{ NULL, NULL }, // 566 +{ NULL, NULL }, // 567 +{ NULL, NULL }, // 568 +{ NULL, NULL }, // 569 +{ NULL, NULL }, // 570 +{ NULL, NULL }, // 571 +{ NULL, NULL }, // 572 +{ NULL, NULL }, // 573 +{ NULL, NULL }, // 574 +{ NULL, NULL }, // 575 +{ NULL, NULL }, // 576 +{ NULL, NULL }, // 577 +{ NULL, NULL }, // 578 +{ NULL, NULL }, // 579 +{ NULL, NULL }, // 580 +{ NULL, NULL }, // 581 +{ NULL, NULL }, // 582 +{ NULL, NULL }, // 583 +{ NULL, NULL }, // 584 +{ NULL, NULL }, // 585 +{ NULL, NULL }, // 586 +{ NULL, NULL }, // 587 +{ NULL, NULL }, // 588 +{ NULL, NULL }, // 589 +{ NULL, NULL }, // 590 +{ NULL, NULL }, // 591 +{ NULL, NULL }, // 592 +{ NULL, NULL }, // 593 +{ NULL, NULL }, // 594 +{ NULL, NULL }, // 595 +{ NULL, NULL }, // 596 +{ NULL, NULL }, // 597 +{ NULL, NULL }, // 598 +{ NULL, NULL }, // 599 +{ NULL, NULL }, // 600 +{ NULL, NULL }, // 601 +{ NULL, NULL }, // 602 +{ NULL, NULL }, // 603 +{ NULL, NULL }, // 604 +{ NULL, NULL }, // 605 +{ NULL, NULL }, // 606 +{ NULL, NULL }, // 607 +{ NULL, NULL }, // 608 +{ NULL, NULL }, // 609 +{ NULL, NULL }, // 610 +{ NULL, NULL }, // 611 +{ NULL, NULL }, // 612 +{ NULL, NULL }, // 613 +{ NULL, NULL }, // 614 +{ NULL, NULL }, // 615 +{ NULL, NULL }, // 616 +{ NULL, NULL }, // 617 +{ NULL, NULL }, // 618 +{ NULL, NULL }, // 619 +{ NULL, NULL }, // 620 +{ NULL, NULL }, // 621 +{ NULL, NULL }, // 622 +{ NULL, NULL }, // 623 +{ NULL, NULL }, // 624 +{ NULL, NULL }, // 625 +{ NULL, NULL }, // 626 +{ NULL, NULL }, // 627 +{ NULL, NULL }, // 628 +{ NULL, NULL }, // 629 +{ NULL, NULL }, // 630 +{ NULL, NULL }, // 631 +{ NULL, NULL }, // 632 +{ NULL, NULL }, // 633 +{ NULL, NULL }, // 634 +{ NULL, NULL }, // 635 +{ NULL, NULL }, // 636 +{ NULL, NULL }, // 637 +{ NULL, NULL }, // 638 +{ NULL, NULL }, // 639 +{ NULL, NULL }, // 640 +{ NULL, NULL }, // 641 +{ NULL, NULL }, // 642 +{ NULL, NULL }, // 643 +{ NULL, NULL }, // 644 +{ NULL, NULL }, // 645 +{ NULL, NULL }, // 646 +{ NULL, NULL }, // 647 +{ NULL, NULL }, // 648 +{ NULL, NULL }, // 649 +{ NULL, NULL }, // 650 +{ NULL, NULL }, // 651 +{ NULL, NULL }, // 652 +{ NULL, NULL }, // 653 +{ NULL, NULL }, // 654 +{ NULL, NULL }, // 655 +{ NULL, NULL }, // 656 +{ NULL, NULL }, // 657 +{ NULL, NULL }, // 658 +{ NULL, NULL }, // 659 +{ NULL, NULL }, // 660 +{ NULL, NULL }, // 661 +{ NULL, NULL }, // 662 +{ NULL, NULL }, // 663 +{ NULL, NULL }, // 664 +{ NULL, NULL }, // 665 +{ NULL, NULL }, // 666 +{ NULL, NULL }, // 667 +{ NULL, NULL }, // 668 +{ NULL, NULL }, // 669 +{ NULL, NULL }, // 670 +{ NULL, NULL }, // 671 +{ NULL, NULL }, // 672 +{ NULL, NULL }, // 673 +{ NULL, NULL }, // 674 +{ NULL, NULL }, // 675 +{ NULL, NULL }, // 676 +{ NULL, NULL }, // 677 +{ NULL, NULL }, // 678 +{ NULL, NULL }, // 679 +{ NULL, NULL }, // 680 +{ NULL, NULL }, // 681 +{ NULL, NULL }, // 682 +{ NULL, NULL }, // 683 +{ NULL, NULL }, // 684 +{ NULL, NULL }, // 685 +{ NULL, NULL }, // 686 +{ NULL, NULL }, // 687 +{ NULL, NULL }, // 688 +{ NULL, NULL }, // 689 +{ NULL, NULL }, // 690 +{ NULL, NULL }, // 691 +{ NULL, NULL }, // 692 +{ NULL, NULL }, // 693 +{ NULL, NULL }, // 694 +{ NULL, NULL }, // 695 +{ NULL, NULL }, // 696 +{ NULL, NULL }, // 697 +{ NULL, NULL }, // 698 +{ NULL, NULL }, // 699 +{ NULL, NULL }, // 700 +{ NULL, NULL }, // 701 +{ NULL, NULL }, // 702 +{ NULL, NULL }, // 703 +{ NULL, NULL }, // 704 +{ NULL, NULL }, // 705 +{ NULL, NULL }, // 706 +{ NULL, NULL }, // 707 +{ NULL, NULL }, // 708 +{ NULL, NULL }, // 709 +{ NULL, NULL }, // 710 +{ NULL, NULL }, // 711 +{ NULL, NULL }, // 712 +{ NULL, NULL }, // 713 +{ NULL, NULL }, // 714 +{ NULL, NULL }, // 715 +{ NULL, NULL }, // 716 +{ NULL, NULL }, // 717 +{ NULL, NULL }, // 718 +{ NULL, NULL }, // 719 +{ NULL, NULL }, // 720 +{ NULL, NULL }, // 721 +{ NULL, NULL }, // 722 +{ NULL, NULL }, // 723 +{ NULL, NULL }, // 724 +{ NULL, NULL }, // 725 +{ NULL, NULL }, // 726 +{ NULL, NULL }, // 727 +{ NULL, NULL }, // 728 +{ NULL, NULL }, // 729 +{ NULL, NULL }, // 730 +{ NULL, NULL }, // 731 +{ NULL, NULL }, // 732 +{ NULL, NULL }, // 733 +{ NULL, NULL }, // 734 +{ NULL, NULL }, // 735 +{ NULL, NULL }, // 736 +{ NULL, NULL }, // 737 +{ NULL, NULL }, // 738 +{ NULL, NULL }, // 739 +{ NULL, NULL }, // 740 +{ NULL, NULL }, // 741 +{ NULL, NULL }, // 742 +{ NULL, NULL }, // 743 +{ NULL, NULL }, // 744 +{ NULL, NULL }, // 745 +{ NULL, NULL }, // 746 +{ NULL, NULL }, // 747 +{ NULL, NULL }, // 748 +{ NULL, NULL }, // 749 +{ NULL, NULL }, // 750 +{ NULL, NULL }, // 751 +{ NULL, NULL }, // 752 +{ NULL, NULL }, // 753 +{ NULL, NULL }, // 754 +{ NULL, NULL }, // 755 +{ NULL, NULL }, // 756 +{ NULL, NULL }, // 757 +{ NULL, NULL }, // 758 +{ NULL, NULL }, // 759 +{ NULL, NULL }, // 760 +{ NULL, NULL }, // 761 +{ NULL, NULL }, // 762 +{ NULL, NULL }, // 763 +{ NULL, NULL }, // 764 +{ NULL, NULL }, // 765 +{ NULL, NULL }, // 766 +{ NULL, NULL }, // 767 +{ NULL, NULL }, // 768 +{ NULL, NULL }, // 769 +{ NULL, NULL }, // 770 +{ NULL, NULL }, // 771 +{ NULL, NULL }, // 772 +{ NULL, NULL }, // 773 +{ NULL, NULL }, // 774 +{ NULL, NULL }, // 775 +{ NULL, NULL }, // 776 +{ NULL, NULL }, // 777 +{ NULL, NULL }, // 778 +{ NULL, NULL }, // 779 +{ NULL, NULL }, // 780 +{ NULL, NULL }, // 781 +{ NULL, NULL }, // 782 +{ NULL, NULL }, // 783 +{ NULL, NULL }, // 784 +{ NULL, NULL }, // 785 +{ NULL, NULL }, // 786 +{ NULL, NULL }, // 787 +{ NULL, NULL }, // 788 +{ NULL, NULL }, // 789 +{ NULL, NULL }, // 790 +{ NULL, NULL }, // 791 +{ NULL, NULL }, // 792 +{ NULL, NULL }, // 793 +{ NULL, NULL }, // 794 +{ NULL, NULL }, // 795 +{ NULL, NULL }, // 796 +{ NULL, NULL }, // 797 +{ NULL, NULL }, // 798 +{ NULL, NULL }, // 799 +{ NULL, NULL }, // 800 +{ NULL, NULL }, // 801 +{ NULL, NULL }, // 802 +{ NULL, NULL }, // 803 +{ NULL, NULL }, // 804 +{ NULL, NULL }, // 805 +{ NULL, NULL }, // 806 +{ NULL, NULL }, // 807 +{ NULL, NULL }, // 808 +{ NULL, NULL }, // 809 +{ NULL, NULL }, // 810 +{ NULL, NULL }, // 811 +{ NULL, NULL }, // 812 +{ NULL, NULL }, // 813 +{ NULL, NULL }, // 814 +{ NULL, NULL }, // 815 +{ NULL, NULL }, // 816 +{ NULL, NULL }, // 817 +{ NULL, NULL }, // 818 +{ NULL, NULL }, // 819 +{ NULL, NULL }, // 820 +{ NULL, NULL }, // 821 +{ NULL, NULL }, // 822 +{ NULL, NULL }, // 823 +{ NULL, NULL }, // 824 +{ NULL, NULL }, // 825 +{ NULL, NULL }, // 826 +{ NULL, NULL }, // 827 +{ NULL, NULL }, // 828 +{ NULL, NULL }, // 829 +{ NULL, NULL }, // 830 +{ NULL, NULL }, // 831 +{ NULL, NULL }, // 832 +{ NULL, NULL }, // 833 +{ NULL, NULL }, // 834 +{ NULL, NULL }, // 835 +{ NULL, NULL }, // 836 +{ NULL, NULL }, // 837 +{ NULL, NULL }, // 838 +{ NULL, NULL }, // 839 +{ NULL, NULL }, // 840 +{ NULL, NULL }, // 841 +{ NULL, NULL }, // 842 +{ NULL, NULL }, // 843 +{ NULL, NULL }, // 844 +{ NULL, NULL }, // 845 +{ NULL, NULL }, // 846 +{ NULL, NULL }, // 847 +{ NULL, NULL }, // 848 +{ NULL, NULL }, // 849 +{ NULL, NULL }, // 850 +{ NULL, NULL }, // 851 +{ NULL, NULL }, // 852 +{ NULL, NULL }, // 853 +{ NULL, NULL }, // 854 +{ NULL, NULL }, // 855 +{ NULL, NULL }, // 856 +{ NULL, NULL }, // 857 +{ NULL, NULL }, // 858 +{ NULL, NULL }, // 859 +{ NULL, NULL }, // 860 +{ NULL, NULL }, // 861 +{ NULL, NULL }, // 862 +{ NULL, NULL }, // 863 +{ NULL, NULL }, // 864 +{ NULL, NULL }, // 865 +{ NULL, NULL }, // 866 +{ NULL, NULL }, // 867 +{ NULL, NULL }, // 868 +{ NULL, NULL }, // 869 +{ NULL, NULL }, // 870 +{ NULL, NULL }, // 871 +{ NULL, NULL }, // 872 +{ NULL, NULL }, // 873 +{ NULL, NULL }, // 874 +{ NULL, NULL }, // 875 +{ NULL, NULL }, // 876 +{ NULL, NULL }, // 877 +{ NULL, NULL }, // 878 +{ NULL, NULL }, // 879 +{ NULL, NULL }, // 880 +{ NULL, NULL }, // 881 +{ NULL, NULL }, // 882 +{ NULL, NULL }, // 883 +{ NULL, NULL }, // 884 +{ NULL, NULL }, // 885 +{ NULL, NULL }, // 886 +{ NULL, NULL }, // 887 +{ NULL, NULL }, // 888 +{ NULL, NULL }, // 889 +{ NULL, NULL }, // 890 +{ NULL, NULL }, // 891 +{ NULL, NULL }, // 892 +{ NULL, NULL }, // 893 +{ NULL, NULL }, // 894 +{ NULL, NULL }, // 895 +{ NULL, NULL }, // 896 +{ NULL, NULL }, // 897 +{ NULL, NULL }, // 898 +{ NULL, NULL }, // 899 +{ NULL, NULL }, // 900 +{ NULL, NULL }, // 901 +{ NULL, NULL }, // 902 +{ NULL, NULL }, // 903 +{ NULL, NULL }, // 904 +{ NULL, NULL }, // 905 +{ NULL, NULL }, // 906 +{ NULL, NULL }, // 907 +{ NULL, NULL }, // 908 +{ NULL, NULL }, // 909 +{ NULL, NULL }, // 910 +{ NULL, NULL }, // 911 +{ NULL, NULL }, // 912 +{ NULL, NULL }, // 913 +{ NULL, NULL }, // 914 +{ NULL, NULL }, // 915 +{ NULL, NULL }, // 916 +{ NULL, NULL }, // 917 +{ NULL, NULL }, // 918 +{ NULL, NULL }, // 919 +{ NULL, NULL }, // 920 +{ NULL, NULL }, // 921 +{ NULL, NULL }, // 922 +{ NULL, NULL }, // 923 +{ NULL, NULL }, // 924 +{ NULL, NULL }, // 925 +{ NULL, NULL }, // 926 +{ NULL, NULL }, // 927 +{ NULL, NULL }, // 928 +{ NULL, NULL }, // 929 +{ NULL, NULL }, // 930 +{ NULL, NULL }, // 931 +{ NULL, NULL }, // 932 +{ NULL, NULL }, // 933 +{ NULL, NULL }, // 934 +{ NULL, NULL }, // 935 +{ NULL, NULL }, // 936 +{ NULL, NULL }, // 937 +{ NULL, NULL }, // 938 +{ NULL, NULL }, // 939 +{ NULL, NULL }, // 940 +{ NULL, NULL }, // 941 +{ NULL, NULL }, // 942 +{ NULL, NULL }, // 943 +{ NULL, NULL }, // 944 +{ NULL, NULL }, // 945 +{ NULL, NULL }, // 946 +{ NULL, NULL }, // 947 +{ NULL, NULL }, // 948 +{ NULL, NULL }, // 949 +{ NULL, NULL }, // 950 +{ NULL, NULL }, // 951 +{ NULL, NULL }, // 952 +{ NULL, NULL }, // 953 +{ NULL, NULL }, // 954 +{ NULL, NULL }, // 955 +{ NULL, NULL }, // 956 +{ NULL, NULL }, // 957 +{ NULL, NULL }, // 958 +{ NULL, NULL }, // 959 +{ NULL, NULL }, // 960 +{ NULL, NULL }, // 961 +{ NULL, NULL }, // 962 +{ NULL, NULL }, // 963 +{ NULL, NULL }, // 964 +{ NULL, NULL }, // 965 +{ NULL, NULL }, // 966 +{ NULL, NULL }, // 967 +{ NULL, NULL }, // 968 +{ NULL, NULL }, // 969 +{ NULL, NULL }, // 970 +{ NULL, NULL }, // 971 +{ NULL, NULL }, // 972 +{ NULL, NULL }, // 973 +{ NULL, NULL }, // 974 +{ NULL, NULL }, // 975 +{ NULL, NULL }, // 976 +{ NULL, NULL }, // 977 +{ NULL, NULL }, // 978 +{ NULL, NULL }, // 979 +{ NULL, NULL }, // 980 +{ NULL, NULL }, // 981 +{ NULL, NULL }, // 982 +{ NULL, NULL }, // 983 +{ NULL, NULL }, // 984 +{ NULL, NULL }, // 985 +{ NULL, NULL }, // 986 +{ NULL, NULL }, // 987 +{ NULL, NULL }, // 988 +{ NULL, NULL }, // 989 +{ NULL, NULL }, // 990 +{ NULL, NULL }, // 991 +{ NULL, NULL }, // 992 +{ NULL, NULL }, // 993 +{ NULL, NULL }, // 994 +{ NULL, NULL }, // 995 +{ NULL, NULL }, // 996 +{ NULL, NULL }, // 997 +{ "fhalls", "The Forgotten Halls" }, // 998 Index: mapcore.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/mapcore.cpp,v retrieving revision 1.5.16.2 retrieving revision 1.5.16.3 diff -u -d -r1.5.16.2 -r1.5.16.3 --- mapcore.cpp 13 Dec 2003 00:49:42 -0000 1.5.16.2 +++ mapcore.cpp 21 Feb 2005 05:56:14 -0000 1.5.16.3 @@ -66,6 +66,7 @@ m_showLines = true; m_showGridLines = true; m_showGridTicks = true; + m_optimization = tMap_NormalOptim; reset(); } Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.18 retrieving revision 1.74.6.19 diff -u -d -r1.74.6.18 -r1.74.6.19 --- everquest.h 9 Feb 2005 07:07:35 -0000 1.74.6.18 +++ everquest.h 21 Feb 2005 05:56:13 -0000 1.74.6.19 @@ -105,6 +105,7 @@ #define MAX_KNOWN_LANGS 25 #define MAX_SPELLBOOK_SLOTS 400 #define MAX_GROUP_MEMBERS 6 +#define MAX_BUFFS 25 //Item Flags #define ITEM_NORMAL 0x0000 @@ -247,14 +248,15 @@ }; /* -** Guild Update actions +** Group Update actions */ -enum GuildUpdateAction +enum GroupUpdateAction { GUA_Joined = 0, GUA_Left = 1, GUA_LastLeft = 6, GUA_FullGroupInfo = 7, + GUA_MakeLeader = 8, GUA_Started = 9, }; @@ -520,7 +522,7 @@ /* ** Player Profile -** Length: 18288 Octets +** Length: 18496 Octets ** OpCode: CharProfileCode */ struct charProfileStruct @@ -608,7 +610,7 @@ /*4132*/ uint8_t unknown4132[408]; // *** Placeholder /*4540*/ uint32_t zoneId; // see zones.h /*4544 uint32_t zoneInstance; // Used to be here... */ -/*4544*/ spellBuff buffs[20]; // Buffs currently on the player +/*4544*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player /*4864*/ char groupMembers[MAX_GROUP_MEMBERS][64];// all the members in group, including self /*5248*/ uint8_t unknown5248[668]; // *** Placeholder /*5916*/ uint32_t ldon_guk_points; // Earned GUK points @@ -624,7 +626,7 @@ /*6652*/ uint8_t unknown6652[4888]; // *** Placeholder /*11540*/ uint16_t altexp; // Total aaxp points /*11542*/ uint8_t unknown11542[6874]; // *** Placeholder -}; /* 18416 */ +}; /* 18496 */ #if 1 struct playerAAStruct { @@ -1181,23 +1183,23 @@ /* ** Grouping Infromation -** Length: 136 Octets +** Length: 452 Octets ** OpCode: OP_GroupUpdate */ struct groupUpdateStruct { -/*0000*/ int32_t action; -/*0004*/ char yourname[64]; // Player Name -/*0068*/ char membername[64]; // Goup Member Name -/*0132*/ uint32_t unknown0132; // ***Placeholder -/*0136*/ +/*0000*/ int32_t action; // Group update action +/*0004*/ char yourname[64]; // Group Member Names +/*0068*/ char membername[64]; // Group leader name +/*0132*/ uint8_t unknown0132[320]; // ***Placeholder +/*452*/ }; /* ** Grouping Infromation -** Length: 452 Octets +** Length: 768 Octets ** OpCode: OP_GroupUpdate */ @@ -1205,8 +1207,9 @@ { /*0000*/ int32_t action; /*0004*/ char membernames[MAX_GROUP_MEMBERS][64]; // Group Member Names -/*0388*/ char leader[64]; // Goup Member Name -/*0452*/ +/*0388*/ char leader[64]; // Group leader Name +/*0452*/ char unknown0452[316]; // ***Placeholder +/*0768*/ }; /* @@ -1676,7 +1679,7 @@ /* ** Random Number Request -** Length: 10 Octets +** Length: 8 Octets ** OpCode: RandomCode */ struct randomReqStruct @@ -1687,7 +1690,7 @@ /* ** Random Number Result -** Length: 78 Octets +** Length: 76 Octets ** OpCode: RandomCode */ struct randomStruct @@ -1722,7 +1725,7 @@ /* ** Self Position Update -** Length: 32 Octets +** Length: 30 Octets ** OpCode: PlayerPosCode */ Index: packetinfo.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/packetinfo.cpp,v retrieving revision 1.1.4.3 retrieving revision 1.1.4.4 diff -u -d -r1.1.4.3 -r1.1.4.4 --- packetinfo.cpp 7 Nov 2004 23:10:23 -0000 1.1.4.3 +++ packetinfo.cpp 21 Feb 2005 05:56:14 -0000 1.1.4.4 @@ -64,6 +64,8 @@ EQPacketTypeDB::EQPacketTypeDB() : m_typeSizeDict(127) // increase this number if we ever get >= 97 types { + m_typeSizeDict.setAutoDelete(true); + // define the convenience macro used in the generated file #define AddStruct(typeName) addStruct(#typeName, sizeof(typeName)) Index: packet.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.cpp,v retrieving revision 1.62.6.5 retrieving revision 1.62.6.6 diff -u -d -r1.62.6.5 -r1.62.6.6 --- packet.cpp 9 Feb 2005 07:07:37 -0000 1.62.6.5 +++ packet.cpp 21 Feb 2005 05:56:14 -0000 1.62.6.6 @@ -61,6 +61,7 @@ const in_port_t WorldServerGeneralPort = 9000; const in_port_t WorldServerChatPort = 9876; +const in_port_t WorldServerChat2Port = 9875; //%%% what is this? const in_port_t LoginServerMinPort = 15900; const in_port_t LoginServerMaxPort = 15910; const in_port_t ChatServerPort = 5998; @@ -423,6 +424,7 @@ // Destructor EQPacket::~EQPacket() { + if (m_packetCapture != NULL) { // stop any packet capture @@ -457,6 +459,19 @@ delete m_world2ClientStream; delete m_client2ZoneStream; delete m_zone2ClientStream; + + if (m_packetTypeDB) + { + delete m_packetTypeDB; + } + if (m_zoneOPCodeDB) + { + delete m_zoneOPCodeDB; + } + if (m_worldOPCodeDB) + { + delete m_worldOPCodeDB; + } } /* Start the timer to process packets */ @@ -621,8 +636,8 @@ emit clientChanged(m_client_addr); seqInfo("Client Detected: %s", (const char*)m_ip); } - /* end client detection */ + /* Find the stream we are sending this to */ EQPacketStream* stream; @@ -635,6 +650,10 @@ (packet.getSourcePort() == WorldServerChatPort)) return; + if ((packet.getDestPort() == WorldServerChat2Port) || + (packet.getSourcePort() == WorldServerChat2Port)) + return; + if (((packet.getDestPort() >= LoginServerMinPort) && (packet.getDestPort() <= LoginServerMaxPort)) || (packet.getSourcePort() >= LoginServerMinPort) && @@ -665,10 +684,7 @@ // the stream the packet came from. packet.setSessionKey(stream->getSessionKey()); -#if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("%s", (const char*)packet.headerFlags((PACKET_PROCESS_DIAG < 3))); -#endif - +#ifdef APPLY_CRC_CHECK // Check CRC. Have to ask the stream to do it, since the packet doesn't know // it's sessionKey yet. if (packet.hasCRC()) @@ -687,12 +703,14 @@ return; } } +#endif /* APPLY_CRC_CHECK */ /* discard pure ack/req packets */ if (packet.getNetOpCode() == OP_KeepAlive || packet.getNetOpCode() == OP_SessionStatRequest || packet.getNetOpCode() == OP_SessionStatResponse || - packet.getNetOpCode() == OP_Resend || + packet.getNetOpCode() == OP_AckFuture || + packet.getNetOpCode() == OP_AckAfterDisconnect || packet.getNetOpCode() == OP_Ack) { #if defined(PACKET_PROCESS_DIAG) Index: packetcapture.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetcapture.cpp,v retrieving revision 1.2.4.1 retrieving revision 1.2.4.2 diff -u -d -r1.2.4.1 -r1.2.4.2 --- packetcapture.cpp 7 Dec 2003 06:30:44 -0000 1.2.4.1 +++ packetcapture.cpp 21 Feb 2005 05:56:14 -0000 1.2.4.2 @@ -26,6 +26,25 @@ PacketCaptureThread::~PacketCaptureThread() { + // Drop the packets we have lying around + pthread_mutex_lock (&m_pcache_mutex); + + struct packetCache *pc = m_pcache_first; + struct packetCache* freeMe = NULL; + + while (pc) + { + freeMe = pc; + pc = pc->next; + + free(freeMe); + } + + m_pcache_first = NULL; + m_pcache_last = NULL; + m_pcache_closed = true; + + pthread_mutex_unlock (&m_pcache_mutex); } void PacketCaptureThread::start(const char *device, const char *host, bool realtime, uint8_t address_type) @@ -37,6 +56,7 @@ struct sched_param sp; seqInfo("Initializing Packet Capture Thread: "); + m_pcache_closed = false; // create pcap style filter expressions if (address_type == IP_ADDRESS_TYPE) @@ -156,14 +176,21 @@ pc->next = NULL; pthread_mutex_lock (&myThis->m_pcache_mutex); - - if (myThis->m_pcache_last) + + if (! myThis->m_pcache_closed) + { + if (myThis->m_pcache_last) myThis->m_pcache_last->next = pc; - myThis->m_pcache_last = pc; + myThis->m_pcache_last = pc; - if (!myThis->m_pcache_first) + if (!myThis->m_pcache_first) myThis->m_pcache_first = pc; + } + else + { + free(pc); + } pthread_mutex_unlock (&myThis->m_pcache_mutex); } Index: packetlog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetlog.cpp,v retrieving revision 1.1.6.6 retrieving revision 1.1.6.7 diff -u -d -r1.1.6.6 -r1.1.6.7 --- packetlog.cpp 9 Feb 2005 07:07:38 -0000 1.1.6.6 +++ packetlog.cpp 21 Fe... [truncated message content] |
|
From: Bonkers D B. <bon...@us...> - 2005-02-09 07:08:23
|
Update of /cvsroot/seq/showeq/conf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10951/conf Modified Files: Tag: pre_5_0_beta worldopcodes.xml zoneopcodes.xml Log Message: 5.0.0.17 New network protocol Index: worldopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/worldopcodes.xml,v retrieving revision 1.1.4.6 retrieving revision 1.1.4.7 diff -u -d -r1.1.4.6 -r1.1.4.7 --- worldopcodes.xml 13 Aug 2004 06:25:51 -0000 1.1.4.6 +++ worldopcodes.xml 9 Feb 2005 07:07:32 -0000 1.1.4.7 @@ -1,22 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE seqopcodes SYSTEM "seqopcodes.dtd"> <seqopcodes> + <!-- OLD OPCODES - these need updating still post 1/26/2005 + + <opcode id="0018" name="OP_AckPacket" updated="02/10/04"> <comment>Appears to be generic ack at the presentation level</comment> </opcode> - <opcode id="005d" name="OP_GuildList" updated="07/14/04"> - <comment>old GuildListCode</comment> - <payload dir="server" typename="worldGuildListStruct" sizechecktype="match"/> - </opcode> <opcode id="00e3" name="OP_ExpansionInfo" updated="02/10/04"> <comment>Which expansions user has</comment> </opcode> <opcode id="00ec" name="OP_DeleteCharacter" updated="02/10/04"> <comment>Delete character @ char select</comment> </opcode> - <opcode id="0102" name="OP_SendCharInfo" updated="07/14/04"> - <comment>Send all chars visible @ char select</comment> - </opcode> <opcode id="0106" name="OP_CharacterCreate" updated="02/10/04"> <comment>Create character @ char select</comment> </opcode> @@ -35,22 +31,12 @@ <opcode id="0196" name="OP_ApproveWorld" updated="02/10/04"> <comment></comment> </opcode> - <opcode id="01b3" name="OP_MOTD" updated="02/10/04"> - <comment>old MOTDCode Server message of the day</comment> - <payload dir="server" typename="worldMOTDStruct" sizechecktype="none"/> - </opcode> <opcode id="0241" name="OP_SendLoginInfo" updated="02/10/04"> <comment></comment> </opcode> <opcode id="0264" name="OP_EnterWorld" updated="02/10/04"> <comment>Server approval for client to enter world</comment> </opcode> - <opcode id="0267" name="OP_ZoneServerInfo" updated="02/10/04"> - <comment>old ZoneServerInfo</comment> - </opcode> - <opcode id="026c" name="OP_SetChatServer" updated="02/10/04"> - <comment>Chatserver? IP,Port,servername.Charname,password(?)</comment> - </opcode> <opcode id="02a5" name="OP_UserCompInfo" updated="02/10/04"> <comment>User submitted computer information</comment> </opcode> @@ -60,4 +46,26 @@ <opcode id="02db" name="OP_LoginComplete" updated="02/10/04"> <comment></comment> </opcode> +--> + + + + + <opcode id="1560" name="OP_ZoneServerInfo" updated="01/26/05"> + <comment>old ZoneServerInfo</comment> + </opcode> + <opcode id="2628" name="OP_SendCharInfo" updated="01/26/05"> + <comment>Send all chars visible @ char select</comment> + </opcode> + <opcode id="4b97" name="OP_MOTD" updated="01/26/05"> + <comment>old MOTDCode Server message of the day</comment> + <payload dir="server" typename="worldMOTDStruct" sizechecktype="none"/> + </opcode> + <opcode id="5dd9" name="OP_GuildList" updated="01/26/05"> + <comment>old GuildListCode</comment> + <payload dir="server" typename="worldGuildListStruct" sizechecktype="match"/> + </opcode> + <opcode id="7e66" name="OP_SetChatServer" updated="01/26/05"> + <comment>Chatserver? IP,Port,servername.Charname,password(?)</comment> + </opcode> </seqopcodes> Index: zoneopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/zoneopcodes.xml,v retrieving revision 1.1.4.12 retrieving revision 1.1.4.13 diff -u -d -r1.1.4.12 -r1.1.4.13 --- zoneopcodes.xml 24 Sep 2004 04:25:41 -0000 1.1.4.12 +++ zoneopcodes.xml 9 Feb 2005 07:07:33 -0000 1.1.4.13 @@ -1,82 +1,45 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE seqopcodes SYSTEM "seqopcodes.dtd"> <seqopcodes> - <opcode id="0013" name="OP_Consent" updated="05/26/04"> - <comment>/consent</comment> - </opcode> - <opcode id="0017" name="OP_AckPacket" updated="05/26/04"> - <comment>Appears to be generic ack at the presentation level</comment> - </opcode> - <opcode id="001f" name="OP_ItemLinkClick" updated="05/26/04"> - <comment></comment> [...1167 lines suppressed...] + </opcode> + <opcode id="7c81" name="OP_TradeSkillCombine" updated="01/26/05"> <comment></comment> </opcode> - <opcode id="02df" name="OP_ItemPacket" updated="05/26/04"> - <comment>old ItemCode</comment> - <payload dir="server" typename="itemPacketStruct" sizechecktype="none"/> + <opcode id="7dea" name="OP_InitialMobHealth" implicitlen="3" updated="01/26/05"> + <comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment> </opcode> - <opcode id="02e2" name="OP_AdventurePointsUpdate" updated="05/26/04"> + <opcode id="7e46" name="OP_LFGResponse" updated="01/26/04"> <comment></comment> </opcode> - <opcode id="02ef" name="OP_Adventure" updated="05/26/04"> - <comment>/adventure</comment> + <opcode id="b61f" name="OP_LFGGetMatchesResponse" updated="01/26/05"> + <comment></comment> </opcode> </seqopcodes> |
|
From: Bonkers D B. <bon...@us...> - 2005-02-09 07:08:11
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10951 Modified Files: Tag: pre_5_0_beta ChangeLog NEWS configure.in Log Message: 5.0.0.17 New network protocol Index: NEWS =================================================================== RCS file: /cvsroot/seq/showeq/Attic/NEWS,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -d -r1.1.2.3 -r1.1.2.4 --- NEWS 28 Sep 2004 00:14:10 -0000 1.1.2.3 +++ NEWS 9 Feb 2005 07:07:32 -0000 1.1.2.4 @@ -1,3 +1,14 @@ + +This is a terse description of the features added to 5.0.0.17 since the +release of 5.0.0.16. + +1. New network code to support live EverQuest servers after 1/26/2005 patch + +2. Updated zoneopcodes.xml and worldopcodes.xml after all opcodes changed + with the 1/26/2005 patch + +-- + This is a terse description of the features added to 5.0.0.15 since the release of 5.0.0.14. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -u -d -r1.1.2.4 -r1.1.2.5 --- ChangeLog 8 Nov 2004 03:14:39 -0000 1.1.2.4 +++ ChangeLog 9 Feb 2005 07:07:23 -0000 1.1.2.5 @@ -1,4 +1,17 @@ Version: $Id$ $Name$ + +purple (02/08/05) +----------------------- ++ Updated version to 5.0.0.17 ++ Updated net layer to support EQ's new net protocol ++ First pass at new zoneopcodes.xml and worldopcodes.xml. Most things work. ++ Cleaned up everquest.h offset comments and fixed a couple struct changes ++ Edge case cleanup for con colors in player.cpp (uRit1u2CBBA) ++ More significant digits on runspeed (uRit1u2CBBA) ++ OP_SimpleMessage now is sizechecktype="match" since it's not variable length ++ Added struct for consenting with message in message shell ++ Added struct for environmental damage ++ Regenerated staticspells.h from latest spells_en.txt dohpaZ (11/7/04) ------------------------ Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.17 retrieving revision 1.49.4.18 diff -u -d -r1.49.4.17 -r1.49.4.18 --- configure.in 7 Nov 2004 23:09:53 -0000 1.49.4.17 +++ configure.in 9 Feb 2005 07:07:32 -0000 1.49.4.18 @@ -2,7 +2,7 @@ dnl $Id$ $Name$ AC_PREREQ(2.53) -AC_INIT(showeq, 5.0.0.16) +AC_INIT(showeq, 5.0.0.17) AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM |
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10951/src Modified Files: Tag: pre_5_0_beta crctab.h everquest.h interface.cpp messageshell.cpp messageshell.h packet.cpp packet.h packetformat.cpp packetformat.h packetfragment.cpp packetfragment.h packetlog.cpp packetstream.cpp packetstream.h player.cpp spells_en2spellsh.pl staticspells.h util.cpp util.h Log Message: 5.0.0.17 New network protocol Index: crctab.h =================================================================== RCS file: /cvsroot/seq/showeq/src/crctab.h,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.16.1 diff -u -d -r1.1.1.1 -r1.1.1.1.16.1 --- crctab.h 19 Dec 2001 00:36:52 -0000 1.1.1.1 +++ crctab.h 9 Feb 2005 07:07:34 -0000 1.1.1.1.16.1 @@ -5,9 +5,6 @@ * http://seq.sf.net/ */ -#ifndef _CRCTAB_H_ -#define _CRCTAB_H_ - static uint32_t crctab[256] = { 0x0, @@ -64,4 +61,3 @@ 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5a05df1b, 0x2d02ef8d, }; -#endif // _CRCTAB_H_ Index: packet.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.h,v retrieving revision 1.39.6.1 retrieving revision 1.39.6.2 diff -u -d -r1.39.6.1 -r1.39.6.2 --- packet.h 7 Dec 2003 06:30:43 -0000 1.39.6.1 +++ packet.h 9 Feb 2005 07:07:38 -0000 1.39.6.2 @@ -101,6 +101,8 @@ void session_tracking(bool enable); void setArqSeqGiveUp(uint16_t giveUp); void setRealtime(bool val); + void dispatchSessionKey(uint32_t sessionId, EQStreamID streamid, + uint32_t sessionKey); protected slots: void closeStream(); @@ -169,6 +171,7 @@ EQPacketOPCodeDB* m_zoneOPCodeDB; void dispatchPacket (int size, unsigned char *buffer); + void dispatchPacket(EQUDPIPPacketFormat& packet); protected slots: void resetEQPacket(); void dispatchWorldChatData (size_t len, uint8_t* data, uint8_t direction = 0); Index: staticspells.h =================================================================== RCS file: /cvsroot/seq/showeq/src/staticspells.h,v retrieving revision 1.1.14.1 retrieving revision 1.1.14.2 diff -u -d -r1.1.14.1 -r1.1.14.2 --- staticspells.h 7 Nov 2004 23:10:25 -0000 1.1.14.1 +++ staticspells.h 9 Feb 2005 07:07:39 -0000 1.1.14.2 @@ -5,7 +5,6 @@ * http://seq.sourceforge.net/ */ -#ifndef DOXYGEN_SHOULD_SKIP_THIS /* File autogenerated from spells_en.txt */ // Format: // /* Spell ID */ { Spell Name }, @@ -486,7 +485,7 @@ /* 0x01d9 - 473 */ { "Invoke Fear II" }, /* 0x01da - 474 */ { "Radius of Fear2" }, /* 0x01db - 475 */ { "Fear2" }, [...2987 lines suppressed...] +/* 0x19e6 - 6630 */ { "Stone Pummel" }, +/* 0x19e7 - 6631 */ { "Black Cyclone" }, +/* 0x19e8 - 6632 */ { "Lightning Cyclone" }, +/* 0x19e9 - 6633 */ { "Feral Roar" }, +/* 0x19ea - 6634 */ { "Kirin Hoof" }, +/* 0x19eb - 6635 */ { "Kirin Touch" }, +/* 0x19ec - 6636 */ { "Kirin Word" }, +/* 0x19ed - 6637 */ { "Summon Storm Dervish" }, +/* 0x19ee - 6638 */ { "Devouring Flames of Al'Kabor" }, +/* 0x19ef - 6639 */ { "Devouring Flames Recourse" }, +/* 0x19f0 - 6640 */ { "Vishimtar's Shadow" }, // -// Max SpellId: 0x1142 = 4418 -// Number of Spells: 4293 -// Empty Entries: 125 -#endif /* DOXYGEN_SHOULD_SKIP_THIS */ - +// Max SpellId: 0x19f1 = 6641 +// Number of Spells: 6433 +// Empty Entries: 208 Index: packetstream.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetstream.cpp,v retrieving revision 1.1.6.5 retrieving revision 1.1.6.6 diff -u -d -r1.1.6.5 -r1.1.6.6 --- packetstream.cpp 7 Nov 2004 23:10:24 -0000 1.1.6.5 +++ packetstream.cpp 9 Feb 2005 07:07:38 -0000 1.1.6.6 @@ -9,7 +9,6 @@ */ /* Implementation of EQPacketStream class */ -#include "decode.h" #include "packetstream.h" #include "packetformat.h" #include "packetinfo.h" @@ -23,17 +22,17 @@ // Macros // The following defines are used to diagnose packet handling behavior [...1053 lines suppressed...] + m_sessionKey = sessionKey; + +#ifdef PACKET_SESSION_DIAG + seqDebug("EQPacket: Received key %u for session %u on stream %s (%d) from stream %s (%d)", + m_sessionKey, m_sessionId, EQStreamStr[m_streamid], m_streamid, + EQStreamStr[streamid], streamid); +#endif + } +} + +/////////////////////////////////////////////////////////////// +// Calculate the CRC on the given packet using this stream's key +uint16_t EQPacketStream::calculateCRC(EQProtocolPacket& packet) +{ + // CRC is at the end of the raw payload, 2 bytes. + return ::calcCRC16(packet.rawPayload(), packet.rawPayloadLength()-2, + m_sessionKey); } #include "packetstream.moc" Index: interface.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/interface.cpp,v retrieving revision 1.67.6.10 retrieving revision 1.67.6.11 diff -u -d -r1.67.6.10 -r1.67.6.11 --- interface.cpp 7 Nov 2004 23:10:03 -0000 1.67.6.10 +++ interface.cpp 9 Feb 2005 07:07:36 -0000 1.67.6.11 @@ -1788,7 +1788,7 @@ m_messageShell, SLOT(formattedMessage(const uint8_t*, size_t, uint8_t))); m_packet->connect2("OP_SimpleMessage", SP_Zone, DIR_Server, - "simpleMessageStruct", SZC_None, + "simpleMessageStruct", SZC_Match, m_messageShell, SLOT(simpleMessage(const uint8_t*, size_t, uint8_t))); m_packet->connect2("OP_SpecialMesg", SP_Zone, DIR_Server, @@ -1805,6 +1805,12 @@ m_packet->connect2("OP_RandomReply", SP_Zone, DIR_Server, "randomStruct", SZC_Match, m_messageShell, SLOT(random(const uint8_t*))); + m_packet->connect2("OP_ConsentResponse", SP_Zone, DIR_Server, + "consentResponseStruct", SZC_Match, + m_messageShell, SLOT(consent(const uint8_t*, size_t, uint8_t))); + m_packet->connect2("OP_DenyResponse", SP_Zone, DIR_Server, + "consentResponseStruct", SZC_Match, + m_messageShell, SLOT(consent(const uint8_t*, size_t, uint8_t))); m_packet->connect2("OP_Emote", SP_Zone, DIR_Server|DIR_Client, "emoteTextStruct", SZC_None, m_messageShell, SLOT(emoteText(const uint8_t*))); @@ -1993,6 +1999,9 @@ m_packet->connect2("OP_WearChange", SP_Zone, DIR_Server|DIR_Client, "SpawnUpdateStruct", SZC_Match, m_spawnShell, SLOT(updateSpawnInfo(const uint8_t*))); + m_packet->connect2("OP_InitialHPUpdate", SP_Zone, DIR_Server|DIR_Client, + "hpNpcUpdateStruct", SZC_Match, + m_spawnShell, SLOT(updateNpcHP(const uint8_t*))); m_packet->connect2("OP_HPUpdate", SP_Zone, DIR_Server|DIR_Client, "hpNpcUpdateStruct", SZC_Match, m_spawnShell, SLOT(updateNpcHP(const uint8_t*))); @@ -2044,7 +2053,7 @@ "actionStruct", SZC_Match, m_spellShell, SLOT(action(const uint8_t*, size_t, uint8_t))); m_packet->connect2("OP_SimpleMessage", SP_Zone, DIR_Server, - "simpleMessageStruct", SZC_None, + "simpleMessageStruct", SZC_Match, m_spellShell, SLOT(simpleMessage(const uint8_t*, size_t, uint8_t))); @@ -2068,6 +2077,9 @@ m_packet->connect2("OP_LevelUpdate", SP_Zone, DIR_Server, "levelUpUpdateStruct", SZC_Match, m_player, SLOT(updateLevel(const uint8_t*))); + m_packet->connect2("OP_InitialHPUpdate", SP_Zone, DIR_Server|DIR_Client, + "hpNpcUpdateStruct", SZC_Match, + m_player, SLOT(updateNpcHP(const uint8_t*))); m_packet->connect2("OP_HPUpdate", SP_Zone, DIR_Server|DIR_Client, "hpNpcUpdateStruct", SZC_Match, m_player, SLOT(updateNpcHP(const uint8_t*))); Index: packetformat.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetformat.cpp,v retrieving revision 1.1.6.2 retrieving revision 1.1.6.3 diff -u -d -r1.1.6.2 -r1.1.6.3 --- packetformat.cpp 12 Feb 2004 00:39:28 -0000 1.1.6.2 +++ packetformat.cpp 9 Feb 2005 07:07:38 -0000 1.1.6.3 @@ -11,116 +11,52 @@ /* Implementation of packet format classes class */ #include "packetformat.h" +#include "diagnosticmessages.h" //---------------------------------------------------------------------- -// EQPacketFormatRaw class methods -QString EQPacketFormatRaw::headerFlags(const QString& prefix, - bool brief) const -{ - QString tmp; - if (!prefix.isEmpty()) - { - if (brief) - tmp = prefix + ": "; - else - tmp = prefix + "[Hdr (" + QString::number(flagsHi(), 16) + ", " - + QString::number(flagsLo(), 16) + "): "; - } - else if (!brief) - tmp = "[Hdr (" + QString::number(flagsHi(), 16) + ", " - + QString::number(flagsLo(), 16) + "): "; - - if (isARQ()) - tmp += "ARQ, "; - if (isClosingLo()) - tmp += "closingLo, "; - if (isFragment()) - tmp += "Fragment, "; - if (isASQ()) - tmp += "ASQ, "; - if (isSEQStart()) - tmp += "SEQStart, "; - if (isClosingHi()) - tmp += "closingHi, "; - if (isSEQEnd()) - tmp += "SEQEnd, "; - if (isARSP()) - tmp += "ARSP, "; - if (isNAK()) - tmp += "NAK, "; - if (isSpecARQ()) - tmp += "SpecARQ, "; - if (m_flagsHi.m_unknown1) - tmp += "HiUnknown1, "; - - if (skip() != 0) - tmp += QString("Skip: ") + QString::number(skip(), 16) + ", "; - - tmp += QString("seq: ") + QString::number(seq(), 16); - - tmp += "] "; - - if (!brief) - { - if (isARQ()) - tmp += QString("[ARQ: ") + QString::number(arq(), 16) + "] "; - - if (isFragment()) - { - tmp += QString("[FragSeq: ") + QString::number(fragSeq(), 16) - + ", FragCur: " + QString::number(fragCur(), 16) - + ", FragTot: " + QString::number(fragTot(), 16) + "] "; - } - } - - return tmp; -} - -//---------------------------------------------------------------------- -// EQPacketFormat class methods -EQPacketFormat::EQPacketFormat(EQPacketFormat& packet, bool copy) - : m_ownCopy(copy), - m_isValid(packet.m_isValid) +// EQProtocolPacket class methods +EQProtocolPacket::EQProtocolPacket(EQProtocolPacket& packet, bool copy) + : m_ownCopy(copy) { if (!copy) { // just copy all their values m_packet = packet.m_packet; m_length = packet.m_length; - m_postSkipData = packet.m_postSkipData; - m_postSkipDataLength = packet.m_postSkipDataLength; m_payload = packet.m_payload; m_payloadLength = packet.m_payloadLength; - m_arq = packet.m_arq; + m_arqSeq = packet.m_arqSeq; + m_subpacket = packet.m_subpacket; } else { - init(packet.m_packet, packet.m_length, copy); + init(packet.m_packet, packet.m_length, copy, packet.m_subpacket); } } -EQPacketFormat::~EQPacketFormat() +EQProtocolPacket::~EQProtocolPacket() { if (m_ownCopy) delete [] (uint8_t*)m_packet; } -EQPacketFormat& EQPacketFormat::operator=(const EQPacketFormat& packet) +EQProtocolPacket& EQProtocolPacket::operator=(const EQProtocolPacket& packet) { // if this was a deep copy, delete the existing data if (m_ownCopy) delete [] (uint8_t*)m_packet; // initialize as deep as this object previously was - init(packet.m_packet, packet.m_length, m_ownCopy); + init(packet.m_packet, packet.m_length, m_ownCopy, packet.m_subpacket); return *this; } -void EQPacketFormat::init(EQPacketFormatRaw* packet, - uint16_t length, - bool copy) +void EQProtocolPacket::init(uint8_t* packet, uint16_t length, + bool copy, bool subpacket) { + m_subpacket = subpacket; + if (!copy) { // the data is someone elses memory @@ -138,8 +74,7 @@ m_ownCopy = true; // allocate memory for the copy - // NOTE: We should use an allocater for this instead of normal new - m_packet = (EQPacketFormatRaw*)new uint8_t[length]; + m_packet = new uint8_t[length]; // copy the data memcpy((void*)m_packet, (void*)packet, length); @@ -152,73 +87,38 @@ init(); } -void EQPacketFormat::init() +void EQProtocolPacket::init() { - // finish initialization iff the packet has a valid CRC32 - if (validate()) - { - m_postSkipData = ((uint8_t*)m_packet) + m_packet->skip() + 2; - - // calculate the length of the rest of the data - m_postSkipDataLength = m_length - (m_postSkipData - ((uint8_t*)m_packet)); - - // get the location of the payload - m_payload = m_packet->payload(); + // Get the net op code. Leave in network order. + m_netOp = *(uint16_t*)(m_packet); + + // get the location of the payload + m_payload = &m_packet[2]; - // calculate the lenght of the payload (length - diff - len(checkSum)) - m_payloadLength = m_length - (m_payload - ((uint8_t*)m_packet)) - 4; + // calculate the length of the payload (len - net op - crc) + m_payloadLength = m_length - 2 - (hasCRC() ? 2 : 0); - // make a local copy of the arq to speed up comparisons - m_arq = eqntohuint16(&m_postSkipData[2]); - } - else - { - m_postSkipData = 0; - m_postSkipDataLength = 0; - m_payload = 0; - m_payloadLength = 0; - m_arq = 0; - } -} - -bool EQPacketFormat::validate() -{ - m_isValid = ((m_packet != NULL) && - ((m_length >= 4) && (crc32() == calcCRC32()))); - return m_isValid; + // make a local copy of the arq to speed up comparisons + m_arqSeq = eqntohuint16(m_payload); } -QString EQPacketFormat::headerFlags(const QString& prefix, - bool brief) const +QString EQProtocolPacket::headerFlags(const QString& prefix, bool brief) const { QString tmp; - if (m_isValid) + if (brief) { - if (brief) - tmp = prefix + ": "; - else - tmp = prefix + " Hdr (" + QString::number(flagsHi(), 16) + ", " - + QString::number(flagsLo(), 16) + "): "; - - tmp += m_packet->headerFlags("", true); - - if (!brief) - { - if (isARQ()) - tmp += QString("arq: ") + QString::number(arq(), 16) + ", "; - - if (isFragment()) - tmp += QString("FragSeq: ") + QString::number(fragSeq(), 16) - + ", FragCur: " + QString::number(fragCur(), 16) - + ", FragTot: " + QString::number(fragTot(), 16) + ", "; + tmp = prefix + ": "; + } + else + { + tmp = prefix + " NetOpCode: " + QString::number(getNetOpCode(), 16); - tmp += QString("Opcode: ") - + QString::number(eqntohuint16(payload()), 16); + if (hasArqSeq()) + { + tmp += (", Seq: " + QString::number(arqSeq())); } } - else - tmp = prefix + ": INVALID CRC32! Possible non-EQ packet?!"; return tmp; } @@ -244,6 +144,9 @@ // note whether or not this object ownw the memory m_ownCopy = copy; + // No session yet + m_sessionKey = 0; + // initialize the object init(ipdata); } @@ -253,6 +156,7 @@ { // note whether or not this object ownw the memory m_ownCopy = copy; + m_sessionKey = packet.getSessionKey(); if (copy) { @@ -332,9 +236,10 @@ length -= sizeof (struct udphdr); data += (sizeof (struct udphdr)); m_rawpayload = data; + m_rawpayloadSize = length; - // initialize underlying EQPacketFormat with the UDP payload - EQPacketFormat::init((EQPacketFormatRaw*)data, length, false); + // initialize underlying EQProtocolPacket with the UDP payload + EQProtocolPacket::init(data, length, false); } QString EQUDPIPPacketFormat::headerFlags(bool brief) const @@ -344,5 +249,5 @@ (const char*)getIPv4SourceA(), getSourcePort(), (const char*)getIPv4DestA(), getDestPort()); - return EQPacketFormat::headerFlags(tmp, brief); + return EQProtocolPacket::headerFlags(tmp, brief); } Index: spells_en2spellsh.pl =================================================================== RCS file: /cvsroot/seq/showeq/src/spells_en2spellsh.pl,v retrieving revision 1.5 retrieving revision 1.5.12.1 diff -u -d -r1.5 -r1.5.12.1 --- spells_en2spellsh.pl 2 Oct 2003 04:02:23 -0000 1.5 +++ spells_en2spellsh.pl 9 Feb 2005 07:07:39 -0000 1.5.12.1 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl # spells_en2spellsh.pl # ShowEQ Distributed under GPL Index: messageshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messageshell.cpp,v retrieving revision 1.1.4.5 retrieving revision 1.1.4.6 diff -u -d -r1.1.4.5 -r1.1.4.6 --- messageshell.cpp 7 Nov 2004 23:10:22 -0000 1.1.4.5 +++ messageshell.cpp 9 Feb 2005 07:07:37 -0000 1.1.4.6 @@ -337,12 +337,18 @@ for (int inp = 0; inp < 21; inp ++) { - tempStr.sprintf("He has %s (icn:%i)", inspt->itemNames[inp], inspt->icons[inp]); - m_messages->addMessage(MT_Inspect, tempStr); + if (strnlen(inspt->itemNames[inp], 64) > 0) + { + tempStr.sprintf("He has %s (icn:%i)", inspt->itemNames[inp], inspt->icons[inp]); + m_messages->addMessage(MT_Inspect, tempStr); + } } - tempStr.sprintf("His info: %s", inspt->mytext); - m_messages->addMessage(MT_Inspect, tempStr); + if (strnlen(inspt->mytext, 200) > 0) + { + tempStr.sprintf("His info: %s", inspt->mytext); + m_messages->addMessage(MT_Inspect, tempStr); + } } void MessageShell::logOut(const uint8_t*, size_t, uint8_t) @@ -686,8 +692,16 @@ message = "ExpAA: " + Commanate(player->altexp); m_messages->addMessage(MT_Player, message); + message.sprintf("Group: %s %s %s %s %s %s", player->groupMembers[0], + player->groupMembers[1], + player->groupMembers[2], + player->groupMembers[3], + player->groupMembers[4], + player->groupMembers[5]); + m_messages->addMessage(MT_Player, message); + int buffnumber; - for (buffnumber=0;buffnumber<15;buffnumber++) + for (buffnumber=0;buffnumber<20;buffnumber++) { if (player->buffs[buffnumber].spellid && player->buffs[buffnumber].duration) { @@ -697,6 +711,19 @@ m_messages->addMessage(MT_Player, message); } } + + message = "LDoN Earned Guk Points: " + Commanate(player->ldon_guk_points); + m_messages->addMessage(MT_Player, message); + message = "LDoN Earned Mira Points: " + Commanate(player->ldon_mir_points); + m_messages->addMessage(MT_Player, message); + message = "LDoN Earned MMC Points: " + Commanate(player->ldon_mmc_points); + m_messages->addMessage(MT_Player, message); + message = "LDoN Earned Ruj Points: " + Commanate(player->ldon_ruj_points); + m_messages->addMessage(MT_Player, message); + message = "LDoN Earned Tak Points: " + Commanate(player->ldon_tak_points); + m_messages->addMessage(MT_Player, message); + message = "LDoN Unspent Points: " + Commanate(player->ldon_avail_points); + m_messages->addMessage(MT_Player, message); } void MessageShell::increaseSkill(const uint8_t* data) @@ -717,6 +744,17 @@ m_messages->addMessage(MT_Player, tempStr); } +void MessageShell::consent(const uint8_t* data, size_t, uint8_t dir) +{ + const consentResponseStruct* consent = (const consentResponseStruct*)data; + + m_messages->addMessage(MT_General, + QString("Consent: %1 %4 permission to drag %2's corpse in %3") + .arg(QString::fromUtf8(consent->consentee)) + .arg(QString::fromUtf8(consent->consenter)) + .arg(QString::fromUtf8(consent->corpseZoneName)) + .arg((consent->allow == 1 ? "granted" : "denied"))); +} void MessageShell::consMessage(const uint8_t* data, size_t, uint8_t dir) Index: util.h =================================================================== RCS file: /cvsroot/seq/showeq/src/util.h,v retrieving revision 1.13.6.2 retrieving revision 1.13.6.3 diff -u -d -r1.13.6.2 -r1.13.6.3 --- util.h 16 Jan 2004 20:22:11 -0000 1.13.6.2 +++ util.h 9 Feb 2005 07:07:40 -0000 1.13.6.3 @@ -64,8 +64,8 @@ void diagFileWriteFail(QString filename); void diagFileReadFail(QString filename); -uint32_t calcCRC32(const uint8_t* p, - uint32_t length); +uint32_t calcCRC32(const uint8_t* p, uint32_t length); +uint16_t calcCRC16(uint8_t* p, uint32_t length, uint32_t seed); // Templatized function to generate a string representing the bit pattern // of the passed in value. Index: packet.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.cpp,v retrieving revision 1.62.6.4 retrieving revision 1.62.6.5 diff -u -d -r1.62.6.4 -r1.62.6.5 --- packet.cpp 7 Nov 2004 23:10:23 -0000 1.62.6.4 +++ packet.cpp 9 Feb 2005 07:07:37 -0000 1.62.6.5 @@ -38,10 +38,12 @@ // The following defines are used to diagnose packet handling behavior // this define is used to diagnose packet processing (in dispatchPacket mostly) -//#define PACKET_PROCESS_DIAG 3 // verbosity level 0-n +//#define PACKET_PROCESS_DIAG 3 +// verbosity level 0-n // this define is used to diagnose cache handling (in dispatchPacket mostly) -//#define PACKET_CACHE_DIAG 3 // verbosity level (0-n) +//#define PACKET_CACHE_DIAG 3 +// verbosity level (0-n) // diagnose opcode DB issues //#define PACKET_OPCODEDB_DIAG 1 @@ -52,7 +54,7 @@ // Packet version is a unique number that should be bumped every time packet // structure (ie. encryption) changes. It is checked by the VPacket feature // (currently the date of the last packet structure change) -#define PACKETVERSION 40100 +#define PACKETVERSION 40101 //---------------------------------------------------------------------- // constants @@ -81,7 +83,7 @@ QString ip, QString mac_address, bool realtime, - bool session_tracking, + bool sessionTrackingFlag, bool recordPackets, bool playbackPackets, int8_t playbackSpeed, @@ -96,7 +98,7 @@ m_ip(ip), m_mac(mac_address), m_realtime(realtime), - m_session_tracking(session_tracking), + m_session_tracking(sessionTrackingFlag), m_recordPackets(recordPackets), m_playbackPackets(playbackPackets), m_playbackSpeed(playbackSpeed) @@ -164,6 +166,10 @@ SIGNAL(numPacket(int, int)), this, SIGNAL(numPacket(int, int))); + connect(m_client2WorldStream, + SIGNAL(sessionKey(uint32_t, EQStreamID, uint32_t)), + this, + SLOT(dispatchSessionKey(uint32_t, EQStreamID, uint32_t))); // Setup world -> client stream m_world2ClientStream = new EQPacketStream(world2client, DIR_Server, @@ -194,6 +200,14 @@ SIGNAL(numPacket(int, int)), this, SIGNAL(numPacket(int, int))); + connect(m_world2ClientStream, + SIGNAL(sessionTrackingChanged(uint8_t)), + this, + SIGNAL(sessionTrackingChanged(uint8_t))); + connect(m_world2ClientStream, + SIGNAL(sessionKey(uint32_t, EQStreamID, uint32_t)), + this, + SLOT(dispatchSessionKey(uint32_t, EQStreamID, uint32_t))); // Setup client -> zone stream m_client2ZoneStream = new EQPacketStream(client2zone, DIR_Client, @@ -227,6 +241,18 @@ SIGNAL(numPacket(int, int)), this, SIGNAL(numPacket(int, int))); + connect(m_client2ZoneStream, + SIGNAL(sessionTrackingChanged(uint8_t)), + this, + SIGNAL(sessionTrackingChanged(uint8_t))); + connect(m_client2ZoneStream, + SIGNAL(closing()), + this, + SLOT(closeStream())); + connect(m_client2ZoneStream, + SIGNAL(sessionKey(uint32_t, EQStreamID, uint32_t)), + this, + SLOT(dispatchSessionKey(uint32_t, EQStreamID, uint32_t))); // Setup zone -> client stream m_zone2ClientStream = new EQPacketStream(zone2client, DIR_Server, @@ -273,6 +299,10 @@ SIGNAL(closing()), this, SLOT(closeStream())); + connect(m_zone2ClientStream, + SIGNAL(sessionKey(uint32_t, EQStreamID, uint32_t)), + this, + SLOT(dispatchSessionKey(uint32_t, EQStreamID, uint32_t))); // Initialize convenient streams array m_streams[client2world] = m_client2WorldStream; @@ -335,6 +365,9 @@ emit filterChanged(); } + // Flag session tracking properly on streams + session_tracking(sessionTrackingFlag); + // if running setuid root, then give up root access, since the PacketCapture // is the only thing that needed it. if ((geteuid() == 0) && (getuid() != geteuid())) @@ -555,59 +588,22 @@ void EQPacket::dispatchPacket(int size, unsigned char *buffer) { #ifdef DEBUG_PACKET - debug ("dispatchPacket()"); + debug ("EQPacket::dispatchPacket()"); #endif /* DEBUG_PACKET */ /* Setup variables */ // Create an object to parse the packet EQUDPIPPacketFormat packet(buffer, size, false); - // signal a new packet - emit newPacket(packet); - - /* Chat and Login Server Packets, Discard for now */ - if ((packet.getDestPort() == ChatServerPort) || - (packet.getSourcePort() == ChatServerPort)) - return; - - if ((packet.getDestPort() == WorldServerChatPort) || - (packet.getSourcePort() == WorldServerChatPort)) - return; - - if (((packet.getDestPort() >= LoginServerMinPort) && - (packet.getDestPort() <= LoginServerMaxPort)) || - (packet.getSourcePort() >= LoginServerMinPort) && - (packet.getSourcePort() <= LoginServerMaxPort)) - return; - -#if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) - seqDebug("%s", (const char*)packet.headerFlags((PACKET_PROCESS_DIAG < 3))); -#endif - - if (!packet.isValid()) - { - seqWarn("INVALID PACKET: Bad CRC32 [%s:%d -> %s:%d] seq %04x len %d crc32 (%08x != %08x)", - (const char*)packet.getIPv4SourceA(), packet.getSourcePort(), - (const char*)packet.getIPv4DestA(), packet.getDestPort(), - packet.seq(), - packet.getRawPacketLength(), - packet.crc32(), packet.calcCRC32()); - return; - } + dispatchPacket(packet); - /* discard pure ack/req packets and non valid flags*/ - if (packet.flagsHi() < 0x02 || packet.flagsHi() > 0x46 || size < 10) - { -#if defined(PACKET_PROCESS_DIAG) - seqDebug("discarding packet %s:%d ==>%s:%d flagsHi=%d size=%d", - (const char*)packet.getIPv4SourceA(), packet.getSourcePort(), - (const char*)packet.getIPv4DestA(), packet.getDestPort(), - packet.flagsHi(), size); - seqDebug("%s", (const char*)packet.headerFlags(false)); -#endif - return; - } + // signal a new packet. This has to be at the end so that the session is + // filled in if possible, so that it can report on crc errors properly + emit newPacket(packet); +} +void EQPacket::dispatchPacket(EQUDPIPPacketFormat& packet) +{ /* Client Detection */ if (m_detectingClient && packet.getSourcePort() == WorldServerGeneralPort) { @@ -625,39 +621,92 @@ emit clientChanged(m_client_addr); seqInfo("Client Detected: %s", (const char*)m_ip); } - /* end client detection */ + /* end client detection */ + /* Find the stream we are sending this to */ + EQPacketStream* stream; + /* Chat and Login Server Packets, Discard for now */ + if ((packet.getDestPort() == ChatServerPort) || + (packet.getSourcePort() == ChatServerPort)) + return; - if (packet.getSourcePort() == WorldServerChatPort) - { - dispatchWorldChatData(packet.payloadLength(), packet.payload(), DIR_Server); - + if ((packet.getDestPort() == WorldServerChatPort) || + (packet.getSourcePort() == WorldServerChatPort)) return; - } - else if (packet.getDestPort() == WorldServerChatPort) - { - dispatchWorldChatData(packet.payloadLength(), packet.payload(), DIR_Client); - + + if (((packet.getDestPort() >= LoginServerMinPort) && + (packet.getDestPort() <= LoginServerMaxPort)) || + (packet.getSourcePort() >= LoginServerMinPort) && + (packet.getSourcePort() <= LoginServerMaxPort)) return; - } - /* stream identification */ if (packet.getIPv4SourceN() == m_client_addr) { if (packet.getDestPort() == WorldServerGeneralPort) - m_client2WorldStream->handlePacket(packet); + stream = m_client2WorldStream; else - m_client2ZoneStream->handlePacket(packet); + stream = m_client2ZoneStream; } else if (packet.getIPv4DestN() == m_client_addr) { if (packet.getSourcePort() == WorldServerGeneralPort) - m_world2ClientStream->handlePacket(packet); + stream = m_world2ClientStream; else - m_zone2ClientStream->handlePacket(packet); + stream = m_zone2ClientStream; + } + else + { + return; } + // Fill in the session id of the packet in case people need it and only + // have the packet. This is crappy, but logging doesn't have access to + // the stream the packet came from. + packet.setSessionKey(stream->getSessionKey()); + +#if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 1) + seqDebug("%s", (const char*)packet.headerFlags((PACKET_PROCESS_DIAG < 3))); +#endif + + // Check CRC. Have to ask the stream to do it, since the packet doesn't know + // it's sessionKey yet. + if (packet.hasCRC()) + { + uint16_t calcedCRC = stream->calculateCRC(packet); + + if (calcedCRC != packet.crc() && packet.getSessionKey() != 0) + { + seqWarn("INVALID PACKET: Bad CRC [%s:%d -> %s:%d] netOp %04x seq %04x len %d crc (%04x != %04x)", + (const char*)packet.getIPv4SourceA(), packet.getSourcePort(), + (const char*)packet.getIPv4DestA(), packet.getDestPort(), + packet.getNetOpCode(), + packet.arqSeq(), + packet.getUDPPayloadLength(), + packet.crc(), calcedCRC); + return; + } + } + + /* discard pure ack/req packets */ + if (packet.getNetOpCode() == OP_KeepAlive || + packet.getNetOpCode() == OP_SessionStatRequest || + packet.getNetOpCode() == OP_SessionStatResponse || + packet.getNetOpCode() == OP_Resend || + packet.getNetOpCode() == OP_Ack) + { +#if defined(PACKET_PROCESS_DIAG) + seqDebug("discarding packet %s:%d ==>%s:%d netopcode=%04x size=%d", + (const char*)packet.getIPv4SourceA(), packet.getSourcePort(), + (const char*)packet.getIPv4DestA(), packet.getDestPort(), + packet.getNetOpCode(), size); +#endif + return; + } + + // Send it to the stream handler. + stream->handlePacket(packet); + return; } /* end dispatchPacket() */ @@ -721,6 +770,15 @@ emit clientPortLatched(m_clientPort); } +void EQPacket::dispatchSessionKey(uint32_t sessionId, EQStreamID streamid, + uint32_t sessionKey) +{ + m_client2WorldStream->receiveSessionKey(sessionId, streamid, sessionKey); + m_world2ClientStream->receiveSessionKey(sessionId, streamid, sessionKey); + m_client2ZoneStream->receiveSessionKey(sessionId, streamid, sessionKey); + m_zone2ClientStream->receiveSessionKey(sessionId, streamid, sessionKey); +} + /////////////////////////////////////////// //EQPacket::dispatchWorldChatData // note this dispatch gets just the payload Index: packetstream.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetstream.h,v retrieving revision 1.1.6.1 retrieving revision 1.1.6.2 diff -u -d -r1.1.6.1 -r1.1.6.2 --- packetstream.h 7 Dec 2003 06:30:44 -0000 1.1.6.1 +++ packetstream.h 9 Feb 2005 07:07:39 -0000 1.1.6.2 @@ -26,7 +26,7 @@ #include <netinet/in.h> class EQUDPIPPacketFormat; -class EQPacketFormat; +class EQProtocolPacket; class EQPacketOPCodeDB; class EQPacketOPCode; @@ -48,7 +48,7 @@ // is the expected arq. This results in the check for followers to only // taking amortized constant time (as opposed to the O(log N) of map::find() // or constant average time of the hash find methods. -typedef std::map<uint16_t, EQPacketFormat* > EQPacketMap; +typedef std::map<uint16_t, EQProtocolPacket* > EQPacketMap; //---------------------------------------------------------------------- // EQPacketStream @@ -74,6 +74,10 @@ bool connect2(const QString& opcodeName, const char* payload, EQSizeCheckType szt, const QObject* receiver, const char* member); + void receiveSessionKey(uint32_t sessionId, EQStreamID streamid, + uint32_t sessionKey); + uint16_t calculateCRC(EQProtocolPacket& packet); + uint32_t getSessionKey() const { return m_sessionKey; } public slots: void handlePacket(EQUDPIPPacketFormat& pf); @@ -92,8 +96,10 @@ // this signals a change in the session tracking state void sessionTrackingChanged(uint8_t); - void lockOnClient(in_port_t serverPort, in_port_t clientPort); + + // Signal a new session key being received + void sessionKey(uint32_t sessionId, EQStreamID streadid, uint32_t sessionKey); // used for net_stats display void cacheSize(int, int); @@ -104,14 +110,9 @@ protected: void resetCache(); - void setCache(uint16_t serverArqSeq, EQPacketFormat& packet); + void setCache(uint16_t serverArqSeq, EQProtocolPacket& packet); void processCache(); - void processFragment(EQPacketFormat& pf); - void initDecode(); - void stopDecode(); - uint8_t* decodeOpCode(uint8_t *data, size_t *len, uint16_t& opCode); - void decodePacket(uint8_t *data, size_t len, uint16_t opCode); - void processPayload(uint8_t* data, size_t len); + void processPacket(EQProtocolPacket& packet, bool subpacket); void dispatchPacket(const uint8_t* data, size_t len, uint16_t opCode, const EQPacketOPCode* opcodeEntry); @@ -133,6 +134,11 @@ // Fragment handling EQPacketFragmentSequence m_fragment; + // Session info + uint32_t m_sessionId; + uint32_t m_sessionKey; + uint32_t m_maxLength; + // encryption int64_t m_decodeKey; bool m_validKey; Index: util.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/util.cpp,v retrieving revision 1.20.6.2 retrieving revision 1.20.6.3 diff -u -d -r1.20.6.2 -r1.20.6.3 --- util.cpp 16 Jan 2004 20:22:11 -0000 1.20.6.2 +++ util.cpp 9 Feb 2005 07:07:40 -0000 1.20.6.3 @@ -963,4 +963,25 @@ return crc ^ 0xFFFFFFFF; } +////////////////////////////////////////////////////////////////// +// Seeded CRC16 needed by the packet layer. +uint16_t calcCRC16(uint8_t* p, uint32_t length, uint32_t seed) +{ +#include "crctab.h" + unsigned long crc = 0L ^ 0xffffffff; + + // CRC each byte of the seed + crc = crc >> 8 ^ crctab[(seed ^ crc) & 0xFF]; + crc = crc >> 8 ^ crctab[(seed >> 8 ^ crc) & 0xFF]; + crc = crc >> 8 ^ crctab[(seed >> 16 ^ crc) & 0xFF]; + crc = crc >> 8 ^ crctab[(seed >> 24 ^ crc) & 0xFF]; + + // Then crc the buffer + while(length--) + { + crc = crc >> 8 ^ crctab[(*(p++) ^ crc) & 0xFF]; + } + + return crc ^ 0xffffffffL; +} Index: messageshell.h =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messageshell.h,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- messageshell.h 13 Dec 2003 00:49:42 -0000 1.1.4.2 +++ messageshell.h 9 Feb 2005 07:07:37 -0000 1.1.4.3 @@ -50,6 +50,7 @@ void simpleMessage(const uint8_t* cmsg, size_t, uint8_t); void specialMessage(const uint8_t* smsg, size_t, uint8_t); void guildMOTD(const uint8_t* gmotd, size_t, uint8_t); + void consent(const uint8_t* consent, size_t, uint8_t); void moneyOnCorpse(const uint8_t* money); void moneyUpdate(const uint8_t* money); void moneyThing(const uint8_t* money); Index: player.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/player.cpp,v retrieving revision 1.42.6.7 retrieving revision 1.42.6.8 diff -u -d -r1.42.6.7 -r1.42.6.8 --- player.cpp 7 Nov 2004 23:10:24 -0000 1.42.6.7 +++ player.cpp 9 Feb 2005 07:07:39 -0000 1.42.6.8 @@ -374,7 +374,7 @@ //Added by Halcyon int buffnumber; const struct spellBuff *buff; - for (buffnumber=0;buffnumber<15;buffnumber++) + for (buffnumber=0;buffnumber<20;buffnumber++) { if (player->buffs[buffnumber].spellid && player->buffs[buffnumber].duration) { @@ -851,9 +851,9 @@ updateLastChanged(); emit changeItem(this, tSpawnChangedPosition); - emit newSpeed(hypot( hypot( (pupdate->deltaX*8), - (pupdate->deltaY*8)), - (pupdate->deltaZ*8))); + emit newSpeed((int)lrint(hypot( hypot( (pupdate->deltaX*80), + (pupdate->deltaY*80)), + (pupdate->deltaZ*80)))); static uint8_t count = 0; @@ -1063,8 +1063,8 @@ } else if (level() < 23) { // - greenRange = -7; - cyanRange = -5; + greenRange = -8; + cyanRange = -6; } else if (level() < 27) { // Index: packetformat.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetformat.h,v retrieving revision 1.1.6.2 retrieving revision 1.1.6.3 diff -u -d -r1.1.6.2 -r1.1.6.3 --- packetformat.h 24 Sep 2004 04:25:53 -0000 1.1.6.2 +++ packetformat.h 9 Feb 2005 07:07:38 -0000 1.1.6.3 @@ -42,269 +42,134 @@ // Forward declarations class QString; -//---------------------------------------------------------------------- -// enumerated types -enum EQPacketHeaderFlagsHi -{ - seqEnd = 0x80, - closingHi = 0x40, - seqStart = 0x20, - asq = 0x10, - fragment = 0x08, - closingLo = 0x04, - ackRequest = 0x02, -}; - -enum EQPacketHeaderFlagsLo -{ - ackResponse = 0x04, - specAckRequest = 0x01 -}; - -//---------------------------------------------------------------------- -// EQPacketFormatRaw - -// Why EQPacketFormatRaw, because the EQPacket name was taken... ;-) -// (/thank Xylor for the format of the packets) -// (/thank fee for helping me to understand the format) -// Some simplifying assumptions based on observed packet behavior -// that are used to optimize access -// 1) the arq bit is always set when the fragment bit is set -// 2) the arq is always after 2 bytes past the embedded ack/req data. -// 3) the fragment stuff is always 4 bytes after the embedded ack/req data -// based on 1). -// -#pragma pack(1) -class EQPacketFormatRaw -{ - public: - // accessors to check for individual flasg - bool isARQ() const { return m_flagsHi.m_arq; } - bool isClosingLo() const { return m_flagsHi.m_closingLo; } - bool isFragment() const { return m_flagsHi.m_fragment; } - bool isASQ() const { return m_flagsHi.m_asq; } - bool isSEQStart() const { return m_flagsHi.m_seqStart; } - bool isClosingHi() const { return m_flagsHi.m_closingHi; } - bool isSEQEnd() const { return m_flagsHi.m_seqEnd; } - bool isARSP() const { return m_flagsLo.m_arsp; } - bool isSpecARQ() const { return m_flagsLo.m_specARQ; } - bool isNAK() const { return m_flagsLo.m_nak; } - - // Check flag against the EQPacketHeaderFlag{Hi, Lo} values - bool checkFlagHi(uint8_t mask) const - { return ((m_flagsHiVal & mask) != 0); } - bool checkFlagLo(uint8_t mask) const - { return ((m_flagsLoVal & mask) != 0); } - - // accessors to return the flag values - uint8_t flagsHi() const { return m_flagsHiVal; } - uint8_t flagsLo() const { return m_flagsLoVal; } - - // number of uint8_t's to skip when examining packets - uint8_t skip() const - { - return ((uint8_t)m_flagsLo.m_skip + - (isARSP() ? 2 : 0) + - (isNAK() ? 2 : 0)); - } - - // The following accessors are only valid if the corresponding - // flag is set. - uint16_t seq() const { return eqntohuint16(&m_data[0]); } - uint16_t arsp() const { return eqntohuint16(&m_data[2]); } - uint16_t nak() const { return eqntohuint16(&m_data[4]); } - uint16_t arq() const - { return eqntohuint16(&m_data[2 + skip()]); } - uint16_t fragSeq() const - { return eqntohuint16(&m_data[4 + skip()]); } - uint16_t fragCur() const - { return eqntohuint16(&m_data[6 + skip()]); } - uint16_t fragTot() const - { return eqntohuint16(&m_data[8 + skip()]); } - uint8_t asqHigh() const { return m_data[10 + skip()]; } - uint8_t asqLow() const { return m_data[11 + skip()]; } - uint32_t crc32(uint16_t len) const - { return (len >= 6) ? eqntohuint32(&m_data[len - 2 - 4]) : 0xDEADBEEF; } - - uint8_t* payload() - { - return m_data + // m_data is already passed the flag bytes - (skip() // skip arsp, specARQ data - + (isASQ() ? 1 : 0) // skip asqHigh - + (isARQ() ? 2 : 0) // skip arq - + ((isASQ() && isARQ()) ? 1 : 0) // skip asqLow - + (isFragment() ? 6 : 0) // skip fragment data - + 2 // seq - ); - } - - QString headerFlags(const QString& prefix = "", - bool brief = false) const; +// Net Op Codes in net order. Underneath, there are actually channels +// 0-3, where 0x0900 is OP_Packet on channel 0, 0x0a00 is OP_Packet on +// channel 1, 0x0b00 is OP_Packet on channel 2, etc. and the same +// with OP_Oversized for 0x0d00-0x1000. Only channel 0 seems used. +static const uint16_t OP_SessionRequest = 0x0100; +static const uint16_t OP_SessionResponse = 0x0200; +static const uint16_t OP_Combined = 0x0300; +static const uint16_t OP_SessionDisconnect = 0x0500; +static const uint16_t OP_KeepAlive = 0x0600; +static const uint16_t OP_SessionStatRequest = 0x0700; +static const uint16_t OP_SessionStatResponse= 0x0800; +static const uint16_t OP_Packet = 0x0900; +static const uint16_t OP_Oversized = 0x0d00; +static const uint16_t OP_Resend = 0x1100; +static const uint16_t OP_Ack = 0x1500; +static const uint16_t OP_AppCombined = 0x1900; - private: - union - { - struct - { - unsigned int m_unknown1:1; // 0x01 = ? - unsigned int m_arq:1; // 0x02 = arq - unsigned int m_closingLo:1; // 0x04 = closingLo - unsigned int m_fragment:1; // 0x08 = fragment - unsigned int m_asq:1; // 0x10 = asq - unsigned int m_seqStart:1; // 0x20 = seqStart - unsigned int m_closingHi:1; // 0x40 = closingHi - unsigned int m_seqEnd:1; // 0x80 = seqEnd - } m_flagsHi; - uint8_t m_flagsHiVal; - }; - union - { - struct - { - unsigned int m_specARQ:1; // 0x01 = speckARQ - unsigned int m_unknown1:1; // 0x02 = ? - unsigned int m_arsp:1; // 0x04 = ARSP - unsigned int m_nak:1; // 0x08 = NAK? - unsigned int m_skip:4; // amount of data to skip - } m_flagsLo; - uint8_t m_flagsLoVal; - }; - uint8_t m_data[]; -}; -#pragma pack() +// Detect app opcode vs net opcode by the 2nd byte. 0x00 = net opcode. +#define IS_APP_OPCODE(uint16) (((uint16) & 0x00ff) != 0x0000) +#define IS_NET_OPCODE(uint16) (((uint16) & 0x00ff) == 0x0000) //---------------------------------------------------------------------- -// EQPacketFormat -class EQPacketFormat +// EQProtocolPacket +// A wrapper around a byte array which is the wire data for an +// specific protocol packet. Protocol packets have an owning EQUDPIPPacket +// which has the udp/ip packet info. They may not necessaryily directly be +// the payload of the udp/ip packet, since one udp/ip packet may be +// multiple protocol packets, combined together. +class EQProtocolPacket { public: // constructors - EQPacketFormat() - : m_packet(NULL), m_length(0), - m_postSkipData(NULL), m_postSkipDataLength(0), - m_payload(NULL), m_payloadLength(0), - m_arq(0), m_ownCopy(false), m_isValid(false) + EQProtocolPacket() + : m_packet(NULL), + m_length(0), + m_payload(NULL), + m_payloadLength(0), + m_arqSeq(0), + m_ownCopy(false), + m_isValid(false), + m_subpacket(false) { } - EQPacketFormat(uint8_t* data, - uint16_t length, - bool copy = false) - { - init((EQPacketFormatRaw*)data, length, copy); - } - - EQPacketFormat(EQPacketFormatRaw* packet, - uint16_t length, - bool copy = false) + EQProtocolPacket(uint8_t* packet, uint16_t length, + bool copy=false, bool subpacket=false) { - init(packet, length, copy); + init(packet, length, copy, subpacket); } - EQPacketFormat(EQPacketFormat& packet, bool copy = false); + EQProtocolPacket(EQProtocolPacket& packet, bool copy = false); // destructor - ~EQPacketFormat(); + ~EQProtocolPacket(); // operators - EQPacketFormat& operator=(const EQPacketFormat& packet); - - // accessors to check for individual flags - bool isARQ() const { return m_packet->isARQ(); } - bool isClosingLo() const { return m_packet->isClosingLo(); } - bool isFragment() const { return m_packet->isFragment(); } - bool isASQ() const { return m_packet->isASQ(); } - bool isSEQStart() const { return m_packet->isSEQStart(); } - bool isClosingHi() const { return m_packet->isClosingHi(); } - bool isSEQEnd() const { return m_packet->isSEQEnd(); } - bool isARSP() const { return m_packet->isARSP(); } - bool isNAK() const { return m_packet->isNAK(); } - bool isSpecARQ() const - { return m_packet->isSpecARQ(); } - - // Check flag against the EQPacketHeaderFlag{Hi, Lo} values - bool checkFlagHi(uint8_t mask) const - { return m_packet->checkFlagHi(mask); } - bool checkFlagLo(uint8_t mask) const - { return m_packet->checkFlagLo(mask); } + EQProtocolPacket& operator=(const EQProtocolPacket& packet); - // accessors to return the flag values - uint8_t flagsHi() const { return m_packet->flagsHi(); } - uint8_t flagsLo() const { return m_packet->flagsLo(); } + uint16_t getNetOpCode() const { return m_netOp; } - uint8_t skip() const { return m_packet->skip(); } + bool hasArqSeq() const + { + return getNetOpCode() == OP_Packet || getNetOpCode() == OP_Oversized; + } + uint16_t arqSeq() const { return m_arqSeq; } - uint16_t seq() const { return m_packet->seq(); } + bool hasCRC() const + { + // Subpackets don't have CRC, the outer packet does. + if (m_subpacket) return false; - // The following accessors are only valid if the corresponding - // flag is set. - uint16_t arsp() const { return m_packet->arsp(); } - uint16_t arq() const { return m_arq; } - uint16_t fragSeq() const - { return eqntohuint16(&m_postSkipData[4]); } - uint16_t fragCur() const - { return eqntohuint16(&m_postSkipData[6]); } - uint16_t fragTot() const - { return eqntohuint16(&m_postSkipData[8]); } - uint8_t asqHigh() const { return m_postSkipData[10]; } - uint8_t asqLow() const { return m_postSkipData[11]; } - uint32_t crc32() const - { - // return CRC in the appropriate endianess or DEADBEEF if invalid - return (m_length >= 4) ? eqntohuint32(&((uint8_t*)m_packet)[m_length - 4]) : 0xDEADBEEF; + switch (m_netOp) + { + case OP_SessionStatRequest: + case OP_SessionStatResponse: + case OP_Combined: + case OP_Packet: + case OP_Oversized: + case OP_AppCombined: + return true; + default : + return IS_APP_OPCODE(m_netOp); + } } - uint32_t calcCRC32() const - { - // calculate the CRC on the packet data, up to but not including the - // CRC32 stored at the end or return different invalid packet value - // then crc32() above. - return (m_length >= 4) ? ::calcCRC32((uint8_t*)m_packet, m_length - 4) : 0xFEEDDEAD; + uint16_t crc() const + { + // return CRC in the appropriate endianess or DEAD if invalid + return (m_length >= 2) ? eqntohuint16(&m_packet[m_length - 2]) : 0xDEAD; } - bool isValid() const { return m_isValid; } - bool validate(); + bool isSubpacket() const { return m_subpacket; } uint8_t* payload() const { return m_payload; } uint16_t payloadLength() const { return m_payloadLength; } - - const EQPacketFormatRaw* getRawPacket() const { return m_packet; } - uint16_t getRawPacketLength() const { return m_length; } - - QString headerFlags(const QString& prefix = "", - bool brief = false) const; + uint8_t* rawPayload() const { return m_packet; } + uint16_t rawPayloadLength() const { return m_length; } protected: void init(); - void init(EQPacketFormatRaw* packet, - uint16_t length, - bool copy = false); + void init(uint8_t* packet, uint16_t length, + bool copy=false, bool subpacket=false); + + QString headerFlags(const QString& prefix, bool brief = false) const; private: - EQPacketFormatRaw* m_packet; + uint8_t* m_packet; // raw packet uint16_t m_length; - uint8_t* m_postSkipData; - uint16_t m_postSkipDataLength; - uint8_t* m_payload; + uint16_t m_netOp; + uint8_t* m_payload; // packet without netop, crc. Mem owned by m_packet. uint16_t m_payloadLength; - uint16_t m_arq; // local copy to speed up comparisons + uint16_t m_arqSeq; // local copy to speed up comparisons bool m_ownCopy; bool m_isValid; + bool m_subpacket; }; -inline bool operator<(const EQPacketFormat& p1, - const EQPacketFormat& p2) +inline bool operator<(const EQProtocolPacket& p1, const EQProtocolPacket& p2) { - return p1.arq() < p2.arq(); + return p1.arqSeq() < p2.arqSeq(); } -inline bool operator==(const EQPacketFormat& p1, - const EQPacketFormat& p2) +inline bool operator==(const EQProtocolPacket& p1, const EQProtocolPacket& p2) { - return p1.arq() == p2.arq(); + return p1.arqSeq() == p2.arqSeq(); } //---------------------------------------------------------------------- // EQUDPIPPacketFormat -class EQUDPIPPacketFormat : public EQPacketFormat +class EQUDPIPPacketFormat : public EQProtocolPacket { public: // constructors @@ -326,7 +191,8 @@ in_port_t getSourcePortN() const { return m_udp->uh_sport; } in_port_t getDestPort() const { return ntohs(m_udp->uh_dport); } in_port_t getDestPortN() const { return m_udp->uh_dport; } - uint8_t * getUDPPayload() const { return m_rawpayload; } + uint8_t* getUDPPayload() const { return m_rawpayload; } + uint32_t getUDPPayloadLength() const { return m_rawpayloadSize; } // IP accessors uint8_t getIPVersion() const { return (uint8_t)m_ip->ip_v; } @@ -351,6 +217,9 @@ QString headerFlags(bool brief = false) const; + uint32_t getSessionKey() const { return m_sessionKey; } + void setSessionKey(uint32_t sessionKey) { m_sessionKey = sessionKey; } + protected: void init(uint8_t* data); @@ -360,6 +229,8 @@ struct udphdr *m_udp; bool m_ownCopy; uint8_t* m_rawpayload; + uint32_t m_rawpayloadSize; + uint32_t m_sessionKey; }; #endif // _PACKETFORMAT_H_ Index: packetlog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetlog.cpp,v retrieving revision 1.1.6.5 retrieving revision 1.1.6.6 diff -u -d -r1.1.6.5 -r1.1.6.6 --- packetlog.cpp 7 Nov 2004 23:10:24 -0000 1.1.6.5 +++ packetlog.cpp 9 Feb 2005 07:07:38 -0000 1.1.6.6 @@ -35,6 +35,9 @@ QString tempStr; tempStr.sprintf("[OPCode: %#.04x]", opCode); + // Flags are gone? Combined and implicit don't make sense anymore and + // nothing is compressed or encrypted at this point... + /* if (opCode & FLAG_DECODE) { tempStr += " "; @@ -47,6 +50,7 @@ if (opCode & FLAG_IMPLICIT) tempStr += "[FLAG_IMPLICIT]"; } + */ return tempStr; } @@ -225,33 +229,33 @@ m_out << QDateTime::currentDateTime().toString(m_timeDateFormat) << " [" << sourceStr << ":" << QString::number(packet.getSourcePort()) << "->" << destStr << ":" << QString::number(packet.getDestPort()) - << "] [Size: " << QString::number(packet.getRawPacketLength()) << "]" + << "] [Size: " << QString::number(packet.getUDPPayloadLength()) << "]" << endl; - if (packet.isValid()) - { - const EQPacketFormatRaw* raw = packet.getRawPacket(); - if (raw) - m_out << raw->headerFlags(QString(), false) << endl; + uint16_t calcedCRC; - if (packet.payloadLength() >= 2) - { - QString tempStr; - uint16_t opcode = *(uint16_t*)(packet.payload()); - m_out << opCodeToString(opcode) << endl; - } + if (! packet.hasCRC() || + packet.crc() == (calcedCRC = ::calcCRC16( + packet.rawPayload(), packet.rawPayloadLength()-2, + packet.getSessionKey()))) + { + m_out << packet.headerFlags(false) << endl; } else - m_out << "[BAD CRC32 (" << QString::number(packet.calcCRC32(), 16) - << " != " << QString::number(packet.crc32()) - << ")! Possibly non-EQ packet?! ]" << endl; + { + m_out << "[BAD CRC (" << QString::number(calcedCRC, 16) + << " != " << QString::number(packet.crc(), 16) + << ")! Sessions crossed or unitialized or non-EQ packet! ]" << endl; + m_out << "[SessionKey: " << QString::number(packet.getSessionKey(), 16) << + "]" << endl; + } flush(); // make sure there is a len before attempting to output it - if (packet.getRawPacketLength()) - outputData(packet.getRawPacketLength(), - (const uint8_t*)packet.getRawPacket()); + if (packet.payloadLength()) + outputData(packet.getUDPPayloadLength(), + (const uint8_t*)packet.getUDPPayload()); else m_out << endl; Index: packetfragment.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetfragment.cpp,v retrieving revision 1.1.6.1 retrieving revision 1.1.6.2 diff -u -d -r1.1.6.1 -r1.1.6.2 --- packetfragment.cpp 7 Dec 2003 06:30:44 -0000 1.1.6.1 +++ packetfragment.cpp 9 Feb 2005 07:07:38 -0000 1.1.6.2 @@ -17,10 +17,7 @@ //---------------------------------------------------------------------- // Macros -//#define DEBUG_PACKET -//#undef DEBUG_PACKET - -// diagnose structure size changes +// diagnose fragmentation problems //#define PACKET_PROCESS_FRAG_DIAG //---------------------------------------------------------------------- @@ -31,11 +28,9 @@ EQPacketFragmentSequence::EQPacketFragmentSequence() : m_streamid(unknown_stream), m_data(0), + m_totalLength(0), m_dataSize(0), - m_dataAllocSize(0), - m_seq(0), - m_current(0), - m_total(0) + m_dataAllocSize(0) { } @@ -44,11 +39,9 @@ EQPacketFragmentSequence::EQPacketFragmentSequence(EQStreamID streamid) : m_streamid(streamid), m_data(0), + m_totalLength(0), m_dataSize(0), - m_dataAllocSize(0), - m_seq(0), - m_current(0), - m_total(0) + m_dataAllocSize(0) { } @@ -64,103 +57,78 @@ // Reset the fragment sequence void EQPacketFragmentSequence::reset() { +#ifdef PACKET_PROCESS_FRAG_DIAG + debug ("EQPacketFragmentSequence::reset() stream %d (complete fragment? %s)", + m_streamid, (isComplete() ? "yes" : "no")); +#endif m_dataSize = 0; - m_seq = 0; - m_current = 0; - m_total = 0; + m_totalLength = 0; } //////////////////////////////////////////////////// // Add a fragment to the sequence -void EQPacketFragmentSequence::addFragment(EQPacketFormat& pf) +void EQPacketFragmentSequence::addFragment(EQProtocolPacket& packet) { -#ifdef DEBUG_PACKET - debug ("EQPacketFragmentSequence::addFragment()"); -#endif /* DEBUG_PACKET */ - #ifdef PACKET_PROCESS_FRAG_DIAG - seqDebug("EQPacketFragmentSequence::addFragment(): pf.arq 0x%04x, pf.fragSeq 0x%04x, pf.fragCur 0x%04x, pf.fragTot 0x%04x", pf.arq(), pf.fragSeq(), pf.fragCur(), pf.fragTot()); -#endif /* PACKET_PROCESS_FRAG_DIAG */ + debug ("EQPacketFragmentSequence::addFragment() stream %d", m_streamid); +#endif - // fragments with ASQ signify the beginning of a new series - // warn if previous series is incomplete - // clear and allocate space for the new series - if (pf.isASQ()) + // If dataSize isn't filled in, this is first fragment. Need to alloc. + if (m_dataSize == 0) { - if (m_dataSize) - { - if (!pf.fragSeq() == 0) // surpress WARNING for duplicate SEQStart/fragment start (e.g.0x3a) - { - seqWarn("EQPacketFragmentSequence::addFragment(): WARNING OpCode 0x%04x will not be processed due to loss", - eqntohuint16(m_data)); - seqWarn("EQPacketFragmentSequence::addFragment(): recieved new fragment seq 0x%04x before completion of 0x%04x", - pf.fragSeq(), m_seq); - } - } + // Buffer length is on the wire past the sequence number. + m_totalLength = eqntohuint32(&(packet.payload()[2])); - size_t needs = (pf.fragTot() * pf.payloadLength()); - if (needs > m_dataAllocSize) + if (m_totalLength == 0) { - delete [] m_data; - m_dataAllocSize = needs; - m_data = new uint8_t[m_dataAllocSize]; // should be an over estimate + seqWarn("Oversized packet fragment requested buffer of size 0 on stream %d OpCode %04x seq %04x", + m_streamid, *(uint16_t*)(&packet.payload()[6]), packet.arqSeq()); } - - m_dataSize = 0; - m_seq = pf.fragSeq(); - m_current = pf.fragCur(); - m_total = pf.fragTot(); - + else if (m_totalLength > m_dataAllocSize) + { + // Buffer isn't big enough. Enlargen it. + if (m_data) + { + delete[] m_data; + } + m_dataAllocSize = m_totalLength; + m_data = new uint8_t[m_dataAllocSize]; #ifdef PACKET_PROCESS_FRAG_DIAG - seqDebug("EQPacketFragmentSequence::addFragment(): Allocating %d bytes for fragmentSeq %d, stream %d, OpCode 0x%04x", - (pf.fragTot() * pf.payloadLength()), pf.fragSeq(), m_streamid, eqntohuint16(m_data)); + seqDebug("EQPacketFragmentSequence::addFragment(): Allocating %d bytes for seq %04x, stream %d, OpCode 0x%04x", + m_dataAllocSize, packet.arqSeq(), m_streamid, + *(uint16_t*)(&packet.payload()[6])); #endif - } - - if (m_data != NULL) - { - if (pf.fragSeq() != m_seq || pf.fragCur() != m_current) - { - seqWarn("EQPacketFragmentSequence::addFragment: WARNING OpCode 0x%04x will not be processed due to loss", - eqntohuint16(m_data)); - seqWarn("EQPacketFragmentSequence::addFragment(): recieved Out-Of-Order fragment seq 0x%04x (0x%04x) expected 0x%04x", - pf.fragCur(), pf.fragSeq(), m_current); - return; - } - else if ((m_dataSize + pf.payloadLength()) > m_dataAllocSize) - { - // theoretically should never get here, but... - // calculate needed size - size_t needs = m_dataSize + pf.payloadLength(); - - // allocate new buffer - uint8_t* newData = new uint8_t[needs]; - - // copy old data - memcpy((void*)newData, (void*)m_data, m_dataSize); - - // delete old data - delete [] m_data; - - m_dataAllocSize = needs; - m_data = newData; - } - else - { - memcpy((void*)(m_data + m_dataSize), (void*)pf.payload(), pf.payloadLength()); - - m_dataSize += pf.payloadLength(); - m_current = pf.fragCur()+1; - - return; } + + // Now put in this fragment. Payload starts after seq, unknown, + // and alloc size. #ifdef PACKET_PROCESS_FRAG_DIAG + seqDebug("EQPacketFragmentSequence::addFragment(): Putting initial %d byte fragment into buffer for seq %04x, stream %d, OpCode 0x%04x", + packet.payloadLength() - 6, packet.arqSeq(), m_streamid, + *(uint16_t*)(&packet.payload()[6])); +#endif + memcpy(m_data, &packet.payload()[6], packet.payloadLength()-6); + m_dataSize = packet.payloadLength() - 6; } else { - seqWarn("EQPacketFragmentSequence::addFragment(): recieved fragment component (fragSeq 0x%04x, fragCur 0x%04x) before fragment start", - pf.fragSeq(), pf.fragCur()); + // Add this fragment to the buffer. Payload starts immediately after seq. +#ifdef PACKET_PROCESS_FRAG_DIAG + seqDebug("EQPacketFragmentSequence::addFragment(): Putting %d byte fragment into buffer for seq %04x, stream %d, OpCode 0x%04x", + packet.payloadLength() - 2, packet.arqSeq(), m_streamid, + *(uint16_t*)(m_data)); #endif + + if (m_data + m_dataSize + packet.payloadLength() - 2 > m_data + m_dataAllocSize) + { + seqFatal("!!!! EQPacketFragmentSequence::addFragment(): buffer overflow adding in new fragment to buffer with seq %04x on stream %d, opcode %04x. Buffer is size %d and has been filled up to %d, but tried to add %d more!", + packet.arqSeq(), m_streamid, *(uint16_t*)(m_data), + m_dataAllocSize, m_dataSize, packet.payloadLength() - 2); + } + + memcpy(m_data + m_dataSize, + &packet.payload()[2], packet.payloadLength() - 2); + m_dataSize += (packet.payloadLength() - 2); } } Index: packetfragment.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetfragment.h,v retrieving revision 1.1 retrieving revision 1.1.6.1 diff -u -d -r1.1 -r1.1.6.1 --- packetfragment.h 25 Oct 2003 00:21:00 -0000 1.1 +++ packetfragment.h 9 Feb 2005 07:07:38 -0000 1.1.6.1 @@ -15,7 +15,7 @@ #include "packetcommon.h" -class EQPacketFormat; +class EQProtocolPacket; //---------------------------------------------------------------------- // EQPacketFragmentSequence @@ -26,7 +26,7 @@ EQPacketFragmentSequence(EQStreamID streamid); ~EQPacketFragmentSequence(); void reset(); - void addFragment(EQPacketFormat& pf); + void addFragment(EQProtocolPacket& pf); bool isComplete(); uint8_t* data(); @@ -35,16 +35,14 @@ protected: EQStreamID m_streamid; uint8_t *m_data; + uint32_t m_totalLength; size_t m_dataSize; - uint16_t m_dataAllocSize; - uint16_t m_seq; - uint16_t m_current; - uint16_t m_total; + uint32_t m_dataAllocSize; }; inline bool EQPacketFragmentSequence::isComplete() { - return m_current == m_total; + return m_dataSize != 0 && m_totalLength == m_dataSize; } inline uint8_t* EQPacketFragmentSequence::data() Index: everquest.h =================================================================== RCS file: /cvsroot/s... [truncated message content] |
|
From: Erik B. <do...@us...> - 2004-11-08 03:14:54
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7650 Modified Files: Tag: pre_5_0_beta ChangeLog acinclude.m4 Log Message: 5.0.0.16 Index: acinclude.m4 =================================================================== RCS file: /cvsroot/seq/showeq/acinclude.m4,v retrieving revision 1.9.16.4 retrieving revision 1.9.16.5 diff -u -d -r1.9.16.4 -r1.9.16.5 --- acinclude.m4 7 Nov 2004 23:09:53 -0000 1.9.16.4 +++ acinclude.m4 8 Nov 2004 03:14:39 -0000 1.9.16.5 @@ -763,6 +763,30 @@ $x_libraries \ $qt_libdirs" +case $host_cpu in +powerpc64 | s390x | sparc64 | x86_64) +qt_libdirs=" $QTDIR/lib64 \ + $QTLIB \ + /usr/local/qt3/lib64 \ + /usr/local/qt/lib64 \ + /usr/local/qt*/lib64 \ + /usr/qt/3/lib64 \ + /usr/qt/*/lib64 \ + /usr/lib/qt3/lib64 \ + /usr/lib/qt/lib64 \ + /usr/lib/qt*/lib64 \ + /usr/lib64 \ + /usr/X11R6/lib/X11/qt3/lib64 \ + /usr/X11R6/lib/X11/qt/lib64 \ + /usr/X11R6/lib/X11/qt*/lib64 \ + /usr/X11R6/lib/qt3/lib64 \ + /usr/X11R6/lib/qt/lib64 \ + /usr/X11R6/lib/qt*/lib64 \ + /usr/src/qt-*/lib64 \ + $qt_libdirs" +;; +esac + [[ "$ac_qt_libraries" != "NO" ]] && \ qt_libdirs="$ac_qt_libraries $qt_libdirs" Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -d -r1.1.2.3 -r1.1.2.4 --- ChangeLog 7 Nov 2004 23:09:52 -0000 1.1.2.3 +++ ChangeLog 8 Nov 2004 03:14:39 -0000 1.1.2.4 @@ -3,6 +3,7 @@ dohpaZ (11/7/04) ------------------------ + Updated version to 5.0.0.16 ++ Tweaked acinclude.m4 to improve x86_64 behaviour. dohpaZ (11/6/04) ------------------------ |
|
From: Erik B. <do...@us...> - 2004-11-08 03:06:51
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5818 Modified Files: Tag: pre_v5_0_dev2 ChangeLog acinclude.m4 Log Message: Tweak AMD64 build to work under Suse 9.2 Index: acinclude.m4 =================================================================== RCS file: /cvsroot/seq/showeq/acinclude.m4,v retrieving revision 1.9.16.3.2.1 retrieving revision 1.9.16.3.2.2 diff -u -d -r1.9.16.3.2.1 -r1.9.16.3.2.2 --- acinclude.m4 2 Oct 2004 03:09:41 -0000 1.9.16.3.2.1 +++ acinclude.m4 8 Nov 2004 03:06:34 -0000 1.9.16.3.2.2 @@ -763,6 +763,30 @@ $x_libraries \ $qt_libdirs" +case $host_cpu in +powerpc64 | s390x | sparc64 | x86_64) +qt_libdirs=" $QTDIR/lib64 \ + $QTLIB \ + /usr/local/qt3/lib64 \ + /usr/local/qt/lib64 \ + /usr/local/qt*/lib64 \ + /usr/qt/3/lib64 \ + /usr/qt/*/lib64 \ + /usr/lib/qt3/lib64 \ + /usr/lib/qt/lib64 \ + /usr/lib/qt*/lib64 \ + /usr/lib64 \ + /usr/X11R6/lib/X11/qt3/lib64 \ + /usr/X11R6/lib/X11/qt/lib64 \ + /usr/X11R6/lib/X11/qt*/lib64 \ + /usr/X11R6/lib/qt3/lib64 \ + /usr/X11R6/lib/qt/lib64 \ + /usr/X11R6/lib/qt*/lib64 \ + /usr/src/qt-*/lib64 \ + $qt_libdirs" +;; +esac + [[ "$ac_qt_libraries" != "NO" ]] && \ qt_libdirs="$ac_qt_libraries $qt_libdirs" Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.2.2.8 retrieving revision 1.1.2.2.2.9 diff -u -d -r1.1.2.2.2.8 -r1.1.2.2.2.9 --- ChangeLog 7 Nov 2004 22:41:29 -0000 1.1.2.2.2.8 +++ ChangeLog 8 Nov 2004 03:06:33 -0000 1.1.2.2.2.9 @@ -3,6 +3,7 @@ dohpaZ (11/7/04) ------------------------ + Updated version to 5.0.0.16 ++ Tweaked acinclude.m4 to improve x86_64 behaviour. dohpaZ (11/6/04) ------------------------ |
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18654/src Modified Files: Tag: pre_5_0_beta Makefile.am bazaarlog.cpp bazaarlog.h category.cpp classes.h combatlog.cpp compass.cpp compassframe.cpp datetimemgr.cpp deity.h editor.cpp everquest.h experiencelog.cpp filter.cpp filteredspawnlog.cpp filtermgr.cpp filternotifications.cpp group.cpp guild.cpp guildlist.cpp guildshell.cpp guildshell.h interface.cpp interface.h itemdb.cpp itemdbtool.cpp languages.h logger.cpp map.cpp mapicon.cpp messagefilter.cpp messagefilterdialog.cpp messages.cpp messageshell.cpp messagewindow.cpp netdiag.cpp packet.cpp packetinfo.cpp packetlog.cpp packetstream.cpp player.cpp player.h races.h seqlistview.cpp seqwindow.cpp skilllist.cpp skills.h spawn.h spawnlist.cpp spawnlist2.cpp spawnlistcommon.cpp spawnlog.cpp spawnmonitor.cpp spawnpointlist.cpp spawnshell.cpp spelllist.cpp spells.cpp spellshell.cpp staticspells.h statlist.cpp terminal.cpp typenames.h weapons.h weapons1.h weapons27.h weapons28.h weapons2b.h xmlconv.cpp xmlpreferences.cpp zonemgr.cpp Log Message: 5.0.0.16 Index: spawnmonitor.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnmonitor.cpp,v retrieving revision 1.5.12.1 retrieving revision 1.5.12.2 diff -u -d -r1.5.12.1 -r1.5.12.2 --- spawnmonitor.cpp 7 Dec 2003 06:30:44 -0000 1.5.12.1 +++ spawnmonitor.cpp 7 Nov 2004 23:10:25 -0000 1.5.12.2 @@ -405,3 +405,5 @@ seqInfo("Loaded spawn points: %s", (const char*)fileName); m_modified = false; } + +#include "spawnmonitor.moc" Index: combatlog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/combatlog.cpp,v retrieving revision 1.10.16.1 retrieving revision 1.10.16.2 diff -u -d -r1.10.16.1 -r1.10.16.2 --- combatlog.cpp 7 Dec 2003 06:30:43 -0000 1.10.16.1 +++ combatlog.cpp 7 Nov 2004 23:09:56 -0000 1.10.16.2 @@ -987,3 +987,4 @@ resetDPS(); } +#include "combatlog.moc" Index: messagefilterdialog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messagefilterdialog.cpp,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- messagefilterdialog.cpp 13 Dec 2003 00:49:42 -0000 1.1.4.2 +++ messagefilterdialog.cpp 7 Nov 2004 23:10:22 -0000 1.1.4.3 @@ -466,3 +466,5 @@ // only enable delete if editing an existing filter m_delete->setEnabled(m_currentFilter != 0); } + +#include "messagefilterdialog.moc" Index: messagewindow.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messagewindow.cpp,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- messagewindow.cpp 13 Dec 2003 00:49:42 -0000 1.1.4.2 +++ messagewindow.cpp 7 Nov 2004 23:10:22 -0000 1.1.4.3 @@ -1175,3 +1175,4 @@ m_hideUserFilterMenu->insertItem(filter.name(), filterid); } +#include "messagewindow.moc" Index: weapons27.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons27.h,v retrieving revision 1.4 retrieving revision 1.4.10.1 diff -u -d -r1.4 -r1.4.10.1 --- weapons27.h 7 Oct 2003 14:34:29 -0000 1.4 +++ weapons27.h 7 Nov 2004 23:10:26 -0000 1.4.10.1 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0x00 NULL, // 0x01 NULL, // 0x02 @@ -277,3 +279,5 @@ NULL, // 0xfd NULL, // 0xfe NULL, // 0xff +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: spawn.h =================================================================== RCS file: /cvsroot/seq/showeq/src/spawn.h,v retrieving revision 1.19.6.3 retrieving revision 1.19.6.4 diff -u -d -r1.19.6.3 -r1.19.6.4 --- spawn.h 24 Sep 2004 04:25:53 -0000 1.19.6.3 +++ spawn.h 7 Nov 2004 23:10:25 -0000 1.19.6.4 @@ -428,16 +428,16 @@ { // if this is an item of spawn type, return the pointer to Spawn, // return otherwise NULL - if (!item || (item->type() == tSpawn)) - return NULL; // otherwise NULL - else + if (item && ((item->type() == tSpawn) || (item->type() == tPlayer))) return (const Spawn*)item; + else + return NULL; // otherwise NULL } inline Spawn* spawnType(Item* item) { // if this is an item of spawn type, return the pointer to Spawn - if (item->type() == tSpawn) + if (item && ((item->type() == tSpawn) || (item->type() == tPlayer))) return (Spawn*)item; else return NULL; // otherwise NULL @@ -447,7 +447,7 @@ inline const Door* doorType(const Item* item) { // if this is an item of door type, return the pointer to Door - if (item->type() == tDoors) + if (item && (item->type() == tDoors)) return (const Door*)item; else return NULL; // otherwise NULL @@ -456,7 +456,7 @@ inline Door* doorType(Item* item) { // if this is an item of door type, return the pointer to Door - if (item->type() == tDoors) + if (item && (item->type() == tDoors)) return (Door*)item; else return NULL; // otherwise NULL @@ -466,7 +466,7 @@ inline const Drop* dropType(const Item* item) { // if this is an item of drop type, return the pointer to Drop - if (item->type() == tDrop) + if (item && (item->type() == tDrop)) return (const Drop*)item; else return NULL; // otherwise NULL @@ -475,7 +475,7 @@ inline Drop* dropType(Item* item) { // if this is an item of drop type, return the pointer to Drop - if (item->type() == tDrop) + if (item && (item->type() == tDrop)) return (Drop*)item; else return NULL; // otherwise NULL Index: seqwindow.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/seqwindow.cpp,v retrieving revision 1.1.16.1 retrieving revision 1.1.16.2 diff -u -d -r1.1.16.1 -r1.1.16.2 --- seqwindow.cpp 7 Dec 2003 06:30:44 -0000 1.1.16.1 +++ seqwindow.cpp 7 Nov 2004 23:10:25 -0000 1.1.16.2 @@ -151,3 +151,4 @@ QDockWindow::mousePressEvent(e); } +#include "seqwindow.moc" Index: typenames.h =================================================================== RCS file: /cvsroot/seq/showeq/src/typenames.h,v retrieving revision 1.4 retrieving revision 1.4.6.1 diff -u -d -r1.4 -r1.4.6.1 --- typenames.h 25 Oct 2003 00:21:00 -0000 1.4 +++ typenames.h 7 Nov 2004 23:10:26 -0000 1.4.6.1 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0 "Humanoid", // 1 NULL, // 2 @@ -73,3 +75,5 @@ "Timer", // 66 "EventTrigger", // 67 NULL, // 68 +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: weapons1.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons1.h,v retrieving revision 1.1 retrieving revision 1.1.10.1 diff -u -d -r1.1 -r1.1.10.1 --- weapons1.h 7 Oct 2003 14:34:29 -0000 1.1 +++ weapons1.h 7 Nov 2004 23:10:26 -0000 1.1.10.1 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0x00 NULL, // 0x01 NULL, // 0x02 @@ -277,3 +279,5 @@ NULL, // 0xfd NULL, // 0xfe NULL, // 0xff +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: terminal.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/terminal.cpp,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- terminal.cpp 13 Dec 2003 00:49:43 -0000 1.1.4.2 +++ terminal.cpp 7 Nov 2004 23:10:26 -0000 1.1.4.3 @@ -213,3 +213,4 @@ fputc('\n', stdout); } +#include "terminal.moc" Index: guildshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/guildshell.cpp,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- guildshell.cpp 24 Sep 2004 04:25:52 -0000 1.1.4.2 +++ guildshell.cpp 7 Nov 2004 23:10:03 -0000 1.1.4.3 @@ -241,6 +241,7 @@ } } +#include "guildshell.moc" Index: zonemgr.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/zonemgr.cpp,v retrieving revision 1.8.6.4 retrieving revision 1.8.6.5 diff -u -d -r1.8.6.4 -r1.8.6.5 --- zonemgr.cpp 18 Feb 2004 22:56:15 -0000 1.8.6.4 +++ zonemgr.cpp 7 Nov 2004 23:10:27 -0000 1.8.6.5 @@ -277,3 +277,5 @@ sizeof(zonePointStruct) * m_zonePointCount); } +#include "zonemgr.moc" + Index: xmlconv.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/xmlconv.cpp,v retrieving revision 1.2.16.3 retrieving revision 1.2.16.4 diff -u -d -r1.2.16.3 -r1.2.16.4 --- xmlconv.cpp 24 Sep 2004 04:25:53 -0000 1.2.16.3 +++ xmlconv.cpp 7 Nov 2004 23:10:27 -0000 1.2.16.4 @@ -205,11 +205,7 @@ // fix the key code (deal with Qt brain death) key &= ~Qt::UNICODE_ACCEL; -#if QT_VERSION >= 300 v = QVariant(QKeySequence(key)); -#else - v = QVariant(key); -#endif ok = true; } } @@ -240,12 +236,10 @@ sp.setHorData((QSizePolicy::SizeType)e.attribute("hsizetype").toInt()); if (e.hasAttribute("vsizetype")) sp.setVerData((QSizePolicy::SizeType)e.attribute("vsizetype").toInt()); -#if (QT_VERSION >= 300) if (e.hasAttribute("horstretch")) sp.setHorStretch(e.attribute("horstretch").toInt()); if (e.hasAttribute("verstretch")) sp.setHorStretch(e.attribute("verstretch").toInt()); -#endif v = QVariant(sp); ok = true; } @@ -453,10 +447,8 @@ QSizePolicy sp(v.toSizePolicy()); e.setAttribute("hsizetype", sp.horData()); e.setAttribute("vsizetype", sp.verData()); -#if (QT_VERSION >= 300) e.setAttribute("horstretch", sp.horStretch()); e.setAttribute("verstretch", sp.verStretch()); -#endif } break; case QVariant::Cursor: @@ -515,12 +507,10 @@ } break; -#if QT_VERSION >= 300 case QVariant::KeySequence: e.setTagName("key"); e.setAttribute("sequence", (QString)v.toKeySequence()); break; -#endif case QVariant::ByteArray: // this is only for [u]int64_t { Index: spawnlog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnlog.cpp,v retrieving revision 1.2.4.2 retrieving revision 1.2.4.3 diff -u -d -r1.2.4.2 -r1.2.4.3 --- spawnlog.cpp 16 Jan 2004 20:22:11 -0000 1.2.4.2 +++ spawnlog.cpp 7 Nov 2004 23:10:25 -0000 1.2.4.3 @@ -35,11 +35,7 @@ const char *killedBy, int kid, int guildid) { const QDateTime& eqDate = m_dateTimeMgr->updatedDateTime(); -#if (QT_VERSION > 0x030100) const QTime& time = QTime::currentTime(Qt::LocalTime); -#else - const QTime& time = QTime::currentTime(); -#endif logSpawnInfo(type, name, id, level, x, y, z, eqDate, time, @@ -88,11 +84,7 @@ int spawndatasize = len / sizeof(spawnStruct); const QDateTime& eqDate = m_dateTimeMgr->updatedDateTime(); -#if (QT_VERSION > 0x030100) const QTime& time = QTime::currentTime(Qt::LocalTime); -#else - const QTime& time = QTime::currentTime(); -#endif for (int i = 0; i < spawndatasize; i++) { @@ -151,4 +143,4 @@ zoneShortName = zonename; } - +#include "spawnlog.moc" Index: logger.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/logger.cpp,v retrieving revision 1.30 retrieving revision 1.30.6.1 diff -u -d -r1.30 -r1.30.6.1 --- logger.cpp 25 Oct 2003 00:20:59 -0000 1.30 +++ logger.cpp 7 Nov 2004 23:10:20 -0000 1.30.6.1 @@ -140,3 +140,4 @@ fprintf (m_fp, "%03d | %-48s | %s \n\n", c, hex, asc); } +#include "logger.moc" Index: group.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/group.cpp,v retrieving revision 1.6.16.2 retrieving revision 1.6.16.3 diff -u -d -r1.6.16.2 -r1.6.16.3 --- group.cpp 13 Dec 2003 00:49:42 -0000 1.6.16.2 +++ group.cpp 7 Nov 2004 23:10:03 -0000 1.6.16.3 @@ -368,3 +368,4 @@ return m_members[slot].m_spawn; } +#include "group.moc" Index: player.h =================================================================== RCS file: /cvsroot/seq/showeq/src/player.h,v retrieving revision 1.21.6.2 retrieving revision 1.21.6.3 diff -u -d -r1.21.6.2 -r1.21.6.3 --- player.h 16 Jan 2004 20:22:11 -0000 1.21.6.2 +++ player.h 7 Nov 2004 23:10:25 -0000 1.21.6.3 @@ -132,7 +132,7 @@ signals: void newPlayer(void); void buffLoad(const spellBuff*); - void newSpeed (int speed); + void newSpeed (double speed); void statChanged ( int statNum, int val, int max Index: datetimemgr.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/datetimemgr.cpp,v retrieving revision 1.2.4.1 retrieving revision 1.2.4.2 diff -u -d -r1.2.4.1 -r1.2.4.2 --- datetimemgr.cpp 7 Dec 2003 06:30:43 -0000 1.2.4.1 +++ datetimemgr.cpp 7 Nov 2004 23:09:56 -0000 1.2.4.2 @@ -44,11 +44,7 @@ { const timeOfDayStruct* tday = (const timeOfDayStruct*)data; -#if (QT_VERSION > 0x030100) m_refDateTime = QDateTime::currentDateTime(Qt::UTC); -#else - m_refDateTime = QDateTime::currentDateTime(); -#endif m_eqDateTime.setDate(QDate(tday->year, tday->month, tday->day)); m_eqDateTime.setTime(QTime(tday->hour - 1, tday->minute, 0)); if (!m_timer) @@ -66,11 +62,7 @@ if (!m_eqDateTime.isValid()) return; -#if (QT_VERSION > 0x030100) const QDateTime& current = QDateTime::currentDateTime(Qt::UTC); -#else - const QDateTime& current = QDateTime::currentDateTime(); -#endif int secs = m_refDateTime.secsTo(current); if (secs) @@ -81,3 +73,5 @@ } } +#include "datetimemgr.moc" + Index: statlist.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/statlist.cpp,v retrieving revision 1.8.6.1 retrieving revision 1.8.6.2 diff -u -d -r1.8.6.1 -r1.8.6.2 --- statlist.cpp 7 Dec 2003 06:30:46 -0000 1.8.6.1 +++ statlist.cpp 7 Nov 2004 23:10:26 -0000 1.8.6.2 @@ -363,3 +363,5 @@ // make the listview save it's prefs m_statList->savePrefs(); } + +#include "statlist.moc" Index: bazaarlog.h =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/bazaarlog.h,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- bazaarlog.h 18 Feb 2004 22:56:14 -0000 1.1.4.1 +++ bazaarlog.h 7 Nov 2004 23:09:56 -0000 1.1.4.2 @@ -7,12 +7,15 @@ * Copyright 2003-2004 by the respective ShowEQ Developers */ +#ifndef _BAZAARLOG_H_ +#define _BAZAARLOG_H_ + #include <qobject.h> #include "logger.h" class EQPacket; class SpawnShell; - + //---------------------------------------------------------------------- // BazaarLog is an SEQLogger subclass that handles bazaar packets class BazaarLog : public SEQLogger @@ -32,3 +35,4 @@ SpawnShell& m_shell; }; +#endif // _BAZAARLOG_H_ Index: filteredspawnlog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/filteredspawnlog.cpp,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- filteredspawnlog.cpp 7 Dec 2003 06:30:43 -0000 1.1.4.1 +++ filteredspawnlog.cpp 7 Nov 2004 23:10:03 -0000 1.1.4.2 @@ -89,3 +89,4 @@ flush(); } +#include "filteredspawnlog.moc" Index: compass.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/compass.cpp,v retrieving revision 1.2 retrieving revision 1.2.16.1 diff -u -d -r1.2 -r1.2.16.1 --- compass.cpp 30 Aug 2003 15:51:45 -0000 1.2 +++ compass.cpp 7 Nov 2004 23:09:56 -0000 1.2.16.1 @@ -167,3 +167,5 @@ paintCompass (&p); p.end(); } + +#include "compass.moc" Index: bazaarlog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/bazaarlog.cpp,v retrieving revision 1.1.4.3 retrieving revision 1.1.4.4 diff -u -d -r1.1.4.3 -r1.1.4.4 --- bazaarlog.cpp 24 Sep 2004 04:25:52 -0000 1.1.4.3 +++ bazaarlog.cpp 7 Nov 2004 23:09:56 -0000 1.1.4.4 @@ -64,3 +64,6 @@ flush(); } + +#include "bazaarlog.moc" + Index: itemdbtool.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/itemdbtool.cpp,v retrieving revision 1.11.6.3 retrieving revision 1.11.6.4 diff -u -d -r1.11.6.3 -r1.11.6.4 --- itemdbtool.cpp 24 Sep 2004 04:25:53 -0000 1.11.6.3 +++ itemdbtool.cpp 7 Nov 2004 23:10:20 -0000 1.11.6.4 @@ -1683,7 +1683,7 @@ printf("001: "); uint8_t fieldCount = 1; uint8_t col = 5; - size_t fieldWidth; + int fieldWidth; const char* curPos = rawData; const char* endField; Index: seqlistview.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/seqlistview.cpp,v retrieving revision 1.2 retrieving revision 1.2.16.1 diff -u -d -r1.2 -r1.2.16.1 --- seqlistview.cpp 24 May 2002 19:15:12 -0000 1.2 +++ seqlistview.cpp 7 Nov 2004 23:10:25 -0000 1.2.16.1 @@ -223,3 +223,5 @@ // trigger an update, otherwise things may look messy triggerUpdate(); } + +#include "seqlistview.moc" Index: guildlist.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/guildlist.cpp,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- guildlist.cpp 12 Feb 2004 00:39:28 -0000 1.1.4.2 +++ guildlist.cpp 7 Nov 2004 23:10:03 -0000 1.1.4.3 @@ -477,3 +477,4 @@ m_guildTotals->setText(text.arg(m_membersOn).arg(m_guildShell->members().count())); } +#include "guildlist.moc" Index: Makefile.am =================================================================== RCS file: /cvsroot/seq/showeq/src/Makefile.am,v retrieving revision 1.22.6.5 retrieving revision 1.22.6.6 diff -u -d -r1.22.6.5 -r1.22.6.6 --- Makefile.am 24 Sep 2004 04:25:51 -0000 1.22.6.5 +++ Makefile.am 7 Nov 2004 23:09:55 -0000 1.22.6.6 @@ -8,18 +8,88 @@ endif ITEMDB_SRCS = itemdb.cpp gdbmconv.cpp $(DB3_SRCS) -nodist_ITEMDB_SRCS = m_itemdb.cpp +nodist_ITEMDB_SRCS = bin_PROGRAMS = showeq showeqitemdbtool -showeq_SOURCES = main.cpp spawn.cpp spawnshell.cpp spawnlist.cpp spellshell.cpp spelllist.cpp vpacket.cpp editor.cpp filter.cpp packetfragment.cpp packetstream.cpp packetinfo.cpp packet.cpp packetcapture.cpp packetformat.cpp interface.cpp compass.cpp map.cpp util.cpp experiencelog.cpp combatlog.cpp player.cpp skilllist.cpp statlist.cpp filtermgr.cpp mapcore.cpp category.cpp compassframe.cpp group.cpp guild.cpp netdiag.cpp logger.cpp xmlconv.cpp xmlpreferences.cpp seqwindow.cpp seqlistview.cpp zonemgr.cpp spawnmonitor.cpp spawnpointlist.cpp spawnlistcommon.cpp spawnlist2.cpp spells.cpp datetimemgr.cpp spawnlog.cpp packetlog.cpp datalocationmgr.cpp eqstr.cpp messages.cpp message.cpp messagefilter.cpp messagewindow.cpp messageshell.cpp terminal.cpp filteredspawnlog.cpp messagefilterdialog.cpp diagnosticmessages.cpp mapicon.cpp filternotifications.cpp netstream.cpp guildshell.cpp guildlist.cpp bazaarlog.cpp $(ITEMDB_SRCS) +showeq_SOURCES = main.cpp spawn.cpp spawnshell.cpp spawnlist.cpp spellshell.cpp \ + spelllist.cpp vpacket.cpp editor.cpp filter.cpp packetfragment.cpp packetstream.cpp \ + packetinfo.cpp packet.cpp packetcapture.cpp packetformat.cpp interface.cpp compass.cpp \ + map.cpp util.cpp experiencelog.cpp combatlog.cpp player.cpp skilllist.cpp \ + statlist.cpp filtermgr.cpp mapcore.cpp category.cpp compassframe.cpp group.cpp \ + guild.cpp netdiag.cpp logger.cpp xmlconv.cpp xmlpreferences.cpp seqwindow.cpp \ + seqlistview.cpp zonemgr.cpp spawnmonitor.cpp spawnpointlist.cpp spawnlistcommon.cpp \ + spawnlist2.cpp spells.cpp datetimemgr.cpp spawnlog.cpp packetlog.cpp \ + datalocationmgr.cpp eqstr.cpp messages.cpp message.cpp messagefilter.cpp messagewindow.cpp \ + messageshell.cpp terminal.cpp filteredspawnlog.cpp messagefilterdialog.cpp \ + diagnosticmessages.cpp mapicon.cpp filternotifications.cpp netstream.cpp guildshell.cpp \ + guildlist.cpp bazaarlog.cpp $(ITEMDB_SRCS) -nodist_showeq_SOURCES = m_spawnshell.cpp m_spawnlist.cpp m_spellshell.cpp m_spelllist.cpp m_editor.cpp m_packetstream.cpp m_packetinfo.cpp m_packet.cpp m_interface.cpp m_compass.cpp m_map.cpp m_experiencelog.cpp m_combatlog.cpp m_player.cpp m_skilllist.cpp m_statlist.cpp m_filtermgr.cpp m_category.cpp m_compassframe.cpp m_group.cpp m_guild.cpp m_netdiag.cpp m_logger.cpp m_xmlpreferences.cpp m_seqwindow.cpp m_seqlistview.cpp m_zonemgr.cpp m_spawnmonitor.cpp m_spawnpointlist.cpp m_spawnlistcommon.cpp m_spawnlist2.cpp m_datetimemgr.cpp m_spawnlog.cpp m_packetlog.cpp m_messages.cpp m_messagefilter.cpp m_messagewindow.cpp m_messageshell.cpp m_terminal.cpp m_filteredspawnlog.cpp m_messagefilterdialog.cpp m_mapicon.cpp m_filternotifications.cpp m_guildshell.cpp m_guildlist.cpp m_bazaarlog.cpp ui_mapicondialog.h ui_mapicondialog.cpp m_ui_mapicondialog.cpp $(nodist_ITEMDB_SRCS) +showeq_moc_SRCS = bazaarlog.moc category.moc combatlog.moc compass.moc \ + compassframe.moc datetimemgr.moc editor.moc experiencelog.moc \ + filteredspawnlog.moc filtermgr.moc filternotifications.moc group.moc \ + guild.moc guildlist.moc guildshell.moc interface.moc itemdb.moc logger.moc \ + map.moc mapicon.moc messagefilter.moc messagefilterdialog.moc messages.moc \ + messageshell.moc messagewindow.moc netdiag.moc packet.moc packetinfo.moc \ + packetlog.moc packetstream.moc player.moc seqlistview.moc \ + seqwindow.moc skilllist.moc spawnlist.moc spawnlist2.moc spawnlistcommon.moc \ + spawnlog.moc spawnmonitor.moc spawnpointlist.moc spawnshell.moc spelllist.moc \ + spellshell.moc statlist.moc terminal.moc xmlpreferences.moc zonemgr.moc + +nodist_showeq_SOURCES = ui_mapicondialog.h ui_mapicondialog.cpp $(showeq_moc_SRCS) m_ui_mapicondialog.cpp $(nodist_ITEMDB_SRCS) + +$(srcdir)/bazaarlog.cpp: bazaarlog.moc +$(srcdir)/category.cpp: category.moc +$(srcdir)/combatlog.cpp: combatlog.moc +$(srcdir)/compass.cpp: compass.moc +$(srcdir)/compassframe.cpp: compassframe.moc +$(srcdir)/datetimemgr.cpp: datetimemgr.moc +$(srcdir)/editor.cpp: editor.moc +$(srcdir)/experiencelog.cpp: experiencelog.moc +$(srcdir)/filteredspawnlog.cpp: filteredspawnlog.moc +$(srcdir)/filtermgr.cpp: filtermgr.moc +$(srcdir)/filternotifications.cpp: filternotifications.moc +$(srcdir)/group.cpp: group.moc +$(srcdir)/guild.cpp: guild.moc +$(srcdir)/guildlist.cpp: guildlist.moc +$(srcdir)/guildshell.cpp: guildshell.moc +$(srcdir)/interface.cpp: interface.moc +$(srcdir)/itemdb.cpp: itemdb.moc +$(srcdir)/logger.cpp: logger.moc +$(srcdir)/map.cpp: map.moc +$(srcdir)/mapicon.cpp: mapicon.moc +$(srcdir)/messagefilter.cpp: messagefilter.moc +$(srcdir)/messagefilterdialog.cpp: messagefilterdialog.moc +$(srcdir)/messages.cpp: messages.moc +$(srcdir)/messageshell.cpp: messageshell.moc +$(srcdir)/messagewindow.cpp: messagewindow.moc +$(srcdir)/netdiag.cpp: netdiag.moc +$(srcdir)/packet.cpp: packet.moc +$(srcdir)/packetinfo.cpp: packetinfo.moc +$(srcdir)/packetlog.cpp: packetlog.moc +$(srcdir)/packetstream.cpp: packetstream.moc +$(srcdir)/player.cpp: player.moc +$(srcdir)/seqlistview.cpp: seqlistview.moc +$(srcdir)/seqwindow.cpp: seqwindow.moc +$(srcdir)/skilllist.cpp: skilllist.moc +$(srcdir)/spawnlist.cpp: spawnlist.moc +$(srcdir)/spawnlist2.cpp: spawnlist2.moc +$(srcdir)/spawnlistcommon.cpp: spawnlistcommon.moc +$(srcdir)/spawnlog.cpp: spawnlog.moc +$(srcdir)/spawnmonitor.cpp: spawnmonitor.moc +$(srcdir)/spawnpointlist.cpp: spawnpointlist.moc +$(srcdir)/spawnshell.cpp: spawnshell.moc +$(srcdir)/spelllist.cpp: spelllist.moc +$(srcdir)/spellshell.cpp: spellshell.moc +$(srcdir)/statlist.cpp: statlist.moc +$(srcdir)/terminal.cpp: terminal.moc +$(srcdir)/xmlpreferences.cpp: xmlpreferences.moc +$(srcdir)/zonemgr.cpp: zonemgr.moc +$(srcdir)/packetinfo.cpp: s_everquest.h showeq_LDADD = $(QT_LDFLAGS) $(QTLIB) $(DB3_LIBS) $(LIBPTHREAD) $(MEMORY_LIBS) \ $(PROFILE_LIBS) $(SHOWEQ_RPATH) $(USER_LDFLAGS) - showeqitemdbtool_SOURCES = itemdbtool.cpp util.cpp diagnosticmessageslight.cpp datalocationmgr.cpp $(ITEMDB_SRCS) nodist_showeqitemdbtool_SOURCES = $(nodist_ITEMDB_SRCS) showeqitemdbtool_LDADD = $(QT_LDFLAGS) $(DB3_LIBS) $(QTLIB) $(LIBPTHREAD) $(SHOWEQ_RPATH) $(USER_LDFLAGS) @@ -60,20 +130,24 @@ nodist_sortitem_SOURCES = sortitem_LDADD = $(QT_LDFLAGS) $(QTLIB) $(LIBPTHREAD) $(SHOWEQ_RPATH) $(USER_LDFLAGS) -EXTRA_DIST = classes.h compass.h everquest.h interface.h main.h map.h filter.h vpacket.h editor.h packet.h packetcapture.h packetcommon.h packetformat.h packetstream.h packetfragment.h packetinfo.h races.h skills.h spells.h util.h experiencelog.h combatlog.h spawn.h spawnshell.h spawnlist.h spellshell.h spelllist.h languages.h weapons.h weapons1.h weapons27.h weapons28.h weapons2b.h decode.h itemdb.h gdbmconv.h cgiconv.h skilllist.h statlist.h db3conv.h dbcommon.h deity.h player.h crctab.h filtermgr.h point.h pointarray.h mapcore.h category.h compassframe.h group.h guild.h fixpt.h netdiag.h zones.h logger.h xmlconv.h xmlpreferences.h seqwindow.h seqlistview.h zonemgr.h spawnmonitor.h spawnpointlist.h typenames.h spawnlistcommon.h spawnlist2.h datetimemgr.h spawnlog.h packetlog.h datalocationmgr.h eqstr.h messages.h messagefilter.h messagewindow.h messageshell.h terminal.h filteredspawnlog.h messagefilterdialog.h diagnosticmessages.h mapicon.h mapicondialog.ui mapicondialog.ui.h filternotifications.h netstream.h guildshell.h guildlist.h bazaarlog.h message.h s_everquest.h staticspells.h h2info.pl +EXTRA_DIST = h2info.pl + +noinst_HEADERS = classes.h compass.h everquest.h interface.h main.h map.h filter.h vpacket.h editor.h packet.h packetcapture.h packetcommon.h packetformat.h packetstream.h packetfragment.h packetinfo.h races.h skills.h spells.h util.h experiencelog.h combatlog.h spawn.h spawnshell.h spawnlist.h spellshell.h spelllist.h languages.h weapons.h weapons1.h weapons27.h weapons28.h weapons2b.h decode.h itemdb.h gdbmconv.h cgiconv.h skilllist.h statlist.h db3conv.h dbcommon.h deity.h player.h crctab.h filtermgr.h point.h pointarray.h mapcore.h category.h compassframe.h group.h guild.h fixpt.h netdiag.h zones.h logger.h xmlconv.h xmlpreferences.h seqwindow.h seqlistview.h zonemgr.h spawnmonitor.h spawnpointlist.h typenames.h spawnlistcommon.h spawnlist2.h datetimemgr.h spawnlog.h packetlog.h datalocationmgr.h eqstr.h messages.h messagefilter.h messagewindow.h messageshell.h terminal.h filteredspawnlog.h messagefilterdialog.h diagnosticmessages.h mapicon.h mapicondialog.ui mapicondialog.ui.h filternotifications.h netstream.h guildshell.h guildlist.h bazaarlog.h message.h s_everquest.h staticspells.h CLEANFILES = $(nodist_showeq_SOURCES) MAINTAINERCLEANFILES = Makefile.in s_everquest.h map.o: map.cpp map.h ui_mapicondialog.h -packetinfo.o: s_everquest.h + +.h.moc: + $(MOC) $< -o $@ m_%.cpp: %.h - $(MOC) -nw $< -o $@ + $(MOC) $< -o $@ s_%.h: %.h - ./h2info.pl $< $@ + $(srcdir)/h2info.pl $< $@ ui_%.h: %.ui $(UIC) -nounload $< > $@ @@ -91,3 +165,5 @@ else :; fi; \ done endif + + Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.16 retrieving revision 1.74.6.17 diff -u -d -r1.74.6.16 -r1.74.6.17 --- everquest.h 24 Sep 2004 04:25:52 -0000 1.74.6.16 +++ everquest.h 7 Nov 2004 23:09:59 -0000 1.74.6.17 @@ -445,7 +445,7 @@ /*0244*/ uint8_t unknown244[14]; /*0258*/ int16_t deity; // Player's Deity -/*0262*/ uint8_t unknown260[115]; +/*0262*/ uint8_t unknown260[119]; }; /* 0375 */ /* @@ -473,7 +473,7 @@ /*0508*/ float underworld; // Underworld /*0512*/ float minclip; // Minimum view distance /*0516*/ float maxclip; // Maximum view distance -/*0520*/ uint8_t unknown0520[156]; // *** Placeholder +/*0520*/ uint8_t unknown0520[160]; // *** Placeholder /*0676*/ }; @@ -820,7 +820,7 @@ /*250*/ int8_t unknown249[4]; /*254*/ uint32_t petOwnerId; /*258*/ int16_t deity; -/*260*/ uint8_t unknown260[115]; +/*260*/ uint8_t unknown260[119]; /*375*/ }; Index: deity.h =================================================================== RCS file: /cvsroot/seq/showeq/src/deity.h,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.16.1 diff -u -d -r1.1.1.1 -r1.1.1.1.16.1 --- deity.h 19 Dec 2001 00:36:52 -0000 1.1.1.1 +++ deity.h 7 Nov 2004 23:09:56 -0000 1.1.1.1.16.1 @@ -5,6 +5,7 @@ * http://seq.sourceforge.net/ */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS "Bertoxxulous", // DEITY_BERT = 201 "Brell Serilis", // DEITY_BRELL = 202 "Cazic Thule", // DEITY_CAZIC = 203 @@ -21,3 +22,5 @@ "The Tribunal", // DEITY_TRIBUNAL = 214 "Tunare", // DEITY_TUNARE = 215 "Veeshan", // DEITY_VEESHAN = 216 +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: packetstream.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetstream.cpp,v retrieving revision 1.1.6.4 retrieving revision 1.1.6.5 diff -u -d -r1.1.6.4 -r1.1.6.5 --- packetstream.cpp 18 Sep 2004 20:51:32 -0000 1.1.6.4 +++ packetstream.cpp 7 Nov 2004 23:10:24 -0000 1.1.6.5 @@ -695,7 +695,7 @@ if (!found && !opcodeEntry->isEmpty()) { QString tempStr; - tempStr.sprintf("%s (%#04x) (dataLen: %d) doesn't match:", + tempStr.sprintf("%s (%#04x) (dataLen: %u) doesn't match:", (const char*)opcodeEntry->name(), opcodeEntry->opcode(), len); @@ -835,3 +835,5 @@ processCache(); } /* end ARQ processing */ } + +#include "packetstream.moc" Index: player.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/player.cpp,v retrieving revision 1.42.6.6 retrieving revision 1.42.6.7 diff -u -d -r1.42.6.6 -r1.42.6.7 --- player.cpp 24 Sep 2004 04:25:53 -0000 1.42.6.6 +++ player.cpp 7 Nov 2004 23:10:24 -0000 1.42.6.7 @@ -851,9 +851,9 @@ updateLastChanged(); emit changeItem(this, tSpawnChangedPosition); - emit newSpeed((int)lrint(hypot( hypot( (pupdate->deltaX*8), - (pupdate->deltaY*8)), - (pupdate->deltaZ*8)))); + emit newSpeed(hypot( hypot( (pupdate->deltaX*8), + (pupdate->deltaY*8)), + (pupdate->deltaZ*8))); static uint8_t count = 0; @@ -1441,3 +1441,5 @@ clear(); } } + +#include "player.moc" Index: packetlog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetlog.cpp,v retrieving revision 1.1.6.4 retrieving revision 1.1.6.5 diff -u -d -r1.1.6.4 -r1.1.6.5 --- packetlog.cpp 16 Jan 2004 20:22:11 -0000 1.1.6.4 +++ packetlog.cpp 7 Nov 2004 23:10:24 -0000 1.1.6.5 @@ -266,7 +266,7 @@ else ::putchar('\n'); - ::printf("%s [Size: %d]%s\n", + ::printf("%s [Size: %u]%s\n", ((dir == DIR_Server) ? "[Server->Client]" : "[Client->Server]"), len, (const char*)opCodeToString(opcode)); @@ -487,3 +487,4 @@ } } +#include "packetlog.moc" Index: packetinfo.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/packetinfo.cpp,v retrieving revision 1.1.4.2 retrieving revision 1.1.4.3 diff -u -d -r1.1.4.2 -r1.1.4.3 --- packetinfo.cpp 16 Jan 2004 20:22:11 -0000 1.1.4.2 +++ packetinfo.cpp 7 Nov 2004 23:10:23 -0000 1.1.4.3 @@ -739,3 +739,4 @@ return true; } +#include "packetinfo.moc" Index: itemdb.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/itemdb.cpp,v retrieving revision 1.10.6.3 retrieving revision 1.10.6.4 diff -u -d -r1.10.6.3 -r1.10.6.4 --- itemdb.cpp 24 Sep 2004 04:25:53 -0000 1.10.6.3 +++ itemdb.cpp 7 Nov 2004 23:10:04 -0000 1.10.6.4 @@ -2528,3 +2528,4 @@ return (((EQItemDBEntryData_3*)m_itemEntryData)->m_itemType == ItemTypeContainer); } +#include "itemdb.moc" Index: weapons.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons.h,v retrieving revision 1.5 retrieving revision 1.5.6.1 diff -u -d -r1.5 -r1.5.6.1 --- weapons.h 25 Oct 2003 00:21:00 -0000 1.5 +++ weapons.h 7 Nov 2004 23:10:26 -0000 1.5.6.1 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS "Generic", // 0x00 "1HSword", // 0x01 "2HSword", // 0x02 @@ -260,4 +262,5 @@ NULL, // 0xfd - Unknown Weapon NULL, // 0xfe - Unknown Weapon NULL, // 0xff - Unknown Weapon +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ Index: staticspells.h =================================================================== RCS file: /cvsroot/seq/showeq/src/staticspells.h,v retrieving revision 1.1 retrieving revision 1.1.14.1 diff -u -d -r1.1 -r1.1.14.1 --- staticspells.h 29 Sep 2003 00:51:03 -0000 1.1 +++ staticspells.h 7 Nov 2004 23:10:25 -0000 1.1.14.1 @@ -5,6 +5,7 @@ * http://seq.sourceforge.net/ */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS /* File autogenerated from spells_en.txt */ // Format: // /* Spell ID */ { Spell Name }, @@ -4431,3 +4432,5 @@ // Max SpellId: 0x1142 = 4418 // Number of Spells: 4293 // Empty Entries: 125 +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: filternotifications.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/filternotifications.cpp,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- filternotifications.cpp 7 Dec 2003 06:30:43 -0000 1.1.4.1 +++ filternotifications.cpp 7 Nov 2004 23:10:03 -0000 1.1.4.2 @@ -129,7 +129,7 @@ system ((const char*)command); } - +#include "filternotifications.moc" Index: spells.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spells.cpp,v retrieving revision 1.4.4.2 retrieving revision 1.4.4.3 diff -u -d -r1.4.4.2 -r1.4.4.3 --- spells.cpp 13 Dec 2003 00:49:43 -0000 1.4.4.2 +++ spells.cpp 7 Nov 2004 23:10:25 -0000 1.4.4.3 @@ -261,19 +261,7 @@ if ((unicodeIndicator != 0xfffe) && (unicodeIndicator != 0xfeff)) text = textData; else - { -#if (QT_VERSION > 0x030100) text = QString::fromUcs2((uint16_t*)textData.data()); -#else - if (sizeof(QChar) == 2) - text.setUnicode(QChar*(textData.data()), textData.size() / 2); - else - { - seqWarn("Spells::loadSpells(): Upgrade your version of Qt to at least 3.1 to properly handle UTF-16 encoded files!"); - text = textData; - } -#endif - } // split the file into at the line termination QStringList lines = QStringList::split(lineTerm, Index: experiencelog.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/experiencelog.cpp,v retrieving revision 1.10.16.2 retrieving revision 1.10.16.3 diff -u -d -r1.10.16.2 -r1.10.16.3 --- experiencelog.cpp 13 Dec 2003 00:49:42 -0000 1.10.16.2 +++ experiencelog.cpp 7 Nov 2004 23:10:03 -0000 1.10.16.3 @@ -697,3 +697,5 @@ seqInfo("xpgained: %ld group_ag: %d myLevel: %d gbonus: %d mob_level: %d penalty: %d ", xp_gained, group_ag, myLevel, gbonus, mob_level, penalty); seqInfo("ZEM - ZEM - ZEM ===== %d ", ZEM); } + +#include "experiencelog.moc" Index: filtermgr.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/filtermgr.cpp,v retrieving revision 1.5.6.2 retrieving revision 1.5.6.3 diff -u -d -r1.5.6.2 -r1.5.6.3 --- filtermgr.cpp 5 Sep 2004 19:11:12 -0000 1.5.6.2 +++ filtermgr.cpp 7 Nov 2004 23:10:03 -0000 1.5.6.3 @@ -325,3 +325,4 @@ emit runtimeFiltersChanged(type); } +#include "filtermgr.moc" Index: messageshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messageshell.cpp,v retrieving revision 1.1.4.4 retrieving revision 1.1.4.5 diff -u -d -r1.1.4.4 -r1.1.4.5 --- messageshell.cpp 18 Feb 2004 22:56:15 -0000 1.1.4.4 +++ messageshell.cpp 7 Nov 2004 23:10:22 -0000 1.1.4.5 @@ -949,3 +949,4 @@ .arg(spawnInfo)); } +#include "messageshell.moc" Index: skilllist.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/skilllist.cpp,v retrieving revision 1.6.16.1 retrieving revision 1.6.16.2 diff -u -d -r1.6.16.1 -r1.6.16.2 --- skilllist.cpp 7 Dec 2003 06:30:44 -0000 1.6.16.1 +++ skilllist.cpp 7 Nov 2004 23:10:25 -0000 1.6.16.2 @@ -252,3 +252,5 @@ // make the listview save it's prefs m_skillList->savePrefs(); } + +#include "skilllist.moc" Index: skills.h =================================================================== RCS file: /cvsroot/seq/showeq/src/skills.h,v retrieving revision 1.1.1.1.16.1 retrieving revision 1.1.1.1.16.2 diff -u -d -r1.1.1.1.16.1 -r1.1.1.1.16.2 --- skills.h 18 Feb 2004 22:56:15 -0000 1.1.1.1.16.1 +++ skills.h 7 Nov 2004 23:10:25 -0000 1.1.1.1.16.2 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS "1H Blunt", // 0 "1H Slashing", // 1 "2H Blunt", // 2 @@ -79,3 +81,5 @@ "Berserking", // 72 "Taunt", // 73 "Frenzy", // 74 +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: guild.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/guild.cpp,v retrieving revision 1.7.6.2 retrieving revision 1.7.6.3 diff -u -d -r1.7.6.2 -r1.7.6.3 --- guild.cpp 16 Jan 2004 20:22:09 -0000 1.7.6.2 +++ guild.cpp 7 Nov 2004 23:10:03 -0000 1.7.6.3 @@ -144,3 +144,5 @@ seqInfo("%d\t%s", i, (const char*)m_guildMap[i]); } } + +#include "guild.moc" Index: spelllist.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spelllist.cpp,v retrieving revision 1.9.10.2 retrieving revision 1.9.10.3 diff -u -d -r1.9.10.2 -r1.9.10.3 --- spelllist.cpp 13 Dec 2003 00:49:43 -0000 1.9.10.2 +++ spelllist.cpp 7 Nov 2004 23:10:25 -0000 1.9.10.3 @@ -393,3 +393,5 @@ // make the listview save it's prefs m_spellList->savePrefs(); } + +#include "spelllist.moc" Index: messagefilter.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messagefilter.cpp,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- messagefilter.cpp 7 Dec 2003 06:30:43 -0000 1.1.4.1 +++ messagefilter.cpp 7 Nov 2004 23:10:21 -0000 1.1.4.2 @@ -189,3 +189,5 @@ // return the filter mask return mask; } + +#include "messagefilter.moc" Index: xmlpreferences.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/xmlpreferences.cpp,v retrieving revision 1.3.16.2 retrieving revision 1.3.16.3 diff -u -d -r1.3.16.2 -r1.3.16.3 --- xmlpreferences.cpp 13 Dec 2003 00:49:43 -0000 1.3.16.2 +++ xmlpreferences.cpp 7 Nov 2004 23:10:27 -0000 1.3.16.3 @@ -25,9 +25,7 @@ #include <qdir.h> #include <qfileinfo.h> #include <qregexp.h> -#if QT_VERSION > 300 #include <qkeysequence.h> -#endif #include <qtextstream.h> @@ -112,15 +110,6 @@ return; } -#if QT_VERSION < 300 - if (!doc.setContent(&f)) - { - qWarning("Unable to set preference document to contents of file: %s!", - (const char*)filename); - f.close(); - return; - } -#else QString errorMsg; int errorLine = 0; int errorColumn = 0; @@ -132,7 +121,6 @@ f.close(); return; } -#endif // do more processing here QDomElement docElem = doc.documentElement(); @@ -286,15 +274,6 @@ bool loaded = false; if (f.open(IO_ReadOnly)) { -#if QT_VERSION < 300 - if (doc.setContent(&f)) - loaded = true; - else - { - qWarning("Unable to set preference document to contents of file: %s!", - (const char*)filename); - } -#else QString errorMsg; int errorLine = 0; int errorColumn = 0; @@ -307,7 +286,6 @@ (const char*)errorMsg, errorLine, errorColumn); } -#endif // close the file f.close(); @@ -316,16 +294,11 @@ // if no file was loaded, use the template document if (!loaded) { -#if QT_VERSION < 300 - if (doc.setContent(m_templateDoc)) - loaded = true; -#else QString errorMsg; int errorLine = 0; int errorColumn = 0; if (doc.setContent(m_templateDoc, false, &errorMsg, &errorLine, &errorColumn)) loaded = true; -#endif } // if there was an existing file, rename it @@ -725,11 +698,9 @@ switch(preference->type()) { -#if QT_VERSION >= 300 case QVariant::KeySequence: key = preference->toInt(); break; -#endif case QVariant::String: // convert it to a key key = QAccel::stringToKey(preference->toString()); @@ -794,7 +765,7 @@ default: qWarning("XMLPreferences::getPrefInt64(%s, %s, %lld): preference found,\n" "\tbut type %s is not convertable to type int64_t!", - (const char*)inName, (const char*)inSection, def, + (const char*)inName, (const char*)inSection, (long long)def, preference->typeName()); } @@ -840,9 +811,10 @@ break; } default: - qWarning("XMLPreferences::getPrefUInt64(%s, %s, %lld): preference found,\n" + qWarning("XMLPreferences::getPrefUInt64(%s, %s, %llu): preference found,\n" "\tbut type %s is not convertable to type uint64_t!", - (const char*)inName, (const char*)inSection, def, + (const char*)inName, (const char*)inSection, + (unsigned long long)def, preference->typeName()); } @@ -909,11 +881,7 @@ int inValue, Persistence pers) { -#if QT_VERSION < 300 - setPref(inName, inSection, QVariant(QAccel::keyToString(inValue)), pers); -#else setPref(inName, inSection, QVariant(QKeySequence(inValue)), pers); -#endif } void XMLPreferences::setPrefInt64(const QString& inName, @@ -945,3 +913,4 @@ setPref(inName, inSection, inValue, pers); } +#include "xmlpreferences.moc" Index: spawnlist.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnlist.cpp,v retrieving revision 1.19.12.1 retrieving revision 1.19.12.2 diff -u -d -r1.19.12.1 -r1.19.12.2 --- spawnlist.cpp 7 Dec 2003 06:30:44 -0000 1.19.12.1 +++ spawnlist.cpp 7 Nov 2004 23:10:25 -0000 1.19.12.2 @@ -1174,3 +1174,5 @@ // make the listview save it's prefs m_spawnList->savePrefs(); } + +#include "spawnlist.moc" Index: interface.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/interface.cpp,v retrieving revision 1.67.6.9 retrieving revision 1.67.6.10 diff -u -d -r1.67.6.9 -r1.67.6.10 --- interface.cpp 24 Sep 2004 04:25:52 -0000 1.67.6.9 +++ interface.cpp 7 Nov 2004 23:10:03 -0000 1.67.6.10 @@ -126,6 +126,7 @@ m_unknownZoneLog(0), m_opcodeMonitorLog(0), m_selectedSpawn(0), + m_windowsMenus(11), m_compass(0), m_expWindow(0), m_combatWindow(0), @@ -135,6 +136,9 @@ { // disable the dock menu setDockMenuEnabled(false); + + // make sure the windows menus list autodeletes + m_windowsMenus.setAutoDelete(true); setCentralWidget(new QWidget(this, "filler")); @@ -2095,8 +2099,8 @@ this, SLOT(numPacket(int, int))); connect (m_packet, SIGNAL(resetPacket(int, int)), this, SLOT(resetPacket(int, int))); - connect (m_player, SIGNAL(newSpeed(int)), - this, SLOT(newSpeed(int))); + connect (m_player, SIGNAL(newSpeed(double)), + this, SLOT(newSpeed(double))); connect(m_player, SIGNAL(setExp(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)), this, SLOT(setExp(uint32_t, uint32_t, uint32_t, @@ -4384,7 +4388,7 @@ } void -EQInterface::newSpeed(int speed) +EQInterface::newSpeed(double speed) { // update twice per sec static int lastupdate = 0; @@ -4393,7 +4397,7 @@ lastupdate = mTime(); QString tempStr; - tempStr.sprintf("Run Speed: %d", speed); + tempStr.sprintf("Run Speed: %3.1f", speed); m_stsbarSpeed->setText(tempStr); } @@ -5279,21 +5283,13 @@ case 1: // platinum { QPalette p( QColor( 239, 239, 239 ) ); -#if QT_VERSION >= 0x030000 qApp->setStyle("platinum"); -#else - qApp->setStyle( (QStyle *) new QPlatinumStyle ); -#endif qApp->setPalette( p, TRUE ); } break; case 2: // windows { -#if QT_VERSION >= 0x030000 qApp->setStyle("windows"); -#else - qApp->setStyle( (QStyle *) new QWindowsStyle ); -#endif qApp->setFont( OrigFont, TRUE ); qApp->setPalette( OrigPalette, TRUE ); } @@ -5302,11 +5298,7 @@ case 4: // cde polished { QPalette p( QColor( 75, 123, 130 ) ); -#if QT_VERSION >= 0x030000 qApp->setStyle("cde"); -#else - qApp->setStyle( (QStyle *) new QCDEStyle( theme == 3 ? TRUE : FALSE ) ); -#endif p.setColor( QPalette::Active, QColorGroup::Base, QColor( 55, 77, 78 ) ); p.setColor( QPalette::Inactive, QColorGroup::Base, QColor( 55, 77, 78 ) ); p.setColor( QPalette::Disabled, QColorGroup::Base, QColor( 55, 77, 78 ) ); @@ -5332,11 +5324,7 @@ case 5: // motif { QPalette p( QColor( 192, 192, 192 ) ); -#if QT_VERSION >= 0x030000 qApp->setStyle("motif"); -#else - qApp->setStyle( (QStyle *) new QMotifStyle ); -#endif qApp->setPalette( p, TRUE ); qApp->setFont( OrigFont, TRUE ); } @@ -5344,11 +5332,7 @@ case 6: // SGI { //QPalette p( QColor( 192, 192, 192 ) ); -#if QT_VERSION >= 0x030000 qApp->setStyle("sgi"); -#else - qApp->setStyle( (QStyle *) new QSGIStyle( FALSE ) ); -#endif qApp->setPalette( OrigPalette, TRUE ); qApp->setFont( OrigFont, TRUE ); } @@ -5356,11 +5340,7 @@ default: // system default { QPalette p( QColor( 192, 192, 192 ) ); -#if QT_VERSION >= 0x030000 qApp->setStyle("motif"); -#else - qApp->setStyle( (QStyle *) new QMotifStyle ); -#endif qApp->setPalette( p, TRUE ); qApp->setFont( OrigFont, TRUE ); theme = 2; @@ -6073,12 +6053,28 @@ { QPopupMenu* menu = window->menu(); if (menu) - m_windowMenu->insertItem(window->caption(), menu, int(window)); + { + // insert the windows menu into the window menu + int id = m_windowMenu->insertItem(window->caption(), menu); + + // insert it into the window to window menu id dictionary + m_windowsMenus.insert((void*)window, new int(id)); + } } void EQInterface::removeWindowMenu(SEQWindow* window) { - m_windowMenu->removeItem(int(window)); + // find the windows menu id + int* id = m_windowsMenus.find((void*)window); + + // if the window had a menu, then remove it + if (id) + { + m_windowMenu->removeItem(*id); + + // remove the item from the list + m_windowsMenus.remove(window); + } } void EQInterface::setDockEnabled(QDockWindow* dw, bool enable) @@ -6089,3 +6085,4 @@ QMainWindow::setDockEnabled(dw, DockRight, enable); } +#include "interface.moc" Index: compassframe.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/compassframe.cpp,v retrieving revision 1.7.16.1 retrieving revision 1.7.16.2 diff -u -d -r1.7.16.1 -r1.7.16.2 --- compassframe.cpp 7 Dec 2003 06:30:43 -0000 1.7.16.1 +++ compassframe.cpp 7 Nov 2004 23:09:56 -0000 1.7.16.2 @@ -98,3 +98,5 @@ m_y->setText(QString::number(y)); m_z->setText(QString::number(z)); } + +#include "compassframe.moc" Index: spawnshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnshell.cpp,v retrieving revision 1.42.6.2 retrieving revision 1.42.6.3 diff -u -d -r1.42.6.2 -r1.42.6.3 --- spawnshell.cpp 16 Jan 2004 20:22:11 -0000 1.42.6.2 +++ spawnshell.cpp 7 Nov 2004 23:10:25 -0000 1.42.6.3 @@ -1058,3 +1058,5 @@ (const char*)fileName); } } + +#include "spawnshell.moc" Index: spawnlist2.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnlist2.cpp,v retrieving revision 1.7.12.2 retrieving revision 1.7.12.3 diff -u -d -r1.7.12.2 -r1.7.12.3 --- spawnlist2.cpp 16 Jan 2004 20:22:11 -0000 1.7.12.2 +++ spawnlist2.cpp 7 Nov 2004 23:10:25 -0000 1.7.12.3 @@ -944,3 +944,4 @@ #endif } +#include "spawnlist2.moc" Index: guildshell.h =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/guildshell.h,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- guildshell.h 16 Jan 2004 20:22:09 -0000 1.1.4.1 +++ guildshell.h 7 Nov 2004 23:10:03 -0000 1.1.4.2 @@ -8,6 +8,9 @@ * */ +#ifndef _GUILDSHELL_H_ +#define _GUILDSHELL_H_ + #include <stdint.h> #include <time.h> @@ -94,3 +97,4 @@ ZoneMgr* m_zoneMgr; }; +#endif // _GUILDSHELL_H_ Index: messages.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/messages.cpp,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -d -r1.1.4.1 -r1.1.4.2 --- messages.cpp 7 Dec 2003 06:30:43 -0000 1.1.4.1 +++ messages.cpp 7 Nov 2004 23:10:22 -0000 1.1.4.2 @@ -82,4 +82,4 @@ (*it).setFilterFlags((*it).filterFlags() | mask); } - +#include "messages.moc" Index: spawnpointlist.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnpointlist.cpp,v retrieving revision 1.4.16.1 retrieving revision 1.4.16.2 diff -u -d -r1.4.16.1 -r1.4.16.2 --- spawnpointlist.cpp 7 Dec 2003 06:30:44 -0000 1.4.16.1 +++ spawnpointlist.cpp 7 Nov 2004 23:10:25 -0000 1.4.16.2 @@ -568,3 +568,5 @@ if (m_spawnPointList) m_spawnPointList->savePrefs(); } + +#include "spawnpointlist.moc" Index: packet.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.cpp,v retrieving revision 1.62.6.3 retrieving revision 1.62.6.4 diff -u -d -r1.62.6.3 -r1.62.6.4 --- packet.cpp 18 Sep 2004 20:51:31 -0000 1.62.6.3 +++ packet.cpp 7 Nov 2004 23:10:23 -0000 1.62.6.4 @@ -1092,3 +1092,5 @@ { return m_streams[stream]->arqSeqExp(); } + +#include "packet.moc" Index: category.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/category.cpp,v retrieving revision 1.8.16.1 retrieving revision 1.8.16.2 diff -u -d -r1.8.16.1 -r1.8.16.2 --- category.cpp 7 Dec 2003 06:30:42 -0000 1.8.16.1 +++ category.cpp 7 Nov 2004 23:09:56 -0000 1.8.16.2 @@ -366,3 +366,5 @@ pSEQPrefs->setPrefColor(prefBaseName + "Color", section, black); } } + +#include "category.moc" Index: weapons28.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons28.h,v retrieving revision 1.1 retrieving revision 1.1.16.1 diff -u -d -r1.1 -r1.1.16.1 --- weapons28.h 30 Dec 2001 07:18:55 -0000 1.1 +++ weapons28.h 7 Nov 2004 23:10:26 -0000 1.1.16.1 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0x00 NULL, // 0x01 NULL, // 0x02 @@ -277,3 +279,5 @@ NULL, // 0xfd NULL, // 0xfe NULL, // 0xff +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: editor.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/editor.cpp,v retrieving revision 1.2 retrieving revision 1.2.16.1 diff -u -d -r1.2 -r1.2.16.1 --- editor.cpp 24 May 2002 19:15:11 -0000 1.2 +++ editor.cpp 7 Nov 2004 23:09:58 -0000 1.2.16.1 @@ -82,8 +82,6 @@ EditorWindow::EditorWindow(const char *fileName) : QMainWindow( 0, "ShowEQ - Editor", WDestructiveClose ) { -#if (QT_VERSION > 209) - int id; QPixmap openIcon, saveIcon; @@ -121,7 +119,6 @@ resize( 600, 450 ); filename = (QString)fileName; load(fileName); -#endif } EditorWindow::~EditorWindow() @@ -130,19 +127,16 @@ void EditorWindow::load() { -#if (QT_VERSION > 209) QString fn = QFileDialog::getOpenFileName( QString::null, QString::null, this); if ( !fn.isEmpty() ) load( fn ); else statusBar()->message( "File Open Cancelled", 2000 ); -#endif } void EditorWindow::load( const char *fileName ) { -#if (QT_VERSION > 209) QFile f( fileName ); if ( !f.open( IO_ReadOnly ) ) return; @@ -164,12 +158,10 @@ QString s; s.sprintf( "Opened %s", fileName ); statusBar()->message( s, 2000 ); -#endif } void EditorWindow::save() { -#if (QT_VERSION > 209) if ( filename.isEmpty() ) { saveAs(); return; @@ -192,12 +184,10 @@ setCaption( filename ); statusBar()->message( QString( "Saved %1" ).arg( filename ), 2000 ); -#endif } void EditorWindow::saveAs() { -#if (QT_VERSION > 209) QString fn = QFileDialog::getSaveFileName( QString::null, QString::null, this ); if ( !fn.isEmpty() ) { @@ -206,12 +196,10 @@ } else { statusBar()->message( "Saving cancelled", 2000 ); } -#endif } void EditorWindow::closeEvent( QCloseEvent* ce ) { -#if (QT_VERSION > 209) if ( !e->edited() ) { ce->accept(); return; @@ -234,5 +222,7 @@ ce->accept(); break; } -#endif } + + #include "editor.moc" + Index: races.h =================================================================== RCS file: /cvsroot/seq/showeq/src/races.h,v retrieving revision 1.9.8.3 retrieving revision 1.9.8.4 diff -u -d -r1.9.8.3 -r1.9.8.4 --- races.h 18 Sep 2004 20:51:32 -0000 1.9.8.3 +++ races.h 7 Nov 2004 23:10:25 -0000 1.9.8.4 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0 - Unknown Race "Human", // 1 "Barbarian", // 2 @@ -424,3 +426,5 @@ "Gelidran", // 417 "Discordling", // 418 "Girplan", // 419 +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: languages.h =================================================================== RCS file: /cvsroot/seq/showeq/src/languages.h,v retrieving revision 1.4 retrieving revision 1.4.16.1 diff -u -d -r1.4 -r1.4.16.1 --- languages.h 11 May 2002 17:16:06 -0000 1.4 +++ languages.h 7 Nov 2004 23:10:20 -0000 1.4.16.1 @@ -5,6 +5,7 @@ * http://seq.sourceforge.net/ */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS "Common Tongue", // 0 "Barbarian", // 1 "Erudian", // 2 @@ -30,3 +31,5 @@ "Elder Dragon", // 22 "Dark Speech", // 23 "Van Shir", // 24 +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: classes.h =================================================================== RCS file: /cvsroot/seq/showeq/src/classes.h,v retrieving revision 1.2.8.2 retrieving revision 1.2.8.3 diff -u -d -r1.2.8.2 -r1.2.8.3 --- classes.h 12 Feb 2004 00:39:28 -0000 1.2.8.2 +++ classes.h 7 Nov 2004 23:09:56 -0000 1.2.8.3 @@ -4,6 +4,7 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS /* Maps class numbers to strings, included from util.cpp */ "0", // 0 is unknown @@ -69,3 +70,5 @@ "LDoN Recruiter", // 60 "LDoN Merchant", // 61 "LDoN Object", // 62 +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: mapicon.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/mapicon.cpp,v retrieving revision 1.1.4.4 retrieving revision 1.1.4.5 diff -u -d -r1.1.4.4 -r1.1.4.5 --- mapicon.cpp 12 Feb 2004 00:39:28 -0000 1.1.4.4 +++ mapicon.cpp 7 Nov 2004 23:10:21 -0000 1.1.4.5 @@ -1264,3 +1264,5 @@ return m_player->pickConColor(spawn->level()); } + +#include "mapicon.moc" Index: weapons2b.h =================================================================== RCS file: /cvsroot/seq/showeq/src/weapons2b.h,v retrieving revision 1.1 retrieving revision 1.1.16.1 diff -u -d -r1.1 -r1.1.16.1 --- weapons2b.h 30 Dec 2001 07:18:55 -0000 1.1 +++ weapons2b.h 7 Nov 2004 23:10:27 -0000 1.1.16.1 @@ -4,6 +4,8 @@ * ShowEQ Distributed under GPL * http://seq.sourceforge.net/ */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS NULL, // 0x00 NULL, // 0x01 NULL, // 0x02 @@ -277,3 +279,5 @@ NULL, // 0xfd NULL, // 0xfe NULL, // 0xff +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + Index: spellshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spellshell.cpp,v retrieving revision 1.11.10.4 retrieving revision 1.11.10.5 diff -u -d -r1.11.10.4 -r1.11.10.5 --- spellshell.cpp 16 Jan 2004 20:22:11 -0000 1.11.10.4 +++ spellshell.cpp 7 Nov 2004 23:10:25 -0000 1.11.10.5 @@ -519,3 +519,4 @@ m_timer->stop(); } +#include "spellshell.moc" Index: interface.h =================================================================== RCS file: /cvsroot/seq/showeq/src/interface.h,v retrieving revision 1.33.6.6 retrieving revision 1.33.6.7 diff -u -d -r1.33.6.6 -r1.33.6.7 --- interface.h 5 Sep 2004 19:11:12 -0000 1.33.6.6 +++ interface.h 7 Nov 2004 23:10:04 -0000 1.33.6.7 @@ -28,7 +28,7 @@ #include <qtabdialog.h> #include <qspinbox.h> #include <qintdict.h> - +#include <qptrdict.h> #include "everquest.h" #include "spawnlist.h" #include "spawnshell.h" @@ -106,6 +106,9 @@ //-------------------------------------------------- // EQInterface +/*! + \brief QMainWindow from Hell! Also known as ShowEQ's main window. +*/ class EQInterface:public QMainWindow { Q_OBJECT @@ -132,7 +135,7 @@ void newAltExp(uint32_t newExp, uint32_t totalExp, uint32_t totalTick, uint32_t maxExp, uint32_t tickExp, uint32_t aapoints); void levelChanged(uint8_t level); - void newSpeed(int); + void newSpeed(double); void numPacket(int, int); void resetPacket(int, int); void attack2Hand1(const uint8_t*); @@ -390,6 +393,7 @@ QPopupMenu* m_terminalShowUserFilterMenu; QPopupMenu* m_terminalHideUserFilterMenu; QPopupMenu* m_windowMenu; + QPtrDict<int> m_windowsMenus; CompassFrame* m_compass; MessageWindow* m_messageWindow[maxNumMessageWindows]; Index: spawnlistcommon.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnlistcommon.cpp,v retrieving revision 1.6.6.2 retrieving revision 1.6.6.3 diff -u -d -r1.6.6.2 -r1.6.6.3 --- spawnlistcommon.cpp 16 Jan 2004 20:22:11 -0000 1.6.6.2 +++ spawnlistcommon.cpp 7 Nov 2004 23:10:25 -0000 1.6.6.3 @@ -740,3 +740,5 @@ if (ok) m_spawnlistWindow->setCaption(caption); } + +#include "spawnlistcommon.moc" Index: map.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/map.cpp,v retrieving revision 1.40.6.3 retrieving revision 1.40.6.4 diff -u -d -r1.40.6.3 -r1.40.6.4 --- map.cpp 12 Feb 2004 00:39:28 -0000 1.40.6.3 +++ map.cpp 7 Nov 2004 23:10:20 -0000 1.40.6.4 @@ -4755,3 +4755,4 @@ } +#include "map.moc" Index: netdiag.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/netdiag.cpp,v retrieving revision 1.10.6.1 retrieving revision 1.10.6.2 diff -u -d -r1.10.6.1 -r1.10.6.2 --- netdiag.cpp 7 Dec 2003 06:30:43 -0000 1.10.6.1 +++ netdiag.cpp 7 Nov 2004 23:10:22 -0000 1.10.6.2 @@ -195,7 +195,7 @@ m_seqExp[stream]->setText(disp); } -void NetDiag::clientChanged(uint32_t addr) +void NetDiag::clientChanged(in_addr_t addr) { QString disp, tmp; disp = print_addr(addr); @@ -219,7 +219,7 @@ m_clientLabel->setText(disp); } -void NetDiag::clientPortLatched(uint16_t clientPort) +void NetDiag::clientPortLatched(in_port_t ... [truncated message content] |
|
From: Erik B. <do...@us...> - 2004-11-07 23:11:11
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18654 Modified Files: Tag: pre_5_0_beta AUTHORS ChangeLog INSTALL Makefile.am Makefile.dist acinclude.m4 configure.in Added Files: Tag: pre_5_0_beta Doxyfile doxygen.am doxygen.cfg showeq.kdevelop Removed Files: Tag: pre_5_0_beta showeq.kdevprj Log Message: 5.0.0.16 --- NEW FILE: Doxyfile --- # Doxyfile 1.3.7-KDevelop #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = ShowEQ PROJECT_NUMBER = OUTPUT_DIRECTORY = dox CREATE_SUBDIRS = YES OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = YES INLINE_INHERITED_MEMB = YES FULL_PATH_NAMES = YES STRIP_FROM_PATH = /home/zaphod/dev/showeq/ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = YES INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = /home/zaphod/dev/showeq FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.java \ *.ii \ *.ixx \ *.ipp \ *.i++ \ *.inl \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.idl \ *.odl \ *.cs \ *.php \ *.php3 \ *.inc \ *.m \ *.mm \ *.C \ *.CC \ *.C++ \ *.II \ *.I++ \ *.H \ *.HH \ *.H++ \ *.CS \ *.PHP \ *.PHP3 \ *.M \ *.MM \ *.C \ *.H \ *.tlh \ *.diff \ *.patch \ *.moc \ *.xpm \ *.dox RECURSIVE = YES EXCLUDE = m_*.cpp EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = YES TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .1 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = YES XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = dox/showeq.tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES HIDE_UNDOC_RELATIONS = YES HAVE_DOT = YES CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = YES TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = /usr/bin DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = YES Index: Makefile.dist =================================================================== RCS file: /cvsroot/seq/showeq/Makefile.dist,v retrieving revision 1.3.16.1 retrieving revision 1.3.16.2 diff -u -d -r1.3.16.1 -r1.3.16.2 --- Makefile.dist 24 Sep 2004 04:25:41 -0000 1.3.16.1 +++ Makefile.dist 7 Nov 2004 23:09:53 -0000 1.3.16.2 @@ -4,7 +4,7 @@ AUTOMAKE = automake AUTOCONF = autoconf LIBTOOLIZE_ARGS = --force --copy --automake -ACLOCAL_ARGS = +ACLOCAL_ARGS = -I m4 AUTOHEADER_ARGS = --force AUTOMAKE_ARGS = --add-missing --copy --include-deps AUTOCONF_ARGS = --- NEW FILE: showeq.kdevelop --- <?xml version = '1.0'?> <kdevelop> <general> <author>Zaphod</author> <email>do...@us...</email> <version>$VERSION$</version> <projectmanagement>KDevAutoProject</projectmanagement> <primarylanguage>C++</primarylanguage> <ignoreparts> <part>KDevClearCase</part> <part>KDevPerforce</part> <part>KDevsubversion</part> </ignoreparts> <projectdirectory>.</projectdirectory> <absoluteprojectpath>false</absoluteprojectpath> <description>ShowEQ sits passively and waits for Everquest packets to pass by on the ethernet card. It rebuilds the data stream and displays useful information about the data being sent between client and server. ShowEQ is free software, distributed under the terms of the [GNU] General Public License, version 2. For more information, see the file COPYING.</description> <secondaryLanguages> <language>C</language> <language>Perl</language> </secondaryLanguages> </general> <kdevautoproject> <general> <activetarget>src/patcher</activetarget> <useconfiguration>debug</useconfiguration> </general> <run> <mainprogram>src/showeq</mainprogram> <directoryradio>executable</directoryradio> <customdirectory>/</customdirectory> <programargs/> <terminal>false</terminal> <autocompile>true</autocompile> <envvars/> </run> <configurations> <optimized> <builddir>optimized</builddir> <ccompiler>GccOptions</ccompiler> <cxxcompiler>GppOptions</cxxcompiler> <f77compiler>G77Options</f77compiler> <cxxflags>-O2 -g0</cxxflags> </optimized> <debug> <configargs>--enable-debug=full --disable-inlines --enable-maintainer-mode --enable-dependency-tracking </configargs> <builddir>debug</builddir> <ccompiler>kdevgccoptions</ccompiler> <cxxcompiler>kdevgppoptions</cxxcompiler> <f77compiler>kdevpgf77options</f77compiler> <cxxflags>-O0 -g3</cxxflags> <envvars/> <topsourcedir/> <cppflags/> <ldflags/> <ccompilerbinary/> <cxxcompilerbinary/> <f77compilerbinary/> <cflags/> <f77flags/> </debug> </configurations> <make> <envvars> <envvar value="2.5" name="WANT_AUTOCONF" /> <envvar value="1" name="WANT_AUTOCONF_2_5" /> <envvar value="1.8" name="WANT_AUTOMAKE" /> <envvar value="1" name="WANT_AUTOMAKE_1_8" /> </envvars> <abortonerror>true</abortonerror> <numberofjobs>1</numberofjobs> <dontact>false</dontact> <makebin/> <prio>0</prio> </make> </kdevautoproject> <kdevdebugger> <general> <dbgshell>libtool</dbgshell> <programargs/> <gdbpath/> <configGdbScript/> <runShellScript/> <runGdbScript/> <breakonloadinglibs>true</breakonloadinglibs> <separatetty>false</separatetty> <floatingtoolbar>false</floatingtoolbar> </general> <display> <staticmembers>false</staticmembers> <demanglenames>true</demanglenames> <outputradix>16</outputradix> </display> </kdevdebugger> <kdevdoctreeview> <ignoretocs> <toc>ada</toc> <toc>ada_bugs_gcc</toc> <toc>bash</toc> <toc>bash_bugs</toc> <toc>clanlib</toc> <toc>fortran_bugs_gcc</toc> <toc>gnome1</toc> <toc>gnustep</toc> <toc>gtk</toc> <toc>gtk_bugs</toc> <toc>haskell</toc> <toc>haskell_bugs_ghc</toc> <toc>java_bugs_gcc</toc> <toc>java_bugs_sun</toc> <toc>kde2book</toc> <toc>opengl</toc> <toc>pascal_bugs_fp</toc> <toc>php</toc> <toc>php_bugs</toc> <toc>perl</toc> <toc>perl_bugs</toc> <toc>python</toc> <toc>python_bugs</toc> <toc>qt-kdev3</toc> <toc>ruby</toc> <toc>ruby_bugs</toc> <toc>sdl</toc> <toc>sw</toc> <toc>w3c-dom-level2-html</toc> <toc>w3c-svg</toc> <toc>w3c-uaag10</toc> <toc>wxwidgets_bugs</toc> </ignoretocs> <ignoreqt_xml> <toc>Guide to the Qt Translation Tools</toc> <toc>Qt Assistant Manual</toc> <toc>Qt Designer Manual</toc> <toc>Qt Reference Documentation</toc> <toc>qmake User Guide</toc> </ignoreqt_xml> <ignoredoxygen> <toc>KDE Libraries (Doxygen)</toc> </ignoredoxygen> </kdevdoctreeview> <kdevfilecreate> <filetypes/> <useglobaltypes> <type ext="ui" /> <type ext="cpp" /> <type ext="h" /> </useglobaltypes> </kdevfilecreate> <cppsupportpart> <filetemplates> <interfacesuffix>.h</interfacesuffix> <implementationsuffix>.cpp</implementationsuffix> </filetemplates> </cppsupportpart> <kdevcppsupport> <codecompletion> <includeGlobalFunctions>true</includeGlobalFunctions> <includeTypes>true</includeTypes> <includeEnums>true</includeEnums> <includeTypedefs>true</includeTypedefs> <automaticCodeCompletion>true</automaticCodeCompletion> <automaticArgumentsHint>true</automaticArgumentsHint> <automaticHeaderCompletion>true</automaticHeaderCompletion> <codeCompletionDelay>250</codeCompletionDelay> <argumentsHintDelay>400</argumentsHintDelay> <headerCompletionDelay>250</headerCompletionDelay> </codecompletion> <references/> </kdevcppsupport> <kdevdocumentation> <projectdoc> <docsystem/> <docurl/> <usermanualurl/> </projectdoc> </kdevdocumentation> <kdevfileview> <groups> <hidenonprojectfiles>false</hidenonprojectfiles> <hidenonlocation>false</hidenonlocation> </groups> <tree> <hidepatterns>*.o,*.lo,CVS</hidepatterns> <hidenonprojectfiles>false</hidenonprojectfiles> </tree> </kdevfileview> </kdevelop> Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.16 retrieving revision 1.49.4.17 diff -u -d -r1.49.4.16 -r1.49.4.17 --- configure.in 25 Sep 2004 20:37:27 -0000 1.49.4.16 +++ configure.in 7 Nov 2004 23:09:53 -0000 1.49.4.17 @@ -2,12 +2,25 @@ dnl $Id$ $Name$ AC_PREREQ(2.53) -AC_INIT(src/main.cpp) +AC_INIT(showeq, 5.0.0.16) +AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM + AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(showeq, 5.0.0.15) +AM_INIT_AUTOMAKE(1.7) AM_MAINTAINER_MODE +dnl doxygen macros +DX_HTML_FEATURE(ON) +DX_CHM_FEATURE(OFF) +DX_CHI_FEATURE(OFF) +DX_MAN_FEATURE(OFF) +DX_RTF_FEATURE(OFF) +DX_XML_FEATURE(OFF) +DX_PDF_FEATURE(OFF) +DX_PS_FEATURE(OFF) +DX_INIT_DOXYGEN(ShowEQ, doxygen.cfg, dox) + dnl Use CCd/CXXd rather than CC/CXX otherwise it cache's the value dnl and prevents the alternate search from working. Would be better dnl if there was someway to invalidate the cache entry. ?? Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -d -r1.1.2.2 -r1.1.2.3 --- ChangeLog 25 Sep 2004 20:37:27 -0000 1.1.2.2 +++ ChangeLog 7 Nov 2004 23:09:52 -0000 1.1.2.3 @@ -1,5 +1,51 @@ Version: $Id$ $Name$ + +dohpaZ (11/7/04) +------------------------ ++ Updated version to 5.0.0.16 +dohpaZ (11/6/04) +------------------------ ++ Minor 64-bit compatibility cleanup. ++ Cleaned up some minor warnings under gcc 3.4.2. + +dophaZ (10/27/04) +------------------------ ++ Applied patch #1047554 "Oct13 struct patch" created by codepig666 and + submitted to the Patches tracker by tanner (Basic). + +dohpaZ (10/2/04) +------------------------ ++ Migrate to new (autoconf >2.50) style AC_INIT & AM_INIT_AUTOMAKE ++ Update INSTALL to reflect new minimum automake 1.7 requirement for + Makefile.dist users. ++ Exclude MOC output files m_*.cpp from Doxygen processing. ++ Removed QT_VERSION checks that for versions of Qt that we no longer + support (Qt 2.x, 3.0.x) to improve code readability/maintainability. ++ Improved MOC file handling. ++ Miscellaneous cleanup. + +dohpaZ (10/1/04) +------------------------ ++ Integrated patch #'s: 1037498, 1037496, 1037494, 1037493, 1037491 + "Doxygen support for autoconf/automake" from tanner(Basic) ++ Added minor Doxygen related tweaks to source. ++ Added automatic Qt tag file generation for use with doxygen, along with + a doxygen-installdox rule to build the html dox and link them to + trolltech's website. ++ Minor bug fix related to a recently integrated patch. ++ Some more robustness modifications. ++ Fixed a minor warning. + +dohpaZ (09/29/04) +------------------------ ++ More kdevelop project related tweaks. ++ Added Doxyfile for DOxygen related configuration. + +dophaZ (09/27/04) +------------------------ ++ Added kdevelop project. + dophaZ (09/25/04) ------------------------ + Fixed some more gcc 3.4 warnings. @@ -8,6 +54,7 @@ dophaZ (09/24/04) ------------------------ ++ Updated version to 5.0.0.15 + Migrated the dominant distribution method of ShowEQ to tarballs and packages. Support for direct building off of CVS by non-developers, although still supported, is deprecated and strongly discouraged. Index: acinclude.m4 =================================================================== RCS file: /cvsroot/seq/showeq/acinclude.m4,v retrieving revision 1.9.16.3 retrieving revision 1.9.16.4 diff -u -d -r1.9.16.3 -r1.9.16.4 --- acinclude.m4 24 Sep 2004 04:25:41 -0000 1.9.16.3 +++ acinclude.m4 7 Nov 2004 23:09:53 -0000 1.9.16.4 @@ -582,15 +582,18 @@ ac_qt_includes="" ac_qt_libraries="" ac_qt_bindir="" +ac_qt_docs="" qt_libraries="" qt_includes="" +qt_docs="" AC_ARG_WITH(qt-dir, [ --with-qt-dir=DIR where the root of Qt is installed ], [ ac_qt_includes="$withval"/include ac_qt_libraries="$withval"/lib ac_qt_bindir="$withval"/bin + ac_qt_docs="$withval"/doc/html ]) AC_ARG_WITH(qt-includes, @@ -599,6 +602,12 @@ ac_qt_includes="$withval" ]) +AC_ARG_WITH(qt-docs, + [ --with-qt-docs=DIR where the Qt docs are. ], + [ + ac_qt_docs="$withval" + ]) + ac_qt_libs_given=no AC_ARG_WITH(qt-libraries, @@ -622,41 +631,31 @@ $QTINC \ /usr/local/qt3/include \ /usr/local/qt/include \ - /usr/local/qt2/include \ - /usr/local/qt-2.3.2/include \ /usr/local/qt*/include \ - /opt/qt-gcc3-2.3.2/include \ + /usr/qt/3/include \ + /usr/qt/*/include \ /opt/qt-gcc3-*/include \ - /opt/qt-2.3.2/include \ /usr/include/qt3 \ /usr/include/qt \ - /usr/include/qt2 \ /usr/include/qt* \ /usr/include \ /usr/lib/qt3/include \ /usr/lib/qt/include \ - /usr/lib/qt2/include \ /usr/lib/qt*/include \ - /usr/lib/qtgcc3-2.3.2/include \ /usr/lib/qtgcc3-*/include \ /usr/lib/qt3/include \ /usr/lib/qt/include \ - /usr/lib/qt2/include \ /usr/lib/qt*/include \ - /usr/X11R6/include/X11/qt2 \ /usr/X11R6/include/X11/qt3 \ /usr/X11R6/include/X11/qt \ /usr/X11R6/include/X11/qt* \ - /usr/X11R6/include/X11/qt2/include \ /usr/X11R6/include/X11/qt3/include \ /usr/X11R6/include/X11/qt/include \ /usr/X11R6/include/X11/qt*/include \ - /usr/X11R6/include/qt2 \ /usr/X11R6/include/qt3 \ /usr/X11R6/include/qt \ /usr/X11R6/include/qt* \ - /usr/X11R6/include/qt2/include \ - /usr/X11R6/include/qt3/include \ + /usr/X11R6/include/qt3/include \ /usr/X11R6/include/qt/include \ /usr/X11R6/include/qt*/include \ /usr/src/qt-*/include \ @@ -738,36 +737,27 @@ $QTLIB \ /usr/local/qt3/lib \ /usr/local/qt/lib \ - /usr/local/qt2/lib \ - /usr/local/qt-2.3.2/lib \ /usr/local/qt*/lib \ - /opt/qt-gcc3-2.3.2/lib \ - /opt/qt-2.3.2/lib \ + /usr/qt/3/lib \ + /usr/qt/*/lib \ /usr/lib/qt3/lib \ /usr/lib/qt/lib \ /usr/lib/qt*/lib \ /usr/lib/qt3 \ - /usr/lib/qt2 \ /usr/lib/qt \ - /usr/lib/qt2/lib \ - /usr/lib/qtgcc3-2.3.2/lib \ /usr/lib/qt* \ /usr/lib \ /usr/X11R6/lib/X11/qt3 \ /usr/X11R6/lib/X11/qt \ - /usr/X11R6/lib/X11/qt2 \ /usr/X11R6/lib/X11/qt* \ /usr/X11R6/lib/X11/qt3/lib \ /usr/X11R6/lib/X11/qt/lib \ - /usr/X11R6/lib/X11/qt2/lib \ /usr/X11R6/lib/X11/qt*/lib \ /usr/X11R6/lib/qt3 \ /usr/X11R6/lib/qt \ - /usr/X11R6/lib/qt2 \ /usr/X11R6/lib/qt* \ /usr/X11R6/lib/qt3/lib \ /usr/X11R6/lib/qt/lib \ - /usr/X11R6/lib/qt2/lib \ /usr/X11R6/lib/qt*/lib \ /usr/src/qt-*/lib \ $x_libraries \ @@ -788,7 +778,6 @@ else echo "tried $dir" >&AC_FD_CC; fi - done ac_qt_libraries="$qt_libdir" @@ -845,6 +834,53 @@ LIBS="$ac_libs_safe" AC_LANG_RESTORE + +dnl ************************************ +dnl * Build yet another search path... * +dnl ************************************ + +qt_docdirs=" $QTDIR/doc/html \ + $qt_incdir../doc/html \ + /usr/local/qt3/doc/html \ + /usr/local/qt/doc/html \ + /usr/local/qt*/doc/html \ + /usr/qt/3/doc/html \ + /usr/qt/*/doc/html \ + /usr/lib/qt3/doc/html \ + /usr/lib/qt/doc/html \ + /usr/lib/qt*/doc/html \ + /usr/lib/doc/html \ + /usr/lib/qt/doc/html \ + /usr/lib/qt*/doc/html \ + /usr/X11R6/lib/X11/qt3/doc/html \ + /usr/X11R6/lib/X11/qt/doc/html \ + /usr/X11R6/lib/X11/qt*/doc/html \ + /usr/X11R6/lib/X11/qt3/doc/html \ + /usr/X11R6/lib/X11/qt/doc/html \ + /usr/X11R6/lib/X11/qt*/doc/html \ + /usr/X11R6/lib/qt3/doc/html \ + /usr/X11R6/lib/qt/doc/html \ + /usr/X11R6/lib/qt*/doc/html \ + /usr/X11R6/lib/qt3/doc/html \ + /usr/X11R6/lib/qt/doc/html \ + /usr/X11R6/lib/qt*/doc/html \ + /usr/src/qt-*/doc/html \ + $qt_docdirs" + +[[ "$ac_qt_docs" != "NO" ]] && \ +qt_docdirs="$ac_qt_docs $qt_docdirs" + +AC_FIND_FILE("qobject.html", $qt_docdirs, qt_docdir) + +ac_qt_docs="$qt_docdir" + +if [[ -n "$ac_qt_docs" -a "$ac_qt_docs" != "NO" ]]; then + echo -e ">>>> Documentation...:\t$ac_qt_docs/" +else + echo -e ">>>> Documentation...:\tUnable to locate?!?" + AC_MSG_WARN([Qt documenation not installed?!]); +fi; + if [[ -z "$ac_qt_includes" ]] || [[ -z "$ac_qt_libraries" ]]; then ac_cv_have_qt="have_qt=no"; ac_qt_notfound=""; @@ -900,6 +936,7 @@ qt_libraries=$ac_qt_libraries qt_includes=$ac_qt_includes + qt_docs=$ac_qt_docs else @@ -914,6 +951,7 @@ qt_libraries=$ac_qt_libraries qt_includes=$ac_qt_includes + qt_docs=$ac_qt_docs fi @@ -923,6 +961,7 @@ AC_SUBST(qt_libraries) AC_SUBST(qt_includes) +AC_SUBST(qt_docs) if [[ "$qt_includes" == "$x_includes" ]] || [[ -z "$qt_includes" ]]; then @@ -940,8 +979,11 @@ all_libraries="$all_libraries $QT_LDFLAGS" fi +QT_DOCS="$qt_docs" + AC_SUBST(QT_INCLUDES) AC_SUBST(QT_LDFLAGS) +AC_SUBST(QT_DOCS) LIB_QT='-lqt-mt $(LIBPNG) -lXext $(LIB_X11) $(X_PRE_LIBS)' AC_SUBST(LIB_QT) --- NEW FILE: doxygen.am --- # Copyright (C) 2004 Oren Ben-Kiki # This file is distributed under the same terms as the Automake macro files. # Generate automatic documentation using Doxygen. Goals and variables values # are controlled by the various DX_COND_??? conditionals set by autoconf. # # The provided goals are: # doxygen-doc: Generate all doxygen documentation. # doxygen-run: Run doxygen, which will generate some of the documentation # (HTML, CHM, CHI, MAN, RTF, XML) but will not do the post # processing required for the rest of it (PS, PDF, and some MAN). # doxygen-man: Rename some doxygen generated man pages. # doxygen-ps: Generate doxygen PostScript documentation. # doxygen-pdf: Generate doxygen PDF documentation. # # Note that by default these are not integrated into the automake goals. If # doxygen is used to generate man pages, you can achieve this integration by # setting man3_MANS to the list of man pages generated and then adding the # dependency: # # $(man3_MANS): doxygen-doc # # This will cause make to run doxygen and generate all the documentation. # # The following variable is intended for use in Makefile.am: # # DX_CLEANFILES = everything to clean. # # This is usually added to MOSTLYCLEANFILES. ## --------------------------------- ## ## Format-independent Doxygen rules. ## ## --------------------------------- ## if DX_COND_doc ## ------------------------------- ## ## Rules specific for HTML output. ## ## ------------------------------- ## if DX_COND_html DX_CLEAN_HTML = @DX_DOCDIR@/html endif DX_COND_html ## ------------------------------ ## ## Rules specific for CHM output. ## ## ------------------------------ ## if DX_COND_chm DX_CLEAN_CHM = @DX_DOCDIR@/chm if DX_COND_chi DX_CLEAN_CHI = @DX_DOCDIR@/@PACKAGE@.chi endif DX_COND_chi endif DX_COND_chm ## ------------------------------ ## ## Rules specific for MAN output. ## ## ------------------------------ ## if DX_COND_man DX_CLEAN_MAN = @DX_DOCDIR@/man endif DX_COND_man ## ------------------------------ ## ## Rules specific for RTF output. ## ## ------------------------------ ## if DX_COND_rtf DX_CLEAN_RTF = @DX_DOCDIR@/rtf endif DX_COND_rtf ## ------------------------------ ## ## Rules specific for XML output. ## ## ------------------------------ ## if DX_COND_xml DX_CLEAN_XML = @DX_DOCDIR@/xml endif DX_COND_xml ## ----------------------------- ## ## Rules specific for PS output. ## ## ----------------------------- ## if DX_COND_ps DX_CLEAN_PS = @DX_DOCDIR@/@PACKAGE@.ps DX_PS_GOAL = doxygen-ps doxygen-ps: @DX_DOCDIR@/@PACKAGE@.ps @DX_DOCDIR@/@PACKAGE@.ps: @DX_DOCDIR@/@PACKAGE@.tag cd @DX_DOCDIR@/latex; \ rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ $(DX_LATEX) refman.tex; \ $(MAKEINDEX_PATH) refman.idx; \ $(DX_LATEX) refman.tex; \ countdown=5; \ while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ refman.log > /dev/null 2>&1 \ && test $$countdown -gt 0; do \ $(DX_LATEX) refman.tex; \ countdown=`expr $$countdown - 1`; \ done; \ $(DX_DVIPS) -o ../@PACKAGE@.ps refman.dvi endif DX_COND_ps ## ------------------------------ ## ## Rules specific for PDF output. ## ## ------------------------------ ## if DX_COND_pdf DX_CLEAN_PDF = @DX_DOCDIR@/@PACKAGE@.pdf DX_PDF_GOAL = doxygen-pdf doxygen-pdf: @DX_DOCDIR@/@PACKAGE@.pdf @DX_DOCDIR@/@PACKAGE@.pdf: @DX_DOCDIR@/@PACKAGE@.tag cd @DX_DOCDIR@/latex; \ rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \ $(DX_PDFLATEX) refman.tex; \ $(DX_MAKEINDEX) refman.idx; \ $(DX_PDFLATEX) refman.tex; \ countdown=5; \ while $(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \ refman.log > /dev/null 2>&1 \ && test $$countdown -gt 0; do \ $(DX_PDFLATEX) refman.tex; \ countdown=`expr $$countdown - 1`; \ done; \ mv refman.pdf ../@PACKAGE@.pdf endif DX_COND_pdf ## ------------------------------------------------- ## ## Rules specific for LaTeX (shared for PS and PDF). ## ## ------------------------------------------------- ## if DX_COND_latex DX_CLEAN_LATEX = @DX_DOCDIR@/latex endif DX_COND_latex .PHONY: doxygen-run doxygen-doc $(DX_PS_GOAL) $(DX_PDF_GOAL) .INTERMEDIATE: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) doxygen-run: @DX_DOCDIR@/@PACKAGE@.tag doxygen-doc: doxygen-run $(DX_PS_GOAL) $(DX_PDF_GOAL) @DX_DOCDIR@/@PACKAGE@.tag: $(DX_CONFIG) $(pkginclude_HEADERS) rm -rf @DX_DOCDIR@ $(DX_ENV) $(DX_DOXYGEN) $(srcdir)/$(DX_CONFIG) DX_CLEANFILES = \ @DX_DOCDIR@/@PACKAGE@.tag \ -r \ $(DX_CLEAN_HTML) \ $(DX_CLEAN_CHM) \ $(DX_CLEAN_CHI) \ $(DX_CLEAN_MAN) \ $(DX_CLEAN_RTF) \ $(DX_CLEAN_XML) \ $(DX_CLEAN_PS) \ $(DX_CLEAN_PDF) \ $(DX_CLEAN_LATEX) endif DX_COND_doc Index: Makefile.am =================================================================== RCS file: /cvsroot/seq/showeq/Makefile.am,v retrieving revision 1.1.1.1.16.1 retrieving revision 1.1.1.1.16.2 diff -u -d -r1.1.1.1.16.1 -r1.1.1.1.16.2 --- Makefile.am 24 Sep 2004 04:25:41 -0000 1.1.1.1.16.1 +++ Makefile.am 7 Nov 2004 23:09:53 -0000 1.1.1.1.16.2 @@ -1,12 +1,29 @@ -AUTOMAKE_OPTIONS = dist-bzip2 +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = 1.7 dist-bzip2 SUBDIRS = src conf -EXTRA_DIST = BUGS ChangeLog FAQ INSTALL.newbies Makefile.dist README.libEQ ROADMAP showeq.1 TODO +include doxygen.am -MAINTAINERCLEANFILES = aclocal.m4 config.guess config.sub configure Makefile.in \ -ltconfig libqt2.dbg libqt3.dbg Makefile.dist.dbg configure.dbg config.log \ -ltmain.sh stamp-h.in stamp-h +EXTRA_DIST = BUGS ChangeLog FAQ INSTALL.newbies Makefile.dist README.libEQ \ +ROADMAP showeq.1 TODO showeq.kdevelop Doxyfile $(DX_CONFIG) + +MAINTAINERCLEANFILES = aclocal.m4 config.guess config.sub configure \ +Makefile.in ltconfig libqt2.dbg libqt3.dbg Makefile.dist.dbg \ +configure.dbg config.log ltmain.sh stamp-h.in stamp-h qt.tag + +@DX_DOCDIR@/@PACKAGE@.tag: qt.tag + +qt.tag: $(QT_DOCS)/index.html $(QT_DOCS)/qobject.html + doxytag -t qt.tag $(QT_DOCS) + +doxygen-installdox: doxygen-doc dox/html/installdox + if [ -x "@DX_DOCDIR@/html/installdox" ]; then \ + cd @DX_DOCDIR@/html; \ + ./installdox -l qt.tag@http://doc.trolltech.com/3.3/ -q; \ + fi + +MOSTLYCLEANFILES = $(DX_CLEANFILES) CLEANFILES = configure.dbg libqt2.dbg libqt3.dbg Index: INSTALL =================================================================== RCS file: /cvsroot/seq/showeq/INSTALL,v retrieving revision 1.5.16.4 retrieving revision 1.5.16.5 diff -u -d -r1.5.16.4 -r1.5.16.5 --- INSTALL 24 Sep 2004 04:25:41 -0000 1.5.16.4 +++ INSTALL 7 Nov 2004 23:09:53 -0000 1.5.16.5 @@ -285,7 +285,7 @@ *** GNU tools *** libtool 1.3.4-3 Most recent... http://www.gnu.org/software/libtool/ autoconf 2.53 Most recent... http://www.gnu.org/software/autoconf/ - automake 1.5 Most recent... http://www.gnu.org/software/automake/ + automake 1.7 Most recent... http://www.gnu.org/software/automake/ perl 5.0 Most recent... http://www.perl.org/ --------------------------------------------------------------------------- --- NEW FILE: doxygen.cfg --- # Doxyfile 1.3.7 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = $(PROJECT)-$(VERSION) PROJECT_NUMBER = OUTPUT_DIRECTORY = $(DOCDIR) CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class" \ "The $name widget" \ "The $name file" \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO STRIP_FROM_INC_PATH = $(SRCDIR) FULL_PATH_NAMES = YES STRIP_FROM_PATH = $(SRCDIR) SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = YES INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 ALIASES = OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_JAVA = NO SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = YES EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = YES WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = $(SRCDIR) FILE_PATTERNS = *.c \ *.cpp \ *.c++ \ *.inl \ *.h \ *.inc RECURSIVE = YES EXCLUDE = m_*.cpp EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = $(SRCDIR) EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = $(GENERATE_HTML) HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = $(GENERATE_CHM) CHM_FILE = ../$(PROJECT).chm HHC_LOCATION = $(HHC_PATH) GENERATE_CHI = $(GENERATE_CHI) BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = YES TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = $(GENERATE_LATEX) LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = $(PAPER_SIZE) EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = YES LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = $(GENERATE_RTF) RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = $(GENERATE_MAN) MAN_OUTPUT = man MAN_EXTENSION = .1 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = $(GENERATE_XML) XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = $(SRCDIR)/qt.tag GENERATE_TAGFILE = $(DOCDIR)/$(PROJECT).tag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = $(PERL_PATH) #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES HIDE_UNDOC_RELATIONS = YES HAVE_DOT = $(HAVE_DOT) CLASS_GRAPH = YES COLLABORATION_GRAPH = YES UML_LOOK = YES TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = $(DOT_PATH) DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_DEPTH = 1000 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = YES --- showeq.kdevprj DELETED --- Index: AUTHORS =================================================================== RCS file: /cvsroot/seq/showeq/Attic/AUTHORS,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -d -r1.1.2.1 -r1.1.2.2 --- AUTHORS 24 Sep 2004 04:25:41 -0000 1.1.2.1 +++ AUTHORS 7 Nov 2004 23:09:51 -0000 1.1.2.2 @@ -17,5 +17,6 @@ ROADMAP Zaphod TODO Zaphod BUGS Zaphod +m4/doxygen.m4 Oren Ben-Kiki <or...@be...> |
|
From: Erik B. <do...@us...> - 2004-11-07 23:10:11
|
Update of /cvsroot/seq/showeq/m4 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18654/m4 Added Files: Tag: pre_5_0_beta doxygen.m4 Log Message: 5.0.0.16 --- NEW FILE: doxygen.m4 --- # This file is part of Autoconf. -*- Autoconf -*- # Copyright (C) 2004 Oren Ben-Kiki # This file is distributed under the same terms as the Autoconf macro files. # Generate automatic documentation using Doxygen. Works in concert with the # aminclude.m4 file and a compatible doxygen configuration file. Defines the # following public macros: # # DX_???_FEATURE(ON|OFF) - control the default setting fo a Doxygen feature. # Supported features are 'DOXYGEN' itself, 'DOT' for generating graphics, # 'HTML' for plain HTML, 'CHM' for compressed HTML help (for MS users), 'CHI' # for generating a seperate .chi file by the .chm file, and 'MAN', 'RTF', # 'XML', 'PDF' and 'PS' for the appropriate output formats. The environment # variable DOXYGEN_PAPER_SIZE may be specified to override the default 'a4wide' # paper size. # # By default, HTML, PDF and PS documentation is generated as this seems to be # the most popular and portable combination. MAN pages created by Doxygen are # usually problematic, though by picking an appropriate subset and doing some # massaging they might be better than nothing. CHM and RTF are specific for MS # (note that you can't generate both HTML and CHM at the same time). The XML is # rather useless unless you apply specialized post-processing to it. # # The macro mainly controls the default state of the feature. The use can # override the default by specifying --enable or --disable. The macros ensure # that contradictory flags are not given (e.g., --enable-doxygen-html and # --enable-doxygen-chm, --enable-doxygen-anything with --disable-doxygen, etc.) # Finally, each feature will be automatically disabled (with a warning) if the # required programs are missing. # # Once all the feature defaults have been specified, call DX_INIT_DOXYGEN with # the following parameters: a one-word name for the project for use as a # filename base etc., an optional configuration file name (the default is # 'Doxyfile', the same as Doxygen's default), and an optional output directory # name (the default is 'doxygen-doc'). ## ----------## ## Defaults. ## ## ----------## DX_ENV="" AC_DEFUN([DX_FEATURE_doc], ON) AC_DEFUN([DX_FEATURE_dot], ON) AC_DEFUN([DX_FEATURE_man], OFF) AC_DEFUN([DX_FEATURE_html], ON) AC_DEFUN([DX_FEATURE_chm], OFF) AC_DEFUN([DX_FEATURE_chi], OFF) AC_DEFUN([DX_FEATURE_rtf], OFF) AC_DEFUN([DX_FEATURE_xml], OFF) AC_DEFUN([DX_FEATURE_pdf], ON) AC_DEFUN([DX_FEATURE_ps], ON) ## --------------- ## ## Private macros. ## ## --------------- ## # DX_ENV_APPEND(VARIABLE, VALUE) # ------------------------------ # Append VARIABLE="VALUE" to DX_ENV for invoking doxygen. AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])]) # DX_DIRNAME_EXPR # --------------- # Expand into a shell expression prints the directory part of a path. AC_DEFUN([DX_DIRNAME_EXPR], [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']]) # DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF) # ------------------------------------- # Expands according to the M4 (static) status of the feature. AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])]) # DX_REQUIRE_PROG(VARIABLE, PROGRAM) # ---------------------------------- # Require the specified program to be found for the DX_CURRENT_FEATURE to work. AC_DEFUN([DX_REQUIRE_PROG], [ AC_PATH_TOOL([$1], [$2]) if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION]) AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0) fi ]) # DX_TEST_FEATURE(FEATURE) # ------------------------ # Expand to a shell expression testing whether the feature is active. AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1]) # DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE) # ------------------------------------------------- # Verify that a required features has the right state before trying to turn on # the DX_CURRENT_FEATURE. AC_DEFUN([DX_CHECK_DEPEND], [ test "$DX_FLAG_$1" = "$2" \ || AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1, requires, contradicts) doxygen-DX_CURRENT_FEATURE]) ]) # DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE) # ---------------------------------------------------------- # Turn off the DX_CURRENT_FEATURE if the required feature is off. AC_DEFUN([DX_CLEAR_DEPEND], [ test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0) ]) # DX_FEATURE_ARG(FEATURE, DESCRIPTION, # CHECK_DEPEND, CLEAR_DEPEND, # REQUIRE, DO-IF-ON, DO-IF-OFF) # -------------------------------------------- # Parse the command-line option controlling a feature. CHECK_DEPEND is called # if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND), # otherwise CLEAR_DEPEND is called to turn off the default state if a required # feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional # requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and # DO-IF-ON or DO-IF-OFF are called according to the final state of the feature. AC_DEFUN([DX_ARG_ABLE], [ AC_DEFUN([DX_CURRENT_FEATURE], [$1]) AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2]) AC_ARG_ENABLE(doxygen-$1, [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1], [--enable-doxygen-$1]), DX_IF_FEATURE([$1], [don't $2], [$2]))], [ case "$enableval" in #( y|Y|yes|Yes|YES) AC_SUBST([DX_FLAG_$1], 1) $3 ;; #( n|N|no|No|NO) AC_SUBST([DX_FLAG_$1], 0) ;; #( *) AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1]) ;; esac ], [ AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)]) $4 ]) if DX_TEST_FEATURE([$1]); then $5 : fi if DX_TEST_FEATURE([$1]); then AM_CONDITIONAL(DX_COND_$1, :) $6 : else AM_CONDITIONAL(DX_COND_$1, false) $7 : fi ]) ## -------------- ## ## Public macros. ## ## -------------- ## # DX_XXX_FEATURE(DEFAULT_STATE) # ----------------------------- AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])]) AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])]) AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])]) AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])]) AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])]) AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])]) AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])]) AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])]) # DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR]) # --------------------------------------------------------- # PROJECT also serves as the base name for the documentation files. # The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc". AC_DEFUN([DX_INIT_DOXYGEN], [ # Files: AC_SUBST([DX_PROJECT], [$1]) AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])]) AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])]) # Environment variables used inside doxygen.cfg: DX_ENV_APPEND(SRCDIR, $srcdir) DX_ENV_APPEND(PROJECT, $DX_PROJECT) DX_ENV_APPEND(DOCDIR, $DX_DOCDIR) DX_ENV_APPEND(VERSION, $PACKAGE_VERSION) # Doxygen itself: DX_ARG_ABLE(doc, [generate any doxygen documentation], [], [], [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen) DX_REQUIRE_PROG([DX_PERL], perl)], [DX_ENV_APPEND(PERL_PATH, $DX_PERL)]) # Dot for graphics: DX_ARG_ABLE(dot, [generate graphics for doxygen documentation], [DX_CHECK_DEPEND(doc, 1)], [DX_CLEAR_DEPEND(doc, 1)], [DX_REQUIRE_PROG([DX_DOT], dot)], [DX_ENV_APPEND(HAVE_DOT, YES) DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])], [DX_ENV_APPEND(HAVE_DOT, NO)]) # Man pages generation: DX_ARG_ABLE(man, [generate doxygen manual pages], [DX_CHECK_DEPEND(doc, 1)], [DX_CLEAR_DEPEND(doc, 1)], [], [DX_ENV_APPEND(GENERATE_MAN, YES)], [DX_ENV_APPEND(GENERATE_MAN, NO)]) # RTF file generation: DX_ARG_ABLE(rtf, [generate doxygen RTF documentation], [DX_CHECK_DEPEND(doc, 1)], [DX_CLEAR_DEPEND(doc, 1)], [], [DX_ENV_APPEND(GENERATE_RTF, YES)], [DX_ENV_APPEND(GENERATE_RTF, NO)]) # XML file generation: DX_ARG_ABLE(xml, [generate doxygen XML documentation], [DX_CHECK_DEPEND(doc, 1)], [DX_CLEAR_DEPEND(doc, 1)], [], [DX_ENV_APPEND(GENERATE_XML, YES)], [DX_ENV_APPEND(GENERATE_XML, NO)]) # (Compressed) HTML help generation: DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation], [DX_CHECK_DEPEND(doc, 1)], [DX_CLEAR_DEPEND(doc, 1)], [DX_REQUIRE_PROG([DX_HHC], hhc)], [DX_ENV_APPEND(HHC_PATH, $DX_HHC) DX_ENV_APPEND(GENERATE_HTML, YES) DX_ENV_APPEND(GENERATE_HTMLHELP, YES)], [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)]) # Seperate CHI file generation. DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file], [DX_CHECK_DEPEND(chm, 1)], [DX_CLEAR_DEPEND(chm, 1)], [], [DX_ENV_APPEND(GENERATE_CHI, YES)], [DX_ENV_APPEND(GENERATE_CHI, NO)]) # Plain HTML pages generation: DX_ARG_ABLE(html, [generate doxygen plain HTML documentation], [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)], [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)], [], [DX_ENV_APPEND(GENERATE_HTML, YES)], [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)]) # PostScript file generation: DX_ARG_ABLE(ps, [generate doxygen PostScript documentation], [DX_CHECK_DEPEND(doc, 1)], [DX_CLEAR_DEPEND(doc, 1)], [DX_REQUIRE_PROG([DX_LATEX], latex) DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) DX_REQUIRE_PROG([DX_DVIPS], dvips) DX_REQUIRE_PROG([DX_EGREP], egrep)]) # PDF file generation: DX_ARG_ABLE(pdf, [generate doxygen PDF documentation], [DX_CHECK_DEPEND(doc, 1)], [DX_CLEAR_DEPEND(doc, 1)], [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex) DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) DX_REQUIRE_PROG([DX_EGREP], egrep)]) # LaTeX generation for PS and/or PDF: if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then AM_CONDITIONAL(DX_COND_latex, :) DX_ENV_APPEND(GENERATE_LATEX, YES) else AM_CONDITIONAL(DX_COND_latex, false) DX_ENV_APPEND(GENERATE_LATEX, NO) fi # Paper size for PS and/or PDF: AC_ARG_VAR(DOXYGEN_PAPER_SIZE, [a4wide (default), a4, letter, legal or executive]) case "$DOXYGEN_PAPER_SIZE" in #( "") AC_SUBST(DOXYGEN_PAPER_SIZE, "") ;; #( a4wide|a4|letter|legal|executive) DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE) ;; #( *) AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE']) ;; esac #For debugging: #echo DX_FLAG_doc=$DX_FLAG_doc #echo DX_FLAG_dot=$DX_FLAG_dot #echo DX_FLAG_man=$DX_FLAG_man #echo DX_FLAG_html=$DX_FLAG_html #echo DX_FLAG_chm=$DX_FLAG_chm #echo DX_FLAG_chi=$DX_FLAG_chi #echo DX_FLAG_rtf=$DX_FLAG_rtf #echo DX_FLAG_xml=$DX_FLAG_xml #echo DX_FLAG_pdf=$DX_FLAG_pdf #echo DX_FLAG_ps=$DX_FLAG_ps #echo DX_ENV=$DX_ENV ]) |