• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 1.X+ TextWindow bugging after adding tooltip

Marko999x

999x HIGHExP
Premium User
Joined
Dec 14, 2017
Messages
3,547
Solutions
95
Reaction score
2,697
Location
Germany
Hey,
After adding the tooltip(Added tooltips for inventory items · OTCv8/forgottenserver@7f5b4fb (https://github.com/OTCv8/forgottenserver/commit/7f5b4fbc08711124dec86b0fcd7bfd78dd1165c4)) system into my server the textwindow is bugging and shows this error:
LUA:
ERROR: ProtocolGame parse message exception (222 bytes, 203 unread, last opcode is 0x96 (150), prev opcode is 0xffffffff (-1)): InputMessage eof reached
Packet has been saved to packet.log, you can use it to find what was wrong. (Protocol: 860
looking at the code I can not see anything wrong at all.. Maybe you do? :D
C++:
void ProtocolGame::sendTextWindow(uint32_t windowTextId, Item* item, uint16_t maxlen, bool canWrite)
{
    NetworkMessage msg;
    msg.addByte(0x96);
    msg.add<uint32_t>(windowTextId);
    msg.addItem(item, otclientV8);

    if (canWrite) {
        msg.add<uint16_t>(maxlen);
        msg.addString(item->getText());
    } else {
        const std::string& text = item->getText();
        msg.add<uint16_t>(text.size());
        msg.addString(text);
    }

    const std::string& writer = item->getWriter();
    if (!writer.empty()) {
        msg.addString(writer);
    } else {
        msg.add<uint16_t>(0x00);
    }

    time_t writtenDate = item->getDate();
    if (writtenDate != 0) {
        msg.addString(formatDateShort(writtenDate));
    } else {
        msg.add<uint16_t>(0x00);
    }

    writeToOutputBuffer(msg);
}

void ProtocolGame::sendTextWindow(uint32_t windowTextId, uint32_t itemId, const std::string& text)
{
    NetworkMessage msg;
    msg.addByte(0x96);
    msg.add<uint32_t>(windowTextId);
    msg.addItem(itemId, 1, otclientV8);
    msg.add<uint16_t>(text.size());
    msg.addString(text);
    msg.add<uint16_t>(0x00);
    msg.add<uint16_t>(0x00);
    writeToOutputBuffer(msg);
}
 
I have it like this and works fine in 772 nekiro downgrade.

LUA:
void ProtocolGame::sendTextWindow(uint32_t windowTextId, uint32_t itemId, const std::string& text)
{
    NetworkMessage msg;
    msg.addByte(0x96);
    msg.add<uint32_t>(windowTextId);
    msg.addItem(itemId, 1, otclientV8);
    msg.add<uint16_t>(text.size());
    msg.addString(text);
    //msg.add<uint16_t>(0x00);
    //msg.add<uint16_t>(0x00);
    msg.addString("");
    writeToOutputBuffer(msg);
}
 
I have it like this and works fine in 772 nekiro downgrade.

LUA:
void ProtocolGame::sendTextWindow(uint32_t windowTextId, uint32_t itemId, const std::string& text)
{
    NetworkMessage msg;
    msg.addByte(0x96);
    msg.add<uint32_t>(windowTextId);
    msg.addItem(itemId, 1, otclientV8);
    msg.add<uint16_t>(text.size());
    msg.addString(text);
    //msg.add<uint16_t>(0x00);
    //msg.add<uint16_t>(0x00);
    msg.addString("");
    writeToOutputBuffer(msg);
}

Tested but still getting errors for sendTextWindow.. :/
LUA:
ERROR: ProtocolGame parse message exception (216 bytes, 197 unread, last opcode is 0x96 (150), prev opcode is 0xffffffff (-1)): InputMessage eof reached
Packet has been saved to packet.log, you can use it to find what was wrong. (Protocol: 860)
Post automatically merged:

Discord member
kokekanon

solved it by changing

msg.addItem(item, otclientV8);
to
msg.addItem(item, false);
 
Last edited:
Back
Top