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
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Chad M. <cmm...@us...> - 2005-07-12 00:01:12
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8196/src Modified Files: Tag: pre_5_0_beta packet.cpp packet.h packetcapture.cpp packetstream.cpp packetstream.h Log Message: Cleaned up pcap handling a bit Cleaned up packet dispatch a bit CRC errors should only happen on EQ ports now so it won't spam people using teamspeak. Locked down on client port in code so we only process packets for the port we're looking at. will help with dual boxing crashes. Index: packetstream.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetstream.cpp,v retrieving revision 1.1.6.11 retrieving revision 1.1.6.12 diff -u -d -r1.1.6.11 -r1.1.6.12 --- packetstream.cpp 19 Jun 2005 16:20:55 -0000 1.1.6.11 +++ packetstream.cpp 12 Jul 2005 00:00:58 -0000 1.1.6.12 @@ -71,6 +71,7 @@ m_fragment(streamid), m_sessionId(0), m_sessionKey(0), + m_sessionClientPort(0), m_maxLength(0), m_decodeKey(0), m_validKey(true) @@ -161,6 +162,9 @@ m_fragment.reset(); m_arqSeqExp = 0; m_arqSeqFound = false; + m_sessionClientPort = 0; + m_sessionId = 0; + m_sessionKey = 0; } //////////////////////////////////////////////////// @@ -248,8 +252,13 @@ // check if the cache has grown large enough that we should give up // on seeing the current serverArqSeqExp - // this should really only kick in for people with pathetic - // network cards that missed the packet. + // + // If people see this a lot, they either have pathetic network cards, or + // are having problems keeping up with packets (slow computer? Too much + // net traffic?). Some possible solutions to this are to turn on session + // tracking to filter out more PF_PACKET packets from getting passed out of + // the kernel and to up the socket receive buffer sizes. See FAQ for + // more information. if (m_cache.size() >= m_arqSeqGiveUp) { // ok, if the expected server arq sequence isn't here yet, give up @@ -467,6 +476,9 @@ { emit numPacket(++m_packetCount, (int)m_streamid); + // Packet is ours now. Logging needs to know this later on. + packet.setSessionKey(getSessionKey()); + // Only accept packets if we've been initialized unless they are // initialization packets! if (packet.getNetOpCode() != OP_SessionRequest && @@ -484,6 +496,44 @@ return; } + // Only accept packets that correspond to our latched client port, if + // it is set. This helps filter out multiple sessions on the same physical + // host when two eq clients zone at the same time. The first one will win. + if (m_sessionClientPort != 0 && + ((dir() == DIR_Server && m_sessionClientPort != packet.getDestPort()) || + (dir() == DIR_Client && m_sessionClientPort != packet.getSourcePort()))) + { +#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. Multiple sessions on the same box? Ignoring all but one of them. Latched client port %d. Session tracking %s.", + (const char*)packet.getIPv4SourceA(), packet.getSourcePort(), + (const char*)packet.getIPv4DestA(), packet.getDestPort(), + packet.getNetOpCode(), packet.payloadLength(), + m_sessionClientPort, + (m_session_tracking_enabled == 2 ? "locked on" : + (m_session_tracking_enabled == 1 ? "enabled" : "disabled"))); +#endif + return; + } + + // Only accept packets that pass the EQ protocol-level CRC check. This helps + // weed out non-EQ packets that we might see. +#ifdef APPLY_CRC_CHECK + if (packet.hasCRC()) + { + uint16_t calcedCRC = calculateCRC(packet); + + if (calcedCRC != packet.crc()) + { + 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; + } + } +#endif /* APPLY_CRC_CHECK */ + // Decode the packet first if (! packet.decode(m_maxLength)) { @@ -894,6 +944,14 @@ m_arqSeqExp = 0; m_arqSeqFound = true; + + if (m_session_tracking_enabled) + { + // Save off client port for the stream so we can match against it + // later. SessionRequest should always be an outer protocol packet + // so we can cast it to EQUDPIPPacketFormat to get the ip headers. + m_sessionClientPort = ((EQUDPIPPacketFormat&) packet).getSourcePort(); + } } break; case OP_SessionResponse: @@ -952,6 +1010,11 @@ // Session tracking if (m_session_tracking_enabled) { + // Save off client port for the stream so we can match against it + // later. SessionRequest should always be an outer protocol packet + // so we can cast it to EQUDPIPPacketFormat to get the ip headers. + m_sessionClientPort = ((EQUDPIPPacketFormat&) packet).getDestPort(); + // If this is the world server talking to us, reset session tracking if // it is on so we unlatch the client in case of getting kicked. if (m_streamid == world2client) @@ -1005,9 +1068,11 @@ { m_session_tracking_enabled = 1; emit sessionTrackingChanged(m_session_tracking_enabled); + + m_sessionClientPort = 0; } - emit closing(); + emit closing(m_sessionId, m_streamid); } break; case OP_Ack: @@ -1015,7 +1080,7 @@ 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)", + seqDebug("EQPacket: no-op on ACK for net opcode %04x seq %04x, stream %s (%d)", packet.getNetOpCode(), eqntohuint16(packet.payload()), EQStreamStr[m_streamid], m_streamid); #endif @@ -1026,7 +1091,7 @@ case OP_SessionStatResponse: { #if defined(PACKET_PROCESS_DIAG) && (PACKET_PROCESS_DIAG > 2) - seqDebug("EQPacket: no-op on for net opcode %04x, stream %s (%d)", + seqDebug("EQPacket: no-op on stats for net opcode %04x, stream %s (%d)", packet.getNetOpCode(), EQStreamStr[m_streamid], m_streamid); #endif } @@ -1058,6 +1123,25 @@ } /////////////////////////////////////////////////////////////// +// Process a session disconnect if it is for us +void EQPacketStream::close(uint32_t sessionId, EQStreamID streamId, + uint8_t sessionTracking) +{ + if (sessionId == m_sessionId) + { + // Close is for us + reset(); + setSessionTracking(sessionTracking); + +#ifdef PACKET_SESSION_DIAG + seqInfo("EQPacket: SessionDisconnected received on stream %s (%d). Closing session %u on stream %s (%d).", + EQStreamStr[streamId], streamId, sessionId, + EQStreamStr[m_streamid], m_streamid); +#endif + } +} + +/////////////////////////////////////////////////////////////// // Calculate the CRC on the given packet using this stream's key uint16_t EQPacketStream::calculateCRC(EQProtocolPacket& packet) { Index: packet.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.h,v retrieving revision 1.39.6.4 retrieving revision 1.39.6.5 diff -u -d -r1.39.6.4 -r1.39.6.5 --- packet.h 10 May 2005 16:12:19 -0000 1.39.6.4 +++ packet.h 12 Jul 2005 00:00:57 -0000 1.39.6.5 @@ -105,7 +105,7 @@ uint32_t sessionKey); protected slots: - void closeStream(); + void closeStream(uint32_t sessionId, EQStreamID streamId); void lockOnClient(in_port_t serverPort, in_port_t clientPort); signals: @@ -173,6 +173,7 @@ EQPacketOPCodeDB* m_worldOPCodeDB; EQPacketOPCodeDB* m_zoneOPCodeDB; + void connectStream(EQPacketStream* stream); void dispatchPacket (int size, unsigned char *buffer); void dispatchPacket(EQUDPIPPacketFormat& packet); protected slots: Index: packet.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packet.cpp,v retrieving revision 1.62.6.9 retrieving revision 1.62.6.10 diff -u -d -r1.62.6.9 -r1.62.6.10 --- packet.cpp 10 May 2005 16:12:14 -0000 1.62.6.9 +++ packet.cpp 12 Jul 2005 00:00:56 -0000 1.62.6.10 @@ -143,174 +143,25 @@ m_client2WorldStream = new EQPacketStream(client2world, DIR_Client, m_arqSeqGiveUp, *m_worldOPCodeDB, this, "client2world"); - connect(m_client2WorldStream, - SIGNAL(rawPacket(const uint8_t*, size_t, uint8_t, uint16_t)), - this, - SIGNAL(rawWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t))); - connect(m_client2WorldStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*)), - this, - SIGNAL(decodedWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*))); - connect(m_client2WorldStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool)), - this, - SIGNAL(decodedWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool))); - connect(m_client2WorldStream, - SIGNAL(cacheSize(int, int)), - this, - SIGNAL(cacheSize(int, int))); - connect(m_client2WorldStream, - SIGNAL(seqReceive(int, int)), - this, - SIGNAL(seqReceive(int, int))); - connect(m_client2WorldStream, - SIGNAL(seqExpect(int, int)), - this, - SIGNAL(seqExpect(int, int))); - connect(m_client2WorldStream, - 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))); - + connectStream(m_client2WorldStream); + // Setup world -> client stream m_world2ClientStream = new EQPacketStream(world2client, DIR_Server, m_arqSeqGiveUp, *m_worldOPCodeDB, this, "world2client"); - connect(m_world2ClientStream, - SIGNAL(rawPacket(const uint8_t*, size_t, uint8_t, uint16_t)), - this, - SIGNAL(rawWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t))); - connect(m_world2ClientStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*)), - this, - SIGNAL(decodedWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*))); - connect(m_world2ClientStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool)), - this, - SIGNAL(decodedWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool))); - connect(m_world2ClientStream, - SIGNAL(cacheSize(int, int)), - this, - SIGNAL(cacheSize(int, int))); - connect(m_world2ClientStream, - SIGNAL(seqReceive(int, int)), - this, - SIGNAL(seqReceive(int, int))); - connect(m_world2ClientStream, - SIGNAL(seqExpect(int, int)), - this, - SIGNAL(seqExpect(int, int))); - connect(m_world2ClientStream, - 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))); + connectStream(m_world2ClientStream); // Setup client -> zone stream m_client2ZoneStream = new EQPacketStream(client2zone, DIR_Client, m_arqSeqGiveUp, *m_zoneOPCodeDB, this, "client2zone"); - connect(m_client2ZoneStream, - SIGNAL(rawPacket(const uint8_t*, size_t, uint8_t, uint16_t)), - this, - SIGNAL(rawZonePacket(const uint8_t*, size_t, uint8_t, uint16_t))); - connect(m_client2ZoneStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*)), - this, - SIGNAL(decodedZonePacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*))); - connect(m_client2ZoneStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*,bool)), - this, - SIGNAL(decodedZonePacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*,bool))); - connect(m_client2ZoneStream, - SIGNAL(cacheSize(int, int)), - this, - SIGNAL(cacheSize(int, int))); - connect(m_client2ZoneStream, - SIGNAL(seqReceive(int, int)), - this, - SIGNAL(seqReceive(int, int))); - connect(m_client2ZoneStream, - SIGNAL(seqExpect(int, int)), - this, - SIGNAL(seqExpect(int, int))); - connect(m_client2ZoneStream, - 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))); + connectStream(m_client2ZoneStream); // Setup zone -> client stream m_zone2ClientStream = new EQPacketStream(zone2client, DIR_Server, m_arqSeqGiveUp, *m_zoneOPCodeDB, this, "zone2client"); - connect(m_zone2ClientStream, - SIGNAL(rawPacket(const uint8_t*, size_t, uint8_t, uint16_t)), - this, - SIGNAL(rawZonePacket(const uint8_t*, size_t, uint8_t, uint16_t))); - connect(m_zone2ClientStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*)), - this, - SIGNAL(decodedZonePacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*))); - connect(m_zone2ClientStream, - SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool)), - this, - SIGNAL(decodedZonePacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool))); - connect(m_zone2ClientStream, - SIGNAL(cacheSize(int, int)), - this, - SIGNAL(cacheSize(int, int))); - connect(m_zone2ClientStream, - SIGNAL(seqReceive(int, int)), - this, - SIGNAL(seqReceive(int, int))); - connect(m_zone2ClientStream, - SIGNAL(seqExpect(int, int)), - this, - SIGNAL(seqExpect(int, int))); - connect(m_zone2ClientStream, - SIGNAL(numPacket(int, int)), - this, - SIGNAL(numPacket(int, int))); - // Zone to client stream specific signals (session tracking non-sense) - connect(m_zone2ClientStream, - SIGNAL(sessionTrackingChanged(uint8_t)), - this, - SIGNAL(sessionTrackingChanged(uint8_t))); - connect(m_zone2ClientStream, - SIGNAL(lockOnClient(in_port_t, in_port_t)), - this, - SLOT(lockOnClient(in_port_t, in_port_t))); - connect(m_zone2ClientStream, - SIGNAL(closing()), - this, - SLOT(closeStream())); - connect(m_zone2ClientStream, - SIGNAL(sessionKey(uint32_t, EQStreamID, uint32_t)), - this, - SLOT(dispatchSessionKey(uint32_t, EQStreamID, uint32_t))); + connectStream(m_zone2ClientStream); // Initialize convenient streams array m_streams[client2world] = m_client2WorldStream; @@ -622,6 +473,96 @@ m_busy_decoding = false; } +///////////////////////////////////////////////////////// +// Connect the given stream's signals to the proper slots +void EQPacket::connectStream(EQPacketStream* stream) +{ + // Packet logging + switch (stream->streamID()) + { + case zone2client: + case client2zone: + { + // Zone server stream + connect(stream, + SIGNAL(rawPacket(const uint8_t*, size_t, uint8_t, uint16_t)), + this, + SIGNAL(rawZonePacket(const uint8_t*, size_t, uint8_t, uint16_t))); + + connect(stream, + SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*)), + this, + SIGNAL(decodedZonePacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*))); + + connect(stream, + SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool)), + this, + SIGNAL(decodedZonePacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool))); + } + break; + case world2client: + case client2world: + { + // World server stream + connect(stream, + SIGNAL(rawPacket(const uint8_t*, size_t, uint8_t, uint16_t)), + this, + SIGNAL(rawWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t))); + + connect(stream, + SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*)), + this, + SIGNAL(decodedWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*))); + + connect(stream, + SIGNAL(decodedPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool)), + this, + SIGNAL(decodedWorldPacket(const uint8_t*, size_t, uint8_t, uint16_t, const EQPacketOPCode*, bool))); + } + break; + default : + { + return; + } + } + + // Debugging + connect(stream, + SIGNAL(cacheSize(int, int)), + this, + SIGNAL(cacheSize(int, int))); + connect(stream, + SIGNAL(seqReceive(int, int)), + this, + SIGNAL(seqReceive(int, int))); + connect(stream, + SIGNAL(seqExpect(int, int)), + this, + SIGNAL(seqExpect(int, int))); + connect(stream, + SIGNAL(numPacket(int, int)), + this, + SIGNAL(numPacket(int, int))); + + // Session handling + connect(stream, + SIGNAL(sessionTrackingChanged(uint8_t)), + this, + SIGNAL(sessionTrackingChanged(uint8_t))); + connect(stream, + SIGNAL(lockOnClient(in_port_t, in_port_t)), + this, + SLOT(lockOnClient(in_port_t, in_port_t))); + connect(stream, + SIGNAL(closing(uint32_t, EQStreamID)), + this, + SLOT(closeStream(uint32_t, EQStreamID))); + connect(stream, + SIGNAL(sessionKey(uint32_t, EQStreamID, uint32_t)), + this, + SLOT(dispatchSessionKey(uint32_t, EQStreamID, uint32_t))); +} + //////////////////////////////////////////////////// // This function decides the fate of the Everquest packet // and dispatches it to the correct packet stream for handling function @@ -630,7 +571,6 @@ #ifdef DEBUG_PACKET debug ("EQPacket::dispatchPacket()"); #endif /* DEBUG_PACKET */ - /* Setup variables */ // Create an object to parse the packet EQUDPIPPacketFormat packet(buffer, size, false); @@ -644,7 +584,7 @@ void EQPacket::dispatchPacket(EQUDPIPPacketFormat& packet) { - /* Client Detection */ + // Detect client by world server port traffic... if (m_detectingClient && packet.getSourcePort() == WorldServerGeneralPort) { m_ip = packet.getIPv4DestA(); @@ -661,118 +601,93 @@ 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; - - /* Chat and Login Server Packets, Discard for now */ + // Dispatch based on known streams if ((packet.getDestPort() == ChatServerPort) || (packet.getSourcePort() == ChatServerPort)) + { + // Drop chat server traffic return; - - if ((packet.getDestPort() == WorldServerChatPort) || + } + else if ((packet.getDestPort() == WorldServerChatPort) || (packet.getSourcePort() == WorldServerChatPort)) + { + // Drop cross-server chat traffic return; - - if ((packet.getDestPort() == WorldServerChat2Port) || + } + else if ((packet.getDestPort() == WorldServerChat2Port) || (packet.getSourcePort() == WorldServerChat2Port)) + { + // Drop email and cross-game chat traffic return; - - if (((packet.getDestPort() >= LoginServerMinPort) && - (packet.getDestPort() <= LoginServerMaxPort)) || + } + else if (((packet.getDestPort() >= LoginServerMinPort) && + (packet.getDestPort() <= LoginServerMaxPort)) || (packet.getSourcePort() >= LoginServerMinPort) && (packet.getSourcePort() <= LoginServerMaxPort)) - return; - - if (packet.getIPv4SourceN() == m_client_addr) - { - if (packet.getDestPort() == WorldServerGeneralPort) - stream = m_client2WorldStream; - else - stream = m_client2ZoneStream; - } - else if (packet.getIPv4DestN() == m_client_addr) - { - if (packet.getSourcePort() == WorldServerGeneralPort) - stream = m_world2ClientStream; - else - stream = m_zone2ClientStream; - } - else { + // Drop login server traffic 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()); - -#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()) + else if (packet.getDestPort() == WorldServerGeneralPort || + packet.getSourcePort() == WorldServerGeneralPort) { - uint16_t calcedCRC = stream->calculateCRC(packet); - - if (calcedCRC != packet.crc() && packet.getSessionKey() != 0) + // World server traffic. Dispatch it. + if (packet.getIPv4SourceN() == m_client_addr) { - 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; + m_client2WorldStream->handlePacket(packet); + } + else + { + m_world2ClientStream->handlePacket(packet); } } -#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_AckFuture || - packet.getNetOpCode() == OP_AckAfterDisconnect || - packet.getNetOpCode() == OP_Ack) + else { -#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; + // Anything else we assume is zone server traffic. + if (packet.getIPv4SourceN() == m_client_addr) + { + m_client2ZoneStream->handlePacket(packet); + } + else + { + m_zone2ClientStream->handlePacket(packet); + } } - - // Send it to the stream handler. - stream->handlePacket(packet); - - return; } /* end dispatchPacket() */ //////////////////////////////////////////////////// // Handle zone2client stream closing -void EQPacket::closeStream() +void EQPacket::closeStream(uint32_t sessionId, EQStreamID streamId) { - // 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 || m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP) + // If this is the zone server session closing, reset the pcap filter to + // a non-exclusive form + if ((streamId == zone2client || streamId == client2zone) && + (m_playbackPackets == PLAYBACK_OFF || + m_playbackPackets == PLAYBACK_FORMAT_TCPDUMP)) { m_packetCapture->setFilter(m_device, m_ip, m_realtime, IP_ADDRESS_TYPE, 0, 0); emit filterChanged(); } - seqInfo("EQPacket: SEQClosing detected, awaiting next zone session, pcap filter: EQ Client %s", + // Pass the close onto the streams + m_client2WorldStream->close(sessionId, streamId, m_session_tracking); + m_world2ClientStream->close(sessionId, streamId, m_session_tracking); + m_client2ZoneStream->close(sessionId, streamId, m_session_tracking); + m_zone2ClientStream->close(sessionId, streamId, m_session_tracking); + + // If we just closed the zone server session, unlatch the client port + if (streamId == zone2client || streamId == client2zone) + { + m_clientPort = 0; + m_serverPort = 0; + + emit clientPortLatched(m_clientPort); + + seqInfo("EQPacket: SessionDisconnect detected, awaiting next zone session, pcap filter: EQ Client %s", (const char*)m_ip); - - // we'll be waiting for a new SEQStart for ALL streams - // it seems we only ever see a proper closing sequence from the zone server - // so reset all packet sequence caches - resetEQPacket(); + } } //////////////////////////////////////////////////// @@ -808,12 +723,12 @@ // 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", + seqInfo("EQPacket: SessionRequest 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", + seqInfo("EQPacket: SessionRequest detected, pcap filter: EQ Client %s, Client port %d. Server port %d", (const char*)m_ip, m_clientPort, m_serverPort); } Index: packetstream.h =================================================================== RCS file: /cvsroot/seq/showeq/src/packetstream.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 --- packetstream.h 9 Feb 2005 07:07:39 -0000 1.1.6.2 +++ packetstream.h 12 Jul 2005 00:00:58 -0000 1.1.6.3 @@ -76,6 +76,7 @@ const QObject* receiver, const char* member); void receiveSessionKey(uint32_t sessionId, EQStreamID streamid, uint32_t sessionKey); + void close(uint32_t sessionId, EQStreamID streamid, uint8_t sessionTracking); uint16_t calculateCRC(EQProtocolPacket& packet); uint32_t getSessionKey() const { return m_sessionKey; } @@ -92,7 +93,7 @@ bool unknown); // this signals stream closure - void closing(); + void closing(uint32_t sessionId, EQStreamID streamId); // this signals a change in the session tracking state void sessionTrackingChanged(uint8_t); @@ -137,6 +138,7 @@ // Session info uint32_t m_sessionId; uint32_t m_sessionKey; + in_port_t m_sessionClientPort; uint32_t m_maxLength; // encryption Index: packetcapture.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/packetcapture.cpp,v retrieving revision 1.2.4.5 retrieving revision 1.2.4.6 diff -u -d -r1.2.4.5 -r1.2.4.6 --- packetcapture.cpp 19 Jun 2005 16:20:55 -0000 1.2.4.5 +++ packetcapture.cpp 12 Jul 2005 00:00:58 -0000 1.2.4.6 @@ -4,7 +4,7 @@ * ShowEQ Distributed under GPL * http://www.sourceforge.net/projects/seq * - * Copyright 2000-2003 by the respective ShowEQ Developers + * Copyright 2000-2005 by the respective ShowEQ Developers * Portions Copyright 2001-2003 Zaphod (do...@us...). */ @@ -33,25 +33,31 @@ PacketCaptureThread::~PacketCaptureThread() { - // Drop the packets we have lying around - pthread_mutex_lock (&m_pcache_mutex); + if (m_pcache_pcap) + { + // Turn off pcap + pcap_close(m_pcache_pcap); + } - struct packetCache *pc = m_pcache_first; - struct packetCache* freeMe = NULL; + // Drop the packets we have lying around + pthread_mutex_lock (&m_pcache_mutex); - while (pc) - { - freeMe = pc; - pc = pc->next; + struct packetCache *pc = m_pcache_first; + struct packetCache* freeMe = NULL; - free(freeMe); - } + while (pc) + { + freeMe = pc; + pc = pc->next; - m_pcache_first = NULL; - m_pcache_last = NULL; - m_pcache_closed = true; + free(freeMe); + } - pthread_mutex_unlock (&m_pcache_mutex); + m_pcache_first = NULL; + m_pcache_last = NULL; + m_pcache_closed = true; + + pthread_mutex_unlock (&m_pcache_mutex); } void PacketCaptureThread::setPlaybackSpeed(int playbackSpeed) @@ -75,108 +81,124 @@ } } -void PacketCaptureThread::start(const char *device, const char *host, bool realtime, uint8_t address_type) +void PacketCaptureThread::start(const char *device, const char *host, + bool realtime, uint8_t address_type) { - - char ebuf[256]; // pcap error buffer + char ebuf[PCAP_ERRBUF_SIZE]; // pcap error buffer char filter_buf[256]; // pcap filter buffer struct bpf_program bpp; struct sched_param sp; + bpf_u_int32 mask; // sniff device netmask + bpf_u_int32 net; // sniff device ip seqInfo("Initializing Packet Capture Thread: "); m_pcache_closed = false; - // create pcap style filter expressions - if (address_type == IP_ADDRESS_TYPE) - { - if (strcmp(host, AUTOMATIC_CLIENT_IP) == 0) - { - seqInfo("Filtering packets on device %s, searching for EQ client...", device); - sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and ether proto 0x0800"); - } - else - { - seqInfo("Filtering packets on device %s, IP host %s", device, host); - sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and host %s and ether proto 0x0800", host); - } - } - - else if (address_type == MAC_ADDRESS_TYPE) - { - seqInfo("Filtering packets on device %s, MAC host %s", device, host); - sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and ether host %s and ether proto 0x0800", host); - } + // Fetch the netmask for the device to use later with the filter. + if (pcap_lookupnet(device, &net, &mask, ebuf) == -1) + { + // Couldn't find net mask. Just leave it open. + seqWarn("Couldn't determine netmask of device %s. Using 0.0.0.0. Error was %s", + device, ebuf); + } - else - { - seqFatal("pcap_error:filter_string: unknown address_type (%d)", address_type); - exit(0); - } + // create pcap style filter expressions + if (address_type == IP_ADDRESS_TYPE) + { + if (strcmp(host, AUTOMATIC_CLIENT_IP) == 0) + { + seqInfo("Filtering packets on device %s, searching for EQ client...", device); + sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and ether proto 0x0800"); + } + else + { + seqInfo("Filtering packets on device %s, IP host %s", device, host); + sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and host %s and ether proto 0x0800", host); + } + } + else if (address_type == MAC_ADDRESS_TYPE) + { + seqInfo("Filtering packets on device %s, MAC host %s", device, host); + sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and ether host %s and ether proto 0x0800", host); + } + else + { + seqFatal("pcap_error:filter_string: unknown address_type (%d)", address_type); + exit(0); + } - /* A word about pcap_open_live() from the docs - ** to_ms specifies the read timeout in milliseconds. The - ** read timeout is used to arrange that the read not necessarily - ** return immediately when a packet is seen, but that it wait - ** for some amount of time to allow more packets to arrive and - ** to read multiple packets from the OS kernel in one operation. - ** Not all platforms support a read timeout; on platforms that - ** don't, the read timeout is ignored. - ** - ** In Linux 2.4.x with the to_ms set to 0 we get packets immediatly, - ** and thats what we need in this application, so don't change it!! - ** - ** a race condition exists between this thread and the main thread - ** any artificial delay in getting packets can cause filtering problems - ** and cause us to miss new stream when the player zones. - */ - // initialize the pcap object - m_pcache_pcap = pcap_open_live((char *) device, BUFSIZ, true, 0, ebuf); + /* A word about pcap_open_live() from the docs + ** to_ms specifies the read timeout in milliseconds. The + ** read timeout is used to arrange that the read not necessarily + ** return immediately when a packet is seen, but that it wait + ** for some amount of time to allow more packets to arrive and + ** to read multiple packets from the OS kernel in one operation. + ** Not all platforms support a read timeout; on platforms that + ** don't, the read timeout is ignored. + ** + ** In Linux 2.4.x with the to_ms set to 0 we get packets immediatly, + ** and thats what we need in this application, so don't change it!! + ** + ** a race condition exists between this thread and the main thread + ** any artificial delay in getting packets can cause filtering problems + ** and cause us to miss new stream when the player zones. + */ + // initialize the pcap object + m_pcache_pcap = pcap_open_live((char *) device, BUFSIZ, true, 0, ebuf); #ifdef __FreeBSD__ - // if we're on FreeBSD, we need to call ioctl on the file descriptor - // with BIOCIMMEDIATE to get the kernel Berkeley Packet Filter device - // to return packets to us immediately, rather than holding them in - // it's internal buffer... if we don't do this, we end up getting 32K - // worth of packets all at once, at long intervals -- if someone - // knows a less hacky way of doing this, I'd love to hear about it. - // the problem here is that libpcap doesn't expose an API to do this - // in any way - int fd = *((int*)m_pcache_pcap); - int temp = 1; - if ( ioctl( fd, BIOCIMMEDIATE, &temp ) < 0 ) - seqWarn("PCAP couldn't set immediate mode on BSD" ); + // if we're on FreeBSD, we need to call ioctl on the file descriptor + // with BIOCIMMEDIATE to get the kernel Berkeley Packet Filter device + // to return packets to us immediately, rather than holding them in + // it's internal buffer... if we don't do this, we end up getting 32K + // worth of packets all at once, at long intervals -- if someone + // knows a less hacky way of doing this, I'd love to hear about it. + // the problem here is that libpcap doesn't expose an API to do this + // in any way + int fd = *((int*)m_pcache_pcap); + int temp = 1; + if ( ioctl( fd, BIOCIMMEDIATE, &temp ) < 0 ) + { + seqWarn("PCAP couldn't set immediate mode on BSD" ); + } #endif - if (!m_pcache_pcap) - { - seqWarn("pcap_error:pcap_open_live(%s): %s", device, ebuf); - if ((getuid() != 0) && (geteuid() != 0)) - seqWarn("Make sure you are running ShowEQ as root."); - exit(0); - } + if (!m_pcache_pcap) + { + seqWarn("pcap_error:pcap_open_live(%s): %s", device, ebuf); + if ((getuid() != 0) && (geteuid() != 0)) + { + seqWarn("Make sure you are running ShowEQ as root."); + } + exit(0); + } - if (pcap_compile(m_pcache_pcap, &bpp, filter_buf, 1, 0) == -1) - { - pcap_perror (m_pcache_pcap, "pcap_error:pcap_compile"); - exit(0); - } + if (pcap_compile(m_pcache_pcap, &bpp, filter_buf, 1, net) == -1) + { + pcap_perror (m_pcache_pcap, "pcap_error:pcap_compile"); + exit(0); + } - if (pcap_setfilter (m_pcache_pcap, &bpp) == -1) - { - pcap_perror (m_pcache_pcap, "pcap_error:pcap_setfilter"); - exit(0); - } + if (pcap_setfilter (m_pcache_pcap, &bpp) == -1) + { + pcap_perror (m_pcache_pcap, "pcap_error:pcap_setfilter"); + exit(0); + } - m_pcache_first = m_pcache_last = NULL; + pcap_freecode(&bpp); - pthread_mutex_init (&m_pcache_mutex, NULL); - pthread_create (&m_tid, NULL, loop, (void*)this); + m_pcache_first = m_pcache_last = NULL; - if (realtime) - { - memset (&sp, 0, sizeof (sp)); - sp.sched_priority = 1; - if (pthread_setschedparam (m_tid, SCHED_RR, &sp) != 0) - seqWarn("Failed to set capture thread realtime."); - } + pthread_mutex_init (&m_pcache_mutex, NULL); + pthread_create (&m_tid, NULL, loop, (void*)this); + + if (realtime) + { + memset (&sp, 0, sizeof (sp)); + sp.sched_priority = 1; + if (pthread_setschedparam (m_tid, SCHED_RR, &sp) != 0) + { + seqWarn("Failed to set capture thread realtime."); + } + } } //------------------------------------------------------------------------ @@ -214,8 +236,9 @@ void PacketCaptureThread::stop() { - // close the pcap session - pcap_close(m_pcache_pcap); + // close the pcap session + pcap_close(m_pcache_pcap); + m_pcache_pcap = NULL; } void* PacketCaptureThread::loop (void *param) @@ -226,8 +249,8 @@ } void PacketCaptureThread::packetCallBack(u_char * param, - const struct pcap_pkthdr *ph, - const u_char *data) + const struct pcap_pkthdr *ph, + const u_char *data) { struct packetCache *pc; PacketCaptureThread* myThis = (PacketCaptureThread*)param; @@ -339,13 +362,17 @@ if (! myThis->m_pcache_closed) { - if (myThis->m_pcache_last) - myThis->m_pcache_last->next = pc; + 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) - myThis->m_pcache_first = pc; + if (!myThis->m_pcache_first) + { + myThis->m_pcache_first = pc; + } } else { @@ -391,35 +418,73 @@ bool realtime, uint8_t address_type, uint16_t zone_port, - uint16_t client_port - ) + uint16_t client_port) { char filter_buf[256]; // pcap filter buffer + char ebuf[PCAP_ERRBUF_SIZE]; struct bpf_program bpp; struct sched_param sp; + bpf_u_int32 mask; // sniff device netmask + bpf_u_int32 net; // sniff device ip + + // Fetch the netmask for the device to use later with the filter + if (pcap_lookupnet(device, &net, &mask, ebuf) == -1) + { + // Couldn't find net mask. Just leave it open. + seqWarn("Couldn't determine netmask of device %s. Using 0.0.0.0. Error was %s", + device, ebuf); + } /* Listen to World Server or the specified Zone Server */ if (address_type == IP_ADDRESS_TYPE && client_port) - sprintf (filter_buf, "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and host %s and ether proto 0x0800", client_port, client_port, hostname); + { + // Restrict to client port and ip, plus world streams. + sprintf(filter_buf, + "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and host %s and ether proto 0x0800", + client_port, client_port, hostname); + } else if (address_type == IP_ADDRESS_TYPE && zone_port) - sprintf (filter_buf, "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and host %s and ether proto 0x0800", zone_port, zone_port, hostname); + { + // Restrict to zone port and world streams. + sprintf(filter_buf, + "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and host %s and ether proto 0x0800", + zone_port, zone_port, hostname); + } else if (address_type == MAC_ADDRESS_TYPE && client_port) - sprintf (filter_buf, "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and ether host %s and ether proto 0x0800", client_port, client_port, hostname); + { + // Restrict to client port and world streams. + sprintf(filter_buf, + "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and ether host %s and ether proto 0x0800", + client_port, client_port, hostname); + } else if (address_type == MAC_ADDRESS_TYPE && zone_port) - sprintf (filter_buf, "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and ether host %s and ether proto 0x0800", zone_port, zone_port, hostname); + { + // Restrict to zone port and world streams. + sprintf(filter_buf, + "(udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = %d or udp[2:2] = %d) and ether host %s and ether proto 0x0800", + zone_port, zone_port, hostname); + } else if (hostname != NULL && !client_port && !zone_port) - sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and ether proto 0x0800 and host %s", hostname); + { + // Leave wide open. + sprintf(filter_buf, + "udp[0:2] > 1024 and udp[2:2] > 1024 and ether proto 0x0800 and host %s", + hostname); + } else { - seqInfo("Filtering packets on device %s, searching for EQ client...", device); - sprintf (filter_buf, "udp[0:2] > 1024 and udp[2:2] > 1024 and ether proto 0x0800"); + // Not even a hostname. Leave really wide open! + seqInfo("Filtering packets on device %s, searching for EQ client...", + device); + sprintf(filter_buf, + "udp[0:2] > 1024 and udp[2:2] > 1024 and ether proto 0x0800"); } - if (pcap_compile (m_pcache_pcap, &bpp, filter_buf, 1, 0) == -1) + if (pcap_compile (m_pcache_pcap, &bpp, filter_buf, 1, net) == -1) { - seqWarn("%s",filter_buf); - pcap_perror(m_pcache_pcap, "pcap_error:pcap_compile_error"); - exit (0); + seqWarn("%s",filter_buf); + pcap_perror(m_pcache_pcap, "pcap_error:pcap_compile_error"); + exit(0); } if (pcap_setfilter (m_pcache_pcap, &bpp) == -1) @@ -428,14 +493,18 @@ exit (0); } + pcap_freecode(&bpp); + seqDebug("PCAP Filter Set: %s", filter_buf); if (realtime) { - memset (&sp, 0, sizeof (sp)); - sp.sched_priority = 1; - if (pthread_setschedparam (m_tid, SCHED_RR, &sp) != 0) - seqWarn("Failed to set capture thread realtime."); + memset (&sp, 0, sizeof (sp)); + sp.sched_priority = 1; + if (pthread_setschedparam (m_tid, SCHED_RR, &sp) != 0) + { + seqWarn("Failed to set capture thread realtime."); + } } m_pcapFilter = filter_buf; |
From: Chad M. <cmm...@us...> - 2005-07-12 00:01:06
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8196 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Cleaned up pcap handling a bit Cleaned up packet dispatch a bit CRC errors should only happen on EQ ports now so it won't spam people using teamspeak. Locked down on client port in code so we only process packets for the port we're looking at. will help with dual boxing crashes. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.36 retrieving revision 1.1.2.37 diff -u -d -r1.1.2.36 -r1.1.2.37 --- ChangeLog 7 Jul 2005 16:16:26 -0000 1.1.2.36 +++ ChangeLog 12 Jul 2005 00:00:55 -0000 1.1.2.37 @@ -1,5 +1,12 @@ Version: $Id$ $Name$ +purple (07/11/05) +------------------- ++ Updated version to 5.0.0.25pre ++ Merged in my old alpha netlayer patch which helps with double boxing by + enforcing port matches in code for when the pcap filter isn't + locked down fast enough because of multithreading + purple (07/07/05) -------------------- + Updated version to 5.0.0.24 |
From: Chad M. <cmm...@us...> - 2005-07-07 17:57:49
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19332 Modified Files: Tag: pre_5_0_beta acinclude.m4 Log Message: Simplify qt version check a bit. Index: acinclude.m4 =================================================================== RCS file: /cvsroot/seq/showeq/acinclude.m4,v retrieving revision 1.9.16.8 retrieving revision 1.9.16.9 diff -u -d -r1.9.16.8 -r1.9.16.9 --- acinclude.m4 7 Jul 2005 17:56:12 -0000 1.9.16.8 +++ acinclude.m4 7 Jul 2005 17:57:40 -0000 1.9.16.9 @@ -716,12 +716,10 @@ qt_target_version="3.2.0" -if test $qt_major_version -le 1 ; then - AC_MSG_ERROR([Please Make sure qt $qt_target_version or later is installed!!!]); -elif test $qt_major_version -eq 2 ; then +if test $qt_major_version -le 2 ; then AC_MSG_ERROR([Please Make sure qt $qt_target_version or later is installed!!!]); elif test $qt_major_version -le 3 ; then - if test $qt_minor_version -le 1 ; then + if test $qt_minor_version -lt 2 ; then AC_MSG_ERROR([Please Make sure qt $qt_target_version or later is installed!!!]); fi; fi; |
From: Chad M. <cmm...@us...> - 2005-07-07 17:56:20
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18308 Modified Files: Tag: pre_5_0_beta acinclude.m4 Log Message: Actually check for qt older than 3.2 instead of just changing the required version message string! Index: acinclude.m4 =================================================================== RCS file: /cvsroot/seq/showeq/acinclude.m4,v retrieving revision 1.9.16.7 retrieving revision 1.9.16.8 diff -u -d -r1.9.16.7 -r1.9.16.8 --- acinclude.m4 7 Jul 2005 16:10:32 -0000 1.9.16.7 +++ acinclude.m4 7 Jul 2005 17:56:12 -0000 1.9.16.8 @@ -717,14 +717,12 @@ qt_target_version="3.2.0" if test $qt_major_version -le 1 ; then - AC_MSG_ERROR([Please Make sure $qt_target_version or later is installed!!!]); + AC_MSG_ERROR([Please Make sure qt $qt_target_version or later is installed!!!]); elif test $qt_major_version -eq 2 ; then - if test $qt_minor_version -le 2 ; then - AC_MSG_ERROR([Please Make sure $qt_target_version or later is installed!!!]); - elif test $qt_minor_version -eq 3 ; then - if test $qt_major_build -lt 1 ; then - AC_MSG_ERROR([Please Make sure $qt_target_version or later is installed!!!]); - fi; + AC_MSG_ERROR([Please Make sure qt $qt_target_version or later is installed!!!]); +elif test $qt_major_version -le 3 ; then + if test $qt_minor_version -le 1 ; then + AC_MSG_ERROR([Please Make sure qt $qt_target_version or later is installed!!!]); fi; fi; |
From: Chad M. <cmm...@us...> - 2005-07-07 16:16:38
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26152 Modified Files: Tag: pre_5_0_beta ChangeLog configure.in Log Message: Updated version to 5.0.0.24. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.35 retrieving revision 1.1.2.36 diff -u -d -r1.1.2.35 -r1.1.2.36 --- ChangeLog 5 Jul 2005 19:35:54 -0000 1.1.2.35 +++ ChangeLog 7 Jul 2005 16:16:26 -0000 1.1.2.36 @@ -1,8 +1,8 @@ Version: $Id$ $Name$ -purple (07/04/05) +purple (07/07/05) -------------------- -+ Updated version to 5.0.0.24pre ++ Updated version to 5.0.0.24 + Fixed light member of spawnStruct (thanks BlueAdept) + Updated qt required version to 3.2 because I used QString.replace that was added there Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.25 retrieving revision 1.49.4.26 diff -u -d -r1.49.4.25 -r1.49.4.26 --- configure.in 4 Jul 2005 14:18:22 -0000 1.49.4.25 +++ configure.in 7 Jul 2005 16:16:26 -0000 1.49.4.26 @@ -2,7 +2,7 @@ dnl $Id$ $Name$ AC_PREREQ(2.59) -AC_INIT(showeq, 5.0.0.24pre) +AC_INIT(showeq, 5.0.0.24) AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM |
From: Chad M. <cmm...@us...> - 2005-07-07 16:10:43
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23504 Modified Files: Tag: pre_5_0_beta acinclude.m4 Log Message: Check QT against 3.2.0 minimum (hopefully). Index: acinclude.m4 =================================================================== RCS file: /cvsroot/seq/showeq/acinclude.m4,v retrieving revision 1.9.16.6 retrieving revision 1.9.16.7 diff -u -d -r1.9.16.6 -r1.9.16.7 --- acinclude.m4 18 Apr 2005 03:13:23 -0000 1.9.16.6 +++ acinclude.m4 7 Jul 2005 16:10:32 -0000 1.9.16.7 @@ -714,7 +714,7 @@ AC_MSG_ERROR([Please verify your Qt devel install!]); fi; -qt_target_version="3.1.0" +qt_target_version="3.2.0" if test $qt_major_version -le 1 ; then AC_MSG_ERROR([Please Make sure $qt_target_version or later is installed!!!]); |
From: Chad M. <cmm...@us...> - 2005-07-05 19:36:07
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12464/src Modified Files: Tag: pre_5_0_beta weapons29.h weapons2a.h Log Message: Added a couple weapons from the new tutorial. Index: weapons2a.h =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/weapons2a.h,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -d -r1.1.2.1 -r1.1.2.2 --- weapons2a.h 18 Apr 2005 03:16:23 -0000 1.1.2.1 +++ weapons2a.h 5 Jul 2005 19:35:55 -0000 1.1.2.2 @@ -32,7 +32,7 @@ NULL, // 0x17 NULL, // 0x18 NULL, // 0x19 - NULL, // 0x1a + "Whip", // 0x1a NULL, // 0x1b NULL, // 0x1c NULL, // 0x1d Index: weapons29.h =================================================================== RCS file: /cvsroot/seq/showeq/src/Attic/weapons29.h,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -d -r1.1.2.1 -r1.1.2.2 --- weapons29.h 18 Apr 2005 03:16:23 -0000 1.1.2.1 +++ weapons29.h 5 Jul 2005 19:35:54 -0000 1.1.2.2 @@ -185,7 +185,7 @@ NULL, // 0xb0 NULL, // 0xb1 NULL, // 0xb2 - NULL, // 0xb3 + "CrudeWarhammer", // 0xb3 NULL, // 0xb4 NULL, // 0xb5 NULL, // 0xb6 @@ -196,7 +196,7 @@ NULL, // 0xbb NULL, // 0xbc NULL, // 0xbd - NULL, // 0xbe + "MiningPick", // 0xbe NULL, // 0xbf NULL, // 0xc0 NULL, // 0xc1 @@ -214,14 +214,14 @@ NULL, // 0xcd NULL, // 0xce NULL, // 0xcf - NULL, // 0xd0 + "ShortSword", // 0xd0 NULL, // 0xd1 NULL, // 0xd2 NULL, // 0xd3 NULL, // 0xd4 NULL, // 0xd5 NULL, // 0xd6 - NULL, // 0xd7 + "Dagger", // 0xd7 NULL, // 0xd8 NULL, // 0xd9 "AugmentSealer", // 0xda |
From: Chad M. <cmm...@us...> - 2005-07-05 19:36:07
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12464 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Added a couple weapons from the new tutorial. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.34 retrieving revision 1.1.2.35 diff -u -d -r1.1.2.34 -r1.1.2.35 --- ChangeLog 4 Jul 2005 16:53:37 -0000 1.1.2.34 +++ ChangeLog 5 Jul 2005 19:35:54 -0000 1.1.2.35 @@ -9,6 +9,7 @@ + Rewrote the # stripping stuff from filters so you can still search on # + Filled in auto consents into charProfileStruct + Filled in a little more of spawnStruct ++ Added a couple new weapons that show when worn (from uRit1u2CBBA=) purple (07/02/05) |
From: Chad M. <cmm...@us...> - 2005-07-05 18:37:29
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10740/src Modified Files: Tag: pre_5_0_beta everquest.h Log Message: Fixed member names for unknowns, as I got lazy and let them get out of date. Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.32 retrieving revision 1.74.6.33 diff -u -d -r1.74.6.32 -r1.74.6.33 --- everquest.h 4 Jul 2005 16:53:38 -0000 1.74.6.32 +++ everquest.h 5 Jul 2005 18:37:19 -0000 1.74.6.33 @@ -650,34 +650,34 @@ /*7072*/ uint32_t ldon_ruj_points; // Earned RUJ points /*7076*/ uint32_t ldon_tak_points; // Earned TAK points /*7080*/ uint32_t ldon_avail_points; // Available LDON points -/*7084*/ uint8_t unknown6124[112]; // *** Placeholder +/*7084*/ uint8_t unknown7084[112]; // *** Placeholder /*7196*/ uint32_t tributeTime; // Time remaining on tribute (millisecs) -/*7200*/ uint32_t unknown6240; // *** Placeholder +/*7200*/ uint32_t unknown7200; // *** Placeholder /*7204*/ uint32_t careerTribute; // Total favor points for this char -/*7208*/ uint32_t unknown6248; // *** Placeholder +/*7208*/ uint32_t unknown7208; // *** Placeholder /*7212*/ uint32_t currentTribute; // Current tribute points -/*7216*/ uint32_t unknown6256; // *** Placeholder +/*7216*/ uint32_t unknown7216; // *** Placeholder /*7220*/ uint32_t tributeActive; // 0 = off, 1=on /*7224*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout /*7264*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines -/*7464*/ uint8_t unknown6504[440]; // *** Placeholder +/*7464*/ uint8_t unknown7464[440]; // *** Placeholder /*7904*/ uint32_t endurance; // Current endurance /*7908*/ uint32_t expGroupLeadAA; // Current group lead AA exp (0-1000) /*7912*/ uint32_t expRaidLeadAA; // Current raid lead AA exp (0-2000) /*7916*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points /*7920*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points /*7924*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks -/*8052*/ uint8_t unknown7092[132]; // *** Placeholder +/*8052*/ uint8_t unknown8052[132]; // *** Placeholder /*8184*/ uint32_t airRemaining; // Air supply (seconds) -/*8188*/ uint8_t unknown7228[4608]; // *** Placeholder +/*8188*/ uint8_t unknown8188[4608]; // *** Placeholder /*12796*/ uint32_t aa_spent; // Number of spent AA points /*12800*/ uint32_t expAA; // Exp earned in current AA point /*12804*/ uint32_t aa_unspent; // Unspent AA points -/*12808*/ uint8_t unknown11848[36]; // *** Placeholder +/*12808*/ uint8_t unknown12808[36]; // *** Placeholder /*12844*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents -/*14124*/ uint8_t unknown13164[5120]; // *** Placeholder +/*14124*/ uint8_t unknown14124[5120]; // *** Placeholder /*19244*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt -/*19532*/ uint8_t unknown18572[8]; // *** Placeholder +/*19532*/ uint8_t unknown19532[8]; // *** Placeholder /*19540*/ uint32_t currentRadCrystals; // Current count of radiant crystals /*19544*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever /*19548*/ uint32_t currentEbonCrystals;// Current count of ebon crystals @@ -685,7 +685,7 @@ /*19556*/ uint8_t groupAutoconsent; // 0=off, 1=on /*19557*/ uint8_t raidAutoconsent; // 0=off, 1=on /*19558*/ uint8_t guildAutoconsent; // 0=off, 1=on -/*19559*/ uint8_t unknown19556[5]; // ***Placeholder (6/29/2005) +/*19559*/ uint8_t unknown19559[5]; // ***Placeholder (6/29/2005) /*19564*/ uint32_t unknown19564; // *** Placeholder }; /* 19568 */ |
From: Chad M. <cmm...@us...> - 2005-07-05 11:49:02
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6525/src Modified Files: Tag: pre_5_0_beta races.h Log Message: Filled in worldopcodes. Index: races.h =================================================================== RCS file: /cvsroot/seq/showeq/src/races.h,v retrieving revision 1.9.8.8 retrieving revision 1.9.8.9 diff -u -d -r1.9.8.8 -r1.9.8.9 --- races.h 2 Jul 2005 17:22:53 -0000 1.9.8.8 +++ races.h 5 Jul 2005 11:48:53 -0000 1.9.8.9 @@ -430,7 +430,7 @@ NULL, // 421 NULL, // 422 NULL, // 423 - NULL, // 424 + "Shell", // 424 "Portal", // 425 "Portal", // 426 NULL, // 427 |
From: Chad M. <cmm...@us...> - 2005-07-05 11:49:02
|
Update of /cvsroot/seq/showeq/conf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6525/conf Modified Files: Tag: pre_5_0_beta worldopcodes.xml Log Message: Filled in worldopcodes. Index: worldopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/worldopcodes.xml,v retrieving revision 1.1.4.11 retrieving revision 1.1.4.12 diff -u -d -r1.1.4.11 -r1.1.4.12 --- worldopcodes.xml 2 Jul 2005 17:22:52 -0000 1.1.4.11 +++ worldopcodes.xml 5 Jul 2005 11:48:42 -0000 1.1.4.12 @@ -12,13 +12,13 @@ --> - <opcode id="6bff" name="OP_ZoneServerInfo" updated="05/11/05"> + <opcode id="407c" name="OP_ZoneServerInfo" updated="06/29/05"> <comment>old ZoneServerInfo</comment> </opcode> - <opcode id="6196" name="OP_SendCharInfo" updated="05/11/05"> + <opcode id="732c" name="OP_SendCharInfo" updated="06/29/05"> <comment>Send all chars visible @ char select</comment> </opcode> - <opcode id="6dd0" name="OP_MOTD" updated="05/11/05"> + <opcode id="7fea" name="OP_MOTD" updated="06/29/05"> <comment>old MOTDCode Server message of the day</comment> <payload dir="server" typename="worldMOTDStruct" sizechecktype="none"/> </opcode> @@ -26,22 +26,22 @@ <comment>old GuildListCode</comment> <payload dir="server" typename="worldGuildListStruct" sizechecktype="match"/> </opcode> - <opcode id="38c0" name="OP_SetChatServer" updated="05/11/05"> + <opcode id="6238" name="OP_SetChatServer" updated="06/29/05"> <comment>Chatserver? IP,Port,servername.Charname,password(?)</comment> </opcode> - <opcode id="62c7" name="OP_SetChatServer2" updated="05/11/05"> + <opcode id="6536" name="OP_SetChatServer2" updated="06/29/05"> <comment>Chatserver? IP,Port,servername.Charname,password(?)</comment> </opcode> <opcode id="41b1" name="OP_ApproveWorld" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="1c3a" name="OP_LogServer" updated="05/11/05"> + <opcode id="4668" name="OP_LogServer" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="67fd" name="OP_SendLoginInfo" updated="05/11/05"> + <opcode id="2792" name="OP_SendLoginInfo" updated="06/29/05"> <comment>Client starting world session by asking for login information</comment> </opcode> - <opcode id="2ee3" name="OP_WorldComplete" updated="05/11/05"> + <opcode id="509d" name="OP_WorldComplete" updated="06/29/05"> <comment>Client telling world server it is done. World replies by disconnecting.</comment> </opcode> <opcode id="254d" name="OP_World_Client_CRC1" updated="06/29/05"> @@ -50,10 +50,10 @@ <opcode id="16c9" name="OP_World_Client_CRC2" updated="06/29/05"> <comment>Second client verification packet</comment> </opcode> - <opcode id="51b4" name="OP_ExpansionInfo" updated="05/11/05"> + <opcode id="5c78" name="OP_ExpansionInfo" updated="06/29/05"> <comment>Which expansions user has</comment> </opcode> - <opcode id="727c" name="OP_EnterWorld" updated="05/11/05"> + <opcode id="7262" name="OP_EnterWorld" updated="06/29/05"> <comment>Server approval for client to enter world</comment> </opcode> <opcode id="0920" name="OP_DeleteCharacter" updated="06/29/05"> |
From: Chad M. <cmm...@us...> - 2005-07-04 16:53:48
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15542/src Modified Files: Tag: pre_5_0_beta everquest.h Log Message: Couple more things placed back into new spawnStruct. Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.31 retrieving revision 1.74.6.32 diff -u -d -r1.74.6.31 -r1.74.6.32 --- everquest.h 4 Jul 2005 16:27:29 -0000 1.74.6.31 +++ everquest.h 4 Jul 2005 16:53:38 -0000 1.74.6.32 @@ -918,7 +918,13 @@ /*0164*/ uint8_t eyecolor1; // Player's left eye color /*0165*/ uint8_t unknown0165; /*0166*/ uint8_t is_npc; // 0=no, 1=yes -/*0167*/ uint8_t unknown0167; +union +{ +/*0167*/ int8_t equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets) + // Not sure why there are 2 of them, but it effects chest texture! +/*0167*/ int8_t mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red + // horse: 0=brown, 1=white, 2=black, 3=tan +}; /*0168*/ uint32_t guildID; // Current guild /*0172*/ union { @@ -949,12 +955,13 @@ /*0263*/ int8_t guildrank; // 0=normal, 1=officer, 2=leader /*0264*/ uint8_t unknown0264[3]; /*0267*/ uint8_t is_pet; // 0=no, 1=yes -/*0268*/ uint32_t race; // Spawn race +/*0268*/ uint32_t race; // Spawn race /*0272*/ uint8_t invis; // Invis (0=not, 1=invis) -/*0273*/ uint8_t unknown0276[6]; +/*0273*/ uint8_t unknown0276[5]; +/*0278*/ uint8_t lfg; // 0=off, 1=lfg on /*0279*/ uint8_t level; // Spawn Level /*0280*/ uint8_t haircolor; // Hair color -/*0281*/ uint8_t unknown0281; +/*0281*/ uint8_t unknown0281; // ***Placeholder (maxhp?) /*0282*/ uint8_t light; // Spawn's lightsource /*0283*/ uint8_t gender; // Gender (0=male, 1=female) /*0284*/ char name[64]; // Player's Name @@ -965,18 +972,8 @@ #if 0 /*0010*/ uint8_t hairstyle; // Hair style -union -{ -/*0174*/ int8_t equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets) - // Not sure why there are 2 of them, but it effects chest texture! -/*0174*/ int8_t mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red - // horse: 0=brown, 1=white, 2=black, 3=tan -}; /*0321*/ uint8_t helm; // Helm texture -/*0368*/ uint8_t lfg; // 0=off, 1=lfg on - /*122*/ uint8_t pvp; // 0=Not pvp,1=pvp - #endif /* |
From: Chad M. <cmm...@us...> - 2005-07-04 16:53:47
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15542 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Couple more things placed back into new spawnStruct. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.33 retrieving revision 1.1.2.34 diff -u -d -r1.1.2.33 -r1.1.2.34 --- ChangeLog 4 Jul 2005 16:27:28 -0000 1.1.2.33 +++ ChangeLog 4 Jul 2005 16:53:37 -0000 1.1.2.34 @@ -8,6 +8,7 @@ was added there + Rewrote the # stripping stuff from filters so you can still search on # + Filled in auto consents into charProfileStruct ++ Filled in a little more of spawnStruct purple (07/02/05) |
From: Chad M. <cmm...@us...> - 2005-07-04 16:27:54
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2696 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Filled in autoconsents in charProfileStruct Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.32 retrieving revision 1.1.2.33 diff -u -d -r1.1.2.32 -r1.1.2.33 --- ChangeLog 4 Jul 2005 15:37:16 -0000 1.1.2.32 +++ ChangeLog 4 Jul 2005 16:27:28 -0000 1.1.2.33 @@ -1,12 +1,14 @@ Version: $Id$ $Name$ -purple (07/03/05) +purple (07/04/05) -------------------- + Updated version to 5.0.0.24pre + Fixed light member of spawnStruct (thanks BlueAdept) + Updated qt required version to 3.2 because I used QString.replace that was added there + Rewrote the # stripping stuff from filters so you can still search on # ++ Filled in auto consents into charProfileStruct + purple (07/02/05) --------------------- |
From: Chad M. <cmm...@us...> - 2005-07-04 16:27:54
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2696/src Modified Files: Tag: pre_5_0_beta everquest.h Log Message: Filled in autoconsents in charProfileStruct Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.30 retrieving revision 1.74.6.31 diff -u -d -r1.74.6.30 -r1.74.6.31 --- everquest.h 4 Jul 2005 14:18:22 -0000 1.74.6.30 +++ everquest.h 4 Jul 2005 16:27:29 -0000 1.74.6.31 @@ -682,7 +682,10 @@ /*19544*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever /*19548*/ uint32_t currentEbonCrystals;// Current count of ebon crystals /*19552*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever -/*19556*/ uint8_t unknown19556[8]; // ***Placeholder (6/29/2005) +/*19556*/ uint8_t groupAutoconsent; // 0=off, 1=on +/*19557*/ uint8_t raidAutoconsent; // 0=off, 1=on +/*19558*/ uint8_t guildAutoconsent; // 0=off, 1=on +/*19559*/ uint8_t unknown19556[5]; // ***Placeholder (6/29/2005) /*19564*/ uint32_t unknown19564; // *** Placeholder }; /* 19568 */ |
From: Chad M. <cmm...@us...> - 2005-07-04 15:37:25
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11160/src Modified Files: Tag: pre_5_0_beta filter.cpp filter.h spawn.cpp Log Message: Fixed the # handling in filters so that instead of stripping #'s off spawns, it instead makes the # in the matchin regex for Name: be optional. Index: spawn.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawn.cpp,v retrieving revision 1.31.6.7 retrieving revision 1.31.6.8 diff -u -d -r1.31.6.7 -r1.31.6.8 --- spawn.cpp 2 Jul 2005 17:22:53 -0000 1.31.6.7 +++ spawn.cpp 4 Jul 2005 15:37:16 -0000 1.31.6.8 @@ -862,20 +862,6 @@ { QString name = transformedName(); - // For the spawn name, remove the # off the front if it is there. This is - // because only some mobs have #, but there's no real rule to where it is - // there or not. To ease in filter writing, we just remove it before - // filtering, so you don't have to see the spawn in seq before writing a - // filter for it. - // - // If this turns out too slow, we could always cache the name without the # - // I guess, but transformedName already does string manipulation without - // caching, so what's another only if there's a # at the start *wink* - if (name.startsWith("#")) - { - name = name.mid(1); - } - QString buff; buff.sprintf("Name:%s:Level:%d:Race:%s:Class:%s:NPC:%d:X:%d:Y:%d:Z:%d:" "Light:%s:Deity:%s:RTeam:%d:DTeam:%d:Type:%s:LastName:%s:Guild:%s:", Index: filter.h =================================================================== RCS file: /cvsroot/seq/showeq/src/filter.h,v retrieving revision 1.3.6.1 retrieving revision 1.3.6.2 diff -u -d -r1.3.6.1 -r1.3.6.2 --- filter.h 7 Dec 2003 06:30:43 -0000 1.3.6.1 +++ filter.h 4 Jul 2005 15:37:16 -0000 1.3.6.2 @@ -58,7 +58,11 @@ bool valid() { return m_regexp.isValid(); } protected: + void init(const QString& filterPattern, bool caseSensitive, uint8_t minLevel, + uint8_t maxLevel); + QRegExp m_regexp; + QString m_regexpOriginalPattern; uint8_t m_minLevel; uint8_t m_maxLevel; }; Index: filter.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/filter.cpp,v retrieving revision 1.6.6.3 retrieving revision 1.6.6.4 diff -u -d -r1.6.6.3 -r1.6.6.4 --- filter.cpp 28 May 2005 03:55:20 -0000 1.6.6.3 +++ filter.cpp 4 Jul 2005 15:37:16 -0000 1.6.6.4 @@ -56,8 +56,8 @@ /* FilterItem Class - allows easy creation / deletion of regex types */ FilterItem::FilterItem(const QString& filterPattern, bool caseSensitive) { - m_minLevel = 0; - m_maxLevel = 0; + uint8_t minLevel = 0; + uint8_t maxLevel = 0; QString workString = filterPattern; @@ -95,11 +95,11 @@ // only use the number if it's ok if (ok) - m_minLevel = level; + minLevel = level; #ifdef DEBUG_FILTER seqDebug("filter min level decode levelStr='%s' level=%d ok=%1d minLevel=%d", - (const char*)levelString, level, ok, m_minLevel); + (const char*)levelString, level, ok, minLevel); #endif } else @@ -110,11 +110,11 @@ // only use the number if it's ok if (ok) - m_minLevel = level; + minLevel = level; #ifdef DEBUG_FILTER seqDebug("filter min level decode levelStr='%s' level=%d ok=%1d minLevel=%d", - (const char*)levelString.left(breakPoint), level, ok, m_minLevel); + (const char*)levelString.left(breakPoint), level, ok, minLevel); #endif // the rest of the string after the hyphen is the max @@ -123,37 +123,54 @@ // if a hyphen was specified, but no max value after it, it means // all values above min if (levelString.isEmpty()) - m_maxLevel = INT_MAX; + maxLevel = INT_MAX; else { - // get the max level - level = levelString.toInt(&ok); + // get the max level + level = levelString.toInt(&ok); - // only use the number if it's ok - if (ok) - m_maxLevel = level; + // only use the number if it's ok + if (ok) + maxLevel = level; #ifdef DEBUG_FILTER - seqDebug("filter max level decode levelStr='%s' level=%d ok=%1d maxLevel=%d", - (const char*)levelString, level, ok, m_maxLevel); + seqDebug("filter max level decode levelStr='%s' level=%d ok=%1d maxLevel=%d", + (const char*)levelString, level, ok, m_maxLevel); #endif } } // if no max level specified, or some dope set it below min, make it // equal the min - if(m_maxLevel < m_minLevel) - m_maxLevel = m_minLevel; + if(maxLevel < minLevel) + maxLevel = minLevel; } + init(regexString, caseSensitive, minLevel, maxLevel); +} + +void FilterItem::init(const QString& regexString, bool caseSensitive, + uint8_t minLevel, uint8_t maxLevel) +{ + m_minLevel = minLevel; + m_maxLevel = maxLevel; + #ifdef DEBUG_FILTER seqDebug("regexString=%s minLevel=%d maxLevel=%d", - (const char*)regexString, m_minLevel, m_maxLevel); + (const char*)regexString, minLevel, maxLevel); #endif m_regexp.setWildcard(false); m_regexp.setCaseSensitive(caseSensitive); - m_regexp.setPattern(regexString); + + // For the pattern, save off the original. This is what will be saved + // during save operations. But the actual regexp we filter with will + // mark the # in spawn names as optional to aid in filter writing. + m_regexpOriginalPattern = QString(regexString.ascii()); + + QString fixedFilterPattern = regexString; + fixedFilterPattern.replace("Name:", "Name:#?", false); + m_regexp.setPattern(fixedFilterPattern); if (!m_regexp.isValid()) { @@ -165,10 +182,9 @@ FilterItem::FilterItem(const QString& filterPattern, bool caseSensitive, uint8_t minLevel, uint8_t maxLevel) - : m_regexp(filterPattern, caseSensitive, false), - m_minLevel(minLevel), - m_maxLevel(maxLevel) { + init(filterPattern, caseSensitive, minLevel, maxLevel); + if (!m_regexp.isValid()) { seqWarn("Filter Error: '%s' - %s", @@ -186,7 +202,7 @@ out << indent << "<oldfilter>"; if (!m_regexp.pattern().isEmpty()) - out << "<regex>" << m_regexp.pattern() << "</regex>"; + out << "<regex>" << m_regexpOriginalPattern << "</regex>"; if (m_minLevel || m_maxLevel) { @@ -331,27 +347,17 @@ { FilterItem* re; - // Take the # off the front of the filters. - // - // This is showeq specific, since EQ puts #'s in front of some - // special mobs, but without being in the zone, it's hard to tell what - // has a # and what doesn't. In order to ease in filter writing, just - // strip it off here, and we'll strip it off the spawn names before matching - // too. - QString fixedFilterPattern = filterPattern; - fixedFilterPattern.replace("Name:#", "Name:", false); - // no duplicates allowed - if (findFilter(fixedFilterPattern)) + if (findFilter(filterPattern)) return false; - re = new FilterItem(fixedFilterPattern, m_caseSensitive); + re = new FilterItem(filterPattern, m_caseSensitive); // append it to the end of the list m_filterItems.append(re); #ifdef DEBUG_FILTER - seqDebug("Added Filter '%s'", (const char*)fixedFilterPattern); + seqDebug("Added Filter '%s'", (const char*)filterPattern); #endif return re->valid(); @@ -362,28 +368,18 @@ { FilterItem* re; - // Take the # off the front of the filters for name. - // - // This is showeq specific, since EQ puts #'s in front of some - // special mobs, but without being in the zone, it's hard to tell what - // has a # and what doesn't. In order to ease in filter writing, just - // strip it off here, and we'll strip it off the spawn names before matching - // too. - QString fixedFilterPattern = filterPattern; - fixedFilterPattern.replace("Name:#", "Name:", false); - // no duplicates allowed - if (findFilter(fixedFilterPattern)) + if (findFilter(filterPattern)) return false; - re = new FilterItem(fixedFilterPattern, m_caseSensitive, minLevel, maxLevel); + re = new FilterItem(filterPattern, m_caseSensitive, minLevel, maxLevel); // append it to the end of the list m_filterItems.append(re); #ifdef DEBUG_FILTER seqDebug("Added Filter '%s' (%d, %d)", - (const char*)fixedFilterPattern, minLevel, maxLevel); + (const char*)filterPattern, minLevel, maxLevel); #endif return re->valid(); |
From: Chad M. <cmm...@us...> - 2005-07-04 15:37:24
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11160 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Fixed the # handling in filters so that instead of stripping #'s off spawns, it instead makes the # in the matchin regex for Name: be optional. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.31 retrieving revision 1.1.2.32 diff -u -d -r1.1.2.31 -r1.1.2.32 --- ChangeLog 4 Jul 2005 14:18:11 -0000 1.1.2.31 +++ ChangeLog 4 Jul 2005 15:37:16 -0000 1.1.2.32 @@ -6,6 +6,7 @@ + Fixed light member of spawnStruct (thanks BlueAdept) + Updated qt required version to 3.2 because I used QString.replace that was added there ++ Rewrote the # stripping stuff from filters so you can still search on # purple (07/02/05) --------------------- |
From: Chad M. <cmm...@us...> - 2005-07-04 14:18:34
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5765 Modified Files: Tag: pre_5_0_beta ChangeLog INSTALL configure.in Log Message: Fixed light in spawnStruct. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.30 retrieving revision 1.1.2.31 diff -u -d -r1.1.2.30 -r1.1.2.31 --- ChangeLog 2 Jul 2005 17:22:51 -0000 1.1.2.30 +++ ChangeLog 4 Jul 2005 14:18:11 -0000 1.1.2.31 @@ -1,7 +1,15 @@ Version: $Id$ $Name$ +purple (07/03/05) +-------------------- ++ Updated version to 5.0.0.24pre ++ Fixed light member of spawnStruct (thanks BlueAdept) ++ Updated qt required version to 3.2 because I used QString.replace that + was added there + purple (07/02/05) --------------------- ++ Updated version to 5.0.0.23 + Strip the # off names before matching to filters to aid in filter writing + Strip the # off the strong of filters as well just to make the # irrevelant to filters (thanks BlueAdept for both these) Index: INSTALL =================================================================== RCS file: /cvsroot/seq/showeq/INSTALL,v retrieving revision 1.5.16.6 retrieving revision 1.5.16.7 diff -u -d -r1.5.16.6 -r1.5.16.7 --- INSTALL 7 Apr 2005 02:34:13 -0000 1.5.16.6 +++ INSTALL 4 Jul 2005 14:18:22 -0000 1.5.16.7 @@ -19,7 +19,7 @@ Name: Minimum: Suggested: Source: -------------------------------------------------------------------------- *** 3rd party libraries *** - qt 3.1 Compiled with -thread) http://www.trolltech.com) + qt 3.2 Compiled with -thread) http://www.trolltech.com) libpcap 0.62 http://www.tcpdump.org/ gdbm 1.8.0 http://www.gnu.org/software/gdbm/ Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.24 retrieving revision 1.49.4.25 diff -u -d -r1.49.4.24 -r1.49.4.25 --- configure.in 2 Jul 2005 17:23:39 -0000 1.49.4.24 +++ configure.in 4 Jul 2005 14:18:22 -0000 1.49.4.25 @@ -2,7 +2,7 @@ dnl $Id$ $Name$ AC_PREREQ(2.59) -AC_INIT(showeq, 5.0.0.23) +AC_INIT(showeq, 5.0.0.24pre) AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM |
From: Chad M. <cmm...@us...> - 2005-07-04 14:18:32
|
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5765/src Modified Files: Tag: pre_5_0_beta everquest.h Log Message: Fixed light in spawnStruct. Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.29 retrieving revision 1.74.6.30 diff -u -d -r1.74.6.29 -r1.74.6.30 --- everquest.h 2 Jul 2005 17:22:52 -0000 1.74.6.29 +++ everquest.h 4 Jul 2005 14:18:22 -0000 1.74.6.30 @@ -866,14 +866,14 @@ /*0009*/ uint8_t curHp; // Current hp /*0010*/ char lastName[32]; // Player's Lastname /*0042*/ uint8_t bodytype; // Bodytype -/*0043*/ uint8_t unknown0042[7]; +/*0043*/ uint8_t unknown0042[7]; // ***Placeholder /*0050*/ uint32_t petOwnerId; // If this is a pet, the spawn id of owner /*0054*/ signed deltaHeading:10;// change in heading signed x:19; // x coord signed padding0054:3; // ***Placeholder /*0058*/ signed y:19; // y coord - signed animation:10; // ***Placeholder (seems like speed) - signed padding0058:3; // animation + signed animation:10; // animation + signed padding0058:3; // ***Placeholder /*0062*/ signed z:19; // z coord signed deltaY:13; // change in y /*0066*/ signed deltaX:13; // change in x @@ -951,15 +951,13 @@ /*0273*/ uint8_t unknown0276[6]; /*0279*/ uint8_t level; // Spawn Level /*0280*/ uint8_t haircolor; // Hair color -/*0281*/ uint8_t unknown0282[2]; +/*0281*/ uint8_t unknown0281; +/*0282*/ uint8_t light; // Spawn's lightsource /*0283*/ uint8_t gender; // Gender (0=male, 1=female) /*0284*/ char name[64]; // Player's Name /*0348*/ uint8_t eyecolor2; // Left eye color /*0349*/ char title[32]; // Title -/*0381*/ uint8_t unknown0381; - -// Wrong but compile please. Was light removed 6/29/2005? %%% -/*0009*/ uint8_t light; // Spawn's lightsource +/*0381*/ uint8_t unknown0381[2]; }; /*0383*/ #if 0 |
From: Chad M. <cmm...@us...> - 2005-07-02 17:23:50
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10155 Modified Files: Tag: pre_5_0_beta configure.in Log Message: Version bump Index: configure.in =================================================================== RCS file: /cvsroot/seq/showeq/configure.in,v retrieving revision 1.49.4.23 retrieving revision 1.49.4.24 diff -u -d -r1.49.4.23 -r1.49.4.24 --- configure.in 18 May 2005 23:00:28 -0000 1.49.4.23 +++ configure.in 2 Jul 2005 17:23:39 -0000 1.49.4.24 @@ -2,7 +2,7 @@ dnl $Id$ $Name$ AC_PREREQ(2.59) -AC_INIT(showeq, 5.0.0.22) +AC_INIT(showeq, 5.0.0.23) AC_CONFIG_SRCDIR(src/main.cpp) AC_CANONICAL_SYSTEM |
Update of /cvsroot/seq/showeq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8793/src Modified Files: Tag: pre_5_0_beta everquest.h interface.cpp player.cpp point.h races.h spawn.cpp spawnshell.cpp Log Message: Updated for 6/29 patch: - Redid spawnStruct - Redid both ways for client update - Renamed a couple opcodes to match eqemu - Redid most of the opcodes - Added some races that were missing. - Fixed a couple things that gcc4 complained about, but no idea if it actually works Index: interface.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/interface.cpp,v retrieving revision 1.67.6.17 retrieving revision 1.67.6.18 diff -u -d -r1.67.6.17 -r1.67.6.18 --- interface.cpp 5 Jun 2005 01:01:14 -0000 1.67.6.17 +++ interface.cpp 2 Jul 2005 17:22:53 -0000 1.67.6.18 @@ -1909,7 +1909,7 @@ "groupDisbandStruct", SZC_Match, m_messageShell, SLOT(groupDisband(const uint8_t*, size_t, uint8_t))); - m_packet->connect2("OP_CancelInvite", SP_Zone, DIR_Server|DIR_Client, + m_packet->connect2("OP_GroupCancelInvite", SP_Zone, DIR_Server|DIR_Client, "groupDeclineStruct", SZC_Match, m_messageShell, SLOT(groupDecline(const uint8_t*))); } Index: point.h =================================================================== RCS file: /cvsroot/seq/showeq/src/point.h,v retrieving revision 1.3.16.2 retrieving revision 1.3.16.3 diff -u -d -r1.3.16.2 -r1.3.16.3 --- point.h 24 Sep 2004 04:25:53 -0000 1.3.16.2 +++ point.h 2 Jul 2005 17:22:53 -0000 1.3.16.3 @@ -111,28 +111,28 @@ // default constructor template <class _T> inline -Point3D<_T>::Point3D<_T>() +Point3D<_T>::Point3D() { setPoint(0, 0, 0); } // copy constructor template <class _T> inline -Point3D<_T>::Point3D<_T>(const Point3D<_T>& point) +Point3D<_T>::Point3D(const Point3D<_T>& point) { setPoint(point.x(), point.y(), point.z()); } // copy constructor template <class _T> inline -Point3D<_T>::Point3D<_T>(const QPoint& point) +Point3D<_T>::Point3D(const QPoint& point) { setPoint(point.x(), point.y(), 0); } // convenience constructor template <class _T> inline -Point3D<_T>::Point3D<_T>(_T x, _T y, _T z) +Point3D<_T>::Point3D(_T x, _T y, _T z) { setPoint(x, y, z); } Index: player.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/player.cpp,v retrieving revision 1.42.6.13 retrieving revision 1.42.6.14 diff -u -d -r1.42.6.13 -r1.42.6.14 --- player.cpp 29 May 2005 15:17:29 -0000 1.42.6.13 +++ player.cpp 2 Jul 2005 17:22:53 -0000 1.42.6.14 @@ -861,11 +861,37 @@ printf(" "); } } - printf("pad %d unk %d %d dh %d pad %d ani %d pad %d\n", - pupdate->padding0004, pupdate->unknown0006[0], - pupdate->unknown0006[1], pupdate->deltaHeading, - pupdate->padding0020, pupdate->animation, - pupdate->padding0022); +#endif + +#if 0 + // Debug positioning without having to recompile everything... +#pragma pack(1) + struct pos +{ +/*0000*/ uint16_t spawnId; // Player's spawn id +/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?) +/*0004*/ float y; // y coord +/*0008*/ float deltaZ; // Change in z +/*0016*/ float deltaX; // Change in x +/*0012*/ float deltaY; // Change in y +/*0020*/ signed animation:10; // animation + signed deltaHeading:10; // change in heading + signed padding0020:12; // ***Placeholder (mostly 1) +/*0024*/ float x; // x coord +/*0028*/ float z; // z coord +/*0034*/ unsigned heading:12; // Directional heading + unsigned padding0004:4; // ***Placeholder +/*0032*/ uint8_t unknown0006[2]; // ***Placeholder +/*0036*/ +}; +#pragma pack(0) + struct pos *p = (struct pos *)data; + printf("[%.2x](%f, %f, %f), dx %f dy %f dz %f head %f dhead %f anim %d (%x, %x, %x, %x)\n", + p->spawnId, p->x, p->y, p->z, + p->deltaX, p->deltaY, p->deltaZ, + float(p->heading), float(p->deltaHeading), + p->animation, *(uint16_t*) p->unknown0002, p->padding0020, + p->padding0004, *(uint16_t*) p->unknown0006); #endif setPos(px, py, pz, showeq_params->walkpathrecord, showeq_params->walkpathlength); Index: spawn.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawn.cpp,v retrieving revision 1.31.6.6 retrieving revision 1.31.6.7 diff -u -d -r1.31.6.6 -r1.31.6.7 --- spawn.cpp 4 Jun 2005 17:30:03 -0000 1.31.6.6 +++ spawn.cpp 2 Jul 2005 17:22:53 -0000 1.31.6.7 @@ -427,7 +427,7 @@ // only non corpses and things with animation != 66 move if (!isCorpse() && (s->animation != 66)) { - setDeltas(s->deltaX >> 6, s->deltaY >> 6, s->deltaZ >> 6); + setDeltas(s->deltaX >> 2, s->deltaY >> 2, s->deltaZ >> 2); setHeading(s->heading, s->deltaHeading); } else Index: spawnshell.cpp =================================================================== RCS file: /cvsroot/seq/showeq/src/spawnshell.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 --- spawnshell.cpp 19 Jun 2005 11:55:36 -0000 1.42.6.10 +++ spawnshell.cpp 2 Jul 2005 17:22:53 -0000 1.42.6.11 @@ -426,7 +426,58 @@ const spawnStruct* zspawns = (const spawnStruct*)data; for (int i = 0; i < spawndatasize; i++) + { +#if 0 + // Dump position updates for debugging spawn struct position changes + for (int j=54; j<70; i++) + { + printf("%.2x", zspawns[i][j]); + + if ((j+1) % 8 == 0) + { + printf(" "); + } + else + { + printf(" "); + } + } + printf("\n"); +#endif + +#if 0 + // Debug positioning without having to recompile everything... +#pragma pack(1) + struct pos +{ +/*0054*/ signed deltaHeading:10; // change in heading + signed x:19; // x coord + signed padding0054:3; // ***Placeholder +/*0058*/ signed y:19; // y coord + signed animation:10; // ***Placeholder (seems like speed) + signed padding0058:3; // animation +/*0062*/ signed z:19; // z coord + signed deltaY:13; // change in y +/*0066*/ signed deltaX:13; // change in x + unsigned heading:12; // heading + signed padding0066:7; // ***Placeholder +/*0070*/ signed deltaZ:13; // change in z + signed padding0070:19; // ***Placeholder +/*0074*/ +}; +#pragma pack(0) + struct pos *p = (struct pos *)(data + i*sizeof(spawnStruct) + 54); + printf("[%.2x](%f, %f, %f), dx %f dy %f dz %f head %f dhead %f anim %d (%x, %x, %x, %x)\n", + zspawns[i].spawnId, + float(p->x)/8.0, float(p->y/8.0), float(p->z)/8.0, + float(p->deltaX)/4.0, float(p->deltaY)/4.0, + float(p->deltaZ)/4.0, + float(p->heading), float(p->deltaHeading), + p->animation, p->padding0054, p->padding0058, + p->padding0066, p->padding0070); +#endif newSpawn(zspawns[i]); + } } void SpawnShell::newSpawn(const uint8_t* data) @@ -437,6 +488,7 @@ const spawnStruct* spawn = (const spawnStruct*)data; + newSpawn(*spawn); } @@ -465,7 +517,7 @@ return; } } - + Item* item = m_spawns.find(s.spawnId); if (item != NULL) { @@ -546,6 +598,39 @@ int16_t dy = pupdate->deltaY >> 2; int16_t dx = pupdate->deltaX >> 2; int16_t dz = pupdate->deltaZ >> 2; + +#if 0 + // Debug positioning without having to recompile everything... +#pragma pack(1) + struct pos +{ +/*0000*/ uint16_t spawnId; // spawn id of the thing moving +/*0002*/ signed deltaHeading:10; // change in heading + signed x:19; // x coord + signed padding0002:3; // ***Placeholder +/*0006*/ signed y:19; // y coord + signed animation:10; // ***Placeholder (seems like speed) + signed padding0006:3; // animation +/*0010*/ signed z:19; // z coord + signed deltaY:13; // change in y +/*0014*/ signed deltaX:13; // change in x + unsigned heading:12; // heading + signed padding0014:7; // ***Placeholder +/*0018*/ signed deltaZ:13; // change in z + signed padding0018:19; // ***Placeholder +/*0022*/ +}; +#pragma pack(0) + struct pos *p = (struct pos *)data; + printf("[%.2x](%f, %f, %f), dx %f dy %f dz %f head %f dhead %f anim %d (%x, %x, %x, %x)\n", + p->spawnId, float(p->x)/8.0, float(p->y/8.0), float(p->z)/8.0, + float(p->deltaX)/4.0, float(p->deltaY)/4.0, + float(p->deltaZ)/4.0, + float(p->heading), float(p->deltaHeading), + p->animation, p->padding0002, p->padding0006, + p->padding0014, p->padding0018); +#endif + updateSpawn(pupdate->spawnId, x, y, z, dx, dy, dz, pupdate->heading, pupdate->deltaHeading,pupdate->animation); } Index: races.h =================================================================== RCS file: /cvsroot/seq/showeq/src/races.h,v retrieving revision 1.9.8.7 retrieving revision 1.9.8.8 diff -u -d -r1.9.8.7 -r1.9.8.8 --- races.h 21 Jun 2005 18:00:12 -0000 1.9.8.7 +++ races.h 2 Jul 2005 17:22:53 -0000 1.9.8.8 @@ -435,7 +435,7 @@ "Portal", // 426 NULL, // 427 "Nest", // 428 - NULL, // 429 + "Egg", // 429 "Drake", // 430 "Dervish", // 431 "Drake", // 432 Index: everquest.h =================================================================== RCS file: /cvsroot/seq/showeq/src/everquest.h,v retrieving revision 1.74.6.28 retrieving revision 1.74.6.29 diff -u -d -r1.74.6.28 -r1.74.6.29 --- everquest.h 19 Jun 2005 11:55:36 -0000 1.74.6.28 +++ everquest.h 2 Jul 2005 17:22:52 -0000 1.74.6.29 @@ -465,16 +465,17 @@ /* ** Type: Zone Change Request (before hand) -** Length: 76 Octets +** Length: 88 Octets ** OpCode: ZoneChangeCode */ struct zoneChangeStruct { -/*0000*/ char name[64]; // Character Name -/*0064*/ uint16_t zoneId; // zone Id -/*0066*/ uint16_t zoneInstance; // zone Instance -/*0068*/ uint8_t unknown[8]; // unknown -/*0076*/ +/*0000*/ char name[64]; // Character Name +/*0064*/ uint16_t zoneId; // zone Id +/*0066*/ uint16_t zoneInstance; // zone Instance +/*0068*/ uint8_t unknown0068[8]; // unknown +/*0076*/ uint8_t unknown0076[12]; // ***Placeholder (6/29/2005) +/*0088*/ }; /* @@ -509,7 +510,7 @@ /* ** New Zone Code -** Length: 692 Octets +** Length: 696 Octets ** OpCode: NewZoneCode */ struct newZoneStruct @@ -533,7 +534,7 @@ /*0512*/ float minclip; // Minimum view distance /*0516*/ float maxclip; // Maximum view distance /*0520*/ uint8_t unknown0520[172]; // *** Placeholder -/*0692*/ +/*0692*/ uint8_t unknown0692[4]; // *** Placeholder (06/29/2005) }; @@ -570,14 +571,14 @@ /*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 -/*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 +/*0292*/ uint8_t unknown0292[4]; // *** 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[10]; // *** 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 @@ -681,8 +682,9 @@ /*19544*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever /*19548*/ uint32_t currentEbonCrystals;// Current count of ebon crystals /*19552*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever -/*19556*/ uint32_t unknown18596; // *** Placeholder -}; /* 19560 */ +/*19556*/ uint8_t unknown19556[8]; // ***Placeholder (6/29/2005) +/*19564*/ uint32_t unknown19564; // *** Placeholder +}; /* 19568 */ #if 1 struct playerAAStruct { @@ -859,113 +861,122 @@ */ struct spawnStruct { -/*0000*/ uint8_t is_pet; // 0=no, 1=yes -/*0001*/ uint8_t face; // Face id for players -/*0002*/ uint8_t unknown0002; // ***Placeholder -/*0003*/ uint8_t is_npc; // 0=no, 1=yes -/*0004*/ uint8_t unknown0004; // ***Placeholder -/*0005*/ int8_t aa_title; // 0=none, 1=general, 2=archtype, 3=class -/*0006*/ uint8_t bodytype; // Bodytype -/*0007*/ uint8_t unknown0010[3]; // ***Placeholder -/*0010*/ uint8_t hairstyle; // Hair style -/*0011*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse,a -/*0012*/ float size; // Model size -/*0016*/ char title[32]; // Player's title -/*0048*/ uint32_t guildID; // Current guild -/*0052*/ uint8_t invis; // Invis (0=not, 1=invis) -/*0053*/ float walkspeed; // Speed when walking -/*0057*/ int16_t deity; // Player's Deity -/*0059*/ uint8_t unknown0059[2]; // ***Placeholder -/*0061*/ uint8_t gender; // 0=male, 1=female, 2=other -/*0062*/ uint16_t spawnId; // Spawn Id -/*0064*/ uint8_t unknown0064[6]; // ***Placeholder -/*0070*/ int8_t guildrank; // 0=normal, 1=officer, 2=leader -/*0071*/ uint8_t unknown0071[7]; // ***Placeholder -/*0078*/ signed deltaX:13; // change in x - signed y:19; // y coord -/*0082*/ signed deltaY:13; // change in y - signed z:19; // z coord -/*0086*/ signed heading:12; // spawn heading - signed deltaHeading:10;// change in heading - signed animation:10; // animation id -/*0090*/ signed x:19; // x coord - signed deltaZ:13; // change in z -/*0094*/ uint8_t unknown0094[4]; // ***Placeholder -/*0098*/ char suffix[32]; // Player's suffix (of Veeshan, etc.) -/*0130*/ uint8_t class_; // Player's class -/*0131*/ uint8_t eyecolor1; // Player's left eye color -/*0131*/ uint8_t unknown0131[5]; // ***Placeholder -/*0137*/ uint8_t light; // Spawn's lightsource -/*0138*/ float runspeed; // Speed when running -/*0142*/ uint8_t unknown0142[6]; // ***Placeholder -/*0148*/ uint8_t curHp; // Current hp -/*0149*/ uint8_t findable; // 0=can't be found, 1=can be found -/*0150*/ uint8_t unknown0149[24];// ***Placeholder -union -{ -/*0174*/ int8_t equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets) - // Not sure why there are 2 of them, but it effects chest texture! -/*0174*/ int8_t mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red - // horse: 0=brown, 1=white, 2=black, 3=tan -}; -/*0175*/ uint8_t level; // Spawn Level -/*0176*/ uint8_t anon; // 0=normal, 1=anon, 2=roleplay -/*0177*/ uint8_t beardcolor; // Beard color -/*0178*/ uint8_t unknown0178; // ***Placeholder -/*0179*/ union +/*0000*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse,a +/*0001*/ uint8_t unknown0001[8]; // ***Placeholder (all ff) +/*0009*/ uint8_t curHp; // Current hp +/*0010*/ char lastName[32]; // Player's Lastname +/*0042*/ uint8_t bodytype; // Bodytype +/*0043*/ uint8_t unknown0042[7]; +/*0050*/ uint32_t petOwnerId; // If this is a pet, the spawn id of owner +/*0054*/ signed deltaHeading:10;// change in heading + signed x:19; // x coord + signed padding0054:3; // ***Placeholder +/*0058*/ signed y:19; // y coord + signed animation:10; // ***Placeholder (seems like speed) + signed padding0058:3; // animation +/*0062*/ signed z:19; // z coord + signed deltaY:13; // change in y +/*0066*/ signed deltaX:13; // change in x + unsigned heading:12; // heading + signed padding0066:7; // ***Placeholder +/*0070*/ signed deltaZ:13; // change in z + signed padding0070:19; // ***Placeholder +/*0074*/ int16_t deity; // Player's Deity +/*0076*/ uint8_t unknown[2]; +/*0078*/ union { struct { - /*0179*/ uint32_t equip_helmet; // Equipment: Helmet Visual - /*0183*/ uint32_t equip_chest; // Equipment: Chest Visual - /*0187*/ uint32_t equip_arms; // Equipment: Arms Visual - /*0191*/ uint32_t equip_bracers; // Equipment: Bracers Visual - /*0195*/ uint32_t equip_hands; // Equipment: Hands Visual - /*0199*/ uint32_t equip_legs; // Equipment: Legs Visual - /*0203*/ uint32_t equip_feet; // Equipment: Feet Visual - /*0207*/ uint32_t equip_primary; // Equipment: Primary Visual - /*0211*/ uint32_t equip_secondary; // Equipment: Secondary Visual + /*0078*/ uint32_t equip_helmet; // Equipment: Helmet Visual + /*0082*/ uint32_t equip_chest; // Equipment: Chest Visual + /*0086*/ uint32_t equip_arms; // Equipment: Arms Visual + /*0090*/ uint32_t equip_bracers; // Equipment: Bracers Visual + /*0094*/ uint32_t equip_hands; // Equipment: Hands Visual + /*0098*/ uint32_t equip_legs; // Equipment: Legs Visual + /*0102*/ uint32_t equip_feet; // Equipment: Feet Visual + /*0106*/ uint32_t equip_primary; // Equipment: Primary Visual + /*0110*/ uint32_t equip_secondary; // Equipment: Secondary Visual } equip; - /*0179*/ uint32_t equipment[9]; // Array elements correspond to struct equipment above + /*0078*/ uint32_t equipment[9]; // Array elements correspond to struct equipment above }; -/*0215*/ union +/*0114*/ uint8_t unknown0114[5]; +/*0119*/ uint8_t afk; // 0=no, 1=afk +/*0120*/ uint32_t spawnId; // Spawn Id +/*0124*/ uint8_t unknown0124; +/*0125*/ uint8_t gm; // 0=no, 1=gm +/*0126*/ uint8_t unknown0126[4]; +/*0130*/ int8_t aa_title; // 0=none, 1=general, 2=archtype, 3=class +/*0131*/ uint8_t unknown0132[24]; +/*0155*/ uint8_t anon; // 0=normal, 1=anon, 2=roleplay +/*0156*/ uint8_t unknown0156; +/*0157*/ uint8_t face; // Face id for players +/*0158*/ uint8_t unknown0158[2]; +/*0160*/ float runspeed; // Speed when running +/*0164*/ uint8_t eyecolor1; // Player's left eye color +/*0165*/ uint8_t unknown0165; +/*0166*/ uint8_t is_npc; // 0=no, 1=yes +/*0167*/ uint8_t unknown0167; +/*0168*/ uint32_t guildID; // Current guild +/*0172*/ union { struct { - /*0007*/ Color_Struct color_helmet; // Color of helmet item - /*0011*/ Color_Struct color_chest; // Color of chest item - /*0015*/ Color_Struct color_arms; // Color of arms item - /*0019*/ Color_Struct color_bracers; // Color of bracers item - /*0023*/ Color_Struct color_hands; // Color of hands item - /*0027*/ Color_Struct color_legs; // Color of legs item - /*0031*/ Color_Struct color_feet; // Color of feet item - /*0035*/ Color_Struct color_primary; // Color of primary item - /*0039*/ Color_Struct color_secondary; // Color of secondary item + /*0172*/ Color_Struct color_helmet; // Color of helmet item + /*0176*/ Color_Struct color_chest; // Color of chest item + /*0180*/ Color_Struct color_arms; // Color of arms item + /*0184*/ Color_Struct color_bracers; // Color of bracers item + /*0188*/ Color_Struct color_hands; // Color of hands item + /*0192*/ Color_Struct color_legs; // Color of legs item + /*0196*/ Color_Struct color_feet; // Color of feet item + /*0200*/ Color_Struct color_primary; // Color of primary item + /*0204*/ Color_Struct color_secondary; // Color of secondary item } equipment_colors; - /*0007*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above + /*0172*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above }; -/*0251*/ char name[64]; // Player's Name -/*0315*/ uint32_t petOwnerId; // If this is a pet, the spawn id of owner -/*0319*/ uint8_t afk; // 0=no, 1=afk -/*0320*/ uint8_t haircolor; // Hair color +/*0208*/ uint8_t unknown0208; +/*0209*/ float walkspeed; // Speed when walking +/*0213*/ uint8_t unknown0213[3]; +/*0216*/ uint8_t class_; // Player's class +/*0217*/ uint8_t beardcolor; // Beard color +/*0218*/ float size; // Model size +/*0222*/ uint8_t findable; // 0=can't be found, 1=can be found +/*0223*/ uint8_t unknown0222[4]; +/*0227*/ char suffix[32]; // Player's suffix (of Veeshan, etc.) +/*0259*/ uint8_t unknown0259[4]; +/*0263*/ int8_t guildrank; // 0=normal, 1=officer, 2=leader +/*0264*/ uint8_t unknown0264[3]; +/*0267*/ uint8_t is_pet; // 0=no, 1=yes +/*0268*/ uint32_t race; // Spawn race +/*0272*/ uint8_t invis; // Invis (0=not, 1=invis) +/*0273*/ uint8_t unknown0276[6]; +/*0279*/ uint8_t level; // Spawn Level +/*0280*/ uint8_t haircolor; // Hair color +/*0281*/ uint8_t unknown0282[2]; +/*0283*/ uint8_t gender; // Gender (0=male, 1=female) +/*0284*/ char name[64]; // Player's Name +/*0348*/ uint8_t eyecolor2; // Left eye color +/*0349*/ char title[32]; // Title +/*0381*/ uint8_t unknown0381; + +// Wrong but compile please. Was light removed 6/29/2005? %%% +/*0009*/ uint8_t light; // Spawn's lightsource +}; /*0383*/ + +#if 0 +/*0010*/ uint8_t hairstyle; // Hair style +union +{ +/*0174*/ int8_t equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets) + // Not sure why there are 2 of them, but it effects chest texture! +/*0174*/ int8_t mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red + // horse: 0=brown, 1=white, 2=black, 3=tan +}; /*0321*/ uint8_t helm; // Helm texture -/*0322*/ char lastName[32]; // Players last name -/*0354*/ uint8_t gm; // 0=no, 1=gm -/*0355*/ uint8_t unknown0354[12]; //***Placeholder -/*0367*/ uint8_t eyecolor2; // Player right eye color /*0368*/ uint8_t lfg; // 0=off, 1=lfg on -/*0369*/ uint8_t unknown0369[8]; //***Placeholder -/*0378*/ uint32_t race; // Spawn race -/*0382*/ uint8_t unknown0381[2]; //***Placeholder -/*0383*/ - -#if 0 // Need placed in spawn struct still... %%% -/*121*/ int8_t maxHp; // max hp /*122*/ uint8_t pvp; // 0=Not pvp,1=pvp #endif -}; /* ** Server Zone Entry struct @@ -980,7 +991,7 @@ /* ** Generic Door Struct -** Length: 52 Octets +** Length: 80 Octets ** Used in: ** cDoorSpawnsStruct(f721) ** @@ -1360,7 +1371,7 @@ /* ** Grouping Invite -** Length 193 Octets +** Length 128 Octets ** Opcode OP_GroupInvite */ @@ -1368,8 +1379,7 @@ { /*0000*/ char invitee[64]; // Invitee's Name /*0064*/ char inviter[64]; // Inviter's Name -/*0128*/ uint8_t unknown0130[65]; // ***Placeholder -/*0193*/ +/*0128*/ }; /* @@ -1855,19 +1865,20 @@ struct playerSpawnPosStruct { -/*0000*/ uint16_t spawnId; -/*0002*/ signed deltaZ:13; - unsigned animation:10; - signed padding0002:9; -/*0006*/ signed deltaX:13; - signed y:19; -/*0010*/ signed deltaY:13; - signed z:19; -/*0014*/ unsigned heading:12; - signed deltaHeading:10; - unsigned padding0014:10; -/*0018*/ signed x:19; - signed padding0018:13; +/*0000*/ uint16_t spawnId; // spawn id of the thing moving +/*0002*/ signed deltaHeading:10; // change in heading + signed x:19; // x coord + signed padding0002:3; // ***Placeholder +/*0006*/ signed y:19; // y coord + signed animation:10; // animation + signed padding0006:3; // ***Placeholder +/*0010*/ signed z:19; // z coord + signed deltaY:13; // change in y +/*0014*/ signed deltaX:13; // change in x + unsigned heading:12; // heading + signed padding0014:7; // ***Placeholder +/*0018*/ signed deltaZ:13; // change in z + signed padding0018:19; // ***Placeholder /*0022*/ }; @@ -1881,19 +1892,18 @@ { /*0000*/ uint16_t spawnId; // Player's spawn id /*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?) -/*0004*/ unsigned heading:12; // Directional heading - unsigned padding0004:4; // ***Placeholder -/*0006*/ uint8_t unknown0006[2]; // ***Placeholder -/*0008*/ float deltaY; // Change in y -/*0012*/ float x; // x coord +/*0004*/ float y; // y coord +/*0008*/ float deltaZ; // Change in z /*0016*/ float deltaX; // Change in x -/*0020*/ signed deltaHeading:10; // Change in heading - unsigned padding0020:6; // ***Placeholder (speed?) -/*0022*/ unsigned padding0022:6; // ***Placeholder - unsigned animation:10; // %%% wrong -/*0024*/ float z; // z coord -/*0028*/ float y; // y coord -/*0032*/ float deltaZ; // Change in z +/*0012*/ float deltaY; // Change in y +/*0020*/ signed animation:10; // animation + signed deltaHeading:10; // change in heading + signed padding0020:12; // ***Placeholder (mostly 1) +/*0024*/ float x; // x coord +/*0028*/ float z; // z coord +/*0034*/ unsigned heading:12; // Directional heading + unsigned padding0004:4; // ***Placeholder +/*0032*/ uint8_t unknown0006[2]; // ***Placeholder /*0036*/ }; |
From: Chad M. <cmm...@us...> - 2005-07-02 17:23:01
|
Update of /cvsroot/seq/showeq/conf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8793/conf Modified Files: Tag: pre_5_0_beta worldopcodes.xml zoneopcodes.xml Log Message: Updated for 6/29 patch: - Redid spawnStruct - Redid both ways for client update - Renamed a couple opcodes to match eqemu - Redid most of the opcodes - Added some races that were missing. - Fixed a couple things that gcc4 complained about, but no idea if it actually works Index: worldopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/worldopcodes.xml,v retrieving revision 1.1.4.10 retrieving revision 1.1.4.11 diff -u -d -r1.1.4.10 -r1.1.4.11 --- worldopcodes.xml 15 May 2005 16:06:24 -0000 1.1.4.10 +++ worldopcodes.xml 2 Jul 2005 17:22:52 -0000 1.1.4.11 @@ -22,7 +22,7 @@ <comment>old MOTDCode Server message of the day</comment> <payload dir="server" typename="worldMOTDStruct" sizechecktype="none"/> </opcode> - <opcode id="595f" name="OP_GuildList" updated="05/11/05"> + <opcode id="6957" name="OP_GuildList" updated="06/29/05"> <comment>old GuildListCode</comment> <payload dir="server" typename="worldGuildListStruct" sizechecktype="match"/> </opcode> @@ -32,7 +32,7 @@ <opcode id="62c7" name="OP_SetChatServer2" updated="05/11/05"> <comment>Chatserver? IP,Port,servername.Charname,password(?)</comment> </opcode> - <opcode id="25d4" name="OP_ApproveWorld" updated="05/11/05"> + <opcode id="41b1" name="OP_ApproveWorld" updated="06/29/05"> <comment></comment> </opcode> <opcode id="1c3a" name="OP_LogServer" updated="05/11/05"> @@ -44,10 +44,10 @@ <opcode id="2ee3" name="OP_WorldComplete" updated="05/11/05"> <comment>Client telling world server it is done. World replies by disconnecting.</comment> </opcode> - <opcode id="3c52" name="OP_World_Client_CRC1" updated="05/11/05"> + <opcode id="254d" name="OP_World_Client_CRC1" updated="06/29/05"> <comment>Contains a snippet of spell data</comment> </opcode> - <opcode id="37aa" name="OP_World_Client_CRC2" updated="05/11/05"> + <opcode id="16c9" name="OP_World_Client_CRC2" updated="06/29/05"> <comment>Second client verification packet</comment> </opcode> <opcode id="51b4" name="OP_ExpansionInfo" updated="05/11/05"> @@ -56,16 +56,16 @@ <opcode id="727c" name="OP_EnterWorld" updated="05/11/05"> <comment>Server approval for client to enter world</comment> </opcode> - <opcode id="633e" name="OP_DeleteCharacter" updated="05/11/05"> + <opcode id="0920" name="OP_DeleteCharacter" updated="06/29/05"> <comment>Delete character @ char select</comment> </opcode> - <opcode id="0471" name="OP_CharacterCreate" updated="05/11/04"> + <opcode id="6160" name="OP_CharacterCreate" updated="06/29/04"> <comment>Create character @ char select</comment> </opcode> - <opcode id="4de1" name="OP_ApproveName" updated="05/11/04"> + <opcode id="46b1" name="OP_ApproveName" updated="06/29/04"> <comment>Approving new character name @ char creation</comment> </opcode> - <opcode id="678c" name="OP_RandomNameGenerator" updated="05/11/05"> + <opcode id="23d4" name="OP_RandomNameGenerator" updated="06/29/05"> <comment>Returns a random name</comment> </opcode> </seqopcodes> Index: zoneopcodes.xml =================================================================== RCS file: /cvsroot/seq/showeq/conf/Attic/zoneopcodes.xml,v retrieving revision 1.1.4.24 retrieving revision 1.1.4.25 diff -u -d -r1.1.4.24 -r1.1.4.25 --- zoneopcodes.xml 19 Jun 2005 11:55:36 -0000 1.1.4.24 +++ zoneopcodes.xml 2 Jul 2005 17:22:52 -0000 1.1.4.25 @@ -37,6 +37,9 @@ <opcode id="007e" name="OP_PetitionCheckIn" updated="05/26/04"> <comment>Petition Checkin</comment> </opcode> + <opcode id="688f" name="OP_PetitionResolve" updated="05/11/05"> + <comment>Client Petition Resolve Request</comment> + </opcode> <opcode id="0165" name="OP_DeletePetition" updated="01/26/05"> <comment>Player /deletepetition</comment> </opcode> @@ -207,230 +210,227 @@ </opcode> --> - <opcode id="04ed" name="OP_ItemPlayerPacket" updated="05/11/05"> + <opcode id="15ff" name="OP_ItemPlayerPacket" updated="06/29/05"> <comment>old ItemCode</comment> <payload dir="server" typename="char" sizechecktype="none"/> </opcode> - <opcode id="742e" name="OP_Dye" updated="05/11/05"> + <opcode id="773f" name="OP_Dye" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="56bf" name="OP_Consume" updated="05/11/05"> + <opcode id="7a83" name="OP_Consume" updated="06/29/05"> <comment>Client force feeding food/drink</comment> <payload dir="client" typename="uint8_t" sizechecktype="none"/> </opcode> - <opcode id="199c" name="OP_Begging" updated="05/11/05"> + <opcode id="2c81" name="OP_Begging" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="2c33" name="OP_InspectRequest" updated="05/11/05"> + <opcode id="2403" name="OP_InspectRequest" updated="06/19/05"> <comment>old InspectRequestCode</comment> </opcode> - <opcode id="161c" name="OP_Action2" implicitlen="23" updated="05/11/05"> + <opcode id="1848" name="OP_Action2" updated="06/29/05"> <comment>old ActionCode</comment> <payload dir="both" typename="action2Struct" sizechecktype="match"/> </opcode> - <opcode id="2d3b" name="OP_BeginCast" implicitlen="8" updated="05/11/05"> + <opcode id="3990" name="OP_BeginCast" updated="06/29/05"> <comment>old BeginCastCode</comment> <payload dir="both" typename="beginCastStruct" sizechecktype="match"/> </opcode> - <opcode id="7f99" name="OP_WhoAllRequest" updated="05/11/05"> + <opcode id="5cdd" name="OP_WhoAllRequest" updated="06/29/05"> <comment>old WhoAllReqCode</comment> </opcode> - <opcode id="59b1" name="OP_BuffFadeMsg" updated="05/11/05"> + <opcode id="4bc6" name="OP_BuffFadeMsg" updated="06/29/05"> <comment>old SpellFadeCode</comment> <payload dir="both" typename="spellFadedStruct" sizechecktype="none"/> </opcode> - <opcode id="06a6" name="OP_Consent" updated="05/11/05"> + <opcode id="1081" name="OP_Consent" updated="06/29/05"> <comment>/consent someone</comment> <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/> </opcode> - <opcode id="688f" name="OP_PetitionResolve" updated="05/11/05"> - <comment>Client Petition Resolve Request</comment> - </opcode> - <opcode id="6bde" name="OP_LFGCommand" updated="05/11/05"> + <opcode id="022f" name="OP_LFGCommand" updated="06/29/05"> <comment>old LFGReqCode</comment> </opcode> - <opcode id="7d84" name="OP_LootItem" updated="05/11/05"> + <opcode id="2acf" name="OP_LootItem" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="1832" name="OP_TradeRequestAck" updated="05/11/05"> + <opcode id="4048" name="OP_TradeRequestAck" updated="06/29/05"> <comment>Trade request recipient is acknowledging they are able to trade</comment> </opcode> - <opcode id="3ad8" name="OP_RaidJoin" updated="05/11/05"> + <opcode id="1974" name="OP_RaidJoin" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="2156" name="OP_Bug" updated="05/11/05"> + <opcode id="3eba" name="OP_Bug" updated="06/29/05"> <comment>/bug</comment> </opcode> - <opcode id="5bc2" name="OP_GuildMemberUpdate" updated="05/11/05"> + <opcode id="4cc7" name="OP_GuildMemberUpdate" updated="06/29/05"> <comment></comment> <payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/> </opcode> - <opcode id="655e" name="OP_GuildTributeStatus" updated="05/11/05"> + <opcode id="3312" name="OP_GuildTributeStatus" updated="06/29/05"> <comment>Guild tribute stats send on zone</comment> </opcode> <opcode id="5da6" name="OP_GuildTributeInfo" updated="05/11/05"> <comment>Guild tribute loadout</comment> </opcode> - <opcode id="47ea" name="OP_Track" updated="05/11/05"> + <opcode id="5205" name="OP_Track" updated="06/29/05"> <comment>Clicked Track</comment> </opcode> - <opcode id="16be" name="OP_TraderShop" updated="05/11/05"> + <opcode id="0681" name="OP_TraderShop" updated="06/29/05"> <comment>old OpenTraderCode right-click on a trader in bazaar</comment> </opcode> - <opcode id="17ac" name="OP_BoardBoat" updated="05/11/05"> + <opcode id="67c9" name="OP_BoardBoat" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="5be9" name="OP_LFGGetMatchesRequest" updated="05/11/05"> + <opcode id="6f82" name="OP_LFGGetMatchesRequest" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="3cb2" name="OP_ClickObject" updated="05/11/05"> + <opcode id="0f47" name="OP_ClickObject" updated="06/29/05"> <comment>old RemDropCode</comment> <payload dir="both" typename="remDropStruct" sizechecktype="match"/> </opcode> - <opcode id="6dfd" name="OP_Save" updated="05/11/05"> + <opcode id="6d9b" name="OP_Save" updated="06/29/05"> <comment>Client asking server to save user state</comment> </opcode> - <opcode id="0b8a" name="OP_Camp" updated="05/11/05"> + <opcode id="2844" name="OP_Camp" updated="06/29/05"> <comment>old cStartCampingCode</comment> </opcode> - <opcode id="6e6d" name="OP_ShopPlayerSell" updated="05/11/05"> + <opcode id="0e13" name="OP_ShopPlayerSell" updated="06/29/05"> <comment>old SellItemCode</comment> </opcode> - <opcode id="192f" name="OP_EndLootRequest" updated="05/11/05"> + <opcode id="7fe4" name="OP_EndLootRequest" updated="06/29/05"> <comment>old cDoneLootingCode</comment> </opcode> - <opcode id="5722" name="OP_SendAAStats" updated="05/11/05"> + <opcode id="0587" name="OP_SendAAStats" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="235e" name="OP_SendAATable" updated="05/11/05"> + <opcode id="367d" name="OP_SendAATable" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="5ad1" name="OP_GroupDisband" updated="05/11/05"> + <opcode id="4033" name="OP_GroupDisband" updated="06/29/05"> <comment>Disband from group</comment> <payload dir="both" typename="groupDisbandStruct" sizechecktype="match"/> </opcode> - <opcode id="333d" name="OP_LoadSpellSet" updated="05/11/05"> + <opcode id="403e" name="OP_LoadSpellSet" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="677f" name="OP_AutoAttack" updated="05/11/05"> + <opcode id="6c47" name="OP_AutoAttack" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="550e" name="OP_Consider" updated="05/11/05"> + <opcode id="2717" name="OP_Consider" updated="06/29/05"> <comment>old ConsiderCode</comment> <payload dir="both" typename="considerStruct" sizechecktype="match"/> </opcode> - <opcode id="7c5b" name="OP_ReqClientSpawn" updated="05/11/05"> + <opcode id="0e76" name="OP_ReqClientSpawn" updated="06/29/05"> <comment>Client requesting spawn data</comment> </opcode> - <opcode id="43c2" name="OP_Emote" updated="05/11/05"> + <opcode id="55bc" name="OP_Emote" updated="06/29/05"> <comment>old EmoteTextCode</comment> <payload dir="both" typename="emoteTextStruct" sizechecktype="none"/> </opcode> - <opcode id="42d5" name="OP_GuildMOTD" updated="05/11/05"> + <opcode id="21ed" name="OP_GuildMOTD" updated="06/29/05"> <comment>GuildMOTD</comment> <payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/> </opcode> - <opcode id="0065" name="OP_CancelTrade" updated="05/11/05"> + <opcode id="2dc1" name="OP_CancelTrade" updated="06/29/05"> <comment>Cancel a trade window</comment> </opcode> - <opcode id="5c32" name="OP_GroupInvite" updated="05/11/05"> + <opcode id="3853" name="OP_GroupInvite" updated="06/29/05"> <payload dir="both" typename="groupInviteStruct" sizechecktype="match"/> <comment></comment> </opcode> - <opcode id="3024" name="OP_Trader" updated="05/11/05"> + <opcode id="66f9" name="OP_Trader" updated="06/29/05"> <comment>People turning trader on and off</comment> <payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/> </opcode> - <opcode id="1f73" name="OP_PetCommands" updated="05/11/05"> + <opcode id="58b2" name="OP_PetCommands" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="59eb" name="OP_SpawnAppearance" implicitlen="8" updated="05/11/05"> + <opcode id="18b7" name="OP_SpawnAppearance" updated="06/29/05"> <comment>old SpawnAppearanceCode</comment> <payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/> </opcode> - <opcode id="4ad3" name="OP_DeleteSpawn" implicitlen="4" updated="05/11/05"> + <opcode id="1a64" name="OP_DeleteSpawn" updated="06/29/05"> <comment>old DeleteSpawnCode</comment> <payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/> </opcode> - <opcode id="768d" name="OP_ReqNewZone" updated="05/11/05"> + <opcode id="47c9" name="OP_ReqNewZone" updated="06/29/05"> <comment>Client requesting NewZone_Struct</comment> </opcode> - <opcode id="4573" name="OP_FormattedMessage" updated="05/11/05"> + <opcode id="42cd" name="OP_FormattedMessage" updated="06/29/05"> <comment>old FormattedMessageCode</comment> <payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/> </opcode> <opcode id="34e8" name="OP_DisarmTraps" updated="05/11/05"> <comment>Clicked disarm traps</comment> </opcode> - <opcode id="793a" name="OP_WhoAllResponse" updated="05/11/05"> + <opcode id="6686" name="OP_WhoAllResponse" updated="06/29/05"> <comment>old sWhoAllOutputCode</comment> </opcode> - <opcode id="395c" name="OP_AutoAttack2" updated="05/11/05"> + <opcode id="0fa6" name="OP_AutoAttack2" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="8713" name="OP_HPUpdate" implicitlen="6" updated="05/11/05"> + <opcode id="217b" name="OP_HPUpdate" updated="06/29/05"> <comment>old NpcHpUpdateCode Update HP % of a PC or NPC</comment> <payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="281b" name="OP_GuildMemberList" updated="05/11/05"> + <opcode id="147d" name="OP_GuildMemberList" updated="06/29/05"> <comment></comment> <payload dir="server" typename="uint8_t" sizechecktype="none"/> </opcode> - <opcode id="1dc8" name="OP_SetRunMode" updated="05/11/05"> + <opcode id="0342" name="OP_SetRunMode" updated="06/29/05"> <comment>old cRunToggleCode</comment> </opcode> - <opcode id="091d" name="OP_AAExpUpdate" updated="05/11/05"> + <opcode id="6dd8" name="OP_AAExpUpdate" updated="06/29/05"> <comment>Receiving AA experience. Also when percent to AA changes.</comment> <payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="4930" name="OP_GetGuildMOTD" updated="05/11/05"> + <opcode id="7fec" name="OP_GetGuildMOTD" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="0ae3" name="OP_SimpleMessage" updated="05/11/05"> + <opcode id="5a48" name="OP_SimpleMessage" updated="06/29/05"> <comment>old SimpleMessageCode</comment> <payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/> </opcode> - <opcode id="023f" name="OP_Hide" updated="05/11/05"> + <opcode id="6f64" name="OP_Hide" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="7e1a" name="OP_SaveOnZoneReq" updated="05/11/05"> + <opcode id="2baf" name="OP_SaveOnZoneReq" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="0f94" name="OP_ShopEnd" updated="05/11/05"> + <opcode id="7e03" name="OP_ShopEnd" updated="06/29/05"> <comment>old CloseVendorCode</comment> <payload dir="both" typename="unknown" sizechecktype="none"/> </opcode> - <opcode id="3024" name="OP_MoveDoor" updated="05/11/05"> + <opcode id="0ef7" name="OP_MoveDoor" updated="06/29/05"> <comment>old DoorClickCode</comment> </opcode> - <opcode id="1f0f" name="OP_SenseTraps" updated="05/11/05"> + <opcode id="24ab" name="OP_SenseTraps" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="5093" name="OP_SenseHeading" updated="05/11/05"> + <opcode id="5666" name="OP_SenseHeading" updated="06/29/05"> <comment>old cSenseHeadingCode</comment> </opcode> - <opcode id="70be" name="OP_Buff" updated="05/11/05"> + <opcode id="33dc" name="OP_Buff" updated="06/29/05"> <comment>old BuffDropCode</comment> <payload dir="both" typename="buffStruct" sizechecktype="match"/> </opcode> - <opcode id="4574" name="OP_CommonMessage" updated="05/11/05"> + <opcode id="1004" name="OP_CommonMessage" updated="06/29/05"> <comment>old ChannelMessageCode</comment> <payload dir="both" typename="channelMessageStruct" sizechecktype="none"/> </opcode> - <opcode id="619e" name="OP_LootComplete" updated="05/11/05"> + <opcode id="20b2" name="OP_LootComplete" updated="06/29/05"> <comment>old sDoneLootingCode</comment> </opcode> - <opcode id="4d2f" name="OP_EnvDamage" updated="05/11/05"> + <opcode id="0990" name="OP_EnvDamage" updated="06/29/05"> <comment>Environmental Damage</comment> <payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/> </opcode> - <opcode id="253f" name="OP_Split" updated="05/11/05"> + <opcode id="6a53" name="OP_Split" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="5a42" name="OP_Surname" updated="05/11/05"> + <opcode id="48fe" name="OP_Surname" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="33c8" name="OP_ZoneEntry" updated="05/11/05"> + <opcode id="2ec9" name="OP_ZoneEntry" updated="06/29/05"> <comment>old ZoneEntryCode</comment> <payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/> <payload dir="server" typename="ServerZoneEntryStruct" sizechecktype="match"/> @@ -438,168 +438,168 @@ <opcode id="1de7" name="OP_FinishTrade" updated="05/11/05"> <comment>Trade is over</comment> </opcode> - <opcode id="6319" name="OP_ShopRequest" updated="05/11/05"> + <opcode id="3c4b" name="OP_ShopRequest" updated="06/29/05"> <comment>old OpenVendorCode</comment> <payload dir="both" typename="unknown" sizechecktype="none"/> </opcode> - <opcode id="787a" name="OP_MoveItem" updated="05/11/05"> + <opcode id="7657" name="OP_MoveItem" updated="06/29/05"> <comment>Client moving an item from one slot to another</comment> </opcode> - <opcode id="2db5" name="OP_ZoneSpawns" updated="05/11/05"> + <opcode id="5ee8" name="OP_ZoneSpawns" updated="06/29/05"> <comment>old ZoneSpawnsCode</comment> <payload dir="server" typename="spawnStruct" sizechecktype="modulus"/> </opcode> - <opcode id="738f" name="OP_FaceChange" updated="05/11/05"> + <opcode id="763b" name="OP_FaceChange" updated="06/29/05"> <comment>/face</comment> </opcode> - <opcode id="2afe" name="OP_GroupFollow" updated="05/11/05"> + <opcode id="1b48" name="OP_GroupFollow" updated="06/29/05"> <payload dir="both" typename="groupFollowStruct" sizechecktype="match"/> <comment>Accepting to join a group</comment> </opcode> - <opcode id="49b4" name="OP_ItemPacket" updated="05/11/05"> + <opcode id="3397" name="OP_ItemPacket" updated="06/29/05"> <comment>old ItemCode</comment> <payload dir="server" typename="itemPacketStruct" sizechecktype="none"/> </opcode> - <opcode id="776b" name="OP_ItemLinkResponse" updated="05/11/05"> + <opcode id="1d43" name="OP_ItemLinkResponse" updated="06/29/05"> <comment>old ItemInfoCode</comment> <payload dir="server" typename="itemInfoStruct" sizechecktype="none"/> <payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/> </opcode> - <opcode id="319c" name="OP_Sneak" updated="05/11/05"> + <opcode id="4312" name="OP_Sneak" updated="06/29/05"> <comment>Clicked sneak</comment> </opcode> - <opcode id="16ee" name="OP_ClientReady" updated="05/11/05"> + <opcode id="5e20" name="OP_ClientReady" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="05c6" name="OP_ZoneChange" updated="05/11/05"> + <opcode id="60ef" name="OP_ZoneChange" updated="06/29/05"> <comment>old ZoneChangeCode</comment> <payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/> </opcode> - <opcode id="1f28" name="OP_RequestZoneChange" updated="05/11/05"> + <opcode id="1235" name="OP_RequestZoneChange" updated="06/29/05"> <comment>Send by server when a click causes zone. Also, origin</comment> <payload dir="server" typename="requestZoneChangeStruct" sizechecktype="match"/> </opcode> - <opcode id="03ec" name="OP_SendZonePoints" updated="05/11/05"> + <opcode id="775d" name="OP_SendZonePoints" updated="06/29/05"> <comment>Coords in a zone that will port you to another zone</comment> <payload dir="server" typename="zonePointsStruct" sizechecktype="none"/> </opcode> - <opcode id="5656" name="OP_MemorizeSpell" updated="05/11/05"> + <opcode id="05ac" name="OP_MemorizeSpell" updated="06/29/05"> <comment>old MemSpellCode</comment> <payload dir="both" typename="memSpellStruct" sizechecktype="match"/> </opcode> - <opcode id="7cdb" name="OP_CancelInvite" updated="05/11/05"> + <opcode id="42c9" name="OP_GroupCancelInvite" updated="06/29/05"> <payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/> <comment>Declining to join a group</comment> </opcode> - <opcode id="3e39" name="OP_ItemLinkClick" updated="05/11/05"> + <opcode id="53e5" name="OP_ItemLinkClick" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="22cc" name="OP_SwapSpell" updated="05/11/05"> + <opcode id="36b2" name="OP_SwapSpell" updated="06/29/05"> <comment>old TradeSpellBookSlotsCode</comment> <payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/> </opcode> - <opcode id="7e63" name="OP_NewZone" updated="05/11/05"> + <opcode id="7ac5" name="OP_NewZone" updated="06/29/05"> <comment>old NewZoneCode</comment> <payload dir="server" typename="newZoneStruct" sizechecktype="match"/> </opcode> - <opcode id="33bc" name="OP_Forage" updated="05/11/05"> + <opcode id="7c32" name="OP_Forage" updated="06/29/05"> <comment>old ForageCode</comment> </opcode> - <opcode id="6fc0" name="OP_ConsentResponse" updated="05/11/05"> + <opcode id="6380" name="OP_ConsentResponse" updated="06/29/05"> <comment>Server replying with consent information after /consent</comment> <payload dir="server" typename="consentResponseStruct" sizechecktype="match"/> </opcode> - <opcode id="3200" name="OP_BazaarSearch" updated="05/11/05"> + <opcode id="524e" name="OP_BazaarSearch" updated="06/29/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="5ff7" name="OP_NewSpawn" updated="05/11/05"> + <opcode id="4f11" name="OP_NewSpawn" updated="06/29/05"> <comment>old NewSpawnCode</comment> <payload dir="server" typename="spawnStruct" sizechecktype="match"/> </opcode> - <opcode id="60e1" name="OP_WearChange" implicitlen="9" updated="05/11/05"> + <opcode id="601d" name="OP_WearChange" updated="06/29/05"> <comment>old SpawnUpdateCode</comment> <payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="0bb3" name="OP_Action" implicitlen="31" updated="05/11/05"> + <opcode id="4513" name="OP_Action" updated="06/29/05"> <comment></comment> <payload dir="both" typename="actionStruct" sizechecktype="match"/> </opcode> - <opcode id="4ee3" name="OP_InitialHPUpdate" implicitlen="6" updated="05/11/05"> + <opcode id="7ac2" name="OP_InitialHPUpdate" updated="06/29/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="0fab" name="OP_SpecialMesg" updated="05/11/05"> + <opcode id="5ef7" name="OP_SpecialMesg" updated="06/29/05"> <comment>Communicate textual info to client</comment> <payload dir="server" typename="specialMessageStruct" sizechecktype="none"/> </opcode> - <opcode id="100d" name="OP_TargetMouse" updated="05/11/05"> + <opcode id="2274" name="OP_TargetMouse" updated="06/29/05"> <comment>Targeting a person - old ClientTargetCode</comment> <payload dir="both" typename="clientTargetStruct" sizechecktype="match"/> </opcode> - <opcode id="1095" name="OP_TradeRequest" updated="05/11/05"> + <opcode id="372f" name="OP_TradeRequest" updated="06/29/05"> <comment>Client request trade session</comment> </opcode> - <opcode id="25cb" name="OP_SpawnDoor" updated="05/11/05"> + <opcode id="4c24" name="OP_SpawnDoor" updated="06/29/05"> <comment>old DoorSpawnsCode</comment> <payload dir="server" typename="doorStruct" sizechecktype="modulus"/> </opcode> - <opcode id="54d1" name="OP_LeaveBoat" updated="05/11/05"> + <opcode id="7187" name="OP_LeaveBoat" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="68d9" name="OP_Weather" updated="05/11/05"> + <opcode id="65ca" name="OP_Weather" updated="06/29/05"> <comment>old WeatherCode</comment> </opcode> - <opcode id="1f1c" name="OP_PlayerProfile" updated="05/11/05"> + <opcode id="75df" name="OP_PlayerProfile" updated="06/29/05"> <comment>old CharProfileCode</comment> <payload dir="server" typename="charProfileStruct" sizechecktype="match"/> </opcode> - <opcode id="17d0" name="OP_LFPGetMatchesRequest" updated="05/11/05"> + <opcode id="45d0" name="OP_LFPGetMatchesRequest" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="1828" name="OP_FindResponse" updated="05/11/05"> + <opcode id="5711" name="OP_FindResponse" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="050f" name="OP_RaidInvite" updated="05/11/05"> + <opcode id="1f21" name="OP_RaidInvite" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="19d8" name="OP_Illusion" updated="05/11/05"> + <opcode id="7441" name="OP_Illusion" updated="06/29/05"> <comment>Spawn being illusioned (changing forms)</comment> <payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/> </opcode> - <opcode id="76b4" name="OP_AckPacket" updated="05/11/05"> + <opcode id="7752" name="OP_AckPacket" updated="06/29/05"> <comment>Appears to be generic ack at the presentation level</comment> </opcode> - <opcode id="2617" name="OP_TraderBuy" updated="05/11/05"> + <opcode id="0f8e" name="OP_TraderBuy" updated="06/29/05"> <comment>buy from a trader in bazaar</comment> </opcode> - <opcode id="69b3" name="OP_InspectAnswer" updated="05/11/05"> + <opcode id="2dd6" name="OP_InspectAnswer" updated="06/29/05"> <comment>old InspectDataCode</comment> <payload dir="both" typename="inspectDataStruct" sizechecktype="match"/> </opcode> - <opcode id="2684" name="OP_GMKill" updated="05/11/05"> + <opcode id="692c" name="OP_GMKill" updated="06/29/05"> <comment>GM /kill - Insta kill mob/pc</comment> </opcode> - <opcode id="456b" name="OP_MoneyOnCorpse" updated="05/11/05"> + <opcode id="2fca" name="OP_MoneyOnCorpse" updated="06/29/05"> <comment>old MoneyOnCorpseCode</comment> <payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/> </opcode> - <opcode id="610e" name="OP_ClickDoor" updated="05/11/05"> + <opcode id="700d" name="OP_ClickDoor" updated="06/29/05"> <comment>old DoorOpenCode</comment> <payload dir="both" typename="uint8_t" sizechecktype="none"/> </opcode> - <opcode id="65d8" name="OP_GuildPublicNote" updated="05/11/05"> + <opcode id="17a2" name="OP_GuildPublicNote" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="5366" name="OP_LootRequest" updated="05/11/05"> + <opcode id="2316" name="OP_LootRequest" updated="06/29/05"> <comment>old cLootCorpseCode</comment> </opcode> - <opcode id="4dd7" name="OP_YellForHelp" updated="05/11/05"> + <opcode id="2e20" name="OP_YellForHelp" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="5eb7" name="OP_ManaChange" implicitlen="16" updated="05/11/05"> + <opcode id="0b2d" name="OP_ManaChange" updated="06/29/05"> <comment>Mana change. Bards send this up with no size. Casters receive this for mana updates.</comment> <payload dir="server" typename="manaDecrementStruct" sizechecktype="match"/> <payload dir="client" typename="uint8_t" sizechecktype="none"/> @@ -607,145 +607,160 @@ <opcode id="0af6" name="OP_ShopPlayerBuy" updated="05/11/05"> <comment>old BuyItemCode</comment> </opcode> - <opcode id="78b1" name="OP_ConsentDeny" updated="05/11/05"> + <opcode id="4e8c" name="OP_ConsentDeny" updated="06/29/05"> <comment>/deny someone</comment> <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/> </opcode> - <opcode id="787e" name="OP_LFPCommand" updated="05/11/05"> + <opcode id="35a6" name="OP_LFPCommand" updated="06/29/05"> <comment>looking for players</comment> </opcode> <opcode id="5463" name="OP_TradeCoins" updated="05/11/05"> <comment>Coins put in trade window</comment> </opcode> - <opcode id="0070" name="OP_RandomReply" updated="05/11/05"> + <opcode id="6cd5" name="OP_RandomReply" updated="06/29/05"> <comment>old RandomCode</comment> <payload dir="server" typename="randomStruct" sizechecktype="match"/> </opcode> - <opcode id="3c00" name="OP_DenyResponse" updated="05/11/05"> + <opcode id="7c66" name="OP_DenyResponse" updated="06/29/05"> <comment>Server replying with deny information after /deny</comment> <payload dir="server" typename="consentResponseStruct" sizechecktype="match"/> </opcode> - <opcode id="5ba6" name="OP_GroupUpdate" updated="05/11/05"> + <opcode id="66ba" name="OP_GroupUpdate" updated="06/29/05"> <payload dir="server" typename="groupFullUpdateStruct" sizechecktype="match"/> <payload dir="server" typename="groupUpdateStruct" sizechecktype="match"/> <comment></comment> </opcode> - <opcode id="2839" name="OP_ConsiderCorpse" updated="05/11/05"> + <opcode id="673c" name="OP_ConsiderCorpse" updated="06/29/05"> <comment>old cConCorpseCode</comment> </opcode> - <opcode id="55bb" name="OP_TradeAcceptClick" updated="05/11/05"> + <opcode id="0065" name="OP_TradeAcceptClick" updated="06/29/05"> <comment>One side clicks Accept on the trade</comment> </opcode> - <opcode id="0f70" name="OP_TimeOfDay" updated="05/11/05"> + <opcode id="1580" name="OP_TimeOfDay" updated="06/29/05"> <comment>old TimeOfDayCode</comment> <payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/> </opcode> - <opcode id="1aec" name="OP_ConfirmDelete" updated="05/11/05"> + <opcode id="28f2" name="OP_ConfirmDelete" updated="06/29/05"> <comment>Client sends this to server to confirm op_deletespawn</comment> </opcode> - <opcode id="5752" name="OP_MobHealth" implicitlen="3" updated="05/11/05"> + <opcode id="3d2d" name="OP_MobHealth" updated="06/29/05"> <comment>health sent when a player clicks on the mob</comment> </opcode> - <opcode id="35a9" name="OP_RandomReq" updated="05/11/05"> + <opcode id="21e0" name="OP_RandomReq" updated="06/29/05"> <comment>old RandomReqCode</comment> <payload dir="client" typename="randomReqStruct" sizechecktype="match"/> </opcode> - <opcode id="53b3" name="OP_CastSpell" updated="05/11/05"> + <opcode id="4839" name="OP_CastSpell" updated="06/29/05"> <comment>old StartCastCode</comment> <payload dir="both" typename="startCastStruct" sizechecktype="match"/> </opcode> - <opcode id="2b94" name="OP_ClientUpdate" implicitlen="18" updated="05/11/05"> + <opcode id="14cb" name="OP_ClientUpdate" updated="06/29/05"> <comment>Position updates</comment> <payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/> <payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/> </opcode> - <opcode id="0be3" name="OP_Report" updated="05/11/05"> + <opcode id="0375" name="OP_Report" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="4024" name="OP_GroundSpawn" updated="05/11/05"> + <opcode id="736b" name="OP_GroundSpawn" updated="06/29/05"> <comment>old MakeDropCode</comment> <payload dir="server" typename="makeDropStruct" sizechecktype="match"/> </opcode> - <opcode id="27a4" name="OP_TargetCommand" updated="05/11/05"> + <opcode id="0dfe" name="OP_TargetCommand" updated="06/29/05"> <comment>Target user</comment> </opcode> - <opcode id="7c39" name="OP_LFPGetMatchesResponse" updated="05/11/05"> + <opcode id="63fe" name="OP_LFPGetMatchesResponse" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="5bfb" name="OP_Jump" updated="05/11/05"> + <opcode id="4dbc" name="OP_Jump" updated="06/29/05"> <comment>old cJumpCode?</comment> </opcode> - <opcode id="4811" name="OP_ExpUpdate" updated="05/11/05"> + <opcode id="5ecd" name="OP_ExpUpdate" updated="06/29/05"> <comment>old ExpUpdateCode</comment> <payload dir="server" typename="expUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="1e90" name="OP_GMFind" updated="05/11/05"> - <comment>GM /find - ?</comment> + <opcode id="3c41" name="OP_FindPersonRequest" updated="06/29/05"> + <comment>Control-F Find</comment> </opcode> - <opcode id="5e81" name="OP_AAAction" updated="05/11/05"> + <opcode id="3af4" name="OP_AAAction" updated="06/29/05"> <comment>Used for changing percent, buying? and activating skills</comment> </opcode> - <opcode id="21d3" name="OP_Death" updated="05/11/05"> + <opcode id="5188" name="OP_Death" updated="06/29/05"> <comment>old NewCorpseCode</comment> <payload dir="server" typename="newCorpseStruct" sizechecktype="match"/> </opcode> - <opcode id="5641" name="OP_GMLastName" updated="05/11/05"> + <opcode id="0c81" name="OP_GMLastName" updated="06/29/05"> <comment>GM /lastname - Change user lastname</comment> </opcode> - <opcode id="0d54" name="OP_TradeSkillCombine" updated="05/11/05"> + <opcode id="0840" name="OP_TradeSkillCombine" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="2392" name="OP_InitialMobHealth" implicitlen="3" updated="05/11/05"> + <opcode id="2ecc" name="OP_InitialMobHealth" updated="06/29/05"> <comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment> </opcode> <opcode id="1fe1" name="OP_LFGResponse" updated="05/11/05"> <comment></comment> </opcode> - <opcode id="6918" name="OP_LFGGetMatchesResponse" updated="05/11/05"> + <opcode id="06c5" name="OP_LFGGetMatchesResponse" updated="06/29/05"> <comment></comment> </opcode> - <opcode id="4ec0" name="OP_Mend" updated="05/11/05"> + <opcode id="14ef" name="OP_Mend" updated="06/29/05"> <comment></comment> </opcode> <opcode id="1ffa" name="OP_MendHPUpdate" updated="05/11/05"> <comment></comment> </opcode> - <opcode id="1057" name="OP_Feedback" updated="05/11/05"> + <opcode id="224d" name="OP_Feedback" updated="06/29/05"> <comment>/feedback</comment> </opcode> - <opcode id="3e26" name="OP_TributeUpdate" updated="05/11/05"> + <opcode id="5639" name="OP_TributeUpdate" updated="06/29/05"> <comment>Tribute information</comment> </opcode> <opcode id="185c" name="OP_TributeInfo" updated="05/11/05"> <comment>Tribute information</comment> </opcode> - <opcode id="098b" name="OP_CompletedTasks" updated="05/11/05"> + <opcode id="53c4" name="OP_CompletedTasks" updated="06/29/05"> <comment>Task history for task window</comment> </opcode> - <opcode id="2b66" name="OP_CustomTitles" updated="05/11/05"> + <opcode id="2a28" name="OP_CustomTitles" updated="06/29/05"> <comment>List of available titles</comment> </opcode> - <opcode id="7138" name="OP_Stamina" updated="05/11/05"> + <opcode id="74ab" name="OP_Stamina" updated="06/29/05"> <comment>Server updating on hunger/thirst</comment> <payload dir="server" typename="staminaStruct" sizechecktype="match"/> </opcode> - <opcode id="0430" name="OP_SkillUpdate" updated="05/11/05"> + <opcode id="6a93" name="OP_SkillUpdate" updated="06/29/05"> <comment>old SkillIncCode</comment> <payload dir="server" typename="skillIncStruct" sizechecktype="match"/> </opcode> - <opcode id="5958" name="OP_SpawnRename" updated="05/11/05"> + <opcode id="3230" name="OP_SpawnRename" updated="06/29/05"> <comment>Spawns getting renamed after initial NewSpawn</comment> <payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/> </opcode> - <opcode id="0455" name="OP_LevelUpdate" updated="05/11/05"> + <opcode id="6d44" name="OP_LevelUpdate" updated="06/29/05"> <comment>old LevelUpUpdateCode</comment> <payload dir="server" typename="levelUpUpdateStruct" sizechecktype="match"/> </opcode> - <opcode id="016a" name="OP_Logout" updated="05/11/05"> + <opcode id="48c2" name="OP_Logout" updated="06/29/05"> <comment></comment> <payload dir="server" typename="none" sizechecktype="match"/> </opcode> <opcode id="5f54" name="OP_Animation" implicitlen="4" updated="05/11/05"> <comment></comment> </opcode> + <opcode id="682d" name="OP_TaskDescription" updated="06/29/05"> + <comment>Task descriptions coming down for task window</comment> + </opcode> + <opcode id="3ba8" name="OP_TaskActivity" updated="06/29/05"> + <comment>Task activity descriptions coming down for task window</comment> + </opcode> + <opcode id="0587" name="OP_SendExpZonein" updated="06/29/05"> + <comment>Both directions. Negotiating sending of exp info.</comment> + </opcode> + <opcode id="7709" name="OP_SetServerFilter" updated="06/29/05"> + <comment>Client telling server /filter information</comment> + </opcode> + <opcode id="5e51" name="OP_TGB" updated="06/29/05"> + <comment>Client telling server to set targetgroupbuff</comment> + </opcode> </seqopcodes> |
From: Chad M. <cmm...@us...> - 2005-07-02 17:23:00
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8793 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Updated for 6/29 patch: - Redid spawnStruct - Redid both ways for client update - Renamed a couple opcodes to match eqemu - Redid most of the opcodes - Added some races that were missing. - Fixed a couple things that gcc4 complained about, but no idea if it actually works Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.29 retrieving revision 1.1.2.30 diff -u -d -r1.1.2.29 -r1.1.2.30 --- ChangeLog 21 Jun 2005 18:41:20 -0000 1.1.2.29 +++ ChangeLog 2 Jul 2005 17:22:51 -0000 1.1.2.30 @@ -1,21 +1,20 @@ Version: $Id$ $Name$ -purple (06/21/05) +purple (07/02/05) --------------------- -+ Swapped heading and deltaHeading in spawnStruct (thanks Doodman) + Strip the # off names before matching to filters to aid in filter writing + Strip the # off the strong of filters as well just to make the # irrevelant to filters (thanks BlueAdept for both these) + Cleaned up the help spew for --help. There were some bogus things in there. + Cleaned up the status bar exp/aa exp display -+ Fixed positioning in playerSpawnPosUpdate. Changed deltaZ and heading - so they are correct now (thanks Doodman) + Added struct for OP_Illusion and a spawnshell handler so that illusions are propagated to the spawn list and the map + Filled in some missing races with artificial names not taken from the .exe (thanks uRit1u2CBBA=) + Added two known bugs to BUGS with descriptions and workarounds + Fixed some long zone names in zones.h and added new zones from .exe ++ Updated all opcodes for 6/29 patch (thanks Doodman, ieatacid) ++ Updated structs for 6/29 patch (spawnStruct, positioning structs mostly) purple (05/18/05) --------------------- |
From: Chad M. <cmm...@us...> - 2005-06-23 12:58:15
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16803 Modified Files: Tag: pre_5_0_beta BUGS FAQ Log Message: Moved the diatribe about packet loss from BUGS to FAQ since it's not really a bug as much as it is a misconfigured linux box. Index: FAQ =================================================================== RCS file: /cvsroot/seq/showeq/FAQ,v retrieving revision 1.1 retrieving revision 1.1.16.1 diff -u -d -r1.1 -r1.1.16.1 --- FAQ 4 Jan 2002 14:35:10 -0000 1.1 +++ FAQ 23 Jun 2005 12:58:05 -0000 1.1.16.1 @@ -1,6 +1,12 @@ -ShowEQ Version 4 Frequently Asked Questions +ShowEQ Frequently Asked Questions -FIXME: table of contents :) +1) Hit points always say 65536, 0, 100, etc, what is wrong +2) Why wont ShowEQ show me the loot my mob will drop +3) My faction is broken! It used to tell me my faction numbers when i + conned someone, now i get a number like 4 or 1. +4) What happened to experience? +5) Seq keeps crashing with "!!!! EQPacketFragmentSequence::addFragment(): + buffer overflow adding in new fragment". Why won't you fix this? 1) Hit points always say 65536, 0, 100, etc, what is wrong @@ -37,3 +43,82 @@ should draw the experience bar. We do however know what mob you killed and experience formulas, so what you see in the experience window now will be close estimates of the real exp you have. + + +5) Seq keeps crashing with "!!!! EQPacketFragmentSequence::addFragment(): + buffer overflow adding in new fragment". Why won't you fix this? + +This isn't actually a problem with seq, but rather the result of your +configuration on your linux box. Your linux box is not handling all the packets +it is receiving with its network card in promiscuous mode. + +In order to run, showeq needs the entire packet stream between the EQ client and +the EQ servers. Packets are processed in order and if any packets are dropped, +there may be problems decoding the stream causing showeq to crash or lose sync +with the session. + +Usually this condition is signalled by console messages like: +Warning: SEQ: Giving up on finding arq 0085 in stream zone-client cache, skipping! +Warning: SEQ: Giving up on finding arq 0086 in stream zone-client cache, skipping! +Warning: SEQ: Giving up on finding arq 0087 in stream zone-client cache, skipping! +Warning: SEQ: Giving up on finding arq 0088 in stream zone-client cache, skipping! + +This signifies packets being dropped and being skipped in processing, which may +cause the session stream to corrupt if the skipped packets are important. Other +messages which may result when the stream is corrupted are: + +Warning: Oversized packet fragment requested buffer of size 0 on stream 3 OpCode +0000 seq 00a6 + +Warning: !!!! EQPacketFragmentSequence::addFragment(): buffer overflow adding in +new fragment to buffer with seq 00fb on stream 3, opcode 0000. Buffer is size 3 +8302 and has been filled up to 38302, but tried to add 505 more! + +Both these messages mean that packets are being dropped that are important to +the reconstruction of oversized payloads in the session stream. These messages +may appear like showeq is broken, but in reality, the problem is that packets +are not being provided to showeq because they are being dropped by the kernel +before being made available to the application layer. + +The kernel may drop packets when under heavy loads (either CPU loads or network +loads). + +When under high CPU utilization, the thread in showeq which reads from +the kernel's receive buffers may be starved and not get enough processor time to +empty the kernel receive buffers before those buffers run out of room and drop +packets. To help this, you can set the showeq network thread to run "realtime" +by turning on the Network->Real Time Thread option. + +When under high network traffic, the kernel's receive buffers may overflow +before showeq gets a chance to empty the buffers, causing packets to be missed. +This can happen when you have a lot of network traffic that is seen by the +machine running showeq. The EQ client bursts a lot of traffic during zoning as +well, so usually problems with high network traffic show themselves during +zoning. + +To help this problem, try to narrow down the traffic that showeq watches by +specifying the ip address of your EQ client on the commandline. Also, turn on +Session Tracking using Network->Session Tracking. If problems persist after +turning those options on, you may want to adjust kernel parameters to change how +the kernel manages its receive buffers. Some parameters that may help you are: + +net.core.rmem_default (defaults to 65535, or 64k receive buffers) +net.core.rmem_max (defaults to 131071, or 128k receive buffers) +net.core.netdev_max_backlog (defaults to 300, or 300 packets can be input but + unprocessed before packets start being dropped) + +These parameters should be set with care, and take into account what other +things the linux box you are running showeq on is used for. If it has a lot of +server duties, setting rmem_default will increase system memory usage +significantly. + +Suggested settings for a normally used machine are: +net.core.rmem_default=524288 (512k for default receive buffers) +net.core.rmem_max=2097152 (2M for max receive buffers) +net.core.netdev_max_backlog=3000 (allow 3000 packets to be queued before + processing before dropping packets) + +If you still see problems, you may want to set these higher. Setting these may +be distribution specific. Check to see if you have sysctl (man sysctl) or +/etc/sysctl.conf, or these can be put directly into /proc by looking +in /proc/sys/net/core. Index: BUGS =================================================================== RCS file: /cvsroot/seq/showeq/BUGS,v retrieving revision 1.1.1.1.16.3 retrieving revision 1.1.1.1.16.4 diff -u -d -r1.1.1.1.16.3 -r1.1.1.1.16.4 --- BUGS 19 Jun 2005 16:20:55 -0000 1.1.1.1.16.3 +++ BUGS 23 Jun 2005 12:58:05 -0000 1.1.1.1.16.4 @@ -12,78 +12,3 @@ tracking might help, but there is no workaround at this time to make showeq work properly in this configuration. - -2) !!!! EQPacketFragmentSequence::addFragment(): buffer overflow adding in -new fragment - -In order to run, showeq needs the entire packet stream between the EQ client and -the EQ servers. Packets are processed in order and if any packets are dropped, -there may be problems decoding the stream causing showeq to crash or lose sync -with the session. - -Usually this condition is signalled by console messages like: -Warning: SEQ: Giving up on finding arq 0085 in stream zone-client cache, skipping! -Warning: SEQ: Giving up on finding arq 0086 in stream zone-client cache, skipping! -Warning: SEQ: Giving up on finding arq 0087 in stream zone-client cache, skipping! -Warning: SEQ: Giving up on finding arq 0088 in stream zone-client cache, skipping! - -This signifies packets being dropped and being skipped in processing, which may -cause the session stream to corrupt if the skipped packets are important. Other -messages which may result when the stream is corrupted are: - -Warning: Oversized packet fragment requested buffer of size 0 on stream 3 OpCode -0000 seq 00a6 - -Warning: !!!! EQPacketFragmentSequence::addFragment(): buffer overflow adding in -new fragment to buffer with seq 00fb on stream 3, opcode 0000. Buffer is size 3 -8302 and has been filled up to 38302, but tried to add 505 more! - -Both these messages mean that packets are being dropped that are important to -the reconstruction of oversized payloads in the session stream. These messages -may appear like showeq is broken, but in reality, the problem is that packets -are not being provided to showeq because they are being dropped by the kernel -before being made available to the application layer. - -The kernel may drop packets when under heavy loads (either CPU loads or network -loads). - -When under high CPU utilization, the thread in showeq which reads from -the kernel's receive buffers may be starved and not get enough processor time to -empty the kernel receive buffers before those buffers run out of room and drop -packets. To help this, you can set the showeq network thread to run "realtime" -by turning on the Network->Real Time Thread option. - -When under high network traffic, the kernel's receive buffers may overflow -before showeq gets a chance to empty the buffers, causing packets to be missed. -This can happen when you have a lot of network traffic that is seen by the -machine running showeq. The EQ client bursts a lot of traffic during zoning as -well, so usually problems with high network traffic show themselves during -zoning. - -To help this problem, try to narrow down the traffic that showeq watches by -specifying the ip address of your EQ client on the commandline. Also, turn on -Session Tracking using Network->Session Tracking. If problems persist after -turning those options on, you may want to adjust kernel parameters to change how -the kernel manages its receive buffers. Some parameters that may help you are: - -net.core.rmem_default (defaults to 65535, or 64k receive buffers) -net.core.rmem_max (defaults to 131071, or 128k receive buffers) -net.core.netdev_max_backlog (defaults to 300, or 300 packets can be input but - unprocessed before packets start being dropped) - -These parameters should be set with care, and take into account what other -things the linux box you are running showeq on is used for. If it has a lot of -server duties, setting rmem_default will increase system memory usage -sigificantly. - -Suggested settings for a normally used machine are: -net.core.rmem_default=524288 (512k for default receive buffers) -net.core.rmem_max=2097152 (2M for max receive buffers) -net.core.netdev_max_backlog=3000 (allow 3000 packets to be queued before - processing before dropping packets) - -If you still see problems, you may want to set these higher. Setting these may -be distribution specific. Check to see if you have sysctl (man sysctl) or -/etc/sysctl.conf, or these can be put directly into /proc by looking -in /proc/sys/net/core. - |
From: Chad M. <cmm...@us...> - 2005-06-21 18:42:28
|
Update of /cvsroot/seq/showeq In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26968 Modified Files: Tag: pre_5_0_beta ChangeLog Log Message: Forgot changelog entry for zones.h update and fixed zone id comment for apprentice. Index: ChangeLog =================================================================== RCS file: /cvsroot/seq/showeq/Attic/ChangeLog,v retrieving revision 1.1.2.28 retrieving revision 1.1.2.29 diff -u -d -r1.1.2.28 -r1.1.2.29 --- ChangeLog 19 Jun 2005 16:20:55 -0000 1.1.2.28 +++ ChangeLog 21 Jun 2005 18:41:20 -0000 1.1.2.29 @@ -1,6 +1,6 @@ Version: $Id$ $Name$ -purple (06/12/05) +purple (06/21/05) --------------------- + Swapped heading and deltaHeading in spawnStruct (thanks Doodman) + Strip the # off names before matching to filters to aid in filter writing @@ -15,6 +15,7 @@ + Filled in some missing races with artificial names not taken from the .exe (thanks uRit1u2CBBA=) + Added two known bugs to BUGS with descriptions and workarounds ++ Fixed some long zone names in zones.h and added new zones from .exe purple (05/18/05) --------------------- |