• 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!

OTClient ERROR: ProtocolGame parse message exception 51 bytes otv8 tfs 1.5

bpm91

Intermediate OT User
Joined
May 23, 2019
Messages
931
Solutions
7
Reaction score
128
Location
Brazil
YouTube
caruniawikibr
ERROR: ProtocolGame parse message exception (51 bytes, 0 unread, last opcode is 0x32 (50), prev opcode is 0x32 (50)): InputMessage eof reached
Packet has been saved to packet.log, you can use it to find what was wrong. (Protocol: 772)
ERROR: protected lua call failed: /modules/spells_store/spells_store.lua:107: attempt to index global 'spellsData' (a nil value)
stack traceback:
[C]: in function '__index'
/modules/spells_store/spells_store.lua:107: in function
modules/spells_store/spells_store.lua:107: in function </modules/spells_store/spells_store.lua:104>

Hey guys, I have a magic store on the client, and this message appears to me, does anyone know how to fix this?

static constexpr int32_t NETWORKMESSAGE_MAXSIZE = 65500;
I've tried to raise the number in const.h in tfs but the server drops it.
packet.log
ProtocolGame parse message exception (51 bytes, 0 unread, last opcode is 0x32 (50), prev opcode is 0x32 (50), proto: 772): InputMessage eof reached
38 00 2f 00
32 6a 29 00 7b 22 64 61 74 61 22 3a 7b 22 67 6f 6c 64 22 3a 36 37 36 30 30 30 30 7d 2c 22 61 63 74 69 6f 6e 22 3a 22 67 6f 6c 64 22 7d
32 6a


client
line 107/104
Lua:
vocButton.onClick = function(self)
     local spellsTable = spellsStore.spellsInfo
      spellsTable:clearData()
      local data = spellsData[vocation[i].voc:lower()]
 
Last edited:
ERROR: ProtocolGame parse message exception (51 bytes, 0 unread, last opcode is 0x32 (50), prev opcode is 0x32 (50)): InputMessage eof reached
Packet has been saved to packet.log, you can use it to find what was wrong. (Protocol: 772)
ERROR: protected lua call failed: /modules/spells_store/spells_store.lua:107: attempt to index global 'spellsData' (a nil value)
stack traceback:
[C]: in function '__index'
/modules/spells_store/spells_store.lua:107: in function
modules/spells_store/spells_store.lua:107: in function </modules/spells_store/spells_store.lua:104>

Hey guys, I have a magic store on the client, and this message appears to me, does anyone know how to fix this?

static constexpr int32_t NETWORKMESSAGE_MAXSIZE = 65500;
I've tried to raise the number in const.h in tfs but the server drops it.
packet.log
ProtocolGame parse message exception (51 bytes, 0 unread, last opcode is 0x32 (50), prev opcode is 0x32 (50), proto: 772): InputMessage eof reached
38 00 2f 00
32 6a 29 00 7b 22 64 61 74 61 22 3a 7b 22 67 6f 6c 64 22 3a 36 37 36 30 30 30 30 7d 2c 22 61 63 74 69 6f 6e 22 3a 22 67 6f 6c 64 22 7d
32 6a


client
line 107/104
Lua:
vocButton.onClick = function(self)
     local spellsTable = spellsStore.spellsInfo
      spellsTable:clearData()
      local data = spellsData[vocation[i].voc:lower()]
Are you sure that problem is list of spells with over 65KB of data?
Is that spells_store module available anywhere to download? It looks like it's not compatible with server code [that sends spells data], which makes it not read all bytes from packet and pass some bytes left back to C++, which makes it report as unreadable [parse message exception].

You can't set NETWORKMESSAGE_MAXSIZE over 65500, because it's send as uint16 in packet, so it can't be higher that 65535 - some bytes are required for data integrity check etc. so don't set it higher that 65500.

If you want to see what server sent to client, you can enable cam recording in OTCv8.
Replace this line in modules/client_entergame/characterlist.lua:
Lua:
g_game.loginWorld(G.account, G.password, charInfo.worldName, charInfo.worldHost, charInfo.worldPort, charInfo.characterName, G.authenticatorToken, G.sessionKey)
with:
Lua:
g_game.loginWorld(G.account, G.password, charInfo.worldName, charInfo.worldHost, charInfo.worldPort, charInfo.characterName, G.authenticatorToken, G.sessionKey, os.time() .. '.cam')
and in main folder with OTCv8 create folder record (or records).
It should create file with all sent/received packets, when you logout character.
 
Back
Top