@@ -482,15 +482,15 @@ impl<'a> SecondPassParser<'a> {
482482 data : Some ( Variant :: I32 ( self . tick ) ) ,
483483 name : "tick" . to_string ( ) ,
484484 } ) ;
485+ fields. extend ( self . find_non_player_props ( ) ) ;
486+ let ge = GameEvent {
487+ name : "server_cvar" . to_string ( ) ,
488+ fields : fields. clone ( ) ,
489+ tick : self . tick ,
490+ } ;
491+ self . game_events . push ( ge) ;
492+ self . game_events_counter . insert ( "server_cvar" . to_string ( ) ) ;
485493 }
486- fields. extend ( self . find_non_player_props ( ) ) ;
487- let ge = GameEvent {
488- name : "server_cvar" . to_string ( ) ,
489- fields,
490- tick : self . tick ,
491- } ;
492- self . game_events . push ( ge) ;
493- self . game_events_counter . insert ( "server_cvar" . to_string ( ) ) ;
494494 }
495495 Ok ( ( ) )
496496 }
@@ -583,23 +583,24 @@ impl<'a> SecondPassParser<'a> {
583583 } ;
584584 if let Some ( e) = player_entid {
585585 if e != PLAYER_ENTITY_HANDLE_MISSING && steamid != Some ( 0 ) && team_num != Some ( SPECTATOR_TEAM_NUM ) {
586- if self . players . iter ( ) . all ( |x| x. 1 . steamid != steamid) {
587- // println!("{:?} {:?}", steamid, self.players.iter().filter_map(|x| x.1.steamid).collect_vec());
588- match self . should_remove ( steamid) {
589- Some ( eid) => {
590- self . players . remove ( & eid) ;
591- }
592- None => { }
586+ match self . should_remove ( steamid) {
587+ Some ( eid) => {
588+ self . players . remove ( & eid) ;
593589 }
594- let p = PlayerMetaData {
595- name,
596- team_num,
597- player_entity_id : player_entid,
598- steamid,
599- controller_entid : Some ( * entity_id) ,
600- } ;
601- self . players . insert ( e, p. clone ( ) ) ;
590+ None => { }
591+ }
592+ let p = PlayerMetaData {
593+ name,
594+ team_num,
595+ player_entity_id : player_entid,
596+ steamid,
597+ controller_entid : Some ( * entity_id) ,
598+ } ;
599+ if self . players . iter ( ) . all ( |x| x. 1 . steamid != steamid) {
602600 self . create_custom_event_player_connect ( & p) ?;
601+ self . players . insert ( e, p. clone ( ) ) ;
602+ } else {
603+ self . players . insert ( e, p. clone ( ) ) ;
603604 }
604605 }
605606 }
@@ -1171,6 +1172,10 @@ impl<'a> SecondPassParser<'a> {
11711172 data : Some ( Variant :: String ( player_metadata. clone ( ) . name . unwrap_or ( "" . to_string ( ) ) ) ) ,
11721173 name : "name" . to_string ( ) ,
11731174 } ) ;
1175+ fields. push ( EventField {
1176+ data : Some ( Variant :: I32 ( player_metadata. controller_entid . unwrap_or ( 0 ) ) ) ,
1177+ name : "controller_entid" . to_string ( ) ,
1178+ } ) ;
11741179 let team= match player_metadata. team_num {
11751180 Some ( 1 ) => "spectator" ,
11761181 Some ( 2 ) => "T" ,
@@ -1420,20 +1425,26 @@ impl<'a> SecondPassParser<'a> {
14201425 _field : & Field ,
14211426 field_info : Option < FieldInfo > ,
14221427 prop_controller : & PropController ,
1423- special_ids : & SpecialIDs
1428+ special_ids : & SpecialIDs ,
1429+ is_fullpacket : bool ,
14241430 ) -> Vec < GameEventInfo > {
14251431 // Might want to start splitting this function
14261432 let mut events = vec ! [ ] ;
14271433 if let Some ( fi) = field_info {
1434+
14281435 if entity. entity_type == EntityType :: PlayerController {
14291436 if let Some ( f) = field_info{
14301437 let connect_ids = [ special_ids. teamnum , special_ids. player_name , special_ids. steamid , special_ids. player_pawn ] ;
14311438 if connect_ids. contains ( & Some ( f. prop_id ) ) {
14321439 events. push ( GameEventInfo :: PlayerConnect ( entity. entity_id ) ) ;
14331440 }
14341441 }
1442+ if fi. prop_id != 3014 {
1443+ }
1444+ }
1445+ if is_fullpacket{
1446+ return events;
14351447 }
1436-
14371448 // round end
14381449 if let Some ( id) = prop_controller. special_ids . round_end_count {
14391450 if fi. prop_id == id {
0 commit comments