Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using FortniteReplayReader;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Logging;
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.IO;
- using FortniteReplayReader.Models;
- using Unreal.Core.Models.Enums;
- namespace ConsoleReader
- {
- class Program
- {
- static void Main(string[] args)
- {
- var serviceCollection = new ServiceCollection()
- .AddLogging(loggingBuilder => loggingBuilder
- .AddConsole()
- .SetMinimumLevel(LogLevel.Warning));
- var provider = serviceCollection.BuildServiceProvider();
- var logger = provider.GetService<ILogger<Program>>();
- var replayFile = @"F:\GitHub\Bakanov\FortniteReplayDecompressor\src\ConsoleReader\Replays\1.replay";
- var sw = new Stopwatch();
- sw.Start();
- var reader = new ReplayReader(logger, ParseMode.Full);
- var replay = reader.ReadReplay(replayFile);
- PlayerData replayOwner = null;
- int totalEliminations = 0;
- int noBotsEliminations = 0;
- foreach (var playerData in replay.PlayerData)
- {
- if (!playerData.IsReplayOwner)
- continue;
- Console.WriteLine(
- $"[{playerData.Id} (Epic: {playerData.EpicId})]\n Name: {playerData.PlayerName} Custom override: {playerData.PlayerNameCustomOverride} Kills: {playerData.Kills} Place: {playerData.Placement}\n");
- Console.WriteLine($"Total kills {playerData.Kills}");
- replayOwner = playerData;
- }
- var ownerTeamData = replay.GetTeamByMember(replayOwner.Id.Value);
- var ownerTeamMembers = replay.GetTeamMembers(ownerTeamData);
- foreach (var teamData in replay.TeamData)
- {
- foreach (var player in teamData.PlayerIds)
- {
- if(!player.HasValue)
- continue;
- }
- }
- int eliminationId = 0;
- int totalKills = 0;
- Console.WriteLine("Eliminations:");
- foreach (var elimination in replay.Eliminations)
- {
- if (elimination == null)
- continue;
- var foundEliminator = replay.FindPlayerHeuristic(elimination.Eliminator, null);
- var foundEliminated = replay.FindPlayerHeuristic(elimination.Eliminated, null);
- Console.WriteLine(
- $"[{elimination.Time}@{eliminationId}] Player {elimination.Eliminator} killed {elimination.Eliminated}");
- Console.WriteLine(
- $"---- KillerId: ({foundEliminator?.Id ?? -1}) KilledId: ({foundEliminated?.Id ?? -1})");
- if (ownerTeamMembers.Contains(foundEliminator))
- {
- totalEliminations++;
- bool isBot = foundEliminated == null || foundEliminated.IsBot == true;
- if (!isBot)
- noBotsEliminations++;
- }
- eliminationId++;
- }
- Console.WriteLine("Kills:");
- HashSet<PlayerData> uniqueKills = new HashSet<PlayerData>();
- foreach (var killFeedEntry in replay.KillFeed)
- {
- if (killFeedEntry == null)
- continue;
- if (killFeedEntry.FinisherOrDownerIsBot)
- continue;
- if(killFeedEntry.FinisherOrDowner == null)
- continue;
- if(killFeedEntry.PlayerIsBot)
- continue;
- var killer =
- replay.FindPlayerById(killFeedEntry.FinisherOrDowner);
- var killed = replay.FindPlayerHeuristic(killFeedEntry.PlayerName, killFeedEntry.PlayerId);
- if (killed != null && ownerTeamMembers.Contains(killer))
- {
- if(killed.IsBot == true || string.IsNullOrEmpty(killed.EpicId))
- continue;
- Console.WriteLine(
- $"[Owner] Killed {killer.EpicId} -> {killed.EpicId} IsDowned {killFeedEntry.IsDowned} IsRevived {killFeedEntry.IsRevived}");
- uniqueKills.Add(killed);
- totalKills++;
- }
- }
- Console.WriteLine(
- $"Kills: {noBotsEliminations}/{totalKills}/{uniqueKills.Count}");
- sw.Stop();
- Console.WriteLine($"---- done in {(sw.ElapsedMilliseconds / 1000)} seconds ----");
- Console.ReadLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement