@@ -20,6 +20,8 @@ use csgoproto::cstrike15_usermessages::CCSUsrMsg_ServerRankUpdate;
20
20
use csgoproto:: networkbasetypes:: csvcmsg_game_event:: Key_t ;
21
21
use csgoproto:: networkbasetypes:: CNETMsg_SetConVar ;
22
22
use csgoproto:: networkbasetypes:: CSVCMsg_GameEvent ;
23
+ use csgoproto:: usermessages:: CUserMessageSayText ;
24
+ use csgoproto:: usermessages:: CUserMessageSayText2 ;
23
25
use itertools:: Itertools ;
24
26
use protobuf:: Message ;
25
27
use serde:: ser:: SerializeMap ;
@@ -855,7 +857,6 @@ impl<'a> SecondPassParser<'a> {
855
857
None
856
858
}
857
859
pub fn create_custom_event_chat_message ( & mut self , msg_bytes : & [ u8 ] ) -> Result < ( ) , DemoParserError > {
858
- use csgoproto:: usermessages:: CUserMessageSayText2 ;
859
860
self . game_events_counter . insert ( "chat_message" . to_string ( ) ) ;
860
861
if !self . wanted_events . contains ( & "chat_message" . to_string ( ) ) && self . wanted_events . first ( ) != Some ( & "all" . to_string ( ) ) {
861
862
return Ok ( ( ) ) ;
@@ -864,7 +865,6 @@ impl<'a> SecondPassParser<'a> {
864
865
Ok ( msg) => msg,
865
866
Err ( _) => return Err ( DemoParserError :: MalformedMessage ) ,
866
867
} ;
867
-
868
868
let mut fields = vec ! [ ] ;
869
869
let controller_id = chat_msg. entityindex ( ) ;
870
870
let res = self . find_user_by_controller_id ( controller_id) ;
@@ -887,6 +887,32 @@ impl<'a> SecondPassParser<'a> {
887
887
self . game_events . push ( ge) ;
888
888
Ok ( ( ) )
889
889
}
890
+ pub fn create_custom_event_server_message ( & mut self , msg_bytes : & [ u8 ] ) -> Result < ( ) , DemoParserError > {
891
+ self . game_events_counter . insert ( "server_message" . to_string ( ) ) ;
892
+ if !self . wanted_events . contains ( & "server_message" . to_string ( ) ) && self . wanted_events . first ( ) != Some ( & "all" . to_string ( ) ) {
893
+ return Ok ( ( ) ) ;
894
+ }
895
+ let chat_msg: CUserMessageSayText = match Message :: parse_from_bytes ( & msg_bytes) {
896
+ Ok ( msg) => msg,
897
+ Err ( _) => return Err ( DemoParserError :: MalformedMessage ) ,
898
+ } ;
899
+ let mut fields = vec ! [ ] ;
900
+ fields. push ( EventField {
901
+ data : Some ( Variant :: String ( chat_msg. text ( ) . to_owned ( ) ) ) ,
902
+ name : "server_message" . to_string ( ) ,
903
+ } ) ;
904
+ fields. push ( EventField {
905
+ data : Some ( Variant :: I32 ( self . tick ) ) ,
906
+ name : "tick" . to_string ( ) ,
907
+ } ) ;
908
+ let ge = GameEvent {
909
+ name : "server_message" . to_string ( ) ,
910
+ fields : fields,
911
+ tick : self . tick ,
912
+ } ;
913
+ self . game_events . push ( ge) ;
914
+ Ok ( ( ) )
915
+ }
890
916
891
917
pub fn create_custom_event_round_start ( & mut self , _events : & [ GameEventInfo ] ) -> Result < ( ) , DemoParserError > {
892
918
self . game_events_counter . insert ( "round_start" . to_string ( ) ) ;
@@ -895,7 +921,6 @@ impl<'a> SecondPassParser<'a> {
895
921
}
896
922
let mut fields = vec ! [ ] ;
897
923
fields. extend ( self . find_non_player_props ( ) ) ;
898
-
899
924
fields. push ( EventField {
900
925
data : self . find_current_round ( ) ,
901
926
name : "round" . to_string ( ) ,
@@ -910,7 +935,6 @@ impl<'a> SecondPassParser<'a> {
910
935
tick : self . tick ,
911
936
} ;
912
937
self . game_events . push ( ge) ;
913
-
914
938
Ok ( ( ) )
915
939
}
916
940
0 commit comments