That FindPlayer function returning -1 or -2 was bothering me so I did a temp fix.

This commit is contained in:
high 2011-06-14 18:57:08 -04:00
parent 7c56524a0d
commit a6f168115a
2 changed files with 94 additions and 69 deletions

View file

@ -249,7 +249,8 @@ namespace TShockAPI
if (ConfigurationManager.DisableBuild) if (ConfigurationManager.DisableBuild)
{ {
ConfigurationManager.DisableBuild = false; ConfigurationManager.DisableBuild = false;
} else }
else
{ {
ConfigurationManager.DisableBuild = true; ConfigurationManager.DisableBuild = true;
} }
@ -330,15 +331,19 @@ namespace TShockAPI
} }
string plStr = args.Parameters[0]; string plStr = args.Parameters[0];
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
{
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) }
else if (player.Count > 1)
{
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
}
else else
{ {
string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour.";
if (!Tools.Kick(player, reason)) if (!Tools.Kick(player[0], reason))
{ {
Tools.SendMessage(adminplr, "You can't kick another admin!", Color.Red); Tools.SendMessage(adminplr, "You can't kick another admin!", Color.Red);
} }
@ -361,15 +366,19 @@ namespace TShockAPI
} }
string plStr = args.Parameters[0]; string plStr = args.Parameters[0];
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
{
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) }
else if (player.Count > 1)
{
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
}
else else
{ {
string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour."; string reason = args.Parameters.Count > 1 ? String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1)) : "Misbehaviour.";
if (!Tools.Ban(player, reason)) if (!Tools.Ban(player[0], reason))
{ {
Tools.SendMessage(adminplr, "You can't ban another admin!", Color.Red); Tools.SendMessage(adminplr, "You can't ban another admin!", Color.Red);
} }
@ -625,15 +634,15 @@ namespace TShockAPI
} }
string plStr = String.Join(" ", args.Parameters); string plStr = String.Join(" ", args.Parameters);
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) else if (player.Count > 1)
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
else else
{ {
TShock.Teleport(adminplr, Main.player[player].position.X, Main.player[player].position.Y); TShock.Teleport(adminplr, Main.player[player[0]].position.X, Main.player[player[0]].position.Y);
Tools.SendMessage(adminplr, string.Format("Teleported to {0}", Tools.FindPlayer(player))); Tools.SendMessage(adminplr, string.Format("Teleported to {0}", Tools.FindPlayer(player[0])));
} }
} }
@ -648,16 +657,20 @@ namespace TShockAPI
} }
string plStr = String.Join(" ", args.Parameters); string plStr = String.Join(" ", args.Parameters);
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
{
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) }
else if (player.Count > 1)
{
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
}
else else
{ {
TShock.Teleport(player, Main.player[adminplr].position.X, Main.player[adminplr].position.Y); TShock.Teleport(player[0], Main.player[adminplr].position.X, Main.player[adminplr].position.Y);
Tools.SendMessage(player, string.Format("You were teleported to {0}.", Tools.FindPlayer(adminplr))); Tools.SendMessage(player[0], string.Format("You were teleported to {0}.", Tools.FindPlayer(adminplr)));
Tools.SendMessage(adminplr, string.Format("You brought {0} here.", Tools.FindPlayer(player))); Tools.SendMessage(adminplr, string.Format("You brought {0} here.", Tools.FindPlayer(player[0])));
} }
} }
@ -779,29 +792,34 @@ namespace TShockAPI
} }
string plStr = args.Parameters[1]; string plStr = args.Parameters[1];
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
{
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) }
else if (player.Count > 1)
{
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
}
else else
{ {
int plr = player[0];
bool flag = false; bool flag = false;
for (int i = 0; i < 40; i++) for (int i = 0; i < 40; i++)
{ {
if (!Main.player[player].inventory[i].active) if (!Main.player[plr].inventory[i].active)
{ {
//Main.player[player].inventory[i].SetDefaults(type); //Main.player[player].inventory[i].SetDefaults(type);
//Main.player[player].inventory[i].stack = Main.player[player].inventory[i].maxStack; //Main.player[player].inventory[i].stack = Main.player[player].inventory[i].maxStack;
int id = Terraria.Item.NewItem(0, 0, 0, 0, type, 1, true); int id = Terraria.Item.NewItem(0, 0, 0, 0, type, 1, true);
Main.item[id].position.X = Main.player[player].position.X; Main.item[id].position.X = Main.player[plr].position.X;
Main.item[id].position.Y = Main.player[player].position.Y; Main.item[id].position.Y = Main.player[plr].position.Y;
Main.item[id].stack = Main.item[id].maxStack; Main.item[id].stack = Main.item[id].maxStack;
//TShock.SendDataAll(21, -1, "", id); //TShock.SendDataAll(21, -1, "", id);
NetMessage.SendData(21, -1, -1, "", id, 0f, 0f, 0f); NetMessage.SendData(21, -1, -1, "", id, 0f, 0f, 0f);
Tools.SendMessage(adminplr, Tools.SendMessage(adminplr,
string.Format("Gave {0} some {1}.", Tools.FindPlayer(player), Main.item[id].name)); string.Format("Gave {0} some {1}.", Tools.FindPlayer(plr), Main.item[id].name));
Tools.SendMessage(player, Tools.SendMessage(plr,
string.Format("{0} gave you some {1}.", Tools.FindPlayer(adminplr), string.Format("{0} gave you some {1}.", Tools.FindPlayer(adminplr),
Main.item[id].name)); Main.item[id].name));
//TShock.UpdateInventories(); //TShock.UpdateInventories();
@ -821,16 +839,21 @@ namespace TShockAPI
if (args.Parameters.Count > 0) if (args.Parameters.Count > 0)
{ {
string plStr = String.Join(" ", args.Parameters); string plStr = String.Join(" ", args.Parameters);
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
{
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) }
else if (player.Count > 1)
{
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
}
else else
{ {
DropHearts((int)Main.player[player].position.X, (int)Main.player[player].position.Y, 20); int plr = player[0];
Tools.SendMessage(adminplr, string.Format("You just healed {0}", Tools.FindPlayer(player))); DropHearts((int)Main.player[plr].position.X, (int)Main.player[plr].position.Y, 20);
Tools.SendMessage(player, string.Format("{0} just healed you!", Tools.FindPlayer(adminplr))); Tools.SendMessage(adminplr, string.Format("You just healed {0}", Tools.FindPlayer(plr)));
Tools.SendMessage(plr, string.Format("{0} just healed you!", Tools.FindPlayer(adminplr)));
} }
} }
else else
@ -1007,16 +1030,21 @@ namespace TShockAPI
} }
string plStr = String.Join(" ", args.Parameters); string plStr = String.Join(" ", args.Parameters);
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
{
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) }
else if (player.Count > 1)
{
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
}
else else
{ {
Tools.SendMessage(adminplr, string.Format("You just killed {0}!", Tools.FindPlayer(player))); int plr = player[0];
Tools.SendMessage(player, string.Format("{0} just killed you!", Tools.FindPlayer(adminplr))); Tools.SendMessage(adminplr, string.Format("You just killed {0}!", Tools.FindPlayer(plr)));
TShock.PlayerDamage(player, 999999); Tools.SendMessage(plr, string.Format("{0} just killed you!", Tools.FindPlayer(adminplr)));
TShock.PlayerDamage(plr, 999999);
} }
} }
@ -1036,11 +1064,15 @@ namespace TShockAPI
} }
string plStr = args.Parameters[0]; string plStr = args.Parameters[0];
int player = Tools.FindPlayer(plStr); var player = Tools.FindPlayer(plStr);
if (player == -1) if (player.Count == 0)
{
Tools.SendMessage(adminplr, "Invalid player!", Color.Red); Tools.SendMessage(adminplr, "Invalid player!", Color.Red);
else if (player == -2) }
else if (player.Count > 1)
{
Tools.SendMessage(adminplr, "More than one player matched!", Color.Red); Tools.SendMessage(adminplr, "More than one player matched!", Color.Red);
}
else else
{ {
int damage = 5; int damage = 5;
@ -1048,9 +1080,9 @@ namespace TShockAPI
{ {
int.TryParse(args.Parameters[1], out damage); int.TryParse(args.Parameters[1], out damage);
} }
TShock.PlayerDamage(player, damage); TShock.PlayerDamage(player[0], damage);
Tools.Broadcast(string.Format("{0} slapped {1} for {2} damage.", Tools.Broadcast(string.Format("{0} slapped {1} for {2} damage.",
Tools.FindPlayer(adminplr), Tools.FindPlayer(player), damage)); Tools.FindPlayer(adminplr), Tools.FindPlayer(player[0]), damage));
} }
} }

