PDA

View Full Version : 5/14/09 patch



ieatacid
05-17-2009, 06:46 PM
This fixes spawns:

<opcode id="4D27" name="OP_ZoneEntry" updated="5/14/09">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>


Post about anything else that doesn't work.

I know about the guild list error. The packet is serialized now so the code needs to be changed to handle that.

rogues
05-17-2009, 07:47 PM
Changed the opcode, getting a segfault after being up for a few seconds. It looks ok when I'm in. Bard fade seems to crash it 100% of the time. Bard songs weren't causing a seg fault.

Edit: Other things crash it too: "You fail to locate any food nearby.", "You feel yourself starting to appear". Fade is crashing it due to the fact that it returns some text too. So it's not just spells, spells are just something that causes it a lot.

jice
05-18-2009, 01:37 AM
Spell: Some_bard has begun casting '468f' - Casting time is 3 Seconds
Spell: Faded: The war march fades.


Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb7256700 (LWP 2842)]
0xb7618133 in strlen () from /lib/libc.so.6
(gdb) bt
#0 0xb7618133 in strlen () from /lib/libc.so.6
#1 0xb7dbfe33 in QString::fromUtf8 () from /usr/qt/3/lib/libqt-mt.so.3
#2 0x0818abdd in EQStr::formatMessage (this=0x82ec018, formatid=15,
arguments=0xb67b4951 "\004", argsLen=4294967288) at eqstr.cpp:149
#3 0x0819e3e9 in MessageShell::formattedMessage (this=0x83487e8,
data=0xb67b4945 "\200", len=12, dir=2 '\002') at messageshell.cpp:179
#4 0x081a3b38 in MessageShell::qt_invoke (this=0x83487e8, _id=3,
_o=0xbfe6dc3c) at messageshell.moc:350
#5 0xb7ae6389 in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#6 0x080923ec in EQPacketDispatch::signal (this=0x830c9f8,
t0=0xb67b4945 "\200", t1=12, t2=2 '\002') at packetinfo.moc:99
#7 0x0808f824 in EQPacketStream::dispatchPacket (this=0x82af860,
data=0xb67b4945 "\200", len=12, opCode=4888, opcodeEntry=0x8375b80)
at packetstream.cpp:435
#8 0x08090265 in EQPacketStream::processPacket (this=0x82af860,
packet=@0xbfe6dd98, isSubpacket=true) at packetstream.cpp:713
#9 0x080903bc in EQPacketStream::processPacket (this=0x82af860,
packet=@0xbfe6ddf8, isSubpacket=true) at packetstream.cpp:801
#10 0x0808fe6e in EQPacketStream::processPacket (this=0x82af860,
packet=@0xbfe6def0, isSubpacket=false) at packetstream.cpp:653
#11 0x08091118 in EQPacketStream::handlePacket (this=0x82af860,
packet=@0xbfe6def0) at packetstream.cpp:566
#12 0x0809af0e in EQPacket::dispatchPacket (this=0x82f6158, packet=@0xbfe6def0)
at packet.cpp:659
#13 0x0809b10a in EQPacket::dispatchPacket (this=0x82f6158, size=134,
buffer=0xbfe6df8a "E") at packet.cpp:583
#14 0x0809cc69 in EQPacket::qt_invoke (this=0x82f6158, _id=2, _o=0xbfe6fff8)
at packet.cpp:400
#15 0xb7ae6389 in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#16 0xb7ae6fdd in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#17 0xb7e22aa9 in QTimer::timeout () from /usr/qt/3/lib/libqt-mt.so.3
#18 0xb7b09b4f in QTimer::event () from /usr/qt/3/lib/libqt-mt.so.3
#19 0xb7a86dc7 in QApplication::internalNotify ()
from /usr/qt/3/lib/libqt-mt.so.3
#20 0xb7a87981 in QApplication::notify () from /usr/qt/3/lib/libqt-mt.so.3
#21 0xb7a7bf3c in QEventLoop::activateTimers ()
from /usr/qt/3/lib/libqt-mt.so.3
#22 0xb7a35b6c in QEventLoop::processEvents () from /usr/qt/3/lib/libqt-mt.so.3
#23 0xb7a9d8d1 in QEventLoop::enterLoop () from /usr/qt/3/lib/libqt-mt.so.3
#24 0xb7a9d756 in QEventLoop::exec () from /usr/qt/3/lib/libqt-mt.so.3
#25 0xb7a8684f in QApplication::exec () from /usr/qt/3/lib/libqt-mt.so.3
#26 0x08069b71 in main (argc=-1232122912, argv=0xbfe70be4) at main.cpp:723
Hopefully this helps a bit.

sea4th
05-18-2009, 01:40 AM
Large number of Invalid Packets : Bad CRC netOp 3a64 with variable len

Also see 0081 and 0180 but those were often observed before the patch.

I tried replacing npcMoveUpdate 7866 with 3a64 but no improvement.

ieatacid
05-18-2009, 05:25 PM
This fixes the "Player: You have buff 48be duration left is 1408 in ticks." messages where it shows the spell ID instead of the name.


--- src/messageshell.cpp (revision 724)
+++ src/messageshell.cpp (working copy)
@@ -768,14 +768,20 @@
// m_messages->addMessage(MT_Player, message);

