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

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 KillCommand()

View File

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

View File

@ -28,6 +28,7 @@ class MyGameServer : GameServer<MyPlayer>
public static List<ApiCommand> ApiCommands = new()
{
new HelpCommand(),
new StatsCommand(),
new KillCommand(),
new StartCommand()
};
@ -59,6 +60,22 @@ class MyGameServer : GameServer<MyPlayer>
{
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)
{