func (p *Parser) onGameEvent(tick int, obj *dota.CSVCMsg_GameEvent) { desc := p.GameEventMap[obj.GetEventid()] dName := desc.GetName() switch dName { case "hltv_versioninfo": // version : <*>type:5 val_byte:1 case "hltv_message": // text : <*>type:1 val_string:"Please wait for broadcast to start ..." case "hltv_status": // clients : <*>type:3 val_long:523 // slots : <*>type:3 val_long:3840 // proxies : <*>type:4 val_short:59 // master : <*>type:1 val_string:"146.66.152.49:28027" case "dota_combatlog": if p.OnCombatLog != nil { if log := p.combatLogParser.parse(obj); log != nil { p.OnCombatLog(log) } } case "dota_chase_hero": // target1 : <*>type:4 val_short:1418 // target2 : <*>type:4 val_short:0 // type : <*>type:5 val_byte:0 // priority : <*>type:4 val_short:15 // gametime : <*>type:2 val_float:2710.3667 // highlight : <*>type:6 val_bool:false // target1playerid : <*>type:5 val_byte:1 // target2playerid : <*>type:5 val_byte:32 // eventtype : <*>type:4 val_short:1 case "dota_tournament_item_event": // event_type : <*>type:4 val_short:0 => witness first blood // event_type : <*>type:4 val_short:1 => witness killing spree // event_type : <*>type:4 val_short:3 => witness hero deny default: dKeys := desc.GetKeys() spew.Println(dName) for n, key := range obj.GetKeys() { spew.Println(dKeys[n].GetName(), ":", key) } } }