int buffnumber;
+ QString spellName;
+
for (buffnumber=0;buffnumber<MAX_BUFFS;buffnumber++)
{
if (player->profile.buffs[buffnumber].spellid &&
player->profile.buffs[buffnumber].duration)
{
- message.sprintf("You have buff %s duration left is %d in ticks.",
- (const char*)spell_name(player->profile.buffs[buffnumber].spellid),
- player->profile.buffs[buffnumber].duration);
+ const Spell* spell = m_spells->spell(player->profile.buffs[buffnumber].spellid);
+ if(spell)
+ spellName = spell->name();
+ else
+ spellName = spell_name(player->profile.buffs[buffnumber].spellid);
+ message.sprintf("You have buff %s duration left is %d in ticks.", spellName.latin1(),
+ player->profile.buffs[buffnumber].duration);
m_messages->addMessage(MT_Player, message);
}
}

ieatacid
05-18-2009, 05:38 PM
<opcode id="2D95" name="OP_NpcMoveUpdate" updated="05/14/09">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>

fransick
05-18-2009, 07:14 PM
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208420656 (LWP 7163)]
0x0017e473 in strlen () from /lib/libc.so.6
(gdb) bt
#0 0x0017e473 in strlen () from /lib/libc.so.6
#1 0x02e98c92 in QString::fromUtf8 () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#2 0x0818a80b in EQStr::formatMessage (this=0xb840ba8, formatid=270,
arguments=0xbfb15cbf "�\030@��\031$�J\234�Y\030�\200�GG����0.W��\226�=\f \214@�\230�\215\035J\f`&2�\232��u�\f�p\020\217��I7Po\203=\003\231��������� \022�\027b�a85�\032f�A���|��AL\220\220\026\020�0\2 102\b\003", argsLen=4294967288) at eqstr.cpp:165
#3 0x0819e8fa in MessageShell::formattedMessage (this=0x99d99d8, data=0xbfb15cb3 "[\001", len=12, dir=2 '\002') at messageshell.cpp:179
#4 0x081a4173 in MessageShell::qt_invoke (this=0x99d99d8, _id=3, _o=0xbfb1592c) at messageshell.moc:350
#5 0x02b75c4a in QObject::activate_signal () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#6 0x0809028f in EQPacketDispatch::signal (this=0x9aca378, t0=0xbfb15cb3 "[\001", t1=12, t2=2 '\002') at packetinfo.moc:99
#7 0x0808d611 in EQPacketStream::dispatchPacket (this=0x99c6c50, data=0xbfb15cb3 "[\001", len=12, opCode=4888, opcodeEntry=0x9aa8da8)
at packetstream.cpp:435
#8 0x0808e01c in EQPacketStream::processPacket (this=0x99c6c50, packet=@0xbfb15a88, isSubpacket=true) at packetstream.cpp:713
#9 0x0808e20a in EQPacketStream::processPacket (this=0x99c6c50, packet=@0xbfb15ae8, isSubpacket=true) at packetstream.cpp:801
#10 0x0808dc62 in EQPacketStream::processPacket (this=0x99c6c50, packet=@0xbfb15be0, isSubpacket=false) at packetstream.cpp:653
#11 0x0808ef9a in EQPacketStream::handlePacket (this=0x99c6c50, packet=@0xbfb15be0) at packetstream.cpp:566
#12 0x08098cbe in EQPacket::dispatchPacket (this=0x9adef70, packet=@0xbfb15be0) at packet.cpp:659
#13 0x08098ecc in EQPacket::dispatchPacket (this=0x9adef70, size=71, buffer=0xbfb15c7a "E") at packet.cpp:583
#14 0x0809aa69 in EQPacket::qt_invoke (this=0x9adef70, _id=2, _o=0xbfb17cf8) at packet.cpp:400
#15 0x02b75c4a in QObject::activate_signal () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#16 0x02b7663d in QObject::activate_signal () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#17 0x02f05d19 in QTimer::timeout () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#18 0x02b9d28f in QTimer::event () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#19 0x02b0c3db in QApplication::internalNotify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#20 0x02b0d9e1 in QApplication::notify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#21 0x02b00322 in QEventLoop::activateTimers () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#22 0x02ab3e1f in QEventLoop::processEvents () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#23 0x02b25d02 in QEventLoop::enterLoop () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#24 0x02b25bc6 in QEventLoop::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#25 0x02b0c01f in QApplication::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#26 0x08067402 in main (argc=165773176, argv=0xbfb18934) at main.cpp:723
Got the above seg fault when using sneak/hide on my rogue.

rogues
05-18-2009, 07:17 PM
Still crashing on fade, forage, etc.

Thanks for all the work!

ieatacid
05-18-2009, 10:18 PM
Try this:


<opcode id="783C" name="OP_FormattedMessage" updated="05/14/09">
<comment>old FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>

rogues
05-19-2009, 03:14 AM
That did it! I'll abuse it and see how it holds up, but for now it looks like it's perfect.

Thanks!!!!!!

rogues
05-19-2009, 04:18 AM
Ok, looks pretty good. I'm not getting despawns when a player camps out, and corpses don't go away (NPC and familiar at least).

ieatacid
05-19-2009, 04:32 AM
<opcode id="7AE3" name="OP_DeleteSpawn" updated="05/14/09">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>

rogues
05-19-2009, 04:51 AM
Bingo :)

Backspace
05-19-2009, 08:38 PM
So far these opcode changes look good. Thanks again for all your hard work.

rogues
05-19-2009, 08:39 PM
Aye, thanks again, everything looks good.

Too bad there's already another patch coming on the 21st. Hopefully they don't break things again.

sammie
05-19-2009, 09:47 PM
Too bad there's already another patch coming on the 21st. Hopefully they don't break things again.

Barring any changes, these opcodes are working fine with the patch that was released to Test Server today 5/19, so if it is pushed live in its current state, seq will still be good to go after the 21st.