public override void Use(Player p, string message) { if (message.Split(' ').Length != 2) { Help(p); return; } int newLimit; try { newLimit = int.Parse(message.Split(' ')[1]); } catch { Player.SendMessage(p, "Invalid limit amount"); return; } if (newLimit < 1) { Player.SendMessage(p, "Cannot set below 1."); return; } Group foundGroup = Group.Find(message.Split(' ')[0]); if (foundGroup != null) { foundGroup.maxBlocks = newLimit; Player.GlobalMessage(foundGroup.color + foundGroup.name + Server.DefaultColor + "'s building limits were set to &b" + newLimit); Group.saveGroups(Group.GroupList); } else { switch (message.Split(' ')[0].ToLower()) { case "rp": case "restartphysics": Server.rpLimit = newLimit; Player.GlobalMessage("Custom /rp's limit was changed to &b" + newLimit.ToString()); break; case "rpnorm": case "rpnormal": Server.rpNormLimit = newLimit; Player.GlobalMessage("Normal /rp's limit was changed to &b" + newLimit.ToString()); break; default: Player.SendMessage(p, "No supported /limit"); break; } } }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } Player plr = Player.Find(message.Split(' ')[0]); Group grp = Group.Find(message.Split(' ')[1]); if (plr == null) { Player.SendMessage(p, Server.DefaultColor + "Player not found!"); return; } if (grp == null) { Player.SendMessage(p, Server.DefaultColor + "No rank entered."); return; } if (Group.GroupList.Contains(grp)) { if (grp.name == "banned") { Player.GlobalMessage(plr.color + plr.name + Server.DefaultColor + " is now &8banned" + Server.DefaultColor + "!"); } else { Player.GlobalMessage(plr.color + plr.name + Server.DefaultColor + "'s rank was set to " + grp.color + grp.name + Server.DefaultColor + "."); Player.GlobalMessage("&6Congratulations!"); } } else { Player.SendMessage(p, Server.DefaultColor + "Invalid Rank Entered!"); return; } }
public override void Use(Player p, string message) { string[] command = message.ToLower().Split(' '); string msg1 = String.Empty; string msg2 = String.Empty; try { msg1 = command[0]; msg2 = command[1]; } catch { } if (msg1 == "") { Help(p); return; } if (msg2 == "") { Command.all.Find("rankmsg").Use(p, p.group.name + " " + msg1); return; } Group findgroup = Group.Find(msg1); if (findgroup == null) { Player.SendMessage(p, "Could not find group specified!"); return; } foreach (Player pl in Player.players) { if (pl.group.name == findgroup.name) { pl.SendMessage(p.color + p.name + ": " + Server.DefaultColor + (message.Replace(msg1, "").Trim())); } } }
/// <summary> /// Load up all server groups /// </summary> public static void InitAll() { GroupList = new List <Group>(); if (File.Exists("properties/ranks.properties")) { string[] lines = File.ReadAllLines("properties/ranks.properties"); Group thisGroup = new Group(); int gots = 0, version = 1; if (lines.Length > 0 && lines[0].StartsWith("#Version ")) { try { version = int.Parse(lines[0].Remove(0, 9)); } catch { Server.s.Log("The ranks.properties version header is invalid! Ranks may fail to load!"); } } foreach (string s in lines) { try { if (s == "" || s[0] == '#') { continue; } if (s.Split('=').Length == 2) { string property = s.Split('=')[0].Trim(); string value = s.Split('=')[1].Trim(); if (thisGroup.name == "" && property.ToLower() != "rankname") { Server.s.Log("Hitting an error at " + s + " of ranks.properties"); } else { switch (property.ToLower()) { case "rankname": gots = 0; thisGroup = new Group(); if (value.ToLower() == "developer" || value.ToLower() == "dev" || value.ToLower() == "developers" || value.ToLower() == "devs") { Server.s.Log("You are not a developer. Stop pretending you are."); } if (value.ToLower() == "adv" || value.ToLower() == "op" || value.ToLower() == "super" || value.ToLower() == "nobody" || value.ToLower() == "noone") { Server.s.Log("Cannot have a rank named \"" + value.ToLower() + "\", this rank is hard-coded."); } else if (GroupList.Find(grp => grp.name == value.ToLower()) == null) { thisGroup.trueName = value; } else { Server.s.Log("Cannot add the rank " + value + " twice"); } break; case "permission": int foundPermission; try { foundPermission = int.Parse(value); } catch { Server.s.Log("Invalid permission on " + s); break; } if (thisGroup.Permission != LevelPermission.Null) { Server.s.Log("Setting permission again on " + s); gots--; } bool allowed = GroupList.Find(grp => grp.Permission == (LevelPermission)foundPermission) == null; if (foundPermission > 119 || foundPermission < -50) { Server.s.Log("Permission must be between -50 and 119 for ranks"); break; } if (allowed) { gots++; thisGroup.Permission = (LevelPermission)foundPermission; } else { Server.s.Log("Cannot have 2 ranks set at permission level " + value); } break; case "limit": int foundLimit; try { foundLimit = int.Parse(value); } catch { Server.s.Log("Invalid limit on " + s); break; } gots++; thisGroup.maxBlocks = foundLimit; break; case "maxundo": int foundMax; try { foundMax = int.Parse(value); } catch { Server.s.Log("Invalid maximum on " + s); break; } gots++; thisGroup.maxUndo = foundMax; break; case "color": char foundChar; try { foundChar = char.Parse(value); } catch { Server.s.Log("Incorrect color on " + s); break; } if ((foundChar >= '0' && foundChar <= '9') || (foundChar >= 'a' && foundChar <= 'f')) { gots++; thisGroup.color = foundChar.ToString(CultureInfo.InvariantCulture); } else { Server.s.Log("Invalid color code at " + s); } break; case "filename": if (value.Contains("\\") || value.Contains("/")) { Server.s.Log("Invalid filename on " + s); break; } gots++; thisGroup.fileName = value; break; case "motd": if (!String.IsNullOrEmpty(value)) { thisGroup.MOTD = value; } gots++; break; } if ((gots >= 4 && version < 2) || (gots >= 5 && version < 3) || gots >= 6) { if (version < 2) { if ((int)thisGroup.Permission >= 100) { thisGroup.maxUndo = int.MaxValue; } else if ((int)thisGroup.Permission >= 80) { thisGroup.maxUndo = 5400; } } GroupList.Add(new Group(thisGroup.Permission, thisGroup.maxBlocks, thisGroup.maxUndo, thisGroup.trueName, thisGroup.color[0], thisGroup.MOTD, thisGroup.fileName)); } } } else { Server.s.Log("In ranks.properties, the line " + s + " is wrongly formatted"); } } catch (Exception e) { Server.s.Log("Encountered an error at line \"" + s + "\" in ranks.properties"); Server.ErrorLog(e); } } } if (GroupList.Find(grp => grp.Permission == LevelPermission.Banned) == null) { GroupList.Add(new Group(LevelPermission.Banned, 1, 1, "Banned", '8', String.Empty, "banned.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Guest) == null) { GroupList.Add(new Group(LevelPermission.Guest, 1, 120, "Guest", '7', String.Empty, "guest.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Builder) == null) { GroupList.Add(new Group(LevelPermission.Builder, 400, 300, "Builder", '2', String.Empty, "builders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.AdvBuilder) == null) { GroupList.Add(new Group(LevelPermission.AdvBuilder, 1200, 900, "AdvBuilder", '3', String.Empty, "advbuilders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Operator) == null) { GroupList.Add(new Group(LevelPermission.Operator, 2500, 5400, "Operator", 'c', String.Empty, "operators.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Admin) == null) { GroupList.Add(new Group(LevelPermission.Admin, 65536, int.MaxValue, "SuperOP", 'e', String.Empty, "uberOps.txt")); } GroupList.Add(new Group(LevelPermission.Nobody, 65536, -1, "Nobody", '0', String.Empty, "nobody.txt")); bool swap = true; Group storedGroup; while (swap) { swap = false; for (int i = 0; i < GroupList.Count - 1; i++) { if (GroupList[i].Permission > GroupList[i + 1].Permission) { swap = true; storedGroup = GroupList[i]; GroupList[i] = GroupList[i + 1]; GroupList[i + 1] = storedGroup; } } } if (Group.Find(Server.defaultRank) != null) { standard = Group.Find(Server.defaultRank); } else { standard = Group.findPerm(LevelPermission.Guest); } foreach (Player pl in Player.players) { pl.group = GroupList.Find(g => g.name == pl.group.name); } if (OnGroupLoad != null) { OnGroupLoad(); } OnGroupLoadEvent.Call(); saveGroups(GroupList); }
public override void Use(Player p, string message) { CatchPos cpos; if (message == "") { p.ZoneCheck = true; Player.SendMessage(p, "Place a block where you would like to check for zones."); return; } else if (p.group.Permission < LevelPermission.Operator) { Player.SendMessage(p, "Reserved for OP+"); return; } if (message.IndexOf(' ') == -1) { if (p.canBuild == true) //Checks if player can build there { switch (message.ToLower()) //If true - they can delete the zone { case "del": p.zoneDel = true; Player.SendMessage(p, "Place a block where you would like to delete a zone."); return; default: Help(p); return; } } else //if they cant, it warns them, the ops and logs it on the server! { Player.SendMessage(p, "You can't delete a zone which is above your rank!"); Player.GlobalMessageOps(p.name + " tried to delete a zone that is above their rank!"); Server.s.Log(p.name + " tried to delete a zone that is above their rank!"); return; } } if (message.ToLower() == "del all") { if (p.group.Permission < LevelPermission.Admin) { Player.SendMessage(p, "Only a SuperOP may delete all zones at once"); return; } else { for (int i = 0; i < p.level.ZoneList.Count; i++) { Level.Zone Zn = p.level.ZoneList[i]; MySQL.executeQuery("DELETE FROM `Zone" + p.level.name + "` WHERE Owner='" + Zn.Owner + "' AND SmallX='" + Zn.smallX + "' AND SMALLY='" + Zn.smallY + "' AND SMALLZ='" + Zn.smallZ + "' AND BIGX='" + Zn.bigX + "' AND BIGY='" + Zn.bigY + "' AND BIGZ='" + Zn.bigZ + "'"); Player.SendMessage(p, "Zone deleted for &b" + Zn.Owner); p.level.ZoneList.Remove(p.level.ZoneList[i]); if (i == p.level.ZoneList.Count) { Player.SendMessage(p, "Finished removing all zones"); return; } i--; } } } if (p.group.Permission < LevelPermission.Operator) { Player.SendMessage(p, "Setting zones is reserved for OP+"); return; } if (Group.Find(message.Split(' ')[1]) != null) { message = message.Split(' ')[0] + " grp" + Group.Find(message.Split(' ')[1]).name; } if (message.Split(' ')[0].ToLower() == "add") { Player foundPlayer = Player.Find(message.Split(' ')[1]); if (foundPlayer == null) { cpos.Owner = message.Split(' ')[1].ToString(); } else { cpos.Owner = foundPlayer.name; } } else { Help(p); return; } if (!Player.ValidName(cpos.Owner)) { Player.SendMessage(p, "INVALID NAME."); return; } cpos.x = 0; cpos.y = 0; cpos.z = 0; p.blockchangeObject = cpos; Player.SendMessage(p, "Place two blocks to determine the edges."); Player.SendMessage(p, "Zone for: &b" + cpos.Owner + "."); p.ClearBlockchange(); p.Blockchange += new Player.BlockchangeEventHandler(Blockchange1); }
public override void Use(Player p, string message) { if (message.ToLower() == "superops" || message.ToLower() == "ops" || message.ToLower() == "advbuilders" || message.ToLower() == "builders") { p.SendMessage("You cannot try to promote yourself with /text! You have been reported to all Ops!"); Player.GlobalMessageOps(p.color + p.name + Server.DefaultColor + " tried to promote theirself by using /text!!"); Server.s.Log(p.name + " tried to promote themselves using /text!!"); return; } // Create the directory if it doesn't exist if (!Directory.Exists("extra/text/")) { Directory.CreateDirectory("extra/text"); } // Show the help if the message doesn't contain enough parameters if (message.IndexOf(' ') == -1) { Help(p); return; } string[] param = message.Split(' '); try { if (param[0].ToLower() == "delete") { string filename = SanitizeFileName(param[1]) + ".txt"; if (File.Exists("extra/text/" + filename)) { File.Delete("extra/text/" + filename); p.SendMessage("Deleted file: " + filename); return; } else { p.SendMessage("Could not find file: " + filename); return; } } else { bool again = false; string filename = SanitizeFileName(param[0]) + ".txt"; string path = "extra/text/" + filename; // See if we match the group string group = Group.findPerm(LevelPermission.Guest).name; if (Group.Find(param[1]) != null) { group = Group.Find(param[1]).name; again = true; } message = message.Substring(message.IndexOf(' ') + 1); if (again) { message = message.Substring(message.IndexOf(' ') + 1); } string contents = message; if (contents == "") { Help(p); return; } if (!File.Exists(path)) { contents = "#" + group + System.Environment.NewLine + contents; } else { contents = " " + contents; } File.AppendAllText(path, contents); p.SendMessage("Added text to: " + filename); } } catch { Help(p); } }
public void LoadSettings() { if (!File.Exists("properties/lavasurvival.properties")) { SaveSettings(); return; } foreach (string line in File.ReadAllLines("properties/lavasurvival.properties")) { try { if (line[0] != '#') { string value = line.Substring(line.IndexOf(" = ") + 3); switch (line.Substring(0, line.IndexOf(" = ")).ToLower()) { case "start-on-startup": startOnStartup = bool.Parse(value); break; case "send-afk-to-main": sendAfkMain = bool.Parse(value); break; case "vote-count": voteCount = (byte)MathHelper.Clamp(decimal.Parse(value), 2, 10); break; case "vote-time": voteTime = double.Parse(value); break; case "lives": lifeNum = int.Parse(value); break; case "setup-rank": if (Group.Find(value.ToLower()) != null) { setupRank = Group.Find(value.ToLower()).Permission; } break; case "control-rank": if (Group.Find(value.ToLower()) != null) { controlRank = Group.Find(value.ToLower()).Permission; } break; case "maps": foreach (string mapname in value.Split(',')) { if (!String.IsNullOrEmpty(mapname) && !maps.Contains(mapname)) { maps.Add(mapname); } } break; } } } catch (Exception e) { Server.ErrorLog(e); } } }
public override void Use(Player p, string message) { try { List <groups> playerList = new List <groups>(); foreach (Group grp in Group.GroupList) { if (grp.name != "nobody") { if (String.IsNullOrEmpty(message) || !Group.Exists(message)) { groups groups; groups.group = grp; groups.players = new List <string>(); playerList.Add(groups); } else { Group grp2 = Group.Find(message); if (grp2 != null && grp == grp2) { groups groups; groups.group = grp; groups.players = new List <string>(); playerList.Add(groups); } } } } string devs = ""; int totalPlayers = 0; foreach (Player pl in Player.players) { if (!pl.hidden || p == null || p.group.Permission > LevelPermission.Operator || Server.devs.Contains(p.name.ToLower())) { if (String.IsNullOrEmpty(message) || !Group.Exists(message) || Group.Find(message) == pl.group) { totalPlayers++; string foundName = pl.name; if (Server.afkset.Contains(pl.name)) { foundName = pl.name + "-afk"; } if (Server.devs.Contains(pl.name.ToLower())) { if (pl.voice) { devs += " " + "&f+" + Server.DefaultColor + foundName + " (" + pl.level.name + "),"; } else { devs += " " + foundName + " (" + pl.level.name + "),"; } } if (pl.voice) { playerList.Find(grp => grp.group == pl.group).players.Add("&f+" + Server.DefaultColor + foundName + " (" + pl.level.name + ")"); } else { playerList.Find(grp => grp.group == pl.group).players.Add(foundName + " (" + pl.level.name + ")"); } } else { Player.SendMessage(p, "There are no players of that rank online."); return; } } } Player.SendMessage(p, "There are " + totalPlayers + " players online."); if (devs.Length > 0) { Player.SendMessage(p, ":&9Developers:" + Server.DefaultColor + devs.Trim(',')); } for (int i = playerList.Count - 1; i >= 0; i--) { groups groups = playerList[i]; if (groups.players.Count > 0 || Server.showEmptyRanks) { string appendString = ""; foreach (string player in groups.players) { appendString += ", " + player; } if (appendString != "") { appendString = appendString.Remove(0, 2); } appendString = ":" + groups.group.color + getPlural(groups.group.trueName) + ": " + appendString; Player.SendMessage(p, appendString); } } } catch (Exception e) { Server.ErrorLog(e); } }
public override void Use(Player p, string message) { try { if (message == "") { Player.SendMessage(p, "Basic blocks: "); for (byte i = 0; i < 50; i++) { message += ", " + Block.Name(i); } Player.SendMessage(p, message.Remove(0, 2)); Player.SendMessage(p, "&d/blocks all <0/1/2/3/4> " + Server.DefaultColor + "will show the rest."); } else if (message.ToLower() == "all") { Player.SendMessage(p, "Complex blocks: "); for (byte i = 50; i < 255; i++) { if (Block.Name(i).ToLower() != "unknown") { message += ", " + Block.Name(i); } } Player.SendMessage(p, message.Remove(0, 2)); Player.SendMessage(p, "Use &d/blocks all <0/1/2/3/4> " + Server.DefaultColor + "for a readable list."); } else if (message.ToLower().IndexOf(' ') != -1 && message.Split(' ')[0] == "all") { int foundRange = 0; try { foundRange = int.Parse(message.Split(' ')[1]); } catch { Player.SendMessage(p, "Incorrect syntax"); return; } if (foundRange >= 5 || foundRange < 0) { Player.SendMessage(p, "Number must be between 0 and 4"); return; } message = ""; Player.SendMessage(p, "Blocks between " + foundRange * 51 + " and " + (foundRange + 1) * 51); for (byte i = (byte)(foundRange * 51); i < (byte)((foundRange + 1) * 51); i++) { if (Block.Name(i).ToLower() != "unknown") { message += ", " + Block.Name(i); } } Player.SendMessage(p, message.Remove(0, 2)); } else { string printMessage = ">>>&b"; if (Block.Byte(message) != Block.Zero) { byte b = Block.Byte(message); if (b < 51) { for (byte i = 51; i < 255; i++) { if (Block.Convert(i) == b) { printMessage += Block.Name(i) + ", "; } } if (printMessage != ">>>&b") { Player.SendMessage(p, "Blocks which look like \"" + message + "\":"); Player.SendMessage(p, printMessage.Remove(printMessage.Length - 2)); } else { Player.SendMessage(p, "No Complex Blocks look like \"" + message + "\""); } } else { Player.SendMessage(p, "&bComplex information for \"" + message + "\":"); Player.SendMessage(p, "&cBlock will appear as a \"" + Block.Name(Block.Convert(b)) + "\" block"); if (Block.LightPass(b)) { Player.SendMessage(p, "Block will allow light through"); } if (Block.Physics(b)) { Player.SendMessage(p, "Block effects physics in some way"); } else { Player.SendMessage(p, "Block will not effect physics in any way"); } if (Block.NeedRestart(b)) { Player.SendMessage(p, "The block's physics will auto-start"); } if (Block.OPBlocks(b)) { Player.SendMessage(p, "Block is unaffected by explosions"); } if (Block.AllowBreak(b)) { Player.SendMessage(p, "Anybody can activate the block"); } if (Block.Walkthrough(b)) { Player.SendMessage(p, "Block can be walked through"); } if (Block.Death(b)) { Player.SendMessage(p, "Walking through block will kill you"); } if (Block.DoorAirs(b) != (byte)0) { Player.SendMessage(p, "Block is an ordinary door"); } if (Block.tDoor(b)) { Player.SendMessage(p, "Block is a tdoor, which allows other blocks through when open"); } if (Block.odoor(b) != Block.Zero) { Player.SendMessage(p, "Block is an odoor, which toggles (GLITCHY)"); } if (Block.Mover(b)) { Player.SendMessage(p, "Block can be activated by walking through it"); } } } else if (Group.Find(message) != null) { LevelPermission Perm = Group.Find(message).Permission; foreach (Block.Blocks bL in Block.BlockList) { if (Block.canPlace(Perm, bL.type) && Block.Name(bL.type).ToLower() != "unknown") { printMessage += Block.Name(bL.type) + ", "; } } if (printMessage != ">>>&b") { Player.SendMessage(p, "Blocks which " + Group.Find(message).color + Group.Find(message).name + Server.DefaultColor + " can place: "); Player.SendMessage(p, printMessage.Remove(printMessage.Length - 2)); } else { Player.SendMessage(p, "No blocks are specific to this rank"); } } else if (message.IndexOf(' ') == -1) { if (message.ToLower() == "count") { Player.SendMessage(p, "Blocks in this map: " + p.level.blocks.Length); } else { Help(p); } } else if (message.Split(' ')[0].ToLower() == "count") { int foundNum = 0; byte foundBlock = Block.Byte(message.Split(' ')[1]); if (foundBlock == Block.Zero) { Player.SendMessage(p, "Could not find block specified"); return; } for (int i = 0; i < p.level.blocks.Length; i++) { if (foundBlock == p.level.blocks[i]) { foundNum++; } } if (foundNum == 0) { Player.SendMessage(p, "No blocks were of type \"" + message.Split(' ')[1] + "\""); } else if (foundNum == 1) { Player.SendMessage(p, "1 block was of type \"" + message.Split(' ')[1] + "\""); } else { Player.SendMessage(p, foundNum.ToString() + " blocks were of type \"" + message.Split(' ')[1] + "\""); } } else { Player.SendMessage(p, "Unable to find block or rank"); } } } catch (Exception e) { Server.ErrorLog(e); Help(p); } }
public override void Use(Player p, string message) { string player = "", rank = "", period = ""; try { player = message.Split(' ')[0]; rank = message.Split(' ')[1]; period = message.Split(' ')[2]; } catch { Help(p); } Player who = Player.Find(player); if (player == "") { Player.SendMessage(p, "&cYou have to enter a player!"); return; } if (who == null) { Player.SendMessage(p, "&cPlayer &a" + player + "&c not found!"); return; } if (rank == "") { Player.SendMessage(p, "&cYou have to enter a rank!"); return; } else { Group groupNew = Group.Find(rank); if (groupNew == null) { Player.SendMessage(p, "&cRank &a" + rank + "&c does not exist"); return; } } if (period == "") { Player.SendMessage(p, "&cYou have to enter a time period!"); return; } Boolean isnumber = true; try { Convert.ToInt32(period); } catch { isnumber = false; } if (!isnumber) { Player.SendMessage(p, "&cThe period needs to be a number!"); return; } string alltext = File.ReadAllText("text/tempranks.txt"); if (alltext.Contains(player)) { Player.SendMessage(p, "&cThe player already has a temporary rank assigned!"); return; } bool byconsole; if (p == null) { byconsole = true; goto skipper; } else { byconsole = false; } if (player == p.name) { Player.SendMessage(p, "&cYou cannot assign yourself a temporary rank!"); return; } Player who3 = Player.Find(player); if (who3.group.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the temporary rank of someone equal or higher to yourself."); return; } Group newRank2 = Group.Find(rank); if (newRank2.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the temporary rank to a higher rank than yourself"); return; } skipper: string year = DateTime.Now.Year.ToString(); string month = DateTime.Now.Month.ToString(); string day = DateTime.Now.Day.ToString(); string hour = DateTime.Now.Hour.ToString(); string minute = DateTime.Now.Minute.ToString(); string oldrank = who.group.name; string assigner; if (byconsole) { assigner = "Console"; } else { assigner = p.name; } Boolean tryer = true; try { StreamWriter sw; sw = File.AppendText("text/tempranks.txt"); sw.WriteLine(who.name + " " + rank + " " + oldrank + " " + period + " " + minute + " " + hour + " " + day + " " + month + " " + year + " " + assigner); sw.Close(); } catch { tryer = false; } if (!tryer) { Player.SendMessage(p, "&cAn error occurred!"); } else { Group newgroup = Group.Find(rank); Command.all.Find("setrank").Use(null, who.name + " " + newgroup.name); Player.SendMessage(p, "Temporary rank (" + rank + ") is assigned succesfully to " + player + " for " + period + " hours"); Player who2 = Player.Find(player); Player.SendMessage(who2, "Your Temporary rank (" + rank + ") is assigned succesfully for " + period + " hours"); } }
public override void Use(Player p, string message) { if (!Directory.Exists("extra/text/")) { Directory.CreateDirectory("extra/text"); } if (message == "") { DirectoryInfo di = new DirectoryInfo("extra/text/"); string allFiles = ""; foreach (FileInfo fi in di.GetFiles("*.txt")) { try { string firstLine = File.ReadAllLines("extra/text/" + fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) + ".txt")[0]; if (firstLine[0] == '#') { if (Group.Find(firstLine.Substring(1)).Permission <= p.group.Permission) { allFiles += ", " + fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length); } } else { allFiles += ", " + fi.Name; } } catch (Exception e) { Server.ErrorLog(e); Player.SendMessage(p, "Error"); } } if (allFiles == "") { Player.SendMessage(p, "No files are viewable by you"); } else { Player.SendMessage(p, "Available files:"); Player.SendMessage(p, allFiles.Remove(0, 2)); } } else { Player who = null; if (message.IndexOf(' ') != -1) { who = Player.Find(message.Split(' ')[message.Split(' ').Length - 1]); if (who != null) { message = message.Substring(0, message.LastIndexOf(' ')); } } if (who == null) { who = p; } if (File.Exists("extra/text/" + message + ".txt")) { try { string[] allLines = File.ReadAllLines("extra/text/" + message + ".txt"); if (allLines[0][0] == '#') { if (Group.Find(allLines[0].Substring(1)).Permission <= p.group.Permission) { for (int i = 1; i < allLines.Length; i++) { Player.SendMessage(who, allLines[i]); } } else { Player.SendMessage(p, "You cannot view this file"); } } else { for (int i = 1; i < allLines.Length; i++) { Player.SendMessage(who, allLines[i]); } } } catch { Player.SendMessage(p, "An error occurred when retrieving the file"); } } else { Player.SendMessage(p, "File specified doesn't exist"); } } }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } Player pl = Player.Find(message); if (pl != null && !pl.hidden) { Player.SendMessage(p, pl.color + pl.name + Server.DefaultColor + " is online, using /whois instead."); Command.all.Find("whois").Use(p, message); return; } if (message.IndexOf("'") != -1) { Player.SendMessage(p, "Cannot parse request."); return; } string FoundRank = Group.findPlayer(message.ToLower()); DataTable playerDb = MySQL.fillData("SELECT * FROM Players WHERE Name='" + message + "'"); if (playerDb.Rows.Count == 0) { Player.SendMessage(p, Group.Find(FoundRank).color + message + Server.DefaultColor + " has the rank of " + Group.Find(FoundRank).color + FoundRank); return; } Player.SendMessage(p, Group.Find(FoundRank).color + playerDb.Rows[0]["Title"] + " " + message + Server.DefaultColor + " has :"); Player.SendMessage(p, "> > the rank of \"" + Group.Find(FoundRank).color + FoundRank); try { if (!Group.Find("Nobody").commands.Contains("pay") && !Group.Find("Nobody").commands.Contains("give") && !Group.Find("Nobody").commands.Contains("take")) { Player.SendMessage(p, "> > &a" + playerDb.Rows[0]["Money"] + Server.DefaultColor + " " + Server.moneys); } } catch { } Player.SendMessage(p, "> > &cdied &a" + playerDb.Rows[0]["TotalDeaths"] + Server.DefaultColor + " times"); Player.SendMessage(p, "> > &bmodified &a" + playerDb.Rows[0]["totalBlocks"] + Server.DefaultColor + " blocks."); Player.SendMessage(p, "> > was last seen on &a" + playerDb.Rows[0]["LastLogin"]); Player.SendMessage(p, "> > first logged into the server on &a" + playerDb.Rows[0]["FirstLogin"]); Player.SendMessage(p, "> > logged in &a" + playerDb.Rows[0]["totalLogin"] + Server.DefaultColor + " times, &c" + playerDb.Rows[0]["totalKicked"] + Server.DefaultColor + " of which ended in a kick."); Player.SendMessage(p, "> > " + Awards.awardAmount(message) + " awards"); bool skip = false; if (p != null) { if (p.group.Permission <= LevelPermission.AdvBuilder) { skip = true; } } if (!skip) { if (Server.bannedIP.Contains(playerDb.Rows[0]["IP"].ToString())) { playerDb.Rows[0]["IP"] = "&8" + playerDb.Rows[0]["IP"] + ", which is banned"; } Player.SendMessage(p, "> > the IP of " + playerDb.Rows[0]["IP"]); if (Server.useWhitelist) { if (Server.whiteList.Contains(message.ToLower())) { Player.SendMessage(p, "> > Player is &fWhitelisted"); } } if (Server.devs.Contains(message.ToLower())) { Player.SendMessage(p, Server.DefaultColor + "> > Player is a &9Developer"); } } playerDb.Dispose(); }
public override void Use(Player p, string message) { if (p != null && message == "") { message = "enter"; } switch (message.ToLower()) { case "enter": if (p == null) { Player.SendMessage(p, "You can't execute this command as Console!"); return; } if (p.canusereview) { Group gre = Group.findPerm(Server.reviewenter); LevelPermission lpe = gre.Permission; if (p.group.Permission >= lpe) { foreach (string testwho in Server.reviewlist) { if (testwho == p.name) { Player.SendMessage(p, "You already entered the review queue!"); return; } } bool isopson = false; try { foreach (Player pl in Player.players) { if (pl.group.Permission >= Server.opchatperm && !pl.hidden) { isopson = true; break; // We're done, break out of this loop } } } catch /* (Exception e)*/ { isopson = true; } if (isopson == true) { Server.reviewlist.Add(p.name); int reviewlistpos = Server.reviewlist.IndexOf(p.name); if (reviewlistpos > 1) { Player.SendMessage(p, "You entered the &creview " + Server.DefaultColor + "queue. You have &c" + reviewlistpos.ToString() + Server.DefaultColor + " people in front of you in the queue"); } if (reviewlistpos == 1) { Player.SendMessage(p, "You entered the &creview " + Server.DefaultColor + "queue. There is &c1 " + Server.DefaultColor + "person in front of you in the queue"); } if ((reviewlistpos + 1) == 1) { Player.SendMessage(p, "You entered the &creview " + Server.DefaultColor + "queue. You are &cfirst " + Server.DefaultColor + "in line!"); } Player.SendMessage(p, "The Online Operators have been notified. Someone should be with you shortly."); Player.GlobalMessageOps(p.color + " - " + p.name + " - " + Server.DefaultColor + "entered the review queue"); if ((reviewlistpos + 1) > 1) { Player.GlobalMessageOps("There are now &c" + (reviewlistpos + 1) + Server.DefaultColor + " people waiting for &creview!"); } else { Player.GlobalMessageOps("There is now &c1 " + Server.DefaultColor + "person waiting for &creview!"); } p.ReviewTimer(); } else { Player.SendMessage(p, "&cThere are no operators on to review your build. Please wait for one to come on and try again."); } } } else { Player.SendMessage(p, "You have to wait " + Server.reviewcooldown + " seconds everytime you use this command"); } break; case "list": case "view": if (p == null) { if (Server.reviewlist.Count != 0) { Player.SendMessage(p, "Players in the review queue:"); int viewnumb = 1; foreach (string golist in Server.reviewlist) { string FoundRank = Group.findPlayer(golist.ToLower()); Player.SendMessage(p, viewnumb.ToString() + ". " + golist + " - Current Rank: " + FoundRank); viewnumb++; } } else { Player.SendMessage(p, "There are no players in the review queue!"); } return; } Group grv = Group.findPerm(Server.reviewview); LevelPermission lpv = grv.Permission; if (p.group.Permission >= lpv && p != null) { if (Server.reviewlist.Count != 0) { Player.SendMessage(p, "&9Players in the review queue:"); int viewnumb = 1; foreach (string golist in Server.reviewlist) { string FoundRank = Group.findPlayer(golist.ToLower()); Player.SendMessage(p, "&a" + viewnumb.ToString() + ". &f" + golist + "&a - Current Rank: " + Group.Find(FoundRank).color + FoundRank); viewnumb++; } } else { Player.SendMessage(p, "There are no players in the review queue!"); } } break; case "leave": if (p == null) { Player.SendMessage(p, "You can't execute this command as Console!"); return; } Group grl = Group.findPerm(Server.reviewleave); LevelPermission lpl = grl.Permission; if (p.group.Permission >= lpl) { bool leavetest = false; foreach (string testwho2 in Server.reviewlist) { if (testwho2 == p.name) { leavetest = true; } } if (!leavetest) { Player.SendMessage(p, "You aren't in the review queue so you can't leave it!"); return; } Server.reviewlist.Remove(p.name); int toallplayerscount = 1; foreach (string toallplayers in Server.reviewlist) { Player tosend = Player.Find(toallplayers); Player.SendMessage(tosend, "The review queue has changed. Your now on spot " + toallplayerscount.ToString() + "."); toallplayerscount++; } Player.SendMessage(p, "You have left the review queue!"); return; } break; case "next": if (p == null) { Player.SendMessage(p, "You can't execute this command as Console!"); return; } Group grn = Group.findPerm(Server.reviewnext); LevelPermission lpn = grn.Permission; if (p.group.Permission >= lpn) { if (Server.reviewlist.Count == 0) { Player.SendMessage(p, "There are no players in the review queue!"); return; } string[] user = Server.reviewlist.ToArray(); Player who = Player.Find(user[0]); if (who == null) { Player.SendMessage(p, "Player " + user[0] + " doesn't exist or is offline. " + user[0] + " has been removed from the review queue"); Server.reviewlist.Remove(user[0]); return; } if (who == p) { Player.SendMessage(p, "You can't teleport to yourself! You have been removed from the review queue."); Server.reviewlist.Remove(user[0]); return; } Server.reviewlist.Remove(user[0]); Command.all.Find("tp").Use(p, who.name); Player.SendMessage(p, "You have been teleported to " + user[0]); Player.SendMessage(who, "Your request has been answered by " + p.name + "."); int toallplayerscount = 0; foreach (string toallplayers in Server.reviewlist) { Player who2 = Player.Find(toallplayers); Player.SendMessage(who2, "The review queue has been rotated. you now have " + toallplayerscount.ToString() + " players waiting in front of you"); toallplayerscount++; } } else { Player.SendMessage(p, "&cYou have no permission to use the review queue!"); } break; case "clear": if (p == null) { Server.reviewlist.Clear(); Player.SendMessage(p, "The review queue has been cleared"); return; } Group grc = Group.findPerm(Server.reviewclear); LevelPermission lpc = grc.Permission; if (p.group.Permission >= lpc) { Server.reviewlist.Clear(); Player.SendMessage(p, "The review queue has been cleared"); return; } else { Player.SendMessage(p, "&cYou have no permission to clear the Review Queue!"); } break; default: Help(p); return; } }
public static void InitAll() { GroupList = new List <Group>(); if (File.Exists("properties/ranks.properties")) { string[] lines = File.ReadAllLines("properties/ranks.properties"); Group thisGroup = new Group(); int gots = 0; foreach (string s in lines) { try { if (s != "" && s[0] != '#') { if (s.Split('=').Length == 2) { string property = s.Split('=')[0].Trim(); string value = s.Split('=')[1].Trim(); if (thisGroup.name == "" && property.ToLower() != "rankname") { Server.s.Log("Hitting an error at " + s + " of ranks.properties"); } else { switch (property.ToLower()) { case "rankname": gots = 0; thisGroup = new Group(); if (value.ToLower() == "developers" || value.ToLower() == "devs") { Server.s.Log("You are not a developer. Stop pretending you are."); } else if (GroupList.Find(grp => grp.name == value.ToLower()) == null) { thisGroup.trueName = value; } else { Server.s.Log("Cannot add the rank " + value + " twice"); } break; case "permission": int foundPermission; try { foundPermission = int.Parse(value); } catch { Server.s.Log("Invalid permission on " + s); break; } if (thisGroup.Permission != LevelPermission.Null) { Server.s.Log("Setting permission again on " + s); gots--; } bool allowed = true; if (GroupList.Find(grp => grp.Permission == (LevelPermission)foundPermission) != null) { allowed = false; } if (foundPermission > 119 || foundPermission < -50) { Server.s.Log("Permission must be between -50 and 119 for ranks"); break; } if (allowed) { gots++; thisGroup.Permission = (LevelPermission)foundPermission; } else { Server.s.Log("Cannot have 2 ranks set at permission level " + value); } break; case "limit": int foundLimit; try { foundLimit = int.Parse(value); } catch { Server.s.Log("Invalid limit on " + s); break; } gots++; thisGroup.maxBlocks = foundLimit; break; case "color": char foundChar; try { foundChar = char.Parse(value); } catch { Server.s.Log("Incorrect color on " + s); break; } if ((foundChar >= '0' && foundChar <= '9') || (foundChar >= 'a' && foundChar <= 'f')) { gots++; thisGroup.color = foundChar.ToString(); } else { Server.s.Log("Invalid color code at " + s); } break; case "filename": if (value.Contains("\\") || value.Contains("/")) { Server.s.Log("Invalid filename on " + s); break; } gots++; thisGroup.fileName = value; break; } if (gots >= 4) { GroupList.Add(new Group(thisGroup.Permission, thisGroup.maxBlocks, thisGroup.trueName, thisGroup.color[0], thisGroup.fileName)); } } } else { Server.s.Log("In ranks.properties, the line " + s + " is wrongly formatted"); } } } catch { } } } if (GroupList.Find(grp => grp.Permission == LevelPermission.Banned) == null) { GroupList.Add(new Group(LevelPermission.Banned, 1, "Banned", '8', "banned.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Guest) == null) { GroupList.Add(new Group(LevelPermission.Guest, 1, "Guest", '7', "guest.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Builder) == null) { GroupList.Add(new Group(LevelPermission.Builder, 400, "Builder", '2', "builders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.AdvBuilder) == null) { GroupList.Add(new Group(LevelPermission.AdvBuilder, 1200, "AdvBuilder", '3', "advbuilders.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Operator) == null) { GroupList.Add(new Group(LevelPermission.Operator, 2500, "Operator", 'c', "operators.txt")); } if (GroupList.Find(grp => grp.Permission == LevelPermission.Admin) == null) { GroupList.Add(new Group(LevelPermission.Admin, 65536, "SuperOP", 'e', "uberOps.txt")); } GroupList.Add(new Group(LevelPermission.Nobody, 65536, "Nobody", '0', "nobody.txt")); bool swap = true; Group storedGroup; while (swap) { swap = false; for (int i = 0; i < GroupList.Count - 1; i++) { if (GroupList[i].Permission > GroupList[i + 1].Permission) { swap = true; storedGroup = GroupList[i]; GroupList[i] = GroupList[i + 1]; GroupList[i + 1] = storedGroup; } } } if (Group.Find(Server.defaultRank) != null) { standard = Group.Find(Server.defaultRank); } else { standard = Group.findPerm(LevelPermission.Guest); } foreach (Player pl in Player.players) { pl.group = GroupList.Find(g => g.name == pl.group.name); } saveGroups(GroupList); }
public override void Use(Player p, string message) { if (message.Split(' ').Length < 2) { Help(p); return; } Player who = Player.Find(message.Split(' ')[0]); Group newRank = Group.Find(message.Split(' ')[1]); string msgGave; if (message.Split(' ').Length > 2) { msgGave = message.Substring(message.IndexOf(' ', message.IndexOf(' ') + 1)); } else { msgGave = "Congratulations!"; } if (newRank == null) { Player.SendMessage(p, "Could not find specified rank."); return; } Group bannedGroup = Group.findPerm(LevelPermission.Banned); if (who == null) { string foundName = message.Split(' ')[0]; if (Group.findPlayerGroup(foundName) == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (p != null) { if (Group.findPlayerGroup(foundName).Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher than you"); return; } } Group oldGroup = Group.findPlayerGroup(foundName); oldGroup.playerList.Remove(foundName); oldGroup.playerList.Save(); newRank.playerList.Add(foundName); newRank.playerList.Save(); Player.GlobalMessage(foundName + " &f(offline)" + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name); } else if (who == p) { Player.SendMessage(p, "Cannot change your own rank."); return; } else { if (p != null) { if (who.group == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (who.group.Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher to yourself."); return; } } who.group.playerList.Remove(who.name); who.group.playerList.Save(); newRank.playerList.Add(who.name); newRank.playerList.Save(); Player.GlobalChat(who, who.color + who.name + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name, false); Player.GlobalChat(null, "&6" + msgGave, false); who.group = newRank; who.color = who.group.color; Player.GlobalDie(who, false); who.SendMessage("You are now ranked " + newRank.color + newRank.name + Server.DefaultColor + ", type /help for your new set of commands."); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); } }
public override void Use(Player p, string message) { Player who = null; if (message == "") { who = p; message = p.name; } else { who = Player.Find(message); } if (who != null && !who.hidden) { Player.SendMessage(p, who.color + who.name + Server.DefaultColor + " is on &b" + who.level.name); Player.SendMessage(p, who.color + who.prefix + who.name + Server.DefaultColor + " has :"); Player.SendMessage(p, "> > the rank of " + who.group.color + who.group.name); try { if (!Group.Find("Nobody").commands.Contains("pay") && !Group.Find("Nobody").commands.Contains("give") && !Group.Find("Nobody").commands.Contains("take")) { Player.SendMessage(p, "> > &a" + who.money + Server.DefaultColor + " " + Server.moneys); } } catch { } Player.SendMessage(p, "> > &cdied &a" + who.overallDeath + Server.DefaultColor + " times"); Player.SendMessage(p, "> > &bmodified &a" + who.overallBlocks + " &eblocks &eand &a" + who.loginBlocks + " &ewere changed &9since logging in&e."); string storedTime = Convert.ToDateTime(DateTime.Now.Subtract(who.timeLogged).ToString()).ToString("HH:mm:ss"); Player.SendMessage(p, "> > time spent on server: " + who.time.Split(' ')[0] + " Days, " + who.time.Split(' ')[1] + " Hours, " + who.time.Split(' ')[2] + " Minutes, " + who.time.Split(' ')[3] + " Seconds."); Player.SendMessage(p, "> > been logged in for &a" + storedTime); Player.SendMessage(p, "> > first logged into the server on &a" + who.firstLogin.ToString("yyyy-MM-dd") + " at " + who.firstLogin.ToString("HH:mm:ss")); Player.SendMessage(p, "> > logged in &a" + who.totalLogins + Server.DefaultColor + " times, &c" + who.totalKicked + Server.DefaultColor + " of which ended in a kick."); Player.SendMessage(p, "> > " + Awards.awardAmount(who.name) + " awards"); bool skip = false; if (p != null) { if ((int)p.group.Permission <= CommandOtherPerms.GetPerm(this)) { skip = true; } } if (!skip) { string givenIP; if (Server.bannedIP.Contains(who.ip)) { givenIP = "&8" + who.ip + ", which is banned"; } else { givenIP = who.ip; } Player.SendMessage(p, "> > the IP of " + givenIP); if (Server.useWhitelist) { if (Server.whiteList.Contains(who.name)) { Player.SendMessage(p, "> > Player is &fWhitelisted"); } } if (Server.devs.Contains(who.name.ToLower())) { Player.SendMessage(p, Server.DefaultColor + "> > Player is a &9Developer"); } } } else { Player.SendMessage(p, "\"" + message + "\" is offline! Using /whowas instead."); Command.all.Find("whowas").Use(p, message); } }
public static void Load(bool loadDatabase = false) { /*if (loadDatabase) { * retry: * if (Server.useMySQL) MySQL.executeQuery(createTable); else SQLite.executeQuery(createTable); //create database on server loading * string queryP = "SELECT * FROM Players"; string queryE = "SELECT * FROM Economy"; * DataTable eco = Server.useMySQL ? MySQL.fillData(queryE) : SQLite.fillData(queryE); * try { * DataTable players = Server.useMySQL ? MySQL.fillData(queryP) : SQLite.fillData(queryP); * if (players.Rows.Count == eco.Rows.Count) { } //move along, nothing to do here * else if (eco.Rows.Count == 0) { //if first time, copy content from player to economy * string query = "INSERT INTO Economy (player, money) SELECT Players.Name, Players.Money FROM Players"; * if (Server.useMySQL) MySQL.executeQuery(query); else SQLite.executeQuery(query); * } else { * //this will only be needed when the server shuts down while it was copying content (or some other error) * if (Server.useMySQL) MySQL.executeQuery("DROP TABLE Economy"); else SQLite.executeQuery("DROP TABLE Economy"); * goto retry; * } * players.Dispose(); eco.Dispose(); * } catch { } * return; * }*/ if (!File.Exists("properties/economy.properties")) { Server.s.Log("Economy properties don't exist, creating"); File.Create("properties/economy.properties").Close(); Save(); } using (StreamReader r = File.OpenText("properties/economy.properties")) { string line; while (!r.EndOfStream) { line = r.ReadLine().ToLower().Trim(); string[] linear = line.ToLower().Trim().Split(':'); try { switch (linear[0]) { case "enabled": if (linear[1] == "true") { Settings.Enabled = true; } else if (linear[1] == "false") { Settings.Enabled = false; } break; case "title": if (linear[1] == "price") { Settings.TitlePrice = int.Parse(linear[2]); } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Titles = true; } else if (linear[2] == "false") { Settings.Titles = false; } } break; case "color": if (linear[1] == "price") { Settings.ColorPrice = int.Parse(linear[2]); } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Colors = true; } else if (linear[2] == "false") { Settings.Colors = false; } } break; case "titlecolor": if (linear[1] == "price") { Settings.TColorPrice = int.Parse(linear[2]); } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.TColors = true; } else if (linear[2] == "false") { Settings.TColors = false; } } break; case "rank": if (linear[1] == "price") { Economy.Settings.Rank rnk = new Economy.Settings.Rank(); rnk = Economy.FindRank(linear[2]); if (rnk == null) { rnk = new Economy.Settings.Rank(); rnk.group = Group.Find(linear[2]); rnk.price = int.Parse(linear[3]); Economy.Settings.RanksList.Add(rnk); } else { Economy.Settings.RanksList.Remove(rnk); rnk.price = int.Parse(linear[3]); Economy.Settings.RanksList.Add(rnk); } } if (linear[1] == "maxrank") { //Group grp = Group.Find(linear[2]); //if (grp != null) { Settings.MaxRank = grp.Permission; } string grpname = linear[2]; if (Group.Exists(grpname)) { Settings.MaxRank = grpname; } } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Ranks = true; } else if (linear[2] == "false") { Settings.Ranks = false; } } break; case "level": if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Levels = true; } else if (linear[2] == "false") { Settings.Levels = false; } } if (linear[1] == "levels") { Settings.Level lvl = new Settings.Level(); if (FindLevel(linear[2]) != null) { lvl = FindLevel(linear[2]); Settings.LevelsList.Remove(lvl); } switch (linear[3]) { case "name": lvl.name = linear[4]; break; case "price": lvl.price = int.Parse(linear[4]); break; case "x": lvl.x = linear[4]; break; case "y": lvl.y = linear[4]; break; case "z": lvl.z = linear[4]; break; case "type": lvl.type = linear[4]; break; } Settings.LevelsList.Add(lvl); } break; } } catch { } } r.Close(); } Save(); }
//During Game Main Methods public void Start() { GameStatus = TntWarsGameStatus.AboutToStart; //Checking Backups & physics etc. { BackupNumber = lvl.Backup(true); if (BackupNumber <= 0) { SendAllPlayersMessage(c.red + "Backing up Level for TNT Wars failed, Stopping game"); Player.GlobalMessageOps(c.red + "Backing up Level for TNT Wars failed, Stopping game"); GameStatus = TntWarsGameStatus.Finished; return; } Server.s.Log("Backed up " + lvl.name + " (" + BackupNumber.ToString() + ") for TNT Wars"); } //Map stuff lvl.setPhysics(3); lvl.permissionbuild = Group.Find(Server.defaultRank).Permission; lvl.permissionvisit = Group.Find(Server.defaultRank).Permission; lvl.Killer = true; //Seting Up Some Player stuff { foreach (player p in Players) { p.p.PlayingTntWars = true; p.p.CurrentAmountOfTnt = 0; p.p.CurrentTntGameNumber = GameNumber; if (GameDifficulty == TntWarsDifficulty.Easy || GameDifficulty == TntWarsDifficulty.Normal) { p.p.TntWarsHealth = 2; } else { p.p.TntWarsHealth = 1; } p.p.HarmedBy = null; if (GracePeriod) { p.p.canBuild = false; } if (p.spec) { p.p.canBuild = false; Player.SendMessage(p.p, "TNT Wars: Disabled building because you are a spectator!"); } p.p.TntWarsKillStreak = 0; p.p.TntWarsScoreMultiplier = 1f; p.p.TNTWarsLastKillStreakAnnounced = 0; SetTitlesAndColor(p); } if (GracePeriod) { SendAllPlayersMessage("TNT Wars: Disabled building during Grace Period!"); } } //Spawn them (And if needed, move them to the correct level!) { foreach (player p in Players.Where(p => p.p.level != lvl)) { Command.all.Find("goto").Use(p.p, lvl.name); while (p.p.Loading) { Thread.Sleep(250); } p.p.inTNTwarsMap = true; } if (GameMode == TntWarsGameMode.TDM) { Command.all.Find("reveal").Use(null, "all " + lvl.name); } //So peoples names apear above their heads in the right color! foreach (player p in Players) { Command.all.Find("spawn").Use(p.p, ""); //This has to be after reveal so that they spawn in the correct place!! Thread.Sleep(250); } } //Announcing Etc. string Gamemode = "Free For All"; if (GameMode == TntWarsGameMode.TDM) { Gamemode = "Team Deathmatch"; } string Difficulty = "Normal"; string HitsToDie = "2"; string explosiontime = "medium"; string explosionsize = "normal"; switch (GameDifficulty) { case TntWarsDifficulty.Easy: Difficulty = "Easy"; explosiontime = "long"; break; case TntWarsDifficulty.Normal: Difficulty = "Normal"; break; case TntWarsDifficulty.Hard: HitsToDie = "1"; Difficulty = "Hard"; break; case TntWarsDifficulty.Extreme: HitsToDie = "1"; explosiontime = "short"; explosionsize = "big"; Difficulty = "Extreme"; break; } string teamkillling = "Disabled"; if (TeamKills) { teamkillling = "Enabled"; } Player.GlobalMessage(c.red + "TNT Wars " + Server.DefaultColor + "on '" + lvl.name + "' has started " + c.teal + Gamemode + Server.DefaultColor + " with a difficulty of " + c.teal + Difficulty + Server.DefaultColor + " (" + c.teal + HitsToDie + Server.DefaultColor + " hits to die, a " + c.teal + explosiontime + Server.DefaultColor + " explosion delay and with a " + c.teal + explosionsize + Server.DefaultColor + " explosion size)" + ", team killing is " + c.teal + teamkillling + Server.DefaultColor + " and you can place " + c.teal + TntPerPlayerAtATime.ToString() + Server.DefaultColor + " TNT at a time and there is a score limit of " + c.teal + ScoreLimit.ToString() + Server.DefaultColor + "!!"); if (GameMode == TntWarsGameMode.TDM) { SendAllPlayersMessage("TNT Wars: Start your message with ':' to send it as a team chat!"); } //GracePeriod if (GracePeriod) //Check This Grace Stuff { GameStatus = TntWarsGameStatus.GracePeriod; int GracePeriodSecsRemaining = GracePeriodSecs; SendAllPlayersMessage("TNT Wars: Grace Period of " + c.lime + GracePeriodSecsRemaining.ToString() + Server.DefaultColor + " seconds"); while (GracePeriodSecsRemaining > 0) { switch (GracePeriodSecsRemaining) { case 300: SendAllPlayersMessage("TNT Wars: " + c.teal + "5" + Server.DefaultColor + " minutes remaining!"); break; case 240: SendAllPlayersMessage("TNT Wars: " + c.teal + "4" + Server.DefaultColor + " minutes remaining!"); break; case 180: SendAllPlayersMessage("TNT Wars: " + c.teal + "3" + Server.DefaultColor + " minutes remaining!"); break; case 120: SendAllPlayersMessage("TNT Wars: " + c.teal + "2" + Server.DefaultColor + " minutes remaining!"); break; case 90: SendAllPlayersMessage("TNT Wars: " + c.teal + "1" + Server.DefaultColor + " minute and " + c.teal + "30" + Server.DefaultColor + " seconds remaining!"); break; case 60: SendAllPlayersMessage("TNT Wars: " + c.teal + "1" + Server.DefaultColor + " minute remaining!"); break; case 45: SendAllPlayersMessage("TNT Wars: " + c.teal + "45" + Server.DefaultColor + " seconds remaining!"); break; case 30: SendAllPlayersMessage("TNT Wars: " + c.teal + "30" + Server.DefaultColor + " seconds remaining!"); break; case 15: SendAllPlayersMessage("TNT Wars: " + c.teal + "15" + Server.DefaultColor + " seconds remaining!"); break; case 10: SendAllPlayersMessage("TNT Wars: " + c.teal + "10" + Server.DefaultColor + " seconds remaining!"); break; case 9: SendAllPlayersMessage("TNT Wars: " + c.teal + "9" + Server.DefaultColor + " seconds remaining!"); break; case 8: SendAllPlayersMessage("TNT Wars: " + c.teal + "8" + Server.DefaultColor + " seconds remaining!"); break; case 7: SendAllPlayersMessage("TNT Wars: " + c.teal + "7" + Server.DefaultColor + " seconds remaining!"); break; case 6: SendAllPlayersMessage("TNT Wars: " + c.teal + "6" + Server.DefaultColor + " seconds remaining!"); break; case 5: SendAllPlayersMessage("TNT Wars: " + c.teal + "5" + Server.DefaultColor + " seconds remaining!"); break; case 4: SendAllPlayersMessage("TNT Wars: " + c.teal + "4" + Server.DefaultColor + " seconds remaining!"); break; case 3: SendAllPlayersMessage("TNT Wars: " + c.teal + "3" + Server.DefaultColor + " seconds remaining!"); break; case 2: SendAllPlayersMessage("TNT Wars: " + c.teal + "2" + Server.DefaultColor + " seconds remaining!"); break; case 1: SendAllPlayersMessage("TNT Wars: " + c.teal + "1" + Server.DefaultColor + " second remaining!"); break; } Thread.Sleep(1000); GracePeriodSecsRemaining -= 1; } SendAllPlayersMessage("TNT Wars: Grace Period is over!!!!!"); SendAllPlayersMessage("TNT Wars: You may now place " + c.red + "TNT"); } SendAllPlayersMessage("TNT Wars: " + c.white + "The Game Has Started!!!!!"); GameStatus = TntWarsGameStatus.InProgress; foreach (player p in Players) { if (p.spec == false) { p.p.canBuild = true; } } if (GracePeriod) { SendAllPlayersMessage("TNT Wars: You can now build!!"); } //MainLoop while (!Finished()) { int i = 1; //For making a top 5 (or whatever) players announcement every 3 loops (if TDM) Thread.Sleep(3 * 1000); if (Finished()) { break; //--\\ } Thread.Sleep(3 * 1000); if (Finished()) { break; //----\ } Thread.Sleep(3 * 1000); if (Finished()) { break; //-----> So that if it finsihes, we don't have to wait like 10 secs for the announcement!! } Thread.Sleep(3 * 1000); if (Finished()) { break; //----/ } Thread.Sleep(3 * 1000); if (Finished()) { break; //--// } if (GameMode == TntWarsGameMode.TDM) { if (i < 3) { SendAllPlayersScore(true, true); } if (i >= 3) { SendAllPlayersScore(true, true, true); i = 0; } i++; } else if (GameMode == TntWarsGameMode.FFA) { SendAllPlayersScore(false, true, true); } } END(); }
public override void Use(Player p, string message) { var split = message.Split(' '); if (split.Length < 2) { Help(p); return; } Player who = Player.Find(split[0]); Group newRank = Group.Find(split[1]); string msgGave = ""; string oldgroupstr = ""; if (who != null) { oldgroupstr = who.group.name; } else { Group hey = Group.findPlayerGroup(split[0]); oldgroupstr = hey.name; } if (message.Split(' ').Length > 2) { msgGave = message.Substring(message.IndexOf(' ', message.IndexOf(' ') + 1)); } else { msgGave = "Congratulations!"; } if (newRank == null) { Player.SendMessage(p, "Could not find specified rank."); return; } Group bannedGroup = Group.findPerm(LevelPermission.Banned); if (who == null) { string foundName = split[0]; if (Group.findPlayerGroup(foundName) == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (p != null) { if (Group.findPlayerGroup(foundName).Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher than you"); return; } } Group oldGroup = Group.findPlayerGroup(foundName); oldGroup.playerList.Remove(foundName); oldGroup.playerList.Save(); newRank.playerList.Add(foundName); newRank.playerList.Save(); Player.GlobalMessage(foundName + " &f(offline)" + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name); } else if (who == p) { Player.SendMessage(p, "Cannot change your own rank."); return; } else { if (p != null) { if (who.group == bannedGroup || newRank == bannedGroup) { Player.SendMessage(p, "Cannot change the rank to or from \"" + bannedGroup.name + "\"."); return; } if (who.group.Permission >= p.group.Permission || newRank.Permission >= p.group.Permission) { Player.SendMessage(p, "Cannot change the rank of someone equal or higher to yourself."); return; } } Group.because(who, newRank); if (Group.cancelrank) { Group.cancelrank = false; return; } who.group.playerList.Remove(who.name); who.group.playerList.Save(); newRank.playerList.Add(who.name); newRank.playerList.Save(); Player.GlobalChat(who, who.color + who.name + Server.DefaultColor + "'s rank was set to " + newRank.color + newRank.name, false); Player.GlobalChat(who, "&6" + msgGave, false); who.group = newRank; who.color = who.group.color; Player.GlobalDie(who, false); who.SendMessage("You are now ranked " + newRank.color + newRank.name + Server.DefaultColor + ", type /help for your new set of commands."); who.SendUserType(Block.canPlace(who.group.Permission, Block.blackrock)); Boolean tryer = true; string year = DateTime.Now.Year.ToString(); string month = DateTime.Now.Month.ToString(); string day = DateTime.Now.Day.ToString(); string hour = DateTime.Now.Hour.ToString(); string minute = DateTime.Now.Minute.ToString(); string assigner; if (p == null) { assigner = "Console"; } else { assigner = p.name; } string allrankinfos = ""; foreach (string line in File.ReadAllLines("text/rankinfo.txt")) { if (!line.Contains(split[0])) { allrankinfos = allrankinfos + line + "\r\n"; } } File.WriteAllText("text/rankinfo.txt", allrankinfos); try { StreamWriter sw; sw = File.AppendText("text/rankinfo.txt"); sw.WriteLine(who.name + " " + assigner + " " + minute + " " + hour + " " + day + " " + month + " " + year + " " + split[1] + " " + oldgroupstr); sw.Close(); } catch { tryer = false; } if (!tryer) { Player.SendMessage(p, "&cAn error occurred!"); } Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); } }
public static void Load(bool loadDatabase = false) { if (!File.Exists("properties/economy.properties")) { Server.s.Log("Economy properties don't exist, creating"); File.Create("properties/economy.properties").Close(); Save(); } using (StreamReader r = File.OpenText("properties/economy.properties")) { string line; while (!r.EndOfStream) { line = r.ReadLine().ToLower().Trim(); string[] linear = line.ToLower().Trim().Split(':'); try { switch (linear[0]) { case "enabled": if (linear[1] == "true") { Settings.Enabled = true; } else if (linear[1] == "false") { Settings.Enabled = false; } break; case "title": if (linear[1] == "price") { Settings.TitlePrice = int.Parse(linear[2]); } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Titles = true; } else if (linear[2] == "false") { Settings.Titles = false; } } break; case "color": if (linear[1] == "price") { Settings.ColorPrice = int.Parse(linear[2]); } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Colors = true; } else if (linear[2] == "false") { Settings.Colors = false; } } break; case "titlecolor": if (linear[1] == "price") { Settings.TColorPrice = int.Parse(linear[2]); } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.TColors = true; } else if (linear[2] == "false") { Settings.TColors = false; } } break; case "rank": if (linear[1] == "price") { Economy.Settings.Rank rnk = new Economy.Settings.Rank(); rnk = Economy.FindRank(linear[2]); if (rnk == null) { rnk = new Economy.Settings.Rank(); rnk.group = Group.Find(linear[2]); rnk.price = int.Parse(linear[3]); Economy.Settings.RanksList.Add(rnk); } else { Economy.Settings.RanksList.Remove(rnk); rnk.price = int.Parse(linear[3]); Economy.Settings.RanksList.Add(rnk); } } if (linear[1] == "maxrank") { //Group grp = Group.Find(linear[2]); //if (grp != null) { Settings.MaxRank = grp.Permission; } string grpname = linear[2]; if (Group.Exists(grpname)) { Settings.MaxRank = grpname; } } if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Ranks = true; } else if (linear[2] == "false") { Settings.Ranks = false; } } break; case "level": if (linear[1] == "enabled") { if (linear[2] == "true") { Settings.Levels = true; } else if (linear[2] == "false") { Settings.Levels = false; } } if (linear[1] == "levels") { Settings.Level lvl = new Settings.Level(); if (FindLevel(linear[2]) != null) { lvl = FindLevel(linear[2]); Settings.LevelsList.Remove(lvl); } switch (linear[3]) { case "name": lvl.name = linear[4]; break; case "price": lvl.price = int.Parse(linear[4]); break; case "x": lvl.x = linear[4]; break; case "y": lvl.y = linear[4]; break; case "z": lvl.z = linear[4]; break; case "type": lvl.type = linear[4]; break; } Settings.LevelsList.Add(lvl); } break; } } catch { } } r.Close(); } Save(); }