View file

@ -176,26 +176,26 @@ namespace TShockAPI
} }
/// <summary> /// <summary>
/// Finds the name of the player of the int given ///
/// </summary> /// </summary>
/// <param name="ply">string player name</param> /// <param name="ply"></param>
/// <returns>int player</returns> /// <returns></returns>
public static int FindPlayer(string ply) public static List<int> FindPlayer(string ply)
{ {
List<int> found = new List<int>(); var found = new List<int>();
ply = ply.ToLower();
for (int i = 0; i < Main.player.Length; i++) for (int i = 0; i < Main.player.Length; i++)
{ {
if (Main.player[i].name.ToLower().Equals(ply.ToLower())) if (Main.player[i] == null)
return i; continue;
if (Main.player[i].name.ToLower().Contains(ply.ToLower()))
string name = Main.player[i].name.ToLower();
if (name.Equals(ply))
return new List<int> { i };
if (name.Contains(ply))
found.Add(i); found.Add(i);
} }
if (found.Count == 1) return found;
return found[0];
else if (found.Count > 1)
return -2;
else
return -1;
} }
/// <summary> /// <summary>
@ -205,14 +205,7 @@ namespace TShockAPI
/// <returns>string name</returns> /// <returns>string name</returns>
public static string FindPlayer(int ply) public static string FindPlayer(int ply)
{ {
for (int i = 0; i < Main.player.Length; i++) return Main.player[ply] != null ? Main.player[ply].name : null;
{
if (i == ply)
{
return Main.player[i].name;
}
}
return "null";
} }
/// <summary> /// <summary>