Могу предположить, что из-за этого:
if(rpcid == 143) { new Float: num; BS_ReadValue(bs, PR_IGNORE_BITS, 8, //<- PR_FLOAT, num ); }
Где ты повторно пропускаешь 8 бит, хотя по сути это нужно лишь при самом первом чтении для пропуска ида пакета, т.к. он уже и так известен.