@@ -612,3 +612,53 @@ func (p *Parser) handleCreateStringTable(tab *msg.CSVCMsg_CreateStringTable) {
612612 p .stringTables = append (p .stringTables , tab )
613613 br .Pool ()
614614}
615+
616+ func (p * Parser ) handleUserMessage (um * msg.CSVCMsg_UserMessage ) {
617+ switch msg .ECstrike15UserMessages (um .MsgType ) {
618+ case msg .ECstrike15UserMessages_CS_UM_SayText :
619+ st := new (msg.CCSUsrMsg_SayText )
620+ err := st .Unmarshal (um .MsgData )
621+ if err != nil {
622+ panic (fmt .Sprintf ("Failed to decode SayText message: %s" , err .Error ()))
623+ }
624+
625+ p .eventDispatcher .Dispatch (events.SayTextEvent {
626+ EntityIndex : int (st .EntIdx ),
627+ IsChat : st .Chat ,
628+ IsChatAll : st .Textallchat ,
629+ Text : st .Text ,
630+ })
631+
632+ case msg .ECstrike15UserMessages_CS_UM_SayText2 :
633+ st := new (msg.CCSUsrMsg_SayText2 )
634+ err := st .Unmarshal (um .MsgData )
635+ if err != nil {
636+ panic (fmt .Sprintf ("Failed to decode SayText2 message: %s" , err .Error ()))
637+ }
638+
639+ sender := p .players [int (st .EntIdx )]
640+ p .eventDispatcher .Dispatch (events.SayText2Event {
641+ Sender : sender ,
642+ IsChat : st .Chat ,
643+ IsChatAll : st .Textallchat ,
644+ MsgName : st .MsgName ,
645+ Params : st .Params ,
646+ })
647+
648+ switch st .MsgName {
649+ case "Cstrike_Chat_All" :
650+ fallthrough
651+ case "Cstrike_Chat_AllDead" :
652+ p .eventDispatcher .Dispatch (events.ChatMessageEvent {
653+ Sender : sender ,
654+ Text : st .Params [1 ],
655+ IsChatAll : st .Textallchat ,
656+ })
657+ default :
658+ }
659+
660+ default :
661+ // TODO: handle more user messages (if they are interesting)
662+ // Maybe msg.ECstrike15UserMessages_CS_UM_RadioText
663+ }
664+ }
0 commit comments