From 46c6e664016a786cb5bfc1adcf6cb2246b6a5d56 Mon Sep 17 00:00:00 2001 From: DasIschBims Date: Thu, 17 Aug 2023 21:46:15 +0200 Subject: [PATCH] improvements --- CommandHandler.cs | 16 +++++++++++++--- Commands.cs | 22 ++++++++++++++++++++++ Enums/ActionEnum.cs | 1 + Program.cs | 17 +++++++++++++++++ 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/CommandHandler.cs b/CommandHandler.cs index 08c39a4..a1c352d 100644 --- a/CommandHandler.cs +++ b/CommandHandler.cs @@ -25,19 +25,29 @@ public class CommandHandler player.Message(message); break; } + case ActionType.Stats: + { + var playerKills = player.Kills; + var playerDeaths = player.Deaths; + var playerKd = playerDeaths == 0 ? playerKills : (double)playerKills / playerDeaths; + var formattedPlayerKd = playerKd.ToString("0.00"); + + player.Message($"Kills: {playerKills}
Deaths: {playerDeaths}
K/D: {formattedPlayerKd}"); + break; + } case ActionType.Kill: { var target = cmd.Message.Split(" ")[1..].Aggregate((a, b) => a + " " + b); var targetPlayer = player.GameServer.AllPlayers.ToList().FirstOrDefault(p => p.Name.ToLower().Contains(target.ToLower()) || p.SteamID.ToString().Contains(target)); - if (targetPlayer == null) + if (target == null) { player.Message("Player not found!"); break; } - targetPlayer.Kill(); - player.Message("Killed player!"); + targetPlayer?.Kill(); + player.Message($"Killed {targetPlayer?.Name}"); break; } case ActionType.Start: diff --git a/Commands.cs b/Commands.cs index c46256e..69f37cf 100644 --- a/Commands.cs +++ b/Commands.cs @@ -39,6 +39,28 @@ public class HelpCommand : ApiCommand }; } } + +public class StatsCommand : ApiCommand +{ + public StatsCommand() + { + CommandString = "/stats"; + HelpString = "/stats"; + Aliases = new string[] { "/s" }; + AdminOnly = false; + } + + public override Command ChatCommand(MyPlayer player, ChatChannel channel, string msg) + { + return new Command() + { + Action = ActionType.Stats, + Executor = player.Name, + Error = false, + }; + } +} + public class KillCommand : ApiCommand { public KillCommand() diff --git a/Enums/ActionEnum.cs b/Enums/ActionEnum.cs index ed7a741..b058006 100644 --- a/Enums/ActionEnum.cs +++ b/Enums/ActionEnum.cs @@ -3,6 +3,7 @@ public enum ActionType { Heal, + Stats, Kill, Kick, Ban, diff --git a/Program.cs b/Program.cs index 98b7ad6..482eb74 100644 --- a/Program.cs +++ b/Program.cs @@ -28,6 +28,7 @@ class MyGameServer : GameServer public static List ApiCommands = new() { new HelpCommand(), + new StatsCommand(), new KillCommand(), new StartCommand() }; @@ -59,6 +60,22 @@ class MyGameServer : GameServer { await Console.Out.WriteLineAsync("Disconnected: " + player); } + + public override async Task OnAPlayerDownedAnotherPlayer(OnPlayerKillArguments args) + { + if (args.Killer == args.Victim) + { + args.Victim.Kill(); + args.Victim.Deaths++; + } + else + { + args.Victim.Kill(); + args.Killer.SetHP(100); + args.Killer.Kills++; + args.Victim.Deaths++; + } + } public override async Task OnPlayerTypedMessage(MyPlayer player, ChatChannel channel, string msg) {