diff --git a/demboyz/netmessages/netcontants.h b/demboyz/netmessages/netcontants.h index 45df39a..0d35ee5 100644 --- a/demboyz/netmessages/netcontants.h +++ b/demboyz/netmessages/netcontants.h @@ -31,7 +31,9 @@ enum constants DELTASIZE_BITS = 20, // must be: 2^DELTASIZE_BITS > (NET_MAX_PAYLOAD * 8) EVENT_INDEX_BITS = 8, - MAX_SOUND_INDEX_BITS = 13, + + MAX_SOUND_INDEX_BITS_OLD = 13, + MAX_SOUND_INDEX_BITS = 14, MAX_USER_MSG_DATA = 255, diff --git a/demboyz/netmessages/svc_prefetch.cpp b/demboyz/netmessages/svc_prefetch.cpp index 720eb8c..68465e6 100644 --- a/demboyz/netmessages/svc_prefetch.cpp +++ b/demboyz/netmessages/svc_prefetch.cpp @@ -8,13 +8,27 @@ namespace NetHandlers bool SVC_Prefetch_BitRead_Internal(bf_read& bitbuf, SourceGameContext& context, NetMsg::SVC_Prefetch* data) { data->type = NetMsg::SVC_Prefetch::SOUND; - data->soundIndex = bitbuf.ReadUBitLong(MAX_SOUND_INDEX_BITS); + if (context.protocol > 23) + { + data->soundIndex = bitbuf.ReadUBitLong(MAX_SOUND_INDEX_BITS); + } + else + { + data->soundIndex = bitbuf.ReadUBitLong(MAX_SOUND_INDEX_BITS_OLD); + } return !bitbuf.IsOverflowed(); } bool SVC_Prefetch_BitWrite_Internal(bf_write& bitbuf, SourceGameContext& context, NetMsg::SVC_Prefetch* data) { - bitbuf.WriteUBitLong(data->soundIndex, MAX_SOUND_INDEX_BITS); + if (context.protocol > 23) + { + bitbuf.WriteUBitLong(data->soundIndex, MAX_SOUND_INDEX_BITS); + } + else + { + bitbuf.WriteUBitLong(data->soundIndex, MAX_SOUND_INDEX_BITS_OLD); + } return !bitbuf.IsOverflowed(); }