Improve /maxspawns and /spawnrate logic

This commit is contained in:
MarioE 2014-06-27 21:58:12 -04:00
parent 66b0f3899c
commit 5073714f43

View file

@ -395,7 +395,7 @@ namespace TShockAPI
add(new Command(Permissions.tppos, TPPos, "tppos") add(new Command(Permissions.tppos, TPPos, "tppos")
{ {
AllowServer = false, AllowServer = false,
HelpText = "Teleports you to another player or a coordinate." HelpText = "Teleports you to tile coordinates."
}); });
add(new Command(Permissions.tpallow, TPAllow, "tpallow") add(new Command(Permissions.tpallow, TPAllow, "tpallow")
{ {
@ -3075,74 +3075,54 @@ namespace TShockAPI
private static void MaxSpawns(CommandArgs args) private static void MaxSpawns(CommandArgs args)
{ {
if (args.Parameters.Count != 1) if (args.Parameters.Count == 0)
{ {
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /maxspawns <maxspawns>"); args.Player.SendInfoMessage("Current maximum spawns: {0}", TShock.Config.DefaultMaximumSpawns);
args.Player.SendErrorMessage("Proper syntax: /maxspawns show");
args.Player.SendErrorMessage("Proper syntax: /maxspawns default");
return; return;
} }
if (args.Parameters[0] == "show") if (String.Equals(args.Parameters[0], "default", StringComparison.CurrentCultureIgnoreCase))
{ {
args.Player.SendInfoMessage("Current maximum spawns is " + TShock.Config.DefaultMaximumSpawns + "."); TShock.Config.DefaultMaximumSpawns = NPC.defaultMaxSpawns = 600;
return; TSPlayer.All.SendInfoMessage("{0} changed the maximum spawns to 600.", args.Player.Name);
}
if(args.Parameters[0]=="default"){
TShock.Config.DefaultMaximumSpawns = 5;
NPC.defaultMaxSpawns = 5;
TSPlayer.All.SendInfoMessage(string.Format("{0} changed the maximum spawns to 5.", args.Player.Name));
return; return;
} }
int amount = Convert.ToInt32(args.Parameters[0]); int maxSpawns = -1;
int.TryParse(args.Parameters[0], out amount); if (!int.TryParse(args.Parameters[0], out maxSpawns) || maxSpawns < 0 || maxSpawns > Main.maxNPCs)
NPC.defaultMaxSpawns = amount; {
TShock.Config.DefaultMaximumSpawns = amount; args.Player.SendWarningMessage("Invalid maximum spawns!");
TSPlayer.All.SendInfoMessage(string.Format("{0} changed the maximum spawns to {1}.", args.Player.Name, amount)); return;
}
TShock.Config.DefaultMaximumSpawns = NPC.defaultMaxSpawns = maxSpawns;
TSPlayer.All.SendInfoMessage("{0} changed the maximum spawns to {1}.", args.Player.Name, maxSpawns);
} }
private static void SpawnRate(CommandArgs args) private static void SpawnRate(CommandArgs args)
{ {
if (args.Parameters.Count != 1) if (args.Parameters.Count == 0)
{ {
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /spawnrate <spawnrate>"); args.Player.SendInfoMessage("Current spawn rate: {0}", TShock.Config.DefaultSpawnRate);
args.Player.SendErrorMessage("/spawnrate show");
args.Player.SendErrorMessage("/spawnrate default");
return; return;
} }
if (args.Parameters[0] == "show") if (String.Equals(args.Parameters[0], "default", StringComparison.CurrentCultureIgnoreCase))
{ {
args.Player.SendInfoMessage("Current spawn rate is " + TShock.Config.DefaultSpawnRate + "."); TShock.Config.DefaultSpawnRate = NPC.defaultSpawnRate = 600;
TSPlayer.All.SendInfoMessage("{0} changed the spawn rate to 600.", args.Player.Name);
return; return;
} }
if (args.Parameters[0] == "default") int spawnRate = -1;
if (!int.TryParse(args.Parameters[0], out spawnRate) || spawnRate < 0)
{ {
TShock.Config.DefaultSpawnRate = 600; args.Player.SendWarningMessage("Invalid spawn rate!");
NPC.defaultSpawnRate = 600;
TSPlayer.All.SendInfoMessage(string.Format("{0} changed the spawn rate to 600.", args.Player.Name));
return; return;
} }
int amount = -1; TShock.Config.DefaultSpawnRate = NPC.defaultSpawnRate = spawnRate;
if (!int.TryParse(args.Parameters[0], out amount)) TSPlayer.All.SendInfoMessage("{0} changed the spawn rate to {1}.", args.Player.Name, spawnRate);
{
args.Player.SendWarningMessage(string.Format("Invalid spawnrate ({0})", args.Parameters[0]));
return;
}
if (amount < 0)
{
args.Player.SendWarningMessage("Spawnrate cannot be negative!");
return;
}
NPC.defaultSpawnRate = amount;
TShock.Config.DefaultSpawnRate = amount;
TSPlayer.All.SendInfoMessage(string.Format("{0} changed the spawn rate to {1}.", args.Player.Name, amount));
} }
#endregion Server Config Commands #endregion Server Config Commands