Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
4,695
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.82 KB | None | 0 0
  1. using FortniteReplayReader;
  2. using Microsoft.Extensions.DependencyInjection;
  3. using Microsoft.Extensions.Logging;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Diagnostics;
  7. using System.IO;
  8. using FortniteReplayReader.Models;
  9. using Unreal.Core.Models.Enums;
  10.  
  11. namespace ConsoleReader
  12. {
  13.     class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             var serviceCollection = new ServiceCollection()
  18.                 .AddLogging(loggingBuilder => loggingBuilder
  19.                     .AddConsole()
  20.                     .SetMinimumLevel(LogLevel.Warning));
  21.             var provider = serviceCollection.BuildServiceProvider();
  22.             var logger = provider.GetService<ILogger<Program>>();
  23.  
  24.             var replayFile = @"F:\GitHub\Bakanov\FortniteReplayDecompressor\src\ConsoleReader\Replays\1.replay";
  25.             var sw = new Stopwatch();
  26.             sw.Start();
  27.  
  28.             var reader = new ReplayReader(logger, ParseMode.Full);
  29.             var replay = reader.ReadReplay(replayFile);
  30.  
  31.             PlayerData replayOwner = null;
  32.             int totalEliminations = 0;
  33.             int noBotsEliminations = 0;
  34.             foreach (var playerData in replay.PlayerData)
  35.             {
  36.                 if (!playerData.IsReplayOwner)
  37.                     continue;
  38.  
  39.                 Console.WriteLine(
  40.                     $"[{playerData.Id} (Epic: {playerData.EpicId})]\n Name: {playerData.PlayerName} Custom override: {playerData.PlayerNameCustomOverride} Kills: {playerData.Kills} Place: {playerData.Placement}\n");
  41.                 Console.WriteLine($"Total kills {playerData.Kills}");
  42.                 replayOwner = playerData;
  43.             }
  44.  
  45.             var ownerTeamData = replay.GetTeamByMember(replayOwner.Id.Value);
  46.             var ownerTeamMembers = replay.GetTeamMembers(ownerTeamData);
  47.            
  48.             foreach (var teamData in replay.TeamData)
  49.             {
  50.                 foreach (var player in teamData.PlayerIds)
  51.                 {
  52.                     if(!player.HasValue)
  53.                         continue;
  54.                 }
  55.             }
  56.            
  57.             int eliminationId = 0;
  58.             int totalKills = 0;
  59.             Console.WriteLine("Eliminations:");
  60.             foreach (var elimination in replay.Eliminations)
  61.             {
  62.                 if (elimination == null)
  63.                     continue;
  64.  
  65.                 var foundEliminator = replay.FindPlayerHeuristic(elimination.Eliminator, null);
  66.                 var foundEliminated = replay.FindPlayerHeuristic(elimination.Eliminated, null);
  67.                 Console.WriteLine(
  68.                     $"[{elimination.Time}@{eliminationId}] Player {elimination.Eliminator} killed {elimination.Eliminated}");
  69.                 Console.WriteLine(
  70.                     $"---- KillerId: ({foundEliminator?.Id ?? -1}) KilledId: ({foundEliminated?.Id ?? -1})");
  71.  
  72.                 if (ownerTeamMembers.Contains(foundEliminator))
  73.                 {
  74.                     totalEliminations++;
  75.  
  76.                     bool isBot = foundEliminated == null || foundEliminated.IsBot == true;
  77.                     if (!isBot)
  78.                         noBotsEliminations++;
  79.                 }
  80.  
  81.                 eliminationId++;
  82.             }
  83.  
  84.             Console.WriteLine("Kills:");
  85.             HashSet<PlayerData> uniqueKills = new HashSet<PlayerData>();
  86.             foreach (var killFeedEntry in replay.KillFeed)
  87.             {
  88.                 if (killFeedEntry == null)
  89.                     continue;
  90.  
  91.                 if (killFeedEntry.FinisherOrDownerIsBot)
  92.                     continue;
  93.  
  94.                 if(killFeedEntry.FinisherOrDowner == null)
  95.                     continue;
  96.                
  97.                 if(killFeedEntry.PlayerIsBot)
  98.                     continue;
  99.                
  100.                 var killer =
  101.                     replay.FindPlayerById(killFeedEntry.FinisherOrDowner);
  102.                
  103.                 var killed = replay.FindPlayerHeuristic(killFeedEntry.PlayerName, killFeedEntry.PlayerId);
  104.                 if (killed != null && ownerTeamMembers.Contains(killer))
  105.                 {
  106.                     if(killed.IsBot == true || string.IsNullOrEmpty(killed.EpicId))
  107.                         continue;
  108.                    
  109.                     Console.WriteLine(
  110.                         $"[Owner] Killed {killer.EpicId} -> {killed.EpicId} IsDowned {killFeedEntry.IsDowned} IsRevived {killFeedEntry.IsRevived}");
  111.  
  112.                     uniqueKills.Add(killed);
  113.                     totalKills++;
  114.                 }
  115.             }
  116.  
  117.             Console.WriteLine(
  118.                 $"Kills: {noBotsEliminations}/{totalKills}/{uniqueKills.Count}");
  119.  
  120.             sw.Stop();
  121.             Console.WriteLine($"---- done in {(sw.ElapsedMilliseconds / 1000)} seconds ----");
  122.  
  123.             Console.ReadLine();
  124.         }
  125.     }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement