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) { switch (message.ToLower()) { case "del": p.zoneDel = true; Player.SendMessage(p, "Place a block where you would like to delete a zone."); return; default: Help(p); 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--; * }*/ Server.s.database.GetTable("Zones" + p.level.name).Truncate(); Player.SendMessage(p, "Deleted all zones."); return; } } 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) { try { if (message == "") { Help(p); return; } bool stealth = false; bool totalBan = false; if (message[0] == '#') { message = message.Remove(0, 1).Trim(); stealth = true; Server.s.Log("Stealth Ban Attempted"); } else if (message[0] == '@') { totalBan = true; message = message.Remove(0, 1).Trim(); } Player who = Player.Find(message); if (who == null) { if (!Player.ValidName(message)) { Player.SendMessage(p, "Invalid name \"" + message + "\"."); return; } Group foundGroup = Group.findPlayerGroup(message); if (foundGroup.Permission >= LevelPermission.Operator) { Player.SendMessage(p, "You can't ban a " + foundGroup.name + "!"); return; } if (foundGroup.Permission == LevelPermission.Banned) { Player.SendMessage(p, message + " is already banned."); return; } foundGroup.playerList.Remove(message); foundGroup.playerList.Save(); Player.GlobalMessage(message + " &f(offline)" + Server.DefaultColor + " is now &8banned" + Server.DefaultColor + "!"); Group.findPerm(LevelPermission.Banned).playerList.Add(message); } else { if (!Player.ValidName(who.name)) { Player.SendMessage(p, "Invalid name \"" + who.name + "\"."); return; } if (who.group.Permission >= LevelPermission.Operator) { Player.SendMessage(p, "You can't ban a " + who.group.name + "!"); return; } if (who.group.Permission == LevelPermission.Banned) { Player.SendMessage(p, message + " is already banned."); return; } who.group.playerList.Remove(message); who.group.playerList.Save(); if (stealth) { Player.GlobalMessageOps(who.color + who.name + Server.DefaultColor + " is now STEALTH &8banned" + Server.DefaultColor + "!"); } else { Player.GlobalChat(who, who.color + who.name + Server.DefaultColor + " is now &8banned" + Server.DefaultColor + "!", false); } who.group = Group.findPerm(LevelPermission.Banned); who.color = who.group.color; Player.GlobalDie(who, false); Player.GlobalSpawn(who, who.pos[0], who.pos[1], who.pos[2], who.rot[0], who.rot[1], false); Group.findPerm(LevelPermission.Banned).playerList.Add(who.name); } Group.findPerm(LevelPermission.Banned).playerList.Save(); IRCBot.Say(message + " was banned."); Server.s.Log("BANNED: " + message.ToLower()); if (totalBan == true) { Command.all.Find("undo").Use(p, message + " 0"); Command.all.Find("banip").Use(p, "@ " + message); } } catch (Exception e) { Server.ErrorLog(e); } }
public override void Use(Player p, string message) { if (message == "") { Help(p); return; } string[] parameters = message.Split(' '); // Grab the parameters from the player's message if (parameters.Length == 5) // make sure there are 5 params { switch (parameters[4]) { case "flat": case "pixel": case "island": case "mountains": case "ocean": case "forest": case "desert": break; default: Player.SendMessage(p, "Valid types: island, mountains, forest, ocean, flat, pixel, desert"); return; } string name = parameters[0].ToLower(); ushort x = 1, y = 1, z = 1; try { x = Convert.ToUInt16(parameters[1]); y = Convert.ToUInt16(parameters[2]); z = Convert.ToUInt16(parameters[3]); } catch { Player.SendMessage(p, "Invalid dimensions."); return; } if (!isGood(x)) { Player.SendMessage(p, x + " is not a good dimension! Use a power of 2 next time."); } if (!isGood(y)) { Player.SendMessage(p, y + " is not a good dimension! Use a power of 2 next time."); } if (!isGood(z)) { Player.SendMessage(p, z + " is not a good dimension! Use a power of 2 next time."); } if (!Player.ValidName(name)) { Player.SendMessage(p, "Invalid name!"); return; } try { if (p != null) { if (p.group.Permission < LevelPermission.Admin) { if (x * y * z > 30000000) { Player.SendMessage(p, "Cannot create a map with over 30million blocks"); return; } } else { if (x * y * z > 225000000) { Player.SendMessage(p, "You cannot make a map with over 225million blocks"); return; } } } } catch { Player.SendMessage(p, "An error occured"); } // create a new level... try { Level lvl = new Level(name, x, y, z, parameters[4]); lvl.Save(true); //... and save it. } finally { GC.Collect(); GC.WaitForPendingFinalizers(); } Player.GlobalMessage("Level " + name + " created"); // The player needs some form of confirmation. } else { Help(p); } }
public override void Use(Player p, string message) { if (message.Split(' ').Length < 2) { Help(p); return; } string foundPath = message.Split(' ')[1].ToLower(); if (!Player.ValidName(foundPath)) { Player.SendMessage(p, "Invalid AI name!"); return; } if (foundPath == "hunt" || foundPath == "kill") { Player.SendMessage(p, "Reserved for special AI."); return; } try { switch (message.Split(' ')[0]) { case "add": if (message.Split(' ').Length == 2) { addPoint(p, foundPath); } else if (message.Split(' ').Length == 3) { addPoint(p, foundPath, message.Split(' ')[2]); } else if (message.Split(' ').Length == 4) { addPoint(p, foundPath, message.Split(' ')[2], message.Split(' ')[3]); } else { addPoint(p, foundPath, message.Split(' ')[2], message.Split(' ')[3], message.Split(' ')[4]); } break; case "del": if (!Directory.Exists("bots/deleted")) { Directory.CreateDirectory("bots/deleted"); } int currentTry = 0; if (File.Exists("bots/" + foundPath)) { retry : try { if (message.Split(' ').Length == 2) { if (currentTry == 0) { File.Move("bots/" + foundPath, "bots/deleted/" + foundPath); } else { File.Move("bots/" + foundPath, "bots/deleted/" + foundPath + currentTry); } } else { if (message.Split(' ')[2].ToLower() == "last") { string[] Lines = File.ReadAllLines("bots/" + foundPath); string[] outLines = new string[Lines.Length - 1]; for (int i = 0; i < Lines.Length - 1; i++) { outLines[i] = Lines[i]; } File.WriteAllLines("bots/" + foundPath, outLines); Player.SendMessage(p, "Deleted the last waypoint from " + foundPath); return; } else { Help(p); return; } } } catch (IOException) { currentTry++; goto retry; } Player.SendMessage(p, "Deleted &b" + foundPath); } else { Player.SendMessage(p, "Could not find specified AI."); } break; default: Help(p); return; } } catch (Exception e) { Server.ErrorLog(e); } }
public static void Load(string givenPath, bool skipsalt = false) { if (!skipsalt) { Server.salt = ""; string rndchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; Random rnd = new Random(); for (int i = 0; i < 16; ++i) { Server.salt += rndchars[rnd.Next(rndchars.Length)]; } } if (File.Exists(givenPath)) { string[] lines = File.ReadAllLines(givenPath); foreach (string line in lines) { if (line != "" && line[0] != '#') { //int index = line.IndexOf('=') + 1; // not needed if we use Split('=') string key = line.Split('=')[0].Trim(); string value = line.Split('=')[1].Trim(); string color = ""; switch (key.ToLower()) { case "debug": Server.debugMode = (value.ToLower() == "true"); break; case "server-name": if (ValidString(value, "![]:.,{}~-+()?_/\\ ")) { Server.name = value; } else { Server.s.Log("server-name invalid! setting to default."); } break; case "motd": if (ValidString(value, "![]&:.,{}~-+()?_/\\ ")) { Server.motd = value; } else { Server.s.Log("motd invalid! setting to default."); } break; case "port": try { Server.port = Convert.ToInt32(value); } catch { Server.s.Log("port invalid! setting to default."); } break; case "upnp": Server.upnp = (value.ToLower() == "true") ? true : false; break; case "verify-names": Server.verify = (value.ToLower() == "true") ? true : false; break; case "public": Server.pub = (value.ToLower() == "true") ? true : false; break; case "premium-only": Server.premium = (value.ToLower() == "true"); break; case "world-chat": Server.worldChat = (value.ToLower() == "true") ? true : false; break; case "guest-goto": Server.guestGoto = (value.ToLower() == "true") ? true : false; break; case "max-players": try { if (Convert.ToByte(value) > 128) { value = "128"; Server.s.Log("Max players has been lowered to 128."); } else if (Convert.ToByte(value) < 1) { value = "1"; Server.s.Log("Max players has been increased to 1."); } Server.players = Convert.ToByte(value); } catch { Server.s.Log("max-players invalid! setting to default."); } break; case "max-guests": try { if (Convert.ToByte(value) > 128) { value = "128"; Server.s.Log("Max players has been lowered to 128."); } else if (Convert.ToByte(value) < 1) { value = "1"; Server.s.Log("Max players has been increased to 1."); } Server.guests = Convert.ToByte(value); } catch { Server.s.Log("max-players invalid! setting to default."); } break; case "max-maps": try { if (Convert.ToByte(value) > 100) { value = "100"; Server.s.Log("Max maps has been lowered to 100."); } else if (Convert.ToByte(value) < 1) { value = "1"; Server.s.Log("Max maps has been increased to 1."); } Server.maps = Convert.ToByte(value); } catch { Server.s.Log("max-maps invalid! setting to default."); } break; case "irc": Server.irc = (value.ToLower() == "true") ? true : false; break; case "irc-server": Server.ircServer = value; break; case "irc-nick": Server.ircNick = value; break; case "irc-channel": Server.ircChannel = value; break; case "irc-opchannel": Server.ircOpChannel = value; break; case "irc-port": try { Server.ircPort = Convert.ToInt32(value); } catch { Server.s.Log("irc-port invalid! setting to default."); } break; case "irc-identify": try { Server.ircIdentify = Convert.ToBoolean(value); } catch { Server.s.Log("irc-identify boolean value invalid! Setting to the default of: " + Server.ircIdentify + "."); } break; case "irc-password": Server.ircPassword = value; break; case "global-chat": Server.gc = (value.ToLower() == "true") ? true : false; break; case "gc-nick": Server.gcNick = value; break; case "gc-identify": Server.gcIdentify = (value.ToLower() == "true") ? true : false; break; case "gc-password": Server.gcPassword = value; break; case "anti-tunnels": Server.antiTunnel = (value.ToLower() == "true") ? true : false; break; case "max-depth": try { Server.maxDepth = Convert.ToByte(value); } catch { Server.s.Log("maxDepth invalid! setting to default."); } break; case "rplimit": try { Server.rpLimit = Convert.ToInt16(value); } catch { Server.s.Log("rpLimit invalid! setting to default."); } break; case "rplimit-norm": try { Server.rpNormLimit = Convert.ToInt16(value); } catch { Server.s.Log("rpLimit-norm invalid! setting to default."); } break; case "report-back": Server.reportBack = (value.ToLower() == "true") ? true : false; break; case "backup-time": if (Convert.ToInt32(value) > 1) { Server.backupInterval = Convert.ToInt32(value); } break; case "backup-location": if (!value.Contains("System.Windows.Forms.TextBox, Text:")) { Server.backupLocation = value; } break; case "console-only": Server.console = (value.ToLower() == "true") ? true : false; break; case "physicsrestart": Server.physicsRestart = (value.ToLower() == "true") ? true : false; break; case "deathcount": Server.deathcount = (value.ToLower() == "true") ? true : false; break; case "usemysql": Server.useMySQL = (value.ToLower() == "true") ? true : false; break; case "host": Server.MySQLHost = value; break; case "sqlport": Server.MySQLPort = value; break; case "username": Server.MySQLUsername = value; break; case "password": Server.MySQLPassword = value; break; case "databasename": Server.MySQLDatabaseName = value; break; case "pooling": try { Server.MySQLPooling = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "defaultcolor": color = c.Parse(value); if (color == "") { color = c.Name(value); if (color != "") { color = value; } else { Server.s.Log("Could not find " + value); return; } } Server.DefaultColor = color; break; case "irc-color": color = c.Parse(value); if (color == "") { color = c.Name(value); if (color != "") { color = value; } else { Server.s.Log("Could not find " + value); return; } } Server.IRCColour = color; break; case "gc-color": color = c.Parse(value); if (color == "") { color = c.Name(value); if (color != "") { color = value; } else { Server.s.Log("Could not find " + value); return; } } Server.gcColor = color; break; case "old-help": try { Server.oldHelp = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "maintenance-perm": try { sbyte parsed = sbyte.Parse(value); if (parsed < -50 || parsed > 120) { throw new FormatException(); } Server.maintPerm = (LevelPermission)parsed; } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "maintenance-kick": try { Server.maintKick = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "opchat-perm": try { sbyte parsed = sbyte.Parse(value); if (parsed < -50 || parsed > 120) { throw new FormatException(); } Server.opchatperm = (LevelPermission)parsed; } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "adminchat-perm": try { sbyte parsed = sbyte.Parse(value); if (parsed < -50 || parsed > 120) { throw new FormatException(); } Server.adminchatperm = (LevelPermission)parsed; } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "log-heartbeat": try { Server.logbeat = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "force-cuboid": try { Server.forceCuboid = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "cheapmessage": try { Server.cheapMessage = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "cheap-message-given": if (value != "") { Server.cheapMessageGiven = value; } break; case "custom-ban": try { Server.customBan = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "custom-ban-message": if (value != "") { Server.customBanMessage = value; } break; case "custom-shutdown": try { Server.customShutdown = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "custom-shutdown-message": if (value != "") { Server.customShutdownMessage = value; } break; case "rank-super": try { Server.rankSuper = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "default-rank": try { Server.defaultRank = value.ToLower(); } catch { } break; case "afk-minutes": try { Server.afkminutes = Convert.ToInt32(value); } catch { Server.s.Log("irc-port invalid! setting to default."); } break; case "afk-kick": try { Server.afkkick = Convert.ToInt32(value); } catch { Server.s.Log("irc-port invalid! setting to default."); } break; case "check-updates": try { Server.checkUpdates = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "autoload": try { Server.AutoLoad = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "auto-restart": try { Server.autorestart = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "restarttime": try { Server.restarttime = DateTime.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using defualt."); break; } break; case "parse-emotes": try { Server.parseSmiley = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); break; } break; case "use-whitelist": Server.useWhitelist = (value.ToLower() == "true") ? true : false; break; case "main-name": if (Player.ValidName(value)) { Server.level = value; } else { Server.s.Log("Invalid main name"); } break; case "dollar-before-dollar": try { Server.dollardollardollar = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); } break; case "money-name": if (value != "") { Server.moneys = value; } break; case "mono": try { Server.mono = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); } break; case "restart-on-error": try { Server.restartOnError = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); } break; case "repeat-messages": try { Server.repeatMessage = bool.Parse(value); } catch { Server.s.Log("Invalid " + key + ". Using default."); } break; case "host-state": if (value != "") { Server.ZallState = value; } break; } } } Server.s.SettingsUpdate(); Save(givenPath); } else { Save(givenPath); } }