forked from PGR/ascnet
Mostly working™️ character command
This commit is contained in:
parent
e69b8541af
commit
7e9fb3eefd
|
@ -0,0 +1,54 @@
|
||||||
|
using AscNet.Common.MsgPack;
|
||||||
|
using AscNet.Table.share.character;
|
||||||
|
|
||||||
|
namespace AscNet.GameServer.Commands
|
||||||
|
{
|
||||||
|
[CommandName("character")]
|
||||||
|
internal class CharacterCommand : Command
|
||||||
|
{
|
||||||
|
public CharacterCommand(Session session, string[] args, bool validate = true) : base(session, args, validate) { }
|
||||||
|
|
||||||
|
public override string Help => "Command to modify characters.";
|
||||||
|
|
||||||
|
[Argument(0, @"^add$", "The operation selected (add)")]
|
||||||
|
string Op { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[Argument(1, @"^[0-9]+$|^all$", "The target character, value is character id or 'all'")]
|
||||||
|
string Target { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public override void Execute()
|
||||||
|
{
|
||||||
|
uint id = 0;
|
||||||
|
|
||||||
|
uint.TryParse(Target, out id);
|
||||||
|
|
||||||
|
switch (Op)
|
||||||
|
{
|
||||||
|
case "add":
|
||||||
|
if (Target == "all")
|
||||||
|
{
|
||||||
|
new Thread(() =>
|
||||||
|
{
|
||||||
|
foreach (CharacterTable character in CharacterTableReader.Instance.All)
|
||||||
|
{
|
||||||
|
if (session.character.Characters.FirstOrDefault(c => c.Id == character.Id) is not null)
|
||||||
|
session.character.AddCharacter((uint)character.Id);
|
||||||
|
|
||||||
|
Thread.Sleep(100);
|
||||||
|
}
|
||||||
|
}).Start();
|
||||||
|
}
|
||||||
|
else if (id > 0)
|
||||||
|
{
|
||||||
|
if (session.character.Characters.Find(c => c.Id == id) == null)
|
||||||
|
session.character.AddCharacter(id);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw new ArgumentException("Invalid Target / ID!");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new InvalidOperationException("Invalid operation!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue