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)
{