MsgTick

This message is sent from the game server to the client, and then back again from the client to the game server in a round-trip for checking network congestion. The message is responsible for the "Warning: the network is congested" message that appears in the top-left of the client screen. It's secondary purpose is for verifying that the user is not a bot (Conquer 1.0 and early Conquer 2.0).

The timestamp sent with this message is XORed with the hero ID. The check data at the end of the message is a checksum of the first two characters of the hero's name. This appears as the following in COPSv7:

static uint32_t checksum(const char* aName)
{
    if (aName == nullptr || aName[0] == '\0' || strlen(aName) < 4)
        return UINT32_C(0x9D4B5703);
    else
    {
        uint16_t val = ((uint16_t*)aName)[0];
        #if BYTE_ORDER == BIG_ENDIAN
        val = bswap16(val);
        #endif // BYTE_ORDER == BIG_ENDIAN

        return val ^ UINT16_C(0x9823);
    }
}

Table of Contents

Patch 5065

Message Definition

☑️ Assumed (Observed) - COPSv7 + Soul

PosTypeNameDescriptionExample
0UInt16MsgSizeSize of the message20
2UInt16MsgTypeType of message1012
4UInt32Hero IDUnique identifier for the character1000000
8UInt32System TimeMilliseconds of system uptime ^ Hero ID1579846705
12UInt32Message CountThe total number of messages sent12
16UInt32Check DataChecksum using first two letters of the character's name2638960387