Jump to content

Runtime Error (kStatePacket.lX >= 0 && kStatePacketlX < 204800)


Recommended Posts

Hey Guys, I'm struggling with this runtime error and was wondering if anyone ever had the same or something similar.

This is all I was able to figure out so far:

  • It almost only happens in dungeons (especially often in the Nemere dungeon), but rarely on other random default maps too
  • Most players never experience this bug at all, but the few that do experience it quite often
  • Installing the All in One Runtimes package seemed to solve this issue for a few people, but for others didn't

Already tried a few workarounds to prevent it, but nothing really worked and commenting the assert statement prevents the runtime, but still triggers the client to be stuck.
I would appreciate any kind of help or even just a wild guess might lead to the right idea.

Thanks to everyone in advance!
 

TSXXml1A.png

UserInterface\PythonNetworkStreamPhaseGame.cpp: (further code can be provided on request)

bool CPythonNetworkStream::SendCharacterStatePacket(
    const TPixelPosition& c_rkPPosDst,
    float fDstRot,
    UINT eFunc,
    UINT uArg) {
    NANOBEGIN
    if (!__CanActMainInstance())
        return true;

    if (fDstRot < 0.0f)
        fDstRot = 360 + fDstRot;
    else if (fDstRot > 360.0f)
        fDstRot = fmodf(fDstRot, 360.0f);

    TPacketCGMove kStatePacket;
    kStatePacket.bHeader = HEADER_CG_MOVE;
    kStatePacket.bFunc = eFunc;
    kStatePacket.bArg = uArg;
    kStatePacket.bRot = fDstRot / 5.0f;
    kStatePacket.lX = long(c_rkPPosDst.x);
    kStatePacket.lY = long(c_rkPPosDst.y);
    kStatePacket.dwTime = ELTimer_GetServerMSec();
	
    assert(kStatePacket.lX >= 0 && kStatePacket.lX < 204800);

    __LocalPositionToGlobalPosition(kStatePacket.lX, kStatePacket.lY);

    if (!Send(sizeof(kStatePacket), &kStatePacket)) {
        Tracenf(
            "CPythonNetworkStream::SendCharacterStatePacket(dwCmdTime=%u, "
            "fDstPos=(%f, %f), fDstRot=%f, eFunc=%d uArg=%d) - PACKET SEND "
            "ERROR",
            kStatePacket.dwTime, float(kStatePacket.lX), float(kStatePacket.lY),
            fDstRot, kStatePacket.bFunc, kStatePacket.bArg);
        return false;
    }
    NANOEND
    return true;
}


- Cavio

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

3 minutes ago, WeedHex said:
#ifdef NDEBUG
    #define assert(expression) ((void)0)
#else

...

#endif

 

It's just an assertion in debug launcher. It's telling you what's wrong. If you don't need the information, comment it.

Btw this function can be improved to avoid wrong m_strPhase.

But when commenting this line, this happens to the same players that would have experienced the runtime error before:


And regarding the "m_strPhase", what exactly do you mean by that? Haven't looked into any of that before tbh.

Thanks in advance!
- Cavio

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.