explicitly set spectator team

This commit is contained in:
Robin Appelman 2022-06-19 16:23:45 +02:00
commit 5aa5aa9e4a
2 changed files with 8 additions and 7 deletions

View file

@ -8,11 +8,9 @@ use tf_demo_parser::demo::parser::{RawPacketStream, DemoHandler, Encode};
use tf_demo_parser::demo::packet::{Packet, PacketType}; use tf_demo_parser::demo::packet::{Packet, PacketType};
use tf_demo_parser::demo::message::Message; use tf_demo_parser::demo::message::Message;
use bitbuffer::{BitWriteStream, LittleEndian, BitRead, BitWrite}; use bitbuffer::{BitWriteStream, LittleEndian, BitRead, BitWrite};
use tf_demo_parser::demo::message::packetentities::{EntityId, PacketEntitiesMessage, PacketEntity, UpdateType}; use tf_demo_parser::demo::message::packetentities::{EntityId, PacketEntity, UpdateType};
use tf_demo_parser::demo::message::usermessage::UserMessageType; use tf_demo_parser::demo::message::usermessage::UserMessageType;
use tf_demo_parser::demo::packet::datatable::ClassId; use tf_demo_parser::demo::sendprop::{SendPropIdentifier, SendPropValue};
use tf_demo_parser::demo::parser::analyser::Team;
use tf_demo_parser::demo::sendprop::{SendProp, SendPropIdentifier, SendPropValue};
use crate::mutate::{MessageMutator, MutatorList, PacketMutator}; use crate::mutate::{MessageMutator, MutatorList, PacketMutator};
extern crate web_sys; extern crate web_sys;
@ -80,7 +78,6 @@ pub fn unlock(input: &[u8]) -> Vec<u8> {
} }
}); });
mutators.push_message_mutator(AddStvEntity::new(spectator_id)); mutators.push_message_mutator(AddStvEntity::new(spectator_id));
// 1794
while let Some(mut packet) = packets.next(&handler.state_handler).unwrap() { while let Some(mut packet) = packets.next(&handler.state_handler).unwrap() {
@ -111,6 +108,8 @@ impl AddStvEntity {
} }
} }
const TEAM_PROP: SendPropIdentifier=SendPropIdentifier::new("DT_BaseEntity","m_iTeamNum");
impl MessageMutator for AddStvEntity { impl MessageMutator for AddStvEntity {
fn mutate_message(&self, message: &mut Message) { fn mutate_message(&self, message: &mut Message) {
if !self.added.get() { if !self.added.get() {
@ -121,11 +120,14 @@ impl MessageMutator for AddStvEntity {
} }
let server_class = player_entity.server_class; let server_class = player_entity.server_class;
let mut team_prop = player_entity.get_prop_by_identifier(&TEAM_PROP).unwrap().clone();
team_prop.value = SendPropValue::Integer(1);
ent_message.entities.push(PacketEntity { ent_message.entities.push(PacketEntity {
server_class, server_class,
entity_index: self.entity_index, entity_index: self.entity_index,
baseline_props: vec![], baseline_props: vec![],
props: vec![], props: vec![team_prop],
in_pvs: false, in_pvs: false,
update_type: UpdateType::Enter, update_type: UpdateType::Enter,
serial_number: 1234567, serial_number: 1234567,

View file

@ -1,5 +1,4 @@
use std::mem::take; use std::mem::take;
use tf_demo_parser::demo::message::packetentities::PacketEntity;
use tf_demo_parser::demo::message::Message; use tf_demo_parser::demo::message::Message;
use tf_demo_parser::demo::packet::Packet; use tf_demo_parser::demo::packet::Packet;