From 9a0956e8f2b05cccf0bbc71da71fa2c7930e2724 Mon Sep 17 00:00:00 2001 From: Jordan Cristiano Date: Fri, 15 May 2015 01:24:24 -0400 Subject: [PATCH] Fixed svc_prefetch parsing --- demboyz/netmessages/netcontants.h | 4 +++- demboyz/netmessages/svc_prefetch.cpp | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) 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(); }