declutter and more functions

This commit is contained in:
caesarakalaeii 2023-08-12 20:10:26 +02:00
parent 6bfd45a8b0
commit 129b76c0ca
3 changed files with 439 additions and 274 deletions

364
APICommands.cs Normal file
View File

@ -0,0 +1,364 @@
using System.Numerics;
using BattleBitAPI.Common;
namespace CommunityServerAPI;
public class APICommand
{
public string CommandPrefix = string.Empty;
public string Help = string.Empty;
public Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
return null;
}
}
public class HealCommand : APICommand
{
public new string CommandPrefix = "!heal";
public new string Help =
"'steamid' 'amount': Heals specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Heal,
Amount = int.Parse(splits[2]),
ExecutorName = "Chat Test"
};
return c;
}
}
public class KillCommand : APICommand
{
public new string CommandPrefix = "!kill";
public new string Help = "'steamid': Kills specific player";
public new static Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Kill,
Amount = 0,
ExecutorName = "Chat Test"
};
return c;
}
}
public class GrenadeCommand : APICommand
{
public new string CommandPrefix = "!grenade";
public new string Help = "'steamid': spawns live grenade on specific player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Grenade,
Amount = 0,
ExecutorName = "Chat Test"
};
return c;
}
}
public class TeleportCommand : APICommand
{
public new string CommandPrefix = "!teleport";
public new string Help = "'steamid' 'vector': tps specific player to vector location";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var vectorStr = splits[2].Split(",");
var vector = new Vector3
{
X = Convert.ToSingle(vectorStr[0]),
Y = Convert.ToSingle(vectorStr[1]),
Z = Convert.ToSingle(vectorStr[1])
};
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Teleport,
Amount = 0,
Location = vector,
ExecutorName = "Chat Test"
};
return c;
}
}
public class SpeedCommand : APICommand
{
public new string CommandPrefix = "!speed";
public new string Help =
"'steamid' 'amount': Sets speed multiplier of specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Help,
Amount = int.Parse(splits[2]),
ExecutorName = "Chat Test"
};
return c;
}
}
public class ChangeAttachmentCommand : APICommand
{
public new string CommandPrefix = "!changeAttachment";
public new string Help =
"'steamid' 'pri=Attachment' 'sec=Attachment': the attachements of specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.ChangeAttachement,
Amount = int.Parse(splits[2]),
AttachmentChange = Utility.ParseAttachments(splits),
ExecutorName = "Chat Test"
};
return c;
}
}
public class ChangeWeaponCommand : APICommand
{
public new string CommandPrefix = "!changeWeapon";
public new string Help =
"'steamid' 'pri=Weapon' 'sec=Weapon': the weapons of specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.ChangeAttachement,
Amount = int.Parse(splits[2]),
AttachmentChange = Utility.ParseAttachments(splits),
ExecutorName = "Chat Test"
};
return c;
}
}
public class ForceStartCommand : APICommand
{
public new string CommandPrefix = "!forceStart";
public new string Help =
": forces the game to start";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var c = new Command
{
Action = ActionType.Start,
ExecutorName = "Chat Test"
};
return c;
}
}
public class HelpCommand : APICommand
{
public new string CommandPrefix = "!help";
public new string Help =
": lists all commands";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var c = new Command
{
Action = ActionType.Help,
ExecutorName = "Chat Test"
};
return c;
}
}
public class RevealCommand : APICommand
{
public new string CommandPrefix = "!reveal";
public new string Help =
"'steamid': reveal information about the specified player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Reveal,
ExecutorName = "Chat Test"
};
return c;
}
}
public class ChangeDamageCommand : APICommand
{
public new string CommandPrefix = "!changeDamage";
public new string Help =
"'steamid' 'amount': change the damage of the specified player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.ChangeDamage,
Amount = int.Parse(splits[2]),
ExecutorName = "Chat Test"
};
return c;
}
}
public class ChangeReceivedDamageCommand : APICommand
{
public new string CommandPrefix = "!changeReceivedDamage";
public new string Help =
"'steamid' 'amount': change the received damage of the specified player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.ChangeReceivedDamage,
Amount = int.Parse(splits[2]),
ExecutorName = "Chat Test"
};
return c;
}
}
public class ChangeAmmoCommand : APICommand
{
public new string CommandPrefix = "!changeAmmo";
public new string Help =
"'steamid' 'amount': change the ammo of the specified player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.ChangeAmmo,
Amount = int.Parse(splits[2]),
ExecutorName = "Chat Test"
};
return c;
}
}
public class SetStreamerCommand : APICommand
{
public new string CommandPrefix = "!setStreamer";
public new string Help =
"'steamid': set the specified player as the streamer";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.SetStreamer,
ExecutorName = "Chat Test"
};
return c;
}
}
public class RemoveStreamerCommand : APICommand
{
public new string CommandPrefix = "!rmStreamer";
public new string Help =
"'steamid': remove the streamer status from the specified player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.RemoveStreamer,
ExecutorName = "Chat Test"
};
return c;
}
}
public class OpCommand : APICommand
{
public new string CommandPrefix = "!op";
public new string Help =
"'steamid': grant operator privileges to the specified player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.GrantOP,
ExecutorName = "Chat Test"
};
return c;
}
}
public class DeopCommand : APICommand
{
public new string CommandPrefix = "!deop";
public new string Help =
"'steamid': revoke operator privileges from the specified player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.RevokeOP,
ExecutorName = "Chat Test"
};
return c;
}
}

