improvements

This commit is contained in:
DasIschBims 2023-08-17 21:46:15 +02:00
parent a2bd4a91c1
commit 46c6e66401
No known key found for this signature in database
GPG Key ID: A01C65C4183A6610
4 changed files with 53 additions and 3 deletions

View File

@ -25,19 +25,29 @@ public class CommandHandler
player.Message(message); player.Message(message);
break; 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}<br>Deaths: {playerDeaths}<br>K/D: {formattedPlayerKd}");
break;
}
case ActionType.Kill: case ActionType.Kill:
{ {
var target = cmd.Message.Split(" ")[1..].Aggregate((a, b) => a + " " + b); 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)); 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!"); player.Message("Player not found!");
break; break;
} }
targetPlayer.Kill(); targetPlayer?.Kill();
player.Message("Killed player!"); player.Message($"Killed {targetPlayer?.Name}");
break; break;
} }
case ActionType.Start: case ActionType.Start:

View File

@ -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 class KillCommand : ApiCommand
{ {
public KillCommand() public KillCommand()

View File

@ -3,6 +3,7 @@
public enum ActionType public enum ActionType
{ {
Heal, Heal,
Stats,
Kill, Kill,
Kick, Kick,
Ban, Ban,

View File

@ -28,6 +28,7 @@ class MyGameServer : GameServer<MyPlayer>
public static List<ApiCommand> ApiCommands = new() public static List<ApiCommand> ApiCommands = new()
{ {
new HelpCommand(), new HelpCommand(),
new StatsCommand(),
new KillCommand(), new KillCommand(),
new StartCommand() new StartCommand()
}; };
@ -59,6 +60,22 @@ class MyGameServer : GameServer<MyPlayer>
{ {
await Console.Out.WriteLineAsync("Disconnected: " + player); await Console.Out.WriteLineAsync("Disconnected: " + player);
} }
public override async Task OnAPlayerDownedAnotherPlayer(OnPlayerKillArguments<MyPlayer> 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<bool> OnPlayerTypedMessage(MyPlayer player, ChatChannel channel, string msg) public override async Task<bool> OnPlayerTypedMessage(MyPlayer player, ChatChannel channel, string msg)
{ {