private void onMatchDetailsReceived(IPacketGCMsg msg)
        {
            Console.Error.WriteLine("Match Details Received");
            ClientGCMsgProtobuf <CMsgGCMatchDetailsResponse> response = new ClientGCMsgProtobuf <CMsgGCMatchDetailsResponse>(msg);

            if ((EResult)response.Body.result != EResult.OK)
            {
                Console.Error.WriteLine("Unable to request match details: {0}", response.Body.result);
                return;
            }

            CMsgDOTAMatch match = response.Body.match;

            if (match.replay_state != CMsgDOTAMatch.ReplayState.REPLAY_AVAILABLE)
            {
                Console.Error.WriteLine("Replay cannot be downloaded");
                return;
            }

            uint   replayCluster = match.cluster;
            ulong  matchID       = match.match_id;
            uint   replaySalt    = match.replay_salt;
            string replayURL     = String.Format("http://replay{0}.valve.net/{1}/{2}_{3}.dem.bz2", replayCluster, DOTA_APP_ID, matchID, replaySalt);

            receivedReplayURLs.Add(replayURL);
            Console.WriteLine(replayURL);
        }
Beispiel #2
0
        public CMsgDOTAMatch getMatchDetail(ulong match_id)
        {
            var requestMatch = new ClientGCMsgProtobuf <CMsgGCMatchDetailsRequest>((uint)EDOTAGCMsg.k_EMsgGCMatchDetailsRequest);

            requestMatch.Body.match_id = match_id;
            tmpMatch = null;
            steamGameCoordinator.Send(requestMatch, APPID);
            while (tmpMatch == null)
            {
                callbackMgr.RunWaitCallbacks(TimeSpan.FromSeconds(1));
            }
            return(tmpMatch);
        }
Beispiel #3
0
        // this message arrives after we've requested the details for a match
        void OnMatchDetails(IPacketGCMsg packetMsg)
        {
            var msg = new ClientGCMsgProtobuf <CMsgGCMatchDetailsResponse>(packetMsg);

            EResult result = (EResult)msg.Body.result;

            if (result != EResult.OK)
            {
                ModernDialog.ShowMessage("无法查询比赛详情", result.ToString(), MessageBoxButton.OK);
            }

            tmpMatch = msg.Body.match;
        }
Beispiel #4
0
        void OnMatchDetails(IPacketGCMsg packetMsg)
        {
            var msg = new ClientGCMsgProtobuf <CMsgGCMatchDetailsResponse>(packetMsg);

            EResult result = (EResult)msg.Body.result;

            if (result != EResult.OK)
            {
                Console.WriteLine("Unable to request match details: {0}", result);
            }

            gotMatch = true;
            Match    = msg.Body.match;

            client.Disconnect();
        }
Beispiel #5
0
        static void PrintMatchDetails(CMsgDOTAMatch match)
        {
            if (match == null)
            {
                Console.WriteLine("No match details to display");
                return;
            }

            var fields = typeof(CMsgDOTAMatch).GetProperties(BindingFlags.Public | BindingFlags.Instance);

            foreach (var field in fields.OrderBy(f => f.Name))
            {
                var value = field.GetValue(match, null);

                Console.WriteLine("{0}: {1}", field.Name, value);
            }
        }
Beispiel #6
0
        // this message arrives after we've requested the details for a match
        void OnMatchDetails(IPacketGCMsg packetMsg)
        {
            var msg = new ClientGCMsgProtobuf <CMsgGCMatchDetailsResponse>(packetMsg);

            EResult result = (EResult)msg.Body.result;

            if (result != EResult.OK)
            {
                Console.WriteLine("Unable to request match details: {0}", result);
            }

            wait  = true;
            Match = msg.Body.match;

            // we've got everything we need, we can disconnect from steam now
            client.Disconnect();
        }
Beispiel #7
0
        static void PrintMatchDetails(CMsgDOTAMatch match)
        {
            if (match == null)
            {
                Console.WriteLine("No match details to display");
                return;
            }

            Console.Write('{');
            Console.Write("'match_id':{0},'start_time':{1}, 'duration':{2},\n", match.match_id, match.startTime, match.duration);

            Console.Write("'players':[\n");
            int i = 0;

            foreach (CMsgDOTAMatch.Player p in match.players)
            {
                Console.Write('{');

                Console.Write("'previous_rank':{0},", p.previous_rank);
                Console.Write("'rank_change':{0},", p.rank_change);
                Console.Write("'rank_change':{0},", p.rank_change);
                Console.Write("'rank_uncertainty_change':{0},", p.rank_uncertainty_change);
                Console.Write("'scaled_assists':{0},", p.scaled_assists);
                Console.Write("'scaled_deaths':{0},", p.scaled_deaths);
                Console.Write("'scaled_kills':{0},", p.scaled_kills);
                Console.Write("'scaled_metric':{0},", p.scaled_metric);
                Console.Write("'search_rank':{0},", p.search_rank);
                Console.Write("'search_rank_uncertainty':{0},", p.search_rank_uncertainty);
                Console.Write("'support_ability_value':{0},", p.support_ability_value);
                Console.Write("'support_gold':{0},", p.support_gold);
                Console.Write("'time_last_seen':{0},", p.time_last_seen);
                Console.Write("'tower_damage':{0},", p.tower_damage);
                Console.Write("'xp_per_min':{0},", p.XP_per_min);
                Console.Write("'account_id':{0},", p.account_id);
                Console.Write("'assists':{0},", p.assists);
                Console.Write("'claimed_denies':{0},", p.claimed_denies);
                Console.Write("'calimed_farm_gold':{0},", p.claimed_farm_gold);
                Console.Write("'deaths':{0},", p.deaths);
                Console.Write("'denies':{0},", p.denies);
                Console.Write("'expected_team_contribution':{0},", p.expected_team_contribution);
                String s = String.Format("'feeding_detected':{0},", p.feeding_detected);
                Console.Write(s.ToLower());
                Console.Write("'gold':{0},", p.gold);
                Console.Write("'gold_per_min':{0},", p.gold_per_min);
                Console.Write("'hero_damage':{0},", p.hero_damage);
                Console.Write("'hero_healing':{0},", p.hero_healing);
                Console.Write("'hero_id':{0},", p.hero_id);
                Console.Write("'hero_play_count':{0},", p.hero_play_count);
                Console.Write("'item_0':{0},", p.item_0);
                Console.Write("'item_1':{0},", p.item_1);
                Console.Write("'item_2':{0},", p.item_2);
                Console.Write("'item_3':{0},", p.item_3);
                Console.Write("'item_4':{0},", p.item_4);
                Console.Write("'item_5':{0},", p.item_5);
                Console.Write("'kills':{0},", p.kills);
                Console.Write("'last_hits':{0},", p.last_hits);
                Console.Write("'leaver_status':{0},", p.leaver_status);
                Console.Write("'misses':{0},", p.misses);
                Console.Write("'party_id':{0},", p.party_id);
                Console.Write("'player_name':'{0}',", p.player_name);
                Console.Write("'player_slot':{0}", p.player_slot);

                Console.Write('}');
                i++;
                if (i != match.players.Count)
                {
                    Console.Write(",");
                }
                Console.WriteLine("");
            }
            Console.Write("]}");
        }