View File

@ -11,5 +11,10 @@ public enum ActionType
ChangeDamage,
ChangeReceivedDamage,
ChangeAmmo,
Help
Help,
Start,
SetStreamer,
RemoveStreamer,
GrantOP,
RevokeOP
}

View File

@ -1,5 +1,4 @@
using System.Numerics;
using System.Text.Json;
using System.Text.Json;
using BattleBitAPI;
using BattleBitAPI.Common;
using BattleBitAPI.Server;
@ -15,7 +14,7 @@ internal class Program
}
}
internal class MyPlayer : Player<MyPlayer>
public class MyPlayer : Player<MyPlayer>
{
public bool isAdmin;
public bool isStreamer;
@ -28,7 +27,18 @@ internal class MyGameServer : GameServer<MyPlayer>
new HealCommand(),
new KillCommand(),
new TeleportCommand(),
new GrenadeCommand()
new GrenadeCommand(),
new ForceStartCommand(),
new SpeedCommand(),
new HelpCommand(),
new RevealCommand(),
new ChangeDamageCommand(),
new ChangeReceivedDamageCommand(),
new ChangeAmmoCommand(),
new SetStreamerCommand(),
new RemoveStreamerCommand(),
new OpCommand(),
new DeopCommand()
};
private readonly string mAdminJson = "./config/admins.json";
@ -72,6 +82,24 @@ internal class MyGameServer : GameServer<MyPlayer>
}
}
public void SaveAdmins()
{
try
{
var newJson =
JsonSerializer.Serialize(mAdmins, new JsonSerializerOptions { WriteIndented = true });
// Write the JSON to the file, overwriting its content
File.WriteAllText(mAdminJson, newJson);
Console.WriteLine("Admins updated and saved to the file.");
}
catch (Exception ex)
{
Console.WriteLine("Admins couldn't be updated and saved to the file." + ex);
}
}
public override async Task OnConnected()
{
await Console.Out.WriteLineAsync(GameIP + " Connected");
@ -182,290 +210,58 @@ internal class MyGameServer : GameServer<MyPlayer>
}
case ActionType.ChangeAmmo:
{
//set marker on Map
player.Message($"{c.ExecutorName} has set your Ammo to {c.Amount}");
break;
}
case ActionType.Start:
{
player.Message("Forcing start");
ForceStartGame();
break;
}
case ActionType.Help:
{
foreach (var command in ChatCommands) SayToChat($"{command.CommandPrefix} {command.Help}");
break;
}
}
}
}
public class APICommand
{
public string CommandPrefix = string.Empty;
public string Help = string.Empty;
public Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
return null;
}
}
public class HealCommand : APICommand
{
public new string CommandPrefix = "!heal";
public new string Help =
"'steamid' 'amount': Heals specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Heal,
Amount = int.Parse(splits[2]),
ExecutorName = "Chat Test"
};
return c;
}
}
public class KillCommand : APICommand
{
public new string CommandPrefix = "!kill";
public new string Help = "'steamid': Kills specific player";
public new static Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Kill,
Amount = 0,
ExecutorName = "Chat Test"
};
return c;
}
}
public class GrenadeCommand : APICommand
{
public new string CommandPrefix = "!grenade";
public new string Help = "'steamid': spawns live grenade on specific player";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Grenade,
Amount = 0,
ExecutorName = "Chat Test"
};
return c;
}
}
public class TeleportCommand : APICommand
{
public new string CommandPrefix = "!teleport";
public new string Help = "'steamid' 'vector': tps specific player to vector location";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var vectorStr = splits[2].Split(",");
var vector = new Vector3
{
X = Convert.ToSingle(vectorStr[0]),
Y = Convert.ToSingle(vectorStr[1]),
Z = Convert.ToSingle(vectorStr[1])
};
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Teleport,
Amount = 0,
Location = vector,
ExecutorName = "Chat Test"
};
return c;
}
}
public class SpeedCommand : APICommand
{
public new string CommandPrefix = "!speed";
public new string Help =
"'steamid' 'amount': Sets speed multiplier of specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.Help,
Amount = int.Parse(splits[2]),
ExecutorName = "Chat Test"
};
return c;
}
}
public class ChangeAttachmentCommand : APICommand
{
public new string CommandPrefix = "!changeAttachment";
public new string Help =
"'steamid' 'pri=Attachment' 'sec=Attachment': the attachements of specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.ChangeAttachement,
Amount = int.Parse(splits[2]),
AttachmentChange = Utility.ParseAttachments(splits),
ExecutorName = "Chat Test"
};
return c;
}
}
public class ChangeWeaponCommand : APICommand
{
public new string CommandPrefix = "!changeWeapon";
public new string Help =
"'steamid' 'pri=Weapon' 'sec=Weapon': the weapons of specific player the specified amount";
public new Command ChatCommand(MyPlayer player, ChatChannel channel, string msg)
{
var splits = msg.Split(" ");
var c = new Command
{
StreamerId = Convert.ToUInt64(splits[1]),
Action = ActionType.ChangeAttachement,
Amount = int.Parse(splits[2]),
AttachmentChange = Utility.ParseAttachments(splits),
ExecutorName = "Chat Test"
};
return c;
}
}
/*
case "!changeWeapon":
{
c.Action = ActionType.ChangeWeapon;
c.Amount = 1;
c.Data = splits.Skip(0).Take(splits.Length);
c.ExecutorName = "Tester";
break;
}
case "!reveal":
{
c.Action = ActionType.Reveal;
c.Amount = 10;
c.ExecutorName = "Tester";
break;
}
case "!changeDamage":
{
c.Action = ActionType.ChangeDamage;
c.Amount = Int32.Parse(splits[1]);
c.ExecutorName = "Tester";
break;
}
case "!changeRecievedDamage":
{
c.Action = ActionType.ChangeReceivedDamage;
c.Amount = Int32.Parse(splits[1]);
c.ExecutorName = "Tester";
break;
}
case "!changeAmmo":
{
c.Action = ActionType.ChangeAmmo;
c.Amount = Int32.Parse(splits[2]);
c.ExecutorName = "Tester";
break;
}
case "!setStreamer":
{
var newId = Convert.ToUInt64(splits[1]);
player.Message($"{newId} is now a Streamer");
mListedStreamers.Add(newId);
foreach (var p in AllPlayers)
case ActionType.ChangeDamage:
{
if (p.SteamID == newId)
{
p.isStreamer = true;
}
player.SetGiveDamageMultiplier(c.Amount);
player.Message($"{c.ExecutorName} has set your Dmg Multiplier to {c.Amount}");
break;
}
SaveStreamers();
return true;
}
case "!rmStreamer":
{
var newId = Convert.ToUInt64(splits[1]);
player.Message($"{newId} is now a Streamer");
mListedStreamers.Remove(newId);
foreach (var p in AllPlayers)
case ActionType.ChangeReceivedDamage:
{
if (p.SteamID == newId)
{
p.isStreamer = false;
}
player.SetReceiveDamageMultiplier(c.Amount);
player.Message($"{c.ExecutorName} has set your recieve Dmg Multiplier to {c.Amount}");
break;
}
SaveStreamers();
return true;
}
case "!op":
{
var newId = Convert.ToUInt64(splits[1]);
player.Message($"{newId} is now an Admin");
mAdmins.Add(newId);
foreach (var p in AllPlayers)
case ActionType.SetStreamer:
{
if (p.SteamID == newId)
{
p.isAdmin = true;
break;
}
player.isStreamer = true;
SaveStreamers();
break;
}
return true;
}
case "!deop":
{
var newId = Convert.ToUInt64(splits[1]);
player.Message($"{newId} is no longer an Admin");
mAdmins.Remove(newId);
foreach (var p in AllPlayers)
case ActionType.RemoveStreamer:
{
if (p.SteamID == newId)
{
p.isAdmin = false;
break;
}
player.isStreamer = false;
SaveStreamers();
break;
}
return true;
case ActionType.GrantOP:
{
player.isAdmin = true;
SaveAdmins();
break;
}
case ActionType.RevokeOP:
{
player.isAdmin = false;
SaveAdmins();
break;
}
// Add more cases for other ActionType values as needed
}
case "!start":
{
player.Message($"Forcing start");
ForceStartGame();
return true;
}
case "!help":
{
SayToChat("Current commands:");
}
*/
}
}
}