if you write it, you read it. simple as shit.
or, to explain to people who don't understand simple, if you follow a branch in the ssqc then you must follow an equivelent branch in the csqc such that the same datatypes are read as those that were sent.
failure to do so, for instance because you fucked around with 'bIsNewEntity' (which has jack shit to do with the actual data that was sent), will de-sync the data stream, resulting in the engine interpretting 'junk' as the next entity. you can use bIsNewEntity to set up new defaults, but its generally best to just validate against some field yourself, in case the networking fell behind and the server respawned the entity as something else. either way, you MUST read the exact data that was actually sent, in the same order. if you discard it when its not new then that's fine, or you follow a different branch that discards the results of the read builtins then sure, but the exact same order of writes must be read. I can repeat that again, but I'm bored of pointing out the basic fundamentals of how ANY byte stream works (including networking ones, feel free to google fifos if you want to waste even more time).
you can verify that this is happening with the 'sv_csqcdebug 1' setting in FTE, but DP is more limited so good luck with that.
.Version is obsolete, use .SendFlags instead.
sending strings is generally very wasteful.
here's some docs I wrote on csqc ages ago. https://sourceforge.net/p/fteqw/code/HE ... format=raw
and it looks like you would benefit from reading up on it.
Yes, I'm rude. Its called frustration.