No longer need to always add 'setup' in /eco.

This commit is contained in:
UnknownShadow200 2016-03-26 08:29:05 +11:00
parent 734ddd5088
commit be4a50e0be
4 changed files with 244 additions and 247 deletions

View File

@ -35,14 +35,10 @@ namespace MCGalaxy.Commands {
public override void Use(Player p, string message) {
string[] raw = message.Split(' ');
string[] args = { "", "", "", "", "", "", "", "", "" };
for (int i = 0; i < raw.Length; i++)
args[i] = i < 2 ? raw[i].ToLower() : raw[i];
if (args[0] == "setup")
HandleSetup(p, message, args);
else
Help(p);
string[] args = { "", "", "", "", "", "", "", "" };
for (int i = 0; i < Math.Min(args.Length, raw.Length); i++)
args[i] = raw[i];
HandleSetup(p, message, args);
}
void HandleSetup(Player p, string message, string[] args) {
@ -50,7 +46,7 @@ namespace MCGalaxy.Commands {
Player.SendMessage(p, "%cYou are not allowed to use %f/eco setup"); return;
}
switch (args[1]) {
switch (args[0].ToLower()) {
case "apply":
Economy.Load();
Player.SendMessage(p, "%aApplied changes");
@ -58,11 +54,13 @@ namespace MCGalaxy.Commands {
case "enable":
Player.SendMessage(p, "%aThe economy system is now enabled");
Economy.Enabled = true; return;
Economy.Enabled = true;
Economy.Save(); return;
case "disable":
Player.SendMessage(p, "%aThe economy system is now disabled");
Economy.Enabled = false; return;
Economy.Enabled = false;
Economy.Save();return;
case "help":
SetupHelp(p); return;
@ -71,7 +69,7 @@ namespace MCGalaxy.Commands {
foreach (Item item in Economy.Items)
foreach (string alias in item.Aliases)
{
if (args[1].CaselessEq(alias)) {
if (args[0].CaselessEq(alias)) {
item.OnSetupCommand(p, args);
Economy.Save(); return;
}
@ -81,28 +79,27 @@ namespace MCGalaxy.Commands {
Player.SendMessage(p, "%cThat wasn't a valid command addition!");
return;
}
Economy.Save();
}
public override void Help(Player p) {
Player.SendMessage(p, "%cMost commands have been removed from /economy, " +
"use the appropriate command from %T/help economy %cinstead.");
if ((int)p.group.Permission >= CommandOtherPerms.GetPerm(this)) {
Player.SendMessage(p, "%f/eco setup <type> %e- to setup economy");
Player.SendMessage(p, "%f/eco setup help %e- get more specific help for setting up the economy");
Player.SendMessage(p, "%f/eco <type> %e- to setup economy");
Player.SendMessage(p, "%f/eco help %e- get more specific help for setting up the economy");
}
}
void SetupHelp(Player p) {
Player.SendMessage(p, "%4/eco setup apply %e- reloads changes made to 'economy.properties'");
Player.SendMessage(p, "%4/eco setup [%aenable%4/%cdisable%4] %e- to enable/disable the economy system");
Player.SendMessage(p, "%4/eco setup [title/color/tcolor/rank/map] [%aenable%4/%cdisable%4] %e- to enable/disable that feature");
Player.SendMessage(p, "%4/eco setup [title/color/tcolor] [%3price%4] %e- to setup the prices for these features");
Player.SendMessage(p, "%4/eco setup rank price [%frank%4] [%3price%4] %e- to set the price for that rank");
Player.SendMessage(p, "%4/eco setup rank maxrank [%frank%4] %e- to set the max buyable rank");
Player.SendMessage(p, "%4/eco setup map new [%fname%4] [%fx%4] [%fy%4] [%fz%4] [%ftype%4] [%3price%4] %e- to setup a map preset");
Player.SendMessage(p, "%4/eco setup map delete [%fname%4] %e- to delete a map");
Player.SendMessage(p, "%4/eco setup map edit [%fname%4] [name/x/y/z/type/price] [%fvalue%4] %e- to edit a map preset");
Player.SendMessage(p, "%4/eco apply %e- reloads changes made to 'economy.properties'");
Player.SendMessage(p, "%4/eco [%aenable%4/%cdisable%4] %e- to enable/disable the economy system");
Player.SendMessage(p, "%4/eco [title/color/tcolor/rank/map] [%aenable%4/%cdisable%4] %e- to enable/disable that feature");
Player.SendMessage(p, "%4/eco [title/color/tcolor] [%3price%4] %e- to setup the prices for these features");
Player.SendMessage(p, "%4/eco rank price [%frank%4] [%3price%4] %e- to set the price for that rank");
Player.SendMessage(p, "%4/eco rank maxrank [%frank%4] %e- to set the max buyable rank");
Player.SendMessage(p, "%4/eco map new [%fname%4] [%fx%4] [%fy%4] [%fz%4] [%ftype%4] [%3price%4] %e- to setup a map preset");
Player.SendMessage(p, "%4/eco map delete [%fname%4] %e- to delete a map");
Player.SendMessage(p, "%4/eco map edit [%fname%4] [name/x/y/z/type/price] [%fvalue%4] %e- to edit a map preset");
}
}
}

View File

@ -98,7 +98,7 @@ namespace MCGalaxy.Eco {
protected abstract void OnBuyCommand(Player p, string message, string[] args);
protected internal override void OnSetupCommand(Player p, string[] args) {
switch (args[2]) {
switch (args[1].ToLower()) {
case "enable":
Player.SendMessage(p, "%a" + Name + "s are now enabled for the economy system.");
Enabled = true; break;
@ -107,8 +107,8 @@ namespace MCGalaxy.Eco {
Enabled = false; break;
case "price":
int cost;
if (!int.TryParse(args[3], out cost)) {
Player.SendMessage(p, "\"" + args[3] + "\" is not a valid integer."); return;
if (!int.TryParse(args[2], out cost)) {
Player.SendMessage(p, "\"" + args[2] + "\" is not a valid integer."); return;
}
Player.SendMessage(p, "%aSuccessfully changed the " + Name + " price to %f" + cost + " %3" + Server.moneys);
Price = cost; break;

View File

@ -23,232 +23,232 @@ using MCGalaxy.SQL;
namespace MCGalaxy.Eco {
public sealed class LevelItem : Item {
public sealed class LevelItem : Item {
public LevelItem() {
Aliases = new [] { "level", "levels", "map", "maps" };
}
public LevelItem() {
Aliases = new [] { "level", "levels", "map", "maps" };
}
public override string Name { get { return "Level"; } }
public override string Name { get { return "Level"; } }
public List<LevelPreset> Presets = new List<LevelPreset>();
public class LevelPreset {
public int price;
public string name;
public string x, y, z;
public string type;
}
public List<LevelPreset> Presets = new List<LevelPreset>();
public class LevelPreset {
public int price;
public string name;
public string x, y, z;
public string type;
}
public override void Parse(string line, string[] split) {
if (split[1] == "enabled") {
Enabled = split[2].CaselessEq("true");
} else if (split[1] == "levels") {
LevelPreset preset = FindPreset(split[2]);
if (preset == null) {
preset = new LevelPreset();
Presets.Add(preset);
}
public override void Parse(string line, string[] split) {
if (split[1] == "enabled") {
Enabled = split[2].CaselessEq("true");
} else if (split[1] == "levels") {
LevelPreset preset = FindPreset(split[2]);
if (preset == null) {
preset = new LevelPreset();
Presets.Add(preset);
}
switch (split[3]) {
case "name":
preset.name = split[4]; break;
case "price":
preset.price = int.Parse(split[4]); break;
case "x":
preset.x = split[4]; break;
case "y":
preset.y = split[4]; break;
case "z":
preset.z = split[4]; break;
case "type":
preset.type = split[4]; break;
}
}
}
switch (split[3]) {
case "name":
preset.name = split[4]; break;
case "price":
preset.price = int.Parse(split[4]); break;
case "x":
preset.x = split[4]; break;
case "y":
preset.y = split[4]; break;
case "z":
preset.z = split[4]; break;
case "type":
preset.type = split[4]; break;
}
}
}
public override void Serialise(StreamWriter writer) {
writer.WriteLine("level:enabled:" + Enabled);
foreach (LevelPreset preset in Presets) {
writer.WriteLine();
writer.WriteLine("level:levels:" + preset.name + ":name:" + preset.name);
writer.WriteLine("level:levels:" + preset.name + ":price:" + preset.price);
writer.WriteLine("level:levels:" + preset.name + ":x:" + preset.x);
writer.WriteLine("level:levels:" + preset.name + ":y:" + preset.y);
writer.WriteLine("level:levels:" + preset.name + ":z:" + preset.z);
writer.WriteLine("level:levels:" + preset.name + ":type:" + preset.type);
}
}
public override void Serialise(StreamWriter writer) {
writer.WriteLine("level:enabled:" + Enabled);
foreach (LevelPreset preset in Presets) {
writer.WriteLine();
writer.WriteLine("level:levels:" + preset.name + ":name:" + preset.name);
writer.WriteLine("level:levels:" + preset.name + ":price:" + preset.price);
writer.WriteLine("level:levels:" + preset.name + ":x:" + preset.x);
writer.WriteLine("level:levels:" + preset.name + ":y:" + preset.y);
writer.WriteLine("level:levels:" + preset.name + ":z:" + preset.z);
writer.WriteLine("level:levels:" + preset.name + ":type:" + preset.type);
}
}
protected internal override void OnBuyCommand(Command cmd, Player p,
string message, string[] args) {
if (args.Length < 3) { cmd.Help(p); return; }
LevelPreset preset = FindPreset(args[1]);
if (preset == null) { Player.SendMessage(p, "%cThat isn't a level preset"); return; }
protected internal override void OnBuyCommand(Command cmd, Player p,
string message, string[] args) {
if (args.Length < 3) { cmd.Help(p); return; }
LevelPreset preset = FindPreset(args[1]);
if (preset == null) { Player.SendMessage(p, "%cThat isn't a level preset"); return; }
if (p.money < preset.price) {
Player.SendMessage(p, "%cYou don't have enough %3" + Server.moneys + "%c to buy that map"); return;
}
string name = p.name + "_" + args[2];
if (p.money < preset.price) {
Player.SendMessage(p, "%cYou don't have enough %3" + Server.moneys + "%c to buy that map"); return;
}
string name = p.name + "_" + args[2];
try {
Command.all.Find("newlvl").Use(null, name + " " + preset.x + " " + preset.y + " " + preset.z + " " + preset.type);
Player.SendMessage(p, "%aCreating level: '%f" + name + "%a' . . .");
try {
Command.all.Find("newlvl").Use(null, name + " " + preset.x + " " + preset.y + " " + preset.z + " " + preset.type);
Player.SendMessage(p, "%aCreating level: '%f" + name + "%a' . . .");
Command.all.Find("load").Use(null, name);
Thread.Sleep(250);
Command.all.Find("load").Use(null, name);
Thread.Sleep(250);
Level level = LevelInfo.Find(name);
if (level.permissionbuild > p.group.Permission) { level.permissionbuild = p.group.Permission; }
if (level.permissionvisit > p.group.Permission) { level.permissionvisit = p.group.Permission; }
Command.all.Find("goto").Use(p, name);
Level level = LevelInfo.Find(name);
if (level.permissionbuild > p.group.Permission) { level.permissionbuild = p.group.Permission; }
if (level.permissionvisit > p.group.Permission) { level.permissionvisit = p.group.Permission; }
Command.all.Find("goto").Use(p, name);
Player.SendMessage(p, "%aSuccessfully created your map: '%f" + name + "%a'");
try {
//safe against SQL injections, but will be replaced soon by a new feature
Database.executeQuery("INSERT INTO `Zone" + level.name + "` (SmallX, SmallY, SmallZ, BigX, BigY, BigZ, Owner) parts[1]S " +
"(0,0,0," + (level.Width - 1) + "," + (level.Height - 1) + "," + (level.Length - 1) + ",'" + p.name + "')");
Player.SendMessage(p, "%aZoning Succesful");
} catch { Player.SendMessage(p, "%cZoning Failed"); }
} catch {
Player.SendMessage(p, "%cSomething went wrong, Money untouchred"); return;
}
MakePurchase(p, preset.price, "%3Map: %f" + preset.name);
}
Player.SendMessage(p, "%aSuccessfully created your map: '%f" + name + "%a'");
try {
//safe against SQL injections, but will be replaced soon by a new feature
Database.executeQuery("INSERT INTO `Zone" + level.name + "` (SmallX, SmallY, SmallZ, BigX, BigY, BigZ, Owner) parts[1]S " +
"(0,0,0," + (level.Width - 1) + "," + (level.Height - 1) + "," + (level.Length - 1) + ",'" + p.name + "')");
Player.SendMessage(p, "%aZoning Succesful");
} catch { Player.SendMessage(p, "%cZoning Failed"); }
} catch {
Player.SendMessage(p, "%cSomething went wrong, Money untouchred"); return;
}
MakePurchase(p, preset.price, "%3Map: %f" + preset.name);
}
protected internal override void OnSetupCommand(Player p, string[] args) {
LevelPreset preset = FindPreset(args[3]);
switch (args[2]) {
case "new":
case "create":
case "add":
if (preset != null) { Player.SendMessage(p, "%cThat preset level already exists"); return; }
protected internal override void OnSetupCommand(Player p, string[] args) {
LevelPreset preset = FindPreset(args[2]);
switch (args[1].ToLower()) {
case "new":
case "create":
case "add":
if (preset != null) { Player.SendMessage(p, "%cThat preset level already exists"); return; }
preset = new LevelPreset();
preset.name = args[3];
if (OkayAxis(args[4]) && OkayAxis(args[5]) && OkayAxis(args[6])) {
preset.x = args[4]; preset.y = args[5]; preset.z = args[6];
} else { Player.SendMessage(p, "%cDimension must be a power of 2"); break; }
preset = new LevelPreset();
preset.name = args[2];
if (OkayAxis(args[3]) && OkayAxis(args[4]) && OkayAxis(args[5])) {
preset.x = args[3]; preset.y = args[4]; preset.z = args[5];
} else { Player.SendMessage(p, "%cDimension must be a power of 2"); break; }
if (!MapGen.IsRecognisedFormat(args[7])) {
MapGen.PrintValidFormats(p); return;
}
preset.type = args[7].ToLower();
if (!int.TryParse(args[8], out preset.price)) {
if (!MapGen.IsRecognisedFormat(args[6])) {
MapGen.PrintValidFormats(p); return;
}
preset.type = args[6].ToLower();
if (!int.TryParse(args[7], out preset.price)) {
Player.SendMessage(p, "\"" + args[9] + "\" is not a valid integer."); return;
}
Presets.Add(preset);
Player.SendMessage(p, "%aSuccessfully added the following map preset:");
Player.SendMessage(p, "Name: %f" + preset.name);
Player.SendMessage(p, "x:" + preset.x + ", y:" + preset.y + ", z:" + preset.z);
Player.SendMessage(p, "Map Type: %f" + preset.type);
Player.SendMessage(p, "Map Price: %f" + preset.price + " %3" + Server.moneys);
break;
Presets.Add(preset);
Player.SendMessage(p, "%aSuccessfully added the following map preset:");
Player.SendMessage(p, "Name: %f" + preset.name);
Player.SendMessage(p, "x:" + preset.x + ", y:" + preset.y + ", z:" + preset.z);
Player.SendMessage(p, "Map Type: %f" + preset.type);
Player.SendMessage(p, "Map Price: %f" + preset.price + " %3" + Server.moneys);
break;
case "delete":
case "remove":
if (preset == null) { Player.SendMessage(p, "%cThat preset level doesn't exist"); return; }
Presets.Remove(preset);
Player.SendMessage(p, "%aSuccessfully removed preset: %f" + preset.name);
break;
case "delete":
case "remove":
if (preset == null) { Player.SendMessage(p, "%cThat preset level doesn't exist"); return; }
Presets.Remove(preset);
Player.SendMessage(p, "%aSuccessfully removed preset: %f" + preset.name);
break;
case "edit":
case "change":
if (preset == null) { Player.SendMessage(p, "%cThat preset level doesn't exist"); return; }
case "edit":
case "change":
if (preset == null) { Player.SendMessage(p, "%cThat preset level doesn't exist"); return; }
switch (args[4]) {
case "name":
case "title":
preset.name = args[5];
Player.SendMessage(p, "%aSuccessfully changed preset name to %f" + preset.name);
break;
switch (args[3]) {
case "name":
case "title":
preset.name = args[4];
Player.SendMessage(p, "%aSuccessfully changed preset name to %f" + preset.name);
break;
case "x":
if (OkayAxis(args[5])) {
preset.x = args[5];
Player.SendMessage(p, "%aSuccessfully changed preset x size to %f" + preset.x);
} else { Player.SendMessage(p, "%cDimension was wrong, it must be a power of 2"); break; }
break;
case "x":
if (OkayAxis(args[4])) {
preset.x = args[4];
Player.SendMessage(p, "%aSuccessfully changed preset x size to %f" + preset.x);
} else { Player.SendMessage(p, "%cDimension was wrong, it must be a power of 2"); break; }
break;
case "y":
if (OkayAxis(args[5])) {
preset.y = args[5];
Player.SendMessage(p, "%aSuccessfully changed preset y size to %f" + preset.y);
} else { Player.SendMessage(p, "%cDimension was wrong, it must be a power of 2"); break; }
break;
case "y":
if (OkayAxis(args[4])) {
preset.y = args[4];
Player.SendMessage(p, "%aSuccessfully changed preset y size to %f" + preset.y);
} else { Player.SendMessage(p, "%cDimension was wrong, it must be a power of 2"); break; }
break;
case "z":
if (OkayAxis(args[5])) {
preset.z = args[5];
Player.SendMessage(p, "%aSuccessfully changed preset z size to %f" + preset.z);
} else { Player.SendMessage(p, "%cDimension was wrong, it must be a power of 2"); break; }
break;
case "z":
if (OkayAxis(args[4])) {
preset.z = args[4];
Player.SendMessage(p, "%aSuccessfully changed preset z size to %f" + preset.z);
} else { Player.SendMessage(p, "%cDimension was wrong, it must be a power of 2"); break; }
break;
case "type":
if (MapGen.IsRecognisedFormat(args[5])) {
preset.type = args[5].ToLower();
} else {
MapGen.PrintValidFormats(p); return;
}
Player.SendMessage(p, "%aSuccessfully changed preset type to %f" + preset.type);
break;
case "type":
if (MapGen.IsRecognisedFormat(args[4])) {
preset.type = args[4].ToLower();
} else {
MapGen.PrintValidFormats(p); return;
}
Player.SendMessage(p, "%aSuccessfully changed preset type to %f" + preset.type);
break;
case "price":
int newPrice = 0;
if (!int.TryParse(args[5], out newPrice)) {
Player.SendMessage(p, "\"" + args[5] + "\" is not a valid integer."); return;
}
if (newPrice < 0) {
Player.SendMessage(p, "%cAmount of %3" + Server.moneys + "%c cannot be negative"); return;
}
preset.price = newPrice;
Player.SendMessage(p, "%aSuccessfully changed preset price to %f" + preset.price + " %3" + Server.moneys);
break;
case "price":
int newPrice = 0;
if (!int.TryParse(args[4], out newPrice)) {
Player.SendMessage(p, "\"" + args[4] + "\" is not a valid integer."); return;
}
if (newPrice < 0) {
Player.SendMessage(p, "%cAmount of %3" + Server.moneys + "%c cannot be negative"); return;
}
preset.price = newPrice;
Player.SendMessage(p, "%aSuccessfully changed preset price to %f" + preset.price + " %3" + Server.moneys);
break;
default:
Player.SendMessage(p, "%cThat wasn't a valid command addition!");
break;
}
break;
default:
Player.SendMessage(p, "%cThat wasn't a valid command addition!");
break;
}
break;
case "enable":
Player.SendMessage(p, "%aMaps are now enabled for the economy system");
Enabled = true; break;
case "enable":
Player.SendMessage(p, "%aMaps are now enabled for the economy system");
Enabled = true; break;
case "disable":
Player.SendMessage(p, "%aMaps are now disabled for the economy system");
Enabled = false; break;
case "disable":
Player.SendMessage(p, "%aMaps are now disabled for the economy system");
Enabled = false; break;
default:
Player.SendMessage(p, "%cThat wasn't a valid command addition!");
break;
}
}
default:
Player.SendMessage(p, "%cThat wasn't a valid command addition!");
break;
}
}
protected internal override void OnStoreCommand(Player p) {
Player.SendMessage(p, "%aAvailable maps to buy:");
if (Presets.Count == 0) {
Player.SendMessage(p, "%8-None-");
} else {
foreach (LevelPreset preset in Presets) {
Player.SendMessage(p, preset.name + " (" + preset.x + "," + preset.y + "," + preset.z + ") " +
preset.type + ": %f" + preset.price + " %3" + Server.moneys);
}
}
}
protected internal override void OnStoreCommand(Player p) {
Player.SendMessage(p, "%aAvailable maps to buy:");
if (Presets.Count == 0) {
Player.SendMessage(p, "%8-None-");
} else {
foreach (LevelPreset preset in Presets) {
Player.SendMessage(p, preset.name + " (" + preset.x + "," + preset.y + "," + preset.z + ") " +
preset.type + ": %f" + preset.price + " %3" + Server.moneys);
}
}
}
public LevelPreset FindPreset(string name) {
foreach (LevelPreset preset in Presets) {
if (preset.name != null && preset.name.CaselessEq(name))
return preset;
}
return null;
}
public LevelPreset FindPreset(string name) {
foreach (LevelPreset preset in Presets) {
if (preset.name != null && preset.name.CaselessEq(name))
return preset;
}
return null;
}
static bool OkayAxis(string value) {
ushort length;
if (!ushort.TryParse(value, out length)) return false;
return MapGen.OkayAxis(length);
}
}
static bool OkayAxis(string value) {
ushort length;
if (!ushort.TryParse(value, out length)) return false;
return MapGen.OkayAxis(length);
}
}
}

View File

@ -85,7 +85,7 @@ namespace MCGalaxy.Eco {
}
protected internal override void OnSetupCommand(Player p, string[] args) {
switch (args[2]) {
switch (args[1].ToLower()) {
case "enable":
Player.SendMessage(p, "%a" + Name + "s are now enabled for the economy system.");
Enabled = true; break;
@ -93,12 +93,12 @@ namespace MCGalaxy.Eco {
Player.SendMessage(p, "%a" + Name + "s are now disabled for the economy system.");
Enabled = false; break;
case "price":
Rank rnk = FindRank(args[3]);
Rank rnk = FindRank(args[2]);
if (rnk == null) {
Player.SendMessage(p, "%cThat wasn't a rank or it's past the max rank (maxrank is: " + Group.Find(MaxRank).color + MaxRank + "%c)"); return; }
int cost;
if (!int.TryParse(args[4], out cost)) {
Player.SendMessage(p, "\"" + args[4] + "\" is not a valid integer."); return;
if (!int.TryParse(args[3], out cost)) {
Player.SendMessage(p, "\"" + args[3] + "\" is not a valid integer."); return;
}
Player.SendMessage(p, "%aSuccesfully changed the rank price for " + rnk.group.color + rnk.group.name + " to: %f" + cost + " %3" + Server.moneys);
rnk.price = cost; break;
@ -107,10 +107,10 @@ namespace MCGalaxy.Eco {
case "max":
case "maximum":
case "maximumrank":
Group grp = Group.Find(args[3]);
Group grp = Group.Find(args[2]);
if (grp == null) { Player.SendMessage(p, "%cThat wasn't a rank!"); return; }
if (p.group.Permission < grp.Permission) { Player.SendMessage(p, "%cCan't set a maxrank that is higher than yours!"); return; }
MaxRank = args[3].ToLower();
MaxRank = args[2].ToLower();
Player.SendMessage(p, "%aSuccessfully set max rank to: " + grp.color + grp.name);
UpdatePrices();
break;