From 4e5059fff53765b7829c7b30b7291734a0d0d9d1 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Thu, 2 Jun 2011 19:27:19 +0800 Subject: [PATCH 1/7] Added some error messages for commands. --- TShockAPI/Commands.cs | 47 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 0c1a62e5..145e175a 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -57,18 +57,33 @@ namespace TShockAPI int ply = args.PlayerID; if (!(Tools.FindPlayer(plStr) == -1 || plStr == "")) { - Tools.Kick(Tools.FindPlayer(plStr), "You were kicked."); - Tools.Broadcast(plStr + " was kicked by " + Tools.FindPlayer(ply)); + if (!Tools.IsAdmin(Tools.FindPlayer(plStr))) + { + Tools.Kick(Tools.FindPlayer(plStr), "You were kicked."); + Tools.Broadcast(plStr + " was kicked by " + Tools.FindPlayer(ply)); + } + else + Tools.SendMessage(ply, "You can't ban another admin!", new float[] { 255f, 0f, 0f }); } + else + Tools.SendMessage(ply, "Invalid player!", new float[] { 255f, 0f, 0f }); } public static void Ban(CommandArgs args) { string plStr = args.Message.Remove(0, 4).Trim(); + int ply = args.PlayerID; if (!(Tools.FindPlayer(plStr) == -1 || plStr == "")) { - FileTools.WriteBan(Tools.FindPlayer(plStr)); - Tools.Kick(Tools.FindPlayer(plStr), "You were banned."); + if (!Tools.IsAdmin(Tools.FindPlayer(plStr))) + { + FileTools.WriteBan(Tools.FindPlayer(plStr)); + Tools.Kick(Tools.FindPlayer(plStr), "You were banned."); + } + else + Tools.SendMessage(ply, "You can't ban another admin!", new float[] { 255f, 0f, 0f }); } + else + Tools.SendMessage(ply, "Invalid player!", new float[] { 255f, 0f, 0f }); } public static void Off(CommandArgs args) { @@ -178,6 +193,8 @@ namespace TShockAPI TShock.Teleport(ply, Main.player[Tools.FindPlayer(player)].position.X, Main.player[Tools.FindPlayer(player)].position.Y); Tools.SendMessage(ply, "Teleported to " + player); } + else + Tools.SendMessage(ply, "Invalid player!", new float[] { 255f, 0f, 0f }); } public static void TPHere(CommandArgs args) { @@ -189,6 +206,8 @@ namespace TShockAPI Tools.SendMessage(Tools.FindPlayer(player), "You were teleported to " + Tools.FindPlayer(ply) + "."); Tools.SendMessage(ply, "You brought " + player + " here."); } + else + Tools.SendMessage(ply, "Invalid player!", new float[] { 255f, 0f, 0f }); } public static void SpawnMob(CommandArgs args) { @@ -216,11 +235,14 @@ namespace TShockAPI Tools.Broadcast(string.Format("{0} was spawned {1} time(s).", Main.npc[npcid].name, amount));; } } + else + Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /spawnmob [amount]", new float[] { 255f, 0f, 0f }); } public static void Item(CommandArgs args) { var msgargs = Regex.Split(args.Message, "(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")[1]; int ply = args.PlayerID; + bool flag = false; if (msgargs.Length >= 2) { msgargs = ((msgargs.TrimEnd('"')).TrimStart('"')); @@ -237,16 +259,24 @@ namespace TShockAPI Main.player[ply].inventory[i].stack = Main.player[ply].inventory[i].maxStack; Tools.SendMessage(ply, "Got some " + Main.player[ply].inventory[i].name + "."); TShock.UpdateInventories(); + flag = true; break; } + if (!flag) + Tools.SendMessage(args.PlayerID, "You don't have free slots!", new float[] { 255f, 0f, 0f }); } } + else + Tools.SendMessage(args.PlayerID, "Invalid item type!", new float[] { 255f, 0f, 0f }); } + else + Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /item ", new float[] { 255f, 0f, 0f }); } public static void Give(CommandArgs args) { var msgargs = Regex.Split(args.Message, "(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"); int ply = args.PlayerID; + bool flag = false; if (msgargs.Length == 3) { for (int i = 1; i < msgargs.Length; i++) @@ -269,12 +299,21 @@ namespace TShockAPI Tools.SendMessage(ply, string.Format("Gave {0} some {1}.", msgargs[2], Main.player[player].inventory[i].name)); Tools.SendMessage(player, string.Format("{0} gave you some {1}.", Tools.FindPlayer(ply), Main.player[player].inventory[i].name)); TShock.UpdateInventories(); + flag = true; break; } } + if (!flag) + Tools.SendMessage(args.PlayerID, "Player does not have free slots!", new float[] { 255f, 0f, 0f }); } + else + Tools.SendMessage(args.PlayerID, "Invalid player!", new float[] { 255f, 0f, 0f }); } + else + Tools.SendMessage(args.PlayerID, "Invalid item type!", new float[] { 255f, 0f, 0f }); } + else + Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /give ", new float[] { 255f, 0f, 0f }); } public static void Heal(CommandArgs args) { From b2d25a24a56c6885cf37e1957422ad3b93183f28 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Thu, 2 Jun 2011 20:24:23 +0800 Subject: [PATCH 2/7] Added /time. Fixed multiple bugs with /heal. Oh, and the previous commit added kick/ban protection for admins. --- TShockAPI/Commands.cs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 145e175a..df739efd 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -48,6 +48,7 @@ namespace TShockAPI TShock.admincommandList.Add("butcher", new CommandDelegate(Butcher)); TShock.admincommandList.Add("maxspawns", new CommandDelegate(MaxSpawns)); TShock.admincommandList.Add("spawnrate", new CommandDelegate(SpawnRate)); + TShock.admincommandList.Add("time", new CommandDelegate(Time)); TShock.commandList.Add("help", new CommandDelegate(Help)); } #region Command Methods @@ -324,10 +325,12 @@ namespace TShockAPI int player = ply; if (msgargs.Length == 2) player = Tools.FindPlayer((msgargs[1].TrimEnd('"')).TrimStart('"')); - if (player != ply) + if (player != ply && player >= 0) { Tools.SendMessage(ply, string.Format("You just healed {0}", (msgargs[1].TrimEnd('"')).TrimStart('"'))); Tools.SendMessage(player, string.Format("{0} just healed you!", Tools.FindPlayer(ply))); + x = (int)Main.player[player].position.X; + y = (int)Main.player[player].position.Y; } else Tools.SendMessage(ply, "You just got healed!"); @@ -411,6 +414,33 @@ namespace TShockAPI Tools.SendMessage(ply, "Terraria commands:"); Tools.SendMessage(ply, "/playing, /p, /me", new float[] { 255f, 255f, 0f }); } + public static void Time(CommandArgs args) + { + var arg = args.Message.Split(' '); + if (arg.Length == 2) + { + if (arg[1] == "day") + { + Main.time = 0; + Main.dayTime = true; + NetMessage.SendData(18, -1, -1, "", 0, 0, Main.sunModY, Main.moonModY); + NetMessage.syncPlayers(); + Tools.Broadcast(Tools.FindPlayer(args.PlayerID) + " set time to day."); + } + else if (arg[1] == "night") + { + Main.time = 0; + Main.dayTime = false; + NetMessage.SendData(18, -1, -1, "", 0, 0, Main.sunModY, Main.moonModY); + NetMessage.syncPlayers(); + Tools.Broadcast(Tools.FindPlayer(args.PlayerID) + " set time to night."); + } + else + Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /time ", new float[] { 255f, 0f, 0f }); + } + else + Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /time ", new float[] { 255f, 0f, 0f }); + } #endregion } } From eea8afdcf2418ec82ecb4249b326311d24e4a194 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Thu, 2 Jun 2011 20:34:08 +0800 Subject: [PATCH 3/7] Added inventory stack check. (Not tested, but should work) --- TShockAPI/TShock.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 83a8f326..d7bc98c5 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -187,7 +187,7 @@ namespace TShockAPI if (Main.netMode != 2) { return; } int plr = who; //legacy support Tools.ShowMOTD(who); - if (Main.player[plr].statLifeMax > 400 || Main.player[plr].statManaMax > 200 || Main.player[plr].statLife > 400 || Main.player[plr].statMana > 200) + if (Main.player[plr].statLifeMax > 400 || Main.player[plr].statManaMax > 200 || Main.player[plr].statLife > 400 || Main.player[plr].statMana > 200 || CheckInventory(plr)) { Tools.HandleCheater(plr); } @@ -459,5 +459,15 @@ namespace TShockAPI } return -1; } + + public static bool CheckInventory(int plr) + { + for (int i = 0; i < 44; i++) + { + if (Main.player[plr].inventory[i].stack > Main.player[plr].inventory[i].maxStack) + return true; + } + return false; + } } } \ No newline at end of file From 00ce4ff2c412dffbc7cafa44239d9637d81c57bf Mon Sep 17 00:00:00 2001 From: Deathmax Date: Thu, 2 Jun 2011 22:46:44 +0800 Subject: [PATCH 4/7] /kill - Suicide or if admin, kill other people. --- TShockAPI/Commands.cs | 23 +++++++++++++++++ TShockAPI/TShock.cs | 60 +++++++++++++++++++++++++++++-------------- 2 files changed, 64 insertions(+), 19 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index df739efd..49adfb98 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -49,7 +49,10 @@ namespace TShockAPI TShock.admincommandList.Add("maxspawns", new CommandDelegate(MaxSpawns)); TShock.admincommandList.Add("spawnrate", new CommandDelegate(SpawnRate)); TShock.admincommandList.Add("time", new CommandDelegate(Time)); + TShock.admincommandList.Add("kill", new CommandDelegate(Kill)); + TShock.admincommandList.Add("help", new CommandDelegate(Help)); TShock.commandList.Add("help", new CommandDelegate(Help)); + TShock.commandList.Add("kill", new CommandDelegate(Kill)); } #region Command Methods public static void Kick(CommandArgs args) @@ -441,6 +444,26 @@ namespace TShockAPI else Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /time ", new float[] { 255f, 0f, 0f }); } + public static void Kill(CommandArgs args) + { + bool isadmin = Tools.IsAdmin(args.PlayerID); + var msgargs = Regex.Split(args.Message, "(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"); + if (msgargs.Length == 2 && isadmin) + { + int player = -1; + player = Tools.FindPlayer((msgargs[1].TrimEnd('"')).TrimStart('"')); + //Main.player[player].KillMe(99999, 1); + Tools.SendMessage(args.PlayerID, "You just killed " + Tools.FindPlayer(player) + "!"); + Tools.SendMessage(player, Tools.FindPlayer(args.PlayerID) + " just killed you!"); + TShock.KillMe(player); + } + else + { + //Main.player[args.PlayerID].KillMe(99999, 1); + Tools.SendMessage(args.PlayerID, "You just suicided."); + TShock.KillMe(args.PlayerID); + } + } #endregion } } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index d7bc98c5..8a42fe90 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -215,25 +215,16 @@ namespace TShockAPI if (msg.StartsWith("/")) { Commands.CommandArgs args = new Commands.CommandArgs(msg, x, y, ply); - if (msg.StartsWith("/help")) - { - commandList["help"].Invoke(args); - handler.Handled = true; - } - else if (Tools.IsAdmin(ply)) - { - Commands.CommandDelegate command; - if (admincommandList.TryGetValue(msg.Split(' ')[0].TrimStart('/'), out command)) - command.Invoke(args); - else - Tools.SendMessage(ply, "Invalid command! Try /help.", new float[] { 255f, 0f, 0f }); - handler.Handled = true; - } - else if (!Tools.IsAdmin(ply) && msg != "/help") - { - Tools.SendMessage(ply, "You don't have permissions to do that!", new float[] { 255f, 0f, 0f }); - handler.Handled = true; - } + var commands = commandList; + if (Tools.IsAdmin(ply)) + commands = admincommandList; + + Commands.CommandDelegate command; + if (commands.TryGetValue(msg.Split(' ')[0].TrimStart('/'), out command)) + command.Invoke(args); + else + Tools.SendMessage(ply, "Invalid command or no permissions! Try /help.", new float[] { 255f, 0f, 0f }); + handler.Handled = true; } } @@ -284,6 +275,7 @@ namespace TShockAPI tileThreshold[i] = 0; } } + //writestuff(); } /* @@ -422,6 +414,12 @@ namespace TShockAPI } } + public static void KillMe(int plr) + { + for (int i = 0; i < Main.player.Length; i++) + NetMessage.SendData(44, i, -1, "", plr, (float)1, (float)9999999, (float)0); + } + //TODO : Notify the player if there is more than one match. (or do we want a First() kinda thing?) public static int GetNPCID(string name, bool exact = false) { @@ -469,5 +467,29 @@ namespace TShockAPI } return false; } + + public static void writestuff() + { + NPC npc = new NPC(); + string[] npclist = new string[44]; + int h = 0; + for (int i = 1; i < 44; i++) + { + npc.SetDefaults(i); + //npclist[h++] = string.Format("{0} - {1} - {2} - {3} - {4} - {5} - {6} - {7}", i, npc.name, npc.townNPC, npc.boss, npc.noGravity, npc.lifeMax, npc.damage, npc.defense); + npclist[h++] = string.Format("{0}\t-\t{1}\t-\t{2}\t-\t{3}\t-\t{4}\t-\t{5}\t-\t{6}\t-\t{7}", i, npc.name, npc.townNPC, npc.boss, npc.noGravity, npc.lifeMax, npc.damage, npc.defense); + } + File.WriteAllLines("npclist.txt", npclist); + Item item = new Item(); + string[] itemlist = new string[236]; + h = 0; + for (int i = 1; i < 236; i++) + { + item.SetDefaults(i); + //itemlist[h++] = string.Format("{0} - {1} - {2} - {3}", i, item.name, item.maxStack, item.rare); + itemlist[h++] = string.Format("{0}\t-\t{1}\t-\t{2}\t-\t{3}", i, item.name, item.maxStack, item.rare); + } + File.WriteAllLines("itemlist.txt", itemlist); + } } } \ No newline at end of file From 098841e7e9dd99ca0373c30b2ff07fb7316179c7 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Thu, 2 Jun 2011 22:55:15 +0800 Subject: [PATCH 5/7] Fixed an issue with /item --- TShockAPI/Commands.cs | 10 ++++++---- TShockAPI/TShock.cs | 2 -- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 49adfb98..58899a22 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -51,6 +51,7 @@ namespace TShockAPI TShock.admincommandList.Add("time", new CommandDelegate(Time)); TShock.admincommandList.Add("kill", new CommandDelegate(Kill)); TShock.admincommandList.Add("help", new CommandDelegate(Help)); + TShock.admincommandList.Add("slap", new CommandDelegate(Slap)); TShock.commandList.Add("help", new CommandDelegate(Help)); TShock.commandList.Add("kill", new CommandDelegate(Kill)); } @@ -266,9 +267,9 @@ namespace TShockAPI flag = true; break; } - if (!flag) - Tools.SendMessage(args.PlayerID, "You don't have free slots!", new float[] { 255f, 0f, 0f }); } + if (!flag) + Tools.SendMessage(args.PlayerID, "You don't have free slots!", new float[] { 255f, 0f, 0f }); } else Tools.SendMessage(args.PlayerID, "Invalid item type!", new float[] { 255f, 0f, 0f }); @@ -452,18 +453,19 @@ namespace TShockAPI { int player = -1; player = Tools.FindPlayer((msgargs[1].TrimEnd('"')).TrimStart('"')); - //Main.player[player].KillMe(99999, 1); Tools.SendMessage(args.PlayerID, "You just killed " + Tools.FindPlayer(player) + "!"); Tools.SendMessage(player, Tools.FindPlayer(args.PlayerID) + " just killed you!"); TShock.KillMe(player); } else { - //Main.player[args.PlayerID].KillMe(99999, 1); Tools.SendMessage(args.PlayerID, "You just suicided."); TShock.KillMe(args.PlayerID); } } + public static void Slap(CommandArgs args) + { + } #endregion } } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 8a42fe90..6b31559b 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -210,8 +210,6 @@ namespace TShockAPI int x = (int)Main.player[ply].position.X; int y = (int)Main.player[ply].position.Y; - //if (Tools.IsAdmin(ply)) - //{ if (msg.StartsWith("/")) { Commands.CommandArgs args = new Commands.CommandArgs(msg, x, y, ply); From 17c6fa8e87fa1798a124faddfc063d83597a5dad Mon Sep 17 00:00:00 2001 From: Deathmax Date: Thu, 2 Jun 2011 23:14:23 +0800 Subject: [PATCH 6/7] Added /slap - /slap [dmg]. ^ Seems buggy ATM, only smacks you in one direction and seems to ignore tile collision. --- TShockAPI/Commands.cs | 31 +++++++++++++++++++++++++++++++ TShockAPI/TShock.cs | 31 ++++++------------------------- 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 58899a22..89e7a405 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -465,6 +465,37 @@ namespace TShockAPI } public static void Slap(CommandArgs args) { + var msgargs = Regex.Split(args.Message, "(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*) (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"); + for (int i = 0; i < msgargs.Length; i++) + msgargs[i] = (msgargs[i].TrimStart('"')).TrimEnd('"'); + if (msgargs.Length == 1) + Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /slap [dmg]", new float[] { 255f, 0f, 0f }); + else if (msgargs.Length == 2) + { + int player = Tools.FindPlayer(msgargs[1]); + if (player == -1) + Tools.SendMessage(args.PlayerID, "Invalid player!", new float[] { 255f, 0f, 0f }); + else + { + TShock.SendDataAll(26, -1, "", player, (float)((new Random()).Next(1, 20)), (float)5, (float)0); + Tools.Broadcast(Tools.FindPlayer(args.PlayerID) + " slapped " + Tools.FindPlayer(player) + " for 5 damage."); + } + } + else if (msgargs.Length == 3) + { + int player = Tools.FindPlayer(msgargs[1]); + int damage = 5; + int.TryParse(msgargs[2], out damage); + if (player == -1) + Tools.SendMessage(args.PlayerID, "Invalid player!", new float[] { 255f, 0f, 0f }); + else + { + TShock.SendDataAll(26, -1, "", player, (float)((new Random()).Next(1, 40)), (float)damage, (float)0); + Tools.Broadcast(Tools.FindPlayer(args.PlayerID) + " slapped " + Tools.FindPlayer(player) + " for " + damage.ToString() + " damage."); + } + } + else + Tools.SendMessage(args.PlayerID, "Invalid syntax! Proper syntax: /slap [dmg]", new float[] { 255f, 0f, 0f }); } #endregion } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 6b31559b..ad03e9b7 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -273,7 +273,6 @@ namespace TShockAPI tileThreshold[i] = 0; } } - //writestuff(); } /* @@ -418,6 +417,12 @@ namespace TShockAPI NetMessage.SendData(44, i, -1, "", plr, (float)1, (float)9999999, (float)0); } + public static void SendDataAll(int type, int ignore = -1, string text = "", int num = 0, float f1 = 0f, float f2 = 0f, float f3 = 0f) + { + for (int i = 0; i < Main.player.Length; i++) + NetMessage.SendData(type, i, ignore, text, num, f1, f2, f3); + } + //TODO : Notify the player if there is more than one match. (or do we want a First() kinda thing?) public static int GetNPCID(string name, bool exact = false) { @@ -465,29 +470,5 @@ namespace TShockAPI } return false; } - - public static void writestuff() - { - NPC npc = new NPC(); - string[] npclist = new string[44]; - int h = 0; - for (int i = 1; i < 44; i++) - { - npc.SetDefaults(i); - //npclist[h++] = string.Format("{0} - {1} - {2} - {3} - {4} - {5} - {6} - {7}", i, npc.name, npc.townNPC, npc.boss, npc.noGravity, npc.lifeMax, npc.damage, npc.defense); - npclist[h++] = string.Format("{0}\t-\t{1}\t-\t{2}\t-\t{3}\t-\t{4}\t-\t{5}\t-\t{6}\t-\t{7}", i, npc.name, npc.townNPC, npc.boss, npc.noGravity, npc.lifeMax, npc.damage, npc.defense); - } - File.WriteAllLines("npclist.txt", npclist); - Item item = new Item(); - string[] itemlist = new string[236]; - h = 0; - for (int i = 1; i < 236; i++) - { - item.SetDefaults(i); - //itemlist[h++] = string.Format("{0} - {1} - {2} - {3}", i, item.name, item.maxStack, item.rare); - itemlist[h++] = string.Format("{0}\t-\t{1}\t-\t{2}\t-\t{3}", i, item.name, item.maxStack, item.rare); - } - File.WriteAllLines("itemlist.txt", itemlist); - } } } \ No newline at end of file From 49561497bd92490206844d7a25dc7ab21749f439 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Thu, 2 Jun 2011 23:43:25 +0800 Subject: [PATCH 7/7] Fixed /slap (now it goes both directions, but very small knockback) Fixed issues with /spawnrate and /maxspawns where if the input string does not convert, it throws an exception. --- TShockAPI/Commands.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 89e7a405..52cd9c3c 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -365,14 +365,16 @@ namespace TShockAPI public static void MaxSpawns(CommandArgs args) { int ply = args.PlayerID; - int amount = Convert.ToInt32(args.Message.Remove(0, 10)); + int amount = 4;//Convert.ToInt32(args.Message.Remove(0, 10)); + int.TryParse(args.Message.Remove(0, 10), out amount); NPC.maxSpawns = amount; Tools.Broadcast(Tools.FindPlayer(ply) + " changed the maximum spawns to: " + amount); } public static void SpawnRate(CommandArgs args) { int ply = args.PlayerID; - int amount = Convert.ToInt32(args.Message.Remove(0, 10)); + int amount = 700;//Convert.ToInt32(args.Message.Remove(0, 10)); + int.TryParse(args.Message.Remove(0, 10), out amount); NPC.spawnRate = amount; Tools.Broadcast(Tools.FindPlayer(ply) + " changed the spawn rate to: " + amount); } @@ -490,7 +492,7 @@ namespace TShockAPI Tools.SendMessage(args.PlayerID, "Invalid player!", new float[] { 255f, 0f, 0f }); else { - TShock.SendDataAll(26, -1, "", player, (float)((new Random()).Next(1, 40)), (float)damage, (float)0); + TShock.SendDataAll(26, -1, "", player, (float)((new Random()).Next(-1, 1)), (float)damage, (float)0); Tools.Broadcast(Tools.FindPlayer(args.PlayerID) + " slapped " + Tools.FindPlayer(player) + " for " + damage.ToString() + " damage."); } }