Made these commands, not sure if all of them works as they are supposed to since my client stopped workin and im unable to test some of em.
Will most likely make more commands and put em on here. Also make sure to either make new ranks, or set the ranks to the rank of your choice.
SummonAll: (Summon all players)
Code:
internal class Summonall : Command
{
public Summonall()
: base("summonall", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
foreach (var i in player.Manager.Clients.Values)
{
if (i.Player.Owner == player.Owner)
{
i.Player.Move(player.X, player.Y);
i.SendPacket(new GotoPacket
{
ObjectId = i.Player.Id,
Position = new Position(player.X, player.Y)
});
i.Player.UpdateCount++;
player.SendInfo("Players summoned!");
} else {
i.SendPacket(new ReconnectPacket
{
GameId = player.Owner.Id,
Host = "",
IsFromArena = false,
Key = player.Owner.PortalKey,
KeyTime = -1,
Name = player.Owner.Name,
Port = -1
});
player.SendInfo("Players will connect to you now!");
return true;
}
}
player.SendError("Players info could not be found!");
return false;
}
}
KillAllPlayers: (Kill all players)
Code:
internal class KillAllPlayersCommand : Command
{
public KillAllPlayersCommand()
: base("killallplayers", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
foreach (Client i in player.Manager.Clients.Values)
{
if (i.Player.Owner == player.Owner)
{
return false;
}
else
{
i.Player.HP = 0;
i.Player.Death(player.Name);
player.SendInfo("Successfully killed all players");
return true;
}
}
player.SendError("Could not find any players.");
return false;
}
}
DrinkBleach: (Kill yourself)
Code:
internal class KmsCommand : Command
{
public KmsCommand()
: base("kms", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
var DrinkBleach = player.HP;
var BleachDrinker = player;
DrinkBleach = 0;
BleachDrinker.Death(BleachDrinker.Name);
BleachDrinker.SendInfo("You drank bleach");
return true;
}
}
L: (Displays a message within 20 range)
Code:
internal class LCommand : Command
{
public LCommand()
: base("l", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (args.Length == 0)
{
player.SendHelp("Usage: /l <Text>");
return false;
}
string saytext = string.Join(" ", args);
TextPacket packet = new TextPacket
{
Name = player.Name,
Stars = player.Stars,
BubbleTime = 3,
Recipient = "",
Text = " " + saytext,
CleanText = " " + saytext
};
foreach (Player o in player.Owner.PlayersCollision.HitTest(player.X, player.Y, 20).OfType<Player>())
{
if (player.Dist(o) <= 20)
o.Client.SendPacket(packet);
}
return true;
}
}
Rank: (Ranks the player instead of using database)
Code:
internal class RankCommand : Command
{
public RankCommand() :
base("rank", 5)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (string.IsNullOrEmpty(args[0]))
{
player.SendInfo("Usage: /rank <PlayerName> <Rank>");
player.SendInfo("Current ranks: 1, 2, 3, 4, 5");
return false;
}
int MAX = int.Parse(args[1]);
if (MAX > 5)
{
player.SendError("You cannot give ranks above 5.");
return false;
}
player.Manager.Database.DoActionAsync(db =>
{
var cmd = db.CreateQuery();
var plr = player.Manager.FindPlayer(args[0]);
cmd.CommandText = "UPDATE accounts SET rank=@rank WHERE name=@name";
cmd.Parameters.AddWithValue("@rank", args[1]);
cmd.Parameters.AddWithValue("@name", args[0]);
player.SendInfo("Successfully ranked " + args[0] + " with rank " + args[1]);
player.UpdateCount++;
plr.UpdateCount++;
if (cmd.ExecuteNonQuery() == 0)
{
}
});
return true;
}
}
Rename: (Rename the player instead of using the database)
Code:
internal class RenameCommand : Command
{
public RenameCommand() :
base("rename", 5)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (string.IsNullOrEmpty(args[0]))
{
player.SendInfo("Usage: /rename <PlayerName> <Name>");
return false;
}
player.Manager.Database.DoActionAsync(db =>
{
var cmd = db.CreateQuery();
var plr = player.Manager.FindPlayer(args[0]);
cmd.CommandText = "UPDATE accounts SET name=@name WHERE name=@rename";
cmd.Parameters.AddWithValue("@name", args[1]);
cmd.Parameters.AddWithValue("@rename", args[0]);
player.SendInfo("Successfully renamed " + args[0] + " to " + args[1]);
plr.SendInfo("You have been renamed to " + args[1] + " by " + player.Name);
plr.UpdateCount++;
player.UpdateCount++;
if (cmd.ExecuteNonQuery() == 0)
{
}
});
return true;
}
}
Buy: (Takes 1 token from their account, and gives them a item, should probably be used for donators)
Code:
internal class BuyCommand : Command
{
public BuyCommand()
: base("buy", 3)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (args.Length == 0)
{
player.SendHelp("Usage: /buy <Itemname>");
player.SendHelp("Each /buy costs 1 Token.");
return false;
}
if (player.Client.Account.FortuneTokens < 1)
{
player.SendError("Not enough Tokens.");
return false;
}
string name = string.Join(" ", args.ToArray()).Trim();
ushort objType;
//creates a new case insensitive dictionary based on the XmlDatas
Dictionary<string, ushort> icdatas = new Dictionary<string, ushort>(player.Manager.GameData.IdToObjectType,
StringComparer.OrdinalIgnoreCase);
if (!icdatas.TryGetValue(name, out objType))
{
player.SendError("Unknown item!");
return false;
}
if (!player.Manager.GameData.Items[objType].Secret || player.Client.Account.Rank >= 4)
{
player.Manager.Database.DoActionAsync(db =>
{
player.Credits = db.UpdateFortuneToken(player.Client.Account, -1);
player.UpdateCount++;
});
for (int i = 4; i < player.Inventory.Length; i++)
if (player.Inventory[i] == null)
{
player.Inventory[i] = player.Manager.GameData.Items[objType];
player.UpdateCount++;
player.SaveToCharacter();
player.SendInfo("Success!");
break;
}
}
else
{
player.SendError("Item cannot be given!");
return false;
}
return true;
}
}
ForceNexus: (Forces all players on the server to nexus)
Code:
internal class ForceNexusCommand : Command
{
public ForceNexusCommand()
: base("ForceNexusCommand", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
foreach (var i in player.Manager.Clients.Values)
{
if (i.Player.Owner == player.Owner)
{
i.Player.Move(player.X, player.Y);
player.SendInfo("Successfully nexused all players!");
i.SendPacket(new ReconnectPacket
{
GameId = World.NEXUS_ID,
Host = "",
IsFromArena = false,
KeyTime = -1,
Port = -1
});
}
}
player.SendError("No players found");
return false;
}
}