internal class GiveCommand : Command
{
public GiveCommand()
: base("give", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (args.Length == 0)
{
player.SendHelp("Usage: /give <Itemname>");
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 type!");
return false;
}
if (!player.Manager.GameData.Items[objType].Secret || player.Client.Account.Rank >= 4)
{
for (int i = 0; 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;
}
}
internal class GiveplayerCommand : Command
{
public GiveplayerCommand()
: base("giveplayer", 1)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (args.Length < 2)
{
player.SendHelp("Usage: /give <playername> <Itemname>");
return false;
}
Player p = player.Manager.FindPlayer(args[0]);
string name = string.Join(" ", args.ToArray(), 1, (args.Length - 1)).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 type!");
return false;
}
if (!player.Manager.GameData.Items[objType].Secret || player.Client.Account.Rank >= 3)
{
for (int i = 4; i < p.Inventory.Length; i++)
if (p.Inventory[i] == null)
{
p.Inventory[i] = player.Manager.GameData.Items[objType];
p.UpdateCount++;
p.SaveToCharacter();
p.SendInfo(player.Name + " sent you a " + name);
player.SendInfo("Sent " + p.Name + " a " + name + "!");
break;
}
}
else
{
player.SendError("Item cannot be given!");
return false;
}
return true;
}
}
internal class GiftCommand : Command
{
public GiftCommand()
: base("gift", permLevel: 2)
{
}
protected override bool Process(Player player, RealmTime time, string[] args)
{
if (args.Length == 1)
{
player.SendHelp("Usage: /gift <Playername> <Itemname>");
return false;
}
string name = string.Join(" ", args.Skip(1).ToArray()).Trim();
var plr = player.Manager.FindPlayer(args[0]);
ushort objType;
Dictionary<string, ushort> icdatas = new Dictionary<string, ushort>(player.Manager.GameData.IdToObjectType,
StringComparer.OrdinalIgnoreCase);
if (!icdatas.TryGetValue(name, out objType))
{
player.SendError("Item not found, perhaps a spelling error?");
return false;
}
if (!player.Manager.GameData.Items[objType].Secret || player.Client.Account.Rank >= 4)
{
for (int i = 0; i < plr.Inventory.Length; i++)
if (plr.Inventory[i] == null)
{
plr.Inventory[i] = player.Manager.GameData.Items[objType];
plr.UpdateCount++;
plr.SaveToCharacter();
player.SendInfo("Success sending " + name + " to " + plr.Name);
plr.SendInfo("You got a " + name + " from " + player.Name);
break;
}
}
else
{
player.SendError("Item failed sending to " + plr.Name + ", make sure you spelt the command right, and their name!");
return false;
}
return true;
}
}