/// <summary> /// Returns a list of players currently powered /// </summary> static public void powered(Player player, Player recipient, string payload, int bong) { if (String.IsNullOrEmpty(payload) || payload.ToLower().Contains("list")) { player.sendMessage(0, "&Currently Powered Players:"); SortedList <string, Player> granted = new SortedList <string, Player>(); //First get granted players, then cycle through mods/dev's foreach (Player p in player._arena.Players) { if (p._permissionTemp >= Data.PlayerPermission.ArenaMod) { granted.Add(p._alias, p); } } foreach (string str in granted.Keys) { player.sendMessage(0, String.Format("*{0} (granted)", str)); } //They just want to see a list of admins CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.powered; query.sender = player._alias; query.query = "list"; query.level = (int)player.PermissionLevelLocal; player._server._db.send(query); return; } }
/// <summary> /// Forces a player to squad join a specific squad /// </summary> static public void squadjoin(Player player, Player recipient, string payload, int bong) { if (player._server.IsStandalone) { player.sendMessage(-1, "Server is in stand-alone mode."); return; } if (recipient == null && String.IsNullOrWhiteSpace(payload)) { player.sendMessage(-1, ":alias:*squadjoin squadname or *squadjoin alias:squadname"); return; } string[] split = payload.Split(':'); if (recipient == null && !payload.Contains(':')) { player.sendMessage(-1, ":alias:*squadjoin squadname or *squadjoin alias:squadname"); return; } CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.squadjoin; query.sender = player._alias; query.aliasTo = recipient != null ? recipient._alias : split[0]; query.query = recipient != null ? payload : split[1]; player._server._db.send(query); }
/// <summary> /// Transfers squad ownership to a player /// </summary> static public void transfersquad(Player player, Player recipient, string payload, int bong) { if (player._server.IsStandalone) { player.sendMessage(-1, "Server is in stand-alone mode."); return; } if (recipient == null && String.IsNullOrWhiteSpace(payload)) { player.sendMessage(-1, ":alias:*transfersquad (Note: this will transfer ownership to whatever squad he/she is already on)"); player.sendMessage(0, ":alias:*transfersquad <squadname> or *transfersquad aliasTo:squadname (Both for non squadded players)"); return; } string[] split = payload.Split(':'); string squadName = String.Empty; if (recipient != null) { //We are pming them //Did we try to query a squad? if (!String.IsNullOrWhiteSpace(payload)) { squadName = payload; } else { if (String.IsNullOrWhiteSpace(recipient._squad)) { player.sendMessage(-1, "Cannot transfer squad ownership, the player is not on a squad. Use :alias:*transfersquad <squadname> instead."); return; } squadName = recipient._squad; } split[0] = recipient._alias; } else { //We arent pm'ing, make sure they used the right syntax if (!payload.Contains(':')) { player.sendMessage(0, "*transfersquad aliasTo:squadname"); return; } squadName = split[1]; } CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.squadtransfer; query.sender = player._alias; query.aliasTo = split[0]; query.query = squadName; player._server._db.send(query); }
/// <summary> /// Deletes a characters alias /// </summary> static public void removealias(Player player, Player recipient, string payload, int bong) { //Sanity checks if (player._server.IsStandalone) { player.sendMessage(-1, "Server is in stand-alone mode."); return; } string alias; if (String.IsNullOrEmpty(payload)) //Assume this is a pm'd person { if (recipient == null) { player.sendMessage(-1, "Correct usage: :player:*removealias or *removealias alias"); return; } alias = recipient._alias; recipient.sendMessage(-1, "Your alias is being deleted, you will be forced a dc."); } else { alias = payload; if ((recipient = player._arena.getPlayerByName(payload)) != null || (recipient = player._server.getPlayer(payload)) != null) { alias = recipient._alias; recipient.sendMessage(-1, "Your alias is being deleted, you will be forced a dc."); } } //For some reason the player never see's the message //so putting it here to give send message a chance if (recipient != null) { recipient.disconnect(); } //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.aliasremove; query.sender = player._alias; query.query = alias; //Send it! player._server._db.send(query); }
/// <summary> /// Creates a new packet based on the typeID and the received content /// inside the buffer. The user has to create an own implementation /// of this interface. /// </summary> public PacketBase createPacket(NetworkClient client, ushort typeID, byte[] buffer, int offset, int size) { //Ready our packet base PacketBase packet = null; size--; //Was it a system packet? if (buffer[offset++] == 0) { //Yes, find the appropriate type return(createSystemPacket(typeID, buffer, offset, size)); } //So what was the typeid? switch (typeID) { case CS_Auth <T> .TypeID: packet = new CS_Auth <T>(typeID, buffer, offset, size); break; case CS_PlayerLogin <T> .TypeID: packet = new CS_PlayerLogin <T>(typeID, buffer, offset, size); break; case CS_PlayerUpdate <T> .TypeID: packet = new CS_PlayerUpdate <T>(typeID, buffer, offset, size); break; case CS_PlayerLeave <T> .TypeID: packet = new CS_PlayerLeave <T>(typeID, buffer, offset, size); break; case CS_PlayerBanner <T> .TypeID: packet = new CS_PlayerBanner <T>(typeID, buffer, offset, size); break; case CS_PlayerStatsRequest <T> .TypeID: packet = new CS_PlayerStatsRequest <T>(typeID, buffer, offset, size); break; case CS_Whisper <T> .TypeID: packet = new CS_Whisper <T>(typeID, buffer, offset, size); break; case CS_JoinChat <T> .TypeID: packet = new CS_JoinChat <T>(typeID, buffer, offset, size); break; case CS_LeaveChat <T> .TypeID: packet = new CS_LeaveChat <T>(typeID, buffer, offset, size); break; case CS_PrivateChat <T> .TypeID: packet = new CS_PrivateChat <T>(typeID, buffer, offset, size); break; case CS_ModCommand <T> .TypeID: packet = new CS_ModCommand <T>(typeID, buffer, offset, size); break; case CS_Squads <T> .TypeID: packet = new CS_Squads <T>(typeID, buffer, offset, size); break; case CS_ChatQuery <T> .TypeID: packet = new CS_ChatQuery <T>(typeID, buffer, offset, size); break; case Disconnect <T> .TypeID: packet = new Disconnect <T>(typeID, buffer, offset, size); break; case CS_Ban <T> .TypeID: packet = new CS_Ban <T>(typeID, buffer, offset, size); break; case CS_SquadMatch <T> .TypeID: packet = new CS_SquadMatch <T>(typeID, buffer, offset, size); break; case CS_ModQuery <T> .TypeID: packet = new CS_ModQuery <T>(typeID, buffer, offset, size); break; case CS_ChatCommand <T> .TypeID: packet = new CS_ChatCommand <T>(typeID, buffer, offset, size); break; case CS_StatsUpdate <T> .TypeID: packet = new CS_StatsUpdate <T>(typeID, buffer, offset, size); break; case CS_ArenaUpdate <T> .TypeID: packet = new CS_ArenaUpdate <T>(typeID, buffer, offset, size); break; default: //An undefined packet. packet = new PacketDummy(typeID, buffer, offset, size); break; } return(packet); }
public bool playerModCommand(Player player, Player recipient, string command, string payload) { command = (command.ToLower()); if (command.Equals("setup")) { if (player.PermissionLevelLocal < Data.PlayerPermission.ArenaMod) { return(false); } if (!bases.ContainsKey(payload.ToUpper())) { player.sendMessage(-1, "That base is not recognized, Options are: "); foreach (string key in bases.Keys) { player.sendMessage(0, key); } return(true); } Base defense = bases[payload.ToUpper()]; arena.itemSpawn(arena._server._assets.getItemByID(2005), 150, defense.x, defense.y, 100, null); arena.itemSpawn(arena._server._assets.getItemByID(2009), 150, defense.x, defense.y, 100, null); //arena.itemSpawn(arena._server._assets.getItemByID(23), 2, defense.x, defense.y, 100, null); //arena.itemSpawn(arena._server._assets.getItemByID(10), 2, defense.x, defense.y, 100, null); //arena.itemSpawn(arena._server._assets.getItemByID(11), 1, defense.x, defense.y, 100, null); //arena.itemSpawn(arena._server._assets.getItemByID(9), 1, defense.x, defense.y, 100, null); Arena.FlagState flag = arena.getFlag("Bridge3"); flag.posX = defense.flagX; flag.posY = defense.flagY; Helpers.Object_Flags(arena.Players, flag); arena.sendArenaMessage(String.Format("&Minerals, flag, and auto-kits dropped at {0}", payload.ToUpper())); return(true); } if (command.Equals("healall")) { if (player.PermissionLevelLocal < Data.PlayerPermission.ArenaMod) { return(false); } foreach (Player p in arena.PlayersIngame) { p.inventoryModify(104, 1); } arena.sendArenaMessage("&All players have been healed"); return(true); } if (command.Equals("poweradd")) { if (player.PermissionLevelLocal < Data.PlayerPermission.SMod) { player.sendMessage(-1, "Nice try."); return(false); } int level = (int)Data.PlayerPermission.ArenaMod; //Pm'd? if (recipient != null) { //Check for a possible level if (!string.IsNullOrWhiteSpace(payload)) { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "Invalid level. Level must be either 1 or 2."); return(false); } if (level < 1 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, ":alias:*poweradd level(optional), :alias:*poweradd level (Defaults to 1)"); player.sendMessage(0, "Note: there can only be 1 admin level."); return(false); } switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient._developer = true; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", recipient._alias, level)); } else { recipient._developer = true; recipient._permissionStatic = Data.PlayerPermission.ArenaMod; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", recipient._alias, level)); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return(true); } else { //We arent //Get name and possible level Int16 number; if (string.IsNullOrEmpty(payload)) { player.sendMessage(-1, "*poweradd alias:level(optional) Note: if using a level, put : before it otherwise defaults to arena mod"); player.sendMessage(0, "Note: there can only be 1 admin."); return(false); } if (payload.Contains(':')) { string[] param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number >= 0) { level = number; } } catch { player.sendMessage(-1, "That is not a valid level. Possible powering levels are 1 or 2."); return(false); } if (level < 1 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, string.Format("*poweradd alias:level(optional) OR :alias:*poweradd level(optional) possible levels are 1-{0}", ((int)player.PermissionLevelLocal).ToString())); player.sendMessage(0, "Note: there can be only 1 admin level."); return(false); } payload = param[0]; } player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", payload, level)); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient._developer = true; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return(true); } } if (command.Equals("powerremove")) { if (player.PermissionLevelLocal < Data.PlayerPermission.SMod) { player.sendMessage(-1, "Nice try."); return(false); } int level = (int)Data.PlayerPermission.Normal; //Pm'd? if (recipient != null) { //Check for a possible level if (!string.IsNullOrWhiteSpace(payload)) { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "Invalid level. Levels must be between 0 and 2."); return(false); } if (level < 0 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, ":alias:*powerremove level(optional), :alias:*powerremove level (Defaults to 0)"); return(false); } switch (level) { case 0: recipient._permissionStatic = Data.PlayerPermission.Normal; recipient._developer = false; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient.sendMessage(0, string.Format("You have been demoted to level {0}.", level)); player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", recipient._alias, level)); } else { recipient._developer = false; recipient._permissionStatic = Data.PlayerPermission.Normal; recipient.sendMessage(0, string.Format("You have been demoted to level {0}.", level)); player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", recipient._alias, level)); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return(true); } else { //We arent //Get name and possible level Int16 number; if (string.IsNullOrEmpty(payload)) { player.sendMessage(-1, "*powerremove alias:level(optional) Note: if using a level, put : before it otherwise defaults to arena mod"); return(false); } if (payload.Contains(':')) { string[] param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number >= 0) { level = number; } } catch { player.sendMessage(-1, "That is not a valid level. Possible depowering levels are between 0 and 2."); return(false); } if (level < 0 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, string.Format("*powerremove alias:level(optional) OR :alias:*powerremove level(optional) possible levels are 0-{0}", ((int)player.PermissionLevelLocal).ToString())); return(false); } payload = param[0]; } player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", payload, level)); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 0: recipient._permissionStatic = Data.PlayerPermission.Normal; recipient._developer = false; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient.sendMessage(0, string.Format("You have been depowered to level {0}.", level)); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return(true); } } return(false); }
public bool playerModCommand(Player player, Player recipient, string command, string payload) { command = (command.ToLower()); if (command.Equals("squadfind") && player.PermissionLevelLocal >= Data.PlayerPermission.Mod) { if (string.IsNullOrWhiteSpace(payload) && recipient == null) { player.sendMessage(-1, "Sytax: *squadfind alias OR ::*squadfind"); return(false); } if (_gamePlay.ActiveSquads == null) { player.sendMessage(-1, "Cannot search for the player; the active squad list does not exist."); return(false); } if (recipient != null && _gamePlay.ActiveSquads.ContainsKey(recipient._alias.ToLower())) { player.sendMessage(0, string.Format("Player: {0} - Squad: {1}", recipient._alias, _gamePlay.ActiveSquads[recipient._alias.ToLower()])); return(true); } else if (_gamePlay.ActiveSquads.ContainsKey(payload.ToLower())) { player.sendMessage(0, string.Format("Player: {0} - Squad: {1}", payload, _gamePlay.ActiveSquads[payload.ToLower()])); return(true); } else { player.sendMessage(0, "That player doesn't seem to be on a usl squad."); return(true); } } if (command.Equals("mvp") && player.PermissionLevelLocal >= Data.PlayerPermission.Mod) { if (string.IsNullOrWhiteSpace(payload) && recipient == null) { player.sendMessage(-1, "Syntax: *mvp alias OR ::*mvp"); return(false); } if (!_gamePlay.AwardMVP) { player.sendMessage(-1, "Cannot award yet till the end of a match."); return(false); } Player target = recipient != null ? recipient : _arena.getPlayerByName(payload); _arena.sendArenaMessage("MVP award goes to......... "); _arena.sendArenaMessage(target != null ? target._alias : payload); if (target != null) { target.ZoneStat3 += 1; _arena._server._db.updatePlayer(target); } if (!string.IsNullOrEmpty(_gamePlay.GetFileName)) { StreamWriter fs = Logic_File.OpenStatFile(_gamePlay.GetFileName, string.Format("Season {0}", _gamePlay.LeagueSeason.ToString())); fs.WriteLine("Referee: {0}", player._alias); fs.WriteLine(); fs.WriteLine("MVP: {0}", target != null ? target._alias : payload); fs.Close(); } _gamePlay.AwardMVP = false; return(true); } if (command.Equals("setscore")) { if (string.IsNullOrEmpty(payload)) { player.sendMessage(-1, "Syntax: *setscore 1,2 (In order by teamname per scoreboard)"); return(false); } if (!payload.Contains(',')) { player.sendMessage(-1, "Error in syntax, missing comma seperation."); return(false); } string[] args = payload.Split(','); if (!Helpers.IsNumeric(args[0]) || !Helpers.IsNumeric(args[1])) { player.sendMessage(-1, "Value is not numeric."); return(false); } IEnumerable <Team> activeTeams = _arena.ActiveTeams; if (activeTeams.ElementAt(0) != null) { int.TryParse(args[0].Trim(), out activeTeams.ElementAt(0)._currentGameKills); } if (activeTeams.ElementAt(1) != null) { int.TryParse(args[1].Trim(), out activeTeams.ElementAt(1)._currentGameKills); } //Immediately notify the change _gamePlay.UpdateTickers(); return(true); } if (command.Equals("poweradd")) { if (player.PermissionLevelLocal < Data.PlayerPermission.SMod) { player.sendMessage(-1, "Nice try."); return(false); } int level = (int)Data.PlayerPermission.ArenaMod; //Pm'd? if (recipient != null) { //Check for a possible level if (!string.IsNullOrWhiteSpace(payload)) { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "Invalid level. Level must be either 1 or 2."); return(false); } if (level < 1 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, ":alias:*poweradd level(optional), :alias:*poweradd level (Defaults to 1)"); player.sendMessage(0, "Note: there can only be 1 admin level."); return(false); } switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient._developer = true; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", recipient._alias, level)); } else { recipient._developer = true; recipient._permissionStatic = Data.PlayerPermission.ArenaMod; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", recipient._alias, level)); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return(true); } else { //We arent //Get name and possible level short number; if (string.IsNullOrEmpty(payload)) { player.sendMessage(-1, "Syntax: *poweradd alias:level(optional) Note: if using a level, put : before it otherwise defaults to arena mod"); player.sendMessage(0, "Note: there can only be 1 admin."); return(false); } if (payload.Contains(':')) { string[] param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number >= 0) { level = number; } } catch { player.sendMessage(-1, "That is not a valid level. Possible powering levels are 1 or 2."); return(false); } if (level < 1 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, string.Format("Syntax: *poweradd alias:level(optional) OR :alias:*poweradd level(optional) possible levels are 1-{0}", ((int)player.PermissionLevelLocal).ToString())); player.sendMessage(0, "Note: there can be only 1 admin level."); return(false); } payload = param[0]; } player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", payload, level)); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient._developer = true; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return(true); } } if (command.Equals("powerremove")) { if (player.PermissionLevelLocal < Data.PlayerPermission.SMod) { player.sendMessage(-1, "Nice try."); return(false); } int level = (int)Data.PlayerPermission.Normal; //Pm'd? if (recipient != null) { //Check for a possible level if (!string.IsNullOrWhiteSpace(payload)) { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "Invalid level. Levels must be between 0 and 2."); return(false); } if (level < 0 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, ":alias:*powerremove level(optional), :alias:*powerremove level (Defaults to 0)"); return(false); } switch (level) { case 0: recipient._permissionStatic = Data.PlayerPermission.Normal; recipient._developer = false; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient.sendMessage(0, string.Format("You have been demoted to level {0}.", level)); player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", recipient._alias, level)); } else { recipient._developer = false; recipient._permissionStatic = Data.PlayerPermission.Normal; recipient.sendMessage(0, string.Format("You have been demoted to level {0}.", level)); player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", recipient._alias, level)); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return(true); } else { //We arent //Get name and possible level short number; if (string.IsNullOrEmpty(payload)) { player.sendMessage(-1, "Syntax: *powerremove alias:level(optional) Note: if using a level, put : before it otherwise defaults to arena mod"); return(false); } if (payload.Contains(':')) { string[] param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number >= 0) { level = number; } } catch { player.sendMessage(-1, "That is not a valid level. Possible depowering levels are between 0 and 2."); return(false); } if (level < 0 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, string.Format("Syntax: *powerremove alias:level(optional) OR :alias:*powerremove level(optional) possible levels are 0-{0}", ((int)player.PermissionLevelLocal).ToString())); return(false); } payload = param[0]; } player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", payload, level)); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 0: recipient._permissionStatic = Data.PlayerPermission.Normal; recipient._developer = false; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient.sendMessage(0, string.Format("You have been depowered to level {0}.", level)); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return(true); } } if (command.Equals("event")) { var names = _gamePlay.CurrentEventTypes; if (names.Count == 0) { player.sendMessage(-1, "There are no events currently available."); return(false); } if (string.IsNullOrEmpty(payload)) { //If an event is active, show what it is if (_gamePlay.Events) { player.sendMessage(0, string.Format("Current active event - {0}", Enum.GetName(typeof(Settings.EventTypes), _gamePlay._eventType))); } string options = string.Join(", ", names); player.sendMessage(-1, string.Format("Syntax: *event <event name> - Options are {0}.", options)); player.sendMessage(0, "Use *event off to stop events and return to normal gameplay."); return(false); } if (payload.Equals("off")) { EventOff += OnEventOff; _arena.sendArenaMessage("All Events will be turned off at the end of this game."); return(true); } if (!names.Contains(payload, StringComparer.OrdinalIgnoreCase)) { player.sendMessage(-1, "That is not a valid option."); string options = string.Join(", ", names); player.sendMessage(0, string.Format("Syntax: *event <event name> - Options are {0} (use *event off to stop the event)", options)); return(false); } Settings.EventTypes eType; foreach (string s in names) { if (s.Equals(payload, StringComparison.OrdinalIgnoreCase)) { if (Enum.TryParse(s, out eType)) { _gamePlay._eventType = eType; _arena.sendArenaMessage(string.Format("Event {0} is now ON!", s)); _gamePlay.Events = true; if (EventOff != null) { //Still active, lets reset EventOff -= EventOff; } return(true); } } } } if (command.Equals("spawnevent")) { var names = Enum.GetNames(typeof(Settings.SpawnEventTypes)); if (string.IsNullOrEmpty(payload)) { //If an event is active, show what it is if (_gamePlay.SpawnEvent) { player.sendMessage(0, String.Format("Current active event - {0}", Enum.GetName(typeof(Settings.SpawnEventTypes), _gamePlay._spawnEventType))); } string options = string.Join(", ", names); player.sendMessage(-1, string.Format("Syntax: *spawnevent <event name> - Options are {0}.", options)); player.sendMessage(0, "If you want to set or disable a halfway point for 30k's, use *spawnevent timer"); player.sendMessage(0, "Use *spawnevent off to stop events and return to normal gameplay."); return(false); } if (payload.Equals("off")) { _gamePlay.SpawnTimer = 0; _gamePlay.SpawnEvent = false; _arena.sendArenaMessage("Spawned Events are now turned off."); return(true); } if ((!player._developer && player.PermissionLevel < Data.PlayerPermission.Mod) || (player._developer && player.PermissionLevelLocal < Data.PlayerPermission.SMod)) { player.sendMessage(-1, "Only Mods/Zone Admins can set the 30k event."); return(false); } if (payload.Equals("timer")) { //We even activated? if (!_gamePlay.SpawnEvent) { player.sendMessage(-1, "Spawn Events are not activated yet."); return(false); } //If this hasnt been activated, lets turn it on if (_gamePlay.SpawnTimer == 0) { Random rand = new Random(); int midpoint = ((_config.deathMatch.timer / 60) / 2); //Deathmatch is in seconds, need to convert to minutes then find halfway point _gamePlay.SpawnTimer = rand.Next(midpoint - 1, midpoint + 1); //Lets randomize mid point player.sendMessage(0, "Midpoint timer has been activated."); return(true); } //It has, turn it off _gamePlay.SpawnTimer = 0; player.sendMessage(0, "Midpoint timer has been deactivated."); return(true); } if (!names.Contains(payload, StringComparer.OrdinalIgnoreCase)) { player.sendMessage(-1, "That is not a valid option."); string options = string.Join(", ", names); player.sendMessage(0, string.Format("Syntax: *spawnevent <event name> - Options are {0} (use *spawnevent off to stop the event)", options)); return(false); } Settings.SpawnEventTypes eType; foreach (string s in names) { if (s.Equals(payload, StringComparison.OrdinalIgnoreCase)) { if (Enum.TryParse(s, out eType)) { _gamePlay._spawnEventType = eType; _arena.sendArenaMessage(string.Format("SpawnEvent {0} has been turned ON!", s)); _gamePlay.SpawnEvent = true; return(true); } } } } return(false); }
public bool playerModCommand(Player player, Player recipient, string command, string payload) { command = (command.ToLower()); if (command.Equals("poweradd")) { if (player.PermissionLevelLocal < Data.PlayerPermission.SMod) { player.sendMessage(-1, "Nice try."); return(false); } int level = (int)Data.PlayerPermission.ArenaMod; //Pm'd? if (recipient != null) { //Check for a possible level if (!string.IsNullOrWhiteSpace(payload)) { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "Invalid level. Level must be either 1 or 2."); return(false); } if (level < 1 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, ":alias:*poweradd level(optional), :alias:*poweradd level (Defaults to 1)"); player.sendMessage(0, "Note: there can only be 1 admin level."); return(false); } switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient._developer = true; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", recipient._alias, level)); } else { recipient._developer = true; recipient._permissionStatic = Data.PlayerPermission.ArenaMod; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", recipient._alias, level)); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return(true); } else { //We arent //Get name and possible level Int16 number; if (string.IsNullOrEmpty(payload)) { player.sendMessage(-1, "*poweradd alias:level(optional) Note: if using a level, put : before it otherwise defaults to arena mod"); player.sendMessage(0, "Note: there can only be 1 admin."); return(false); } if (payload.Contains(':')) { string[] param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number >= 0) { level = number; } } catch { player.sendMessage(-1, "That is not a valid level. Possible powering levels are 1 or 2."); return(false); } if (level < 1 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, string.Format("*poweradd alias:level(optional) OR :alias:*poweradd level(optional) possible levels are 1-{0}", ((int)player.PermissionLevelLocal).ToString())); player.sendMessage(0, "Note: there can be only 1 admin level."); return(false); } payload = param[0]; } player.sendMessage(0, string.Format("You have promoted {0} to level {1}.", payload, level)); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient._developer = true; recipient.sendMessage(0, string.Format("You have been powered to level {0}. Use *help to familiarize with the commands and please read all rules.", level)); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return(true); } } if (command.Equals("powerremove")) { if (player.PermissionLevelLocal < Data.PlayerPermission.SMod) { player.sendMessage(-1, "Nice try."); return(false); } int level = (int)Data.PlayerPermission.Normal; //Pm'd? if (recipient != null) { //Check for a possible level if (!string.IsNullOrWhiteSpace(payload)) { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "Invalid level. Levels must be between 0 and 2."); return(false); } if (level < 0 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, ":alias:*powerremove level(optional), :alias:*powerremove level (Defaults to 0)"); return(false); } switch (level) { case 0: recipient._permissionStatic = Data.PlayerPermission.Normal; recipient._developer = false; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient.sendMessage(0, string.Format("You have been demoted to level {0}.", level)); player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", recipient._alias, level)); } else { recipient._developer = false; recipient._permissionStatic = Data.PlayerPermission.Normal; recipient.sendMessage(0, string.Format("You have been demoted to level {0}.", level)); player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", recipient._alias, level)); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return(true); } else { //We arent //Get name and possible level Int16 number; if (string.IsNullOrEmpty(payload)) { player.sendMessage(-1, "*powerremove alias:level(optional) Note: if using a level, put : before it otherwise defaults to arena mod"); return(false); } if (payload.Contains(':')) { string[] param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number >= 0) { level = number; } } catch { player.sendMessage(-1, "That is not a valid level. Possible depowering levels are between 0 and 2."); return(false); } if (level < 0 || level > (int)player.PermissionLevelLocal || level == (int)Data.PlayerPermission.SMod) { player.sendMessage(-1, string.Format("*powerremove alias:level(optional) OR :alias:*powerremove level(optional) possible levels are 0-{0}", ((int)player.PermissionLevelLocal).ToString())); return(false); } payload = param[0]; } player.sendMessage(0, string.Format("You have demoted {0} to level {1}.", payload, level)); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 0: recipient._permissionStatic = Data.PlayerPermission.Normal; recipient._developer = false; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; } recipient.sendMessage(0, string.Format("You have been depowered to level {0}.", level)); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return(true); } } return(false); }
/// <summary> /// Takes away a player dev powers /// </summary> static public void devremove(Player player, Player recipient, string payload, int bong) { if (player._server.IsStandalone) { player.sendMessage(-1, "Server is in stand-alone mode. Dev de-powering will be temporary."); } string[] param; int level = (int)Data.PlayerPermission.Normal; //Check if we are pm'ing first if (recipient != null) { //Check for a possible level usage if (payload != "") { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "*devremove alias:level(optional) OR :alias:*devremove level(optional) possible levels are 0-5"); player.sendMessage(0, "NOTE: to depower someone, make sure you are in the zone you want them depowered in."); return; } if (level < 0 || level > 5) { player.sendMessage(-1, "*devremove alias:level(optional) OR :alias:*devremove level(optional) possible levels are 0-5"); player.sendMessage(0, "NOTE: to depower someone, make sure you are in the zone you want them depowered in."); return; } switch (level) { case 0: recipient._permissionStatic = Data.PlayerPermission.Normal; recipient._developer = false; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; case 3: recipient._permissionStatic = Data.PlayerPermission.SMod; break; case 4: recipient._permissionStatic = Data.PlayerPermission.Manager; break; case 5: recipient._permissionStatic = Data.PlayerPermission.Sysop; break; } recipient.sendMessage(0, "You have been dev demoted to level " + level + "."); player.sendMessage(0, "You have dev demoted " + recipient._alias + " to level " + level + "."); } else //No level provided, use default { recipient._developer = false; recipient._permissionStatic = Data.PlayerPermission.Normal; recipient.sendMessage(0, "You have been dev demoted to level " + level + "."); player.sendMessage(0, "You have dev demoted " + recipient._alias + " to level " + level + "."); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return; } else //We arent { //Get name and possible level Int16 number; if (String.IsNullOrEmpty(payload)) { player.sendMessage(-1, "*devremove alias:level(optional) Note: if using a level, put : before it otherwise defaults to a normal player"); player.sendMessage(0, "NOTE: to depower someone, make sure you are in the zone you want them depowered in."); return; } if (payload.Contains(':')) { param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number >= 0) { level = number; } } catch (OverflowException) { player.sendMessage(-1, "That is not a valid level. Possible demotion levels are 0-5."); return; } if (level < 0 || level > 5) { player.sendMessage(-1, "*devremove alias:level(optional) OR :alias:*devremove level(optional) possible levels are 0-5"); player.sendMessage(0, "NOTE: to depower someone, make sure you are in the zone you want them depowered in."); return; } payload = param[0]; } player.sendMessage(0, "You have dev demoted " + payload + " to level " + level + "."); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 0: recipient._developer = false; recipient._permissionStatic = Data.PlayerPermission.Normal; break; case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; case 3: recipient._permissionStatic = Data.PlayerPermission.SMod; break; case 4: recipient._permissionStatic = Data.PlayerPermission.Manager; break; case 5: recipient._permissionStatic = Data.PlayerPermission.Sysop; break; } recipient.sendMessage(0, "You have been dev demoted to level " + level + "."); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.dev; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return; } }
/// <summary> /// Gives a player mod powers /// </summary> static public void modadd(Player player, Player recipient, string payload, int bong) { if (player._server.IsStandalone) { player.sendMessage(-1, "Server is in stand-alone mode. Mod powering will be temporary."); } string[] param; int level = (int)Data.PlayerPermission.ArenaMod; //Check if we are pm'ing first if (recipient != null) { //Check for a possible level usage if (payload != "") { try { level = Convert.ToInt16(payload); } catch { player.sendMessage(-1, "*modadd alias:level(optional) OR :alias:*modadd level(optional) possible levels are 1-5"); return; } if (level < 1 || level > 5) { player.sendMessage(-1, "*modadd alias:level(optional) OR :alias:*modadd level(optional) possible levels are 1-5"); return; } switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; case 3: recipient._permissionStatic = Data.PlayerPermission.SMod; break; case 4: recipient._permissionStatic = Data.PlayerPermission.Manager; break; case 5: recipient._permissionStatic = Data.PlayerPermission.Sysop; break; } recipient.sendMessage(0, "You have been mod promoted to level " + level + ". Use *help to familiarize yourself with the commands given and read the rules."); player.sendMessage(0, "You have mod promoted " + recipient._alias + " to level " + level + "."); } else //No level provided, use default { recipient._permissionStatic = Data.PlayerPermission.ArenaMod; recipient.sendMessage(0, "You have been mod promoted to level " + level + ". Use *help to familiarize yourself with the commands and read the rules."); player.sendMessage(0, "You have mod promoted " + recipient._alias + " to level " + level + "."); } //Lets send it to the database //Send it to the db CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.mod; query.sender = player._alias; query.query = recipient._alias; query.level = level; //Send it! player._server._db.send(query); return; } else //We arent { //Get name and possible level Int16 number; if (String.IsNullOrEmpty(payload)) { player.sendMessage(-1, "*modadd alias:level(optional) Note: if using a level, put : before it otherwise defaults to arena mod"); return; } if (payload.Contains(':')) { param = payload.Split(':'); try { number = Convert.ToInt16(param[1]); if (number == 0) { number = 1; } } catch (OverflowException) { player.sendMessage(-1, "That is not a valid level. Possible levels are 1-5."); return; } if (level < 1 || level > 5) { player.sendMessage(-1, "*modadd alias:level(optional) OR :alias:*modadd level(optional) possible levels are 1-5"); return; } payload = param[0]; level = number; } player.sendMessage(0, "You have mod promoted " + payload + " to level " + level + "."); if ((recipient = player._server.getPlayer(payload)) != null) { //They are playing, lets update them switch (level) { case 1: recipient._permissionStatic = Data.PlayerPermission.ArenaMod; break; case 2: recipient._permissionStatic = Data.PlayerPermission.Mod; break; case 3: recipient._permissionStatic = Data.PlayerPermission.SMod; break; case 4: recipient._permissionStatic = Data.PlayerPermission.Manager; break; case 5: recipient._permissionStatic = Data.PlayerPermission.Sysop; break; } recipient.sendMessage(0, "You have been mod promoted to level " + level + ". Use *help to familiarize yourself with the commands given and read the rules."); } //Lets send it off CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.mod; query.sender = player._alias; query.query = payload; query.level = level; //Send it! player._server._db.send(query); return; } }
/// <summary> /// Rename's the players alias /// </summary> static public void renamealias(Player player, Player recipient, string payload, int bong) { if (player._server.IsStandalone) { player.sendMessage(-1, "Server is in stand-alone mode."); return; } string alias = ""; string aliasTo; string[] param; //Are we pm'ing someone? if (recipient == null) { if (!payload.Contains(':')) { player.sendMessage(-1, "Syntax: *renamealias alias:new alias"); return; } param = payload.Split(':'); aliasTo = param[0]; alias = param[1]; if ((recipient = player._arena.getPlayerByName(param[0])) != null || (recipient = player._server.getPlayer(param[0])) != null) { aliasTo = recipient._alias; //Since they are here, lets dc them to complete the transfer recipient.sendMessage(-1, "You are being forced to dc to complete the alias rename."); } } else { if (String.IsNullOrEmpty(payload)) { player.sendMessage(-1, "Syntax: :playerGoingTo:*renamealias newAlias"); return; } //Our alias is playing, force a dc recipient.sendMessage(-1, "You are being forced a dc to rename the alias."); alias = payload; aliasTo = recipient._alias; } //For some reason the player never see's the message //so putting it here to give send message a chance if (recipient != null) { recipient.disconnect(); } CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.aliasrename; query.sender = player._alias; query.aliasTo = aliasTo; query.query = alias; //Send it! player._server._db.send(query); }
/// <summary> /// Alias transfers between accounts /// </summary> public static void transferalias(Player player, Player recipient, string payload, int bong) { //Sanity checks if (player._server.IsStandalone) { player.sendMessage(-1, "Server is in stand-alone mode."); return; } if (String.IsNullOrEmpty(payload)) { player.sendMessage(-1, "Syntax: either *transferalias aliasGoingTo:alias in question OR :playerGoingTo:*transferalias aliastotransfer"); return; } string alias = ""; string aliasTo; string[] param; //Are we pm'ing someone? if (recipient == null) { //Nope if (!payload.Contains(':')) { player.sendMessage(-1, "Syntax: *transferalias aliasGoingTo:alias in question"); return; } param = payload.Split(':'); aliasTo = param[0]; if ((recipient = player._arena.getPlayerByName(param[1])) != null || (recipient = player._server.getPlayer(param[1])) != null) { alias = recipient._alias; //The alias is playing, dc them recipient.sendMessage(-1, "You are being forced a dc to transfer this alias."); recipient.disconnect(); } else { alias = param[1]; } } else { if (String.IsNullOrEmpty(payload)) { player.sendMessage(-1, "Syntax: :playerGoingTo:*transferalias aliasToTransfer"); return; } Player online; //Our transfer alias is playing, force a dc if ((online = player._arena.getPlayerByName(payload)) != null || (online = player._server.getPlayer(payload)) != null) { alias = online._alias; online.sendMessage(-1, "You are being forced a dc to transfer the alias."); online.disconnect(); } else { alias = payload; } aliasTo = recipient._alias; } CS_ModQuery <Data.Database> query = new CS_ModQuery <Data.Database>(); query.queryType = CS_ModQuery <Data.Database> .QueryType.aliastransfer; query.sender = player._alias; query.aliasTo = aliasTo; query.query = alias; //Send it! player._server._db.send(query); }
/// <summary> /// Handles a query packet /// </summary> static public void Handle_CS_ModQuery(CS_ModQuery <Zone> pkt, Zone zone) { using (InfantryDataContext db = zone._server.getContext()) { switch (pkt.queryType) { case CS_ModQuery <Zone> .QueryType.aliastransfer: { if (string.IsNullOrEmpty(pkt.query) || string.IsNullOrEmpty(pkt.aliasTo)) { zone._server.sendMessage(zone, pkt.sender, "Wrong format typed."); return; } //Who the alias is going to Data.DB.alias paliasTo = db.alias.FirstOrDefault(aTo => string.Compare(aTo.name, pkt.aliasTo, true) == 0); if (paliasTo == null) { zone._server.sendMessage(zone, pkt.sender, "Cant find the recipient's alias."); return; } //The alias in question Data.DB.alias alias = db.alias.FirstOrDefault(a => string.Compare(a.name, pkt.query, true) == 0); Data.DB.player playerA = db.players.FirstOrDefault(p => string.Compare(p.alias1.name, pkt.query, true) == 0); if (alias == null) { zone._server.sendMessage(zone, pkt.sender, "Can't find the alias in question, maybe its not created yet."); return; } if (playerA == null) { //Since structure doesn't exist, go ahead and transfer alias.IPAddress = paliasTo.IPAddress.Trim(); alias.timeplayed = 0; alias.account = paliasTo.account; alias.account1 = paliasTo.account1; db.SubmitChanges(); zone._server.sendMessage(zone, pkt.sender, "Alias transfer completed."); return; } //Check for a squad if (playerA.squad != null) { IQueryable <Data.DB.player> squadmates = db.players.Where(plyr => plyr.zone == playerA.zone && plyr.squad != null && plyr.squad == playerA.squad); if (playerA.squad1.owner == playerA.id) { if (squadmates.Count() > 1) { Data.DB.player temp = squadmates.FirstOrDefault(p => p.id != playerA.id); //Since the player is the owner, lets just give it to someone else temp.squad1.owner = temp.id; } else if (squadmates.Count() == 1) { //Lets delete the squad db.squads.DeleteOnSubmit(playerA.squad1); db.SubmitChanges(); } } playerA.squad1 = null; playerA.squad = null; } //Lets delete stats/player structures //Note: the server will treat this as a new alias and create structures db.stats.DeleteOnSubmit(playerA.stats1); db.players.DeleteOnSubmit(playerA); //Now lets transfer alias.IPAddress = paliasTo.IPAddress.Trim(); alias.timeplayed = 0; alias.account = paliasTo.account; alias.account1 = paliasTo.account1; db.SubmitChanges(); zone._server.sendMessage(zone, pkt.sender, "Alias transfer completed."); } break; case CS_ModQuery <Zone> .QueryType.aliasremove: { if (string.IsNullOrEmpty(pkt.query)) { zone._server.sendMessage(zone, pkt.sender, "Wrong format typed."); return; } //Lets get all account related info then delete it Data.DB.alias palias = db.alias.FirstOrDefault(a => string.Compare(a.name, pkt.query, true) == 0); Data.DB.player player = db.players.FirstOrDefault(p => string.Compare(p.alias1.name, pkt.query, true) == 0); if (palias == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified alias."); return; } if (player == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified player."); return; } //Check for a squad if (player.squad != null) { IQueryable <Data.DB.player> squadmates = db.players.Where(plyr => plyr.zone == player.zone && plyr.squad != null && plyr.squad == player.squad); if (player.squad1.owner == player.id) { if (squadmates.Count() > 1) { Data.DB.player temp = squadmates.FirstOrDefault(p => p.id != player.id); //Since the player is the owner, lets just give it to someone else temp.squad1.owner = temp.id; } else if (squadmates.Count() == 1) { //Lets delete the squad db.squads.DeleteOnSubmit(player.squad1); } db.SubmitChanges(); } player.squad1 = null; player.squad = null; } //Now lets remove stats db.stats.DeleteOnSubmit(player.stats1); //Next the player structure db.players.DeleteOnSubmit(player); //Finally the alias db.alias.DeleteOnSubmit(palias); db.SubmitChanges(); zone._server.sendMessage(zone, pkt.sender, "Alias has been deleted."); } break; case CS_ModQuery <Zone> .QueryType.aliasrename: { if (string.IsNullOrEmpty(pkt.query)) { zone._server.sendMessage(zone, pkt.sender, "Wrong format typed."); return; } //Get all account related info Data.DB.alias paliasTo = db.alias.FirstOrDefault(aTo => string.Compare(aTo.name, pkt.aliasTo, true) == 0); Data.DB.alias alias = db.alias.FirstOrDefault(a => string.Compare(a.name, pkt.query, true) == 0); //Player even alive? if (paliasTo == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified alias."); return; } string name = paliasTo.name; //Does the payload already exist? if (alias == null) { paliasTo.name = pkt.query; db.SubmitChanges(); zone._server.sendMessage(zone, pkt.sender, "Renamed player " + name + " to " + pkt.query + " has been completed."); return; } if (alias.account1 != paliasTo.account1) { zone._server.sendMessage(zone, pkt.sender, "That alias is already being used."); return; } if (alias.id != paliasTo.id) { zone._server.sendMessage(zone, pkt.sender, "Cannot change an alias to one already existing on the account."); return; } paliasTo.name = pkt.query; db.SubmitChanges(); zone._server.sendMessage(zone, pkt.sender, "Renamed player " + name + " to " + pkt.query + " has been completed."); } break; case CS_ModQuery <Zone> .QueryType.mod: { if (string.IsNullOrEmpty(pkt.query)) { zone._server.sendMessage(zone, pkt.sender, "Wrong format typed."); return; } //Lets get all account related info Data.DB.alias palias = db.alias.FirstOrDefault(a => string.Compare(a.name, pkt.query, true) == 0); Data.DB.account account = db.accounts.FirstOrDefault(p => p.id == palias.account1.id); if (palias == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified alias."); return; } if (account == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified account."); return; } //Lets mod/de-mod them account.permission = pkt.level; db.SubmitChanges(); zone._server.sendMessage(zone, pkt.sender, "Changing player " + palias.name + "'s level to " + pkt.level + " has been completed."); } break; case CS_ModQuery <Zone> .QueryType.dev: { if (string.IsNullOrEmpty(pkt.query)) { zone._server.sendMessage(zone, pkt.sender, "Wrong format typed."); return; } //Lets get all account related info Data.DB.player player = (from plyr in db.players where string.Compare(plyr.alias1.name, pkt.query, true) == 0 && plyr.zone1 == zone._zone select plyr).FirstOrDefault(); if (player == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified alias."); return; } //Lets mod/de-mod them player.permission = (short)pkt.level; db.SubmitChanges(); zone._server.sendMessage(zone, pkt.sender, "Changing player " + player.alias1.name + "'s dev level to " + pkt.level + " has been completed."); } break; case CS_ModQuery <Zone> .QueryType.squadtransfer: { if (string.IsNullOrEmpty(pkt.aliasTo) || string.IsNullOrEmpty(pkt.query)) { zone._server.sendMessage(zone, pkt.sender, "Wrong format typed."); return; } //Lets find the player first Data.DB.player dbplayer = db.zones.First(z => z.id == zone._zone.id).players.FirstOrDefault(p => string.Compare(p.alias1.name, pkt.aliasTo, true) == 0); if (dbplayer == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the player."); return; } //Lets find the squad in question Data.DB.squad squad = db.squads.First(s => string.Compare(s.name, pkt.query, true) == 0 && s.zone == zone._zone.id); if (squad == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified squad."); return; } //Are they in a squad? if (dbplayer.squad != null) { //Is it the same squad? if (dbplayer.squad != squad.id) { zone._server.sendMessage(zone, pkt.sender, "That player isn't on the same squad."); return; } //Transfer dbplayer.squad1.owner = dbplayer.id; } else { dbplayer.squad = squad.id; dbplayer.squad1.owner = dbplayer.id; } db.SubmitChanges(); zone._server.sendMessage(zone, dbplayer.alias1.name, "You have been promoted to squad captain of " + dbplayer.squad1.name); zone._server.sendMessage(zone, dbplayer.alias1.name, "Please relog to complete the process."); zone._server.sendMessage(zone, pkt.sender, "Squad transferring is complete."); } break; case CS_ModQuery <Zone> .QueryType.squadjoin: { if (string.IsNullOrWhiteSpace(pkt.aliasTo) || string.IsNullOrWhiteSpace(pkt.query)) { zone._server.sendMessage(zone, pkt.sender, "Wrong format typed."); return; } //Lets find the player first Data.DB.player dbplayer = db.zones.First(z => z.id == zone._zone.id).players.FirstOrDefault(p => string.Compare(p.alias1.name, pkt.aliasTo, true) == 0); if (dbplayer == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the player."); return; } //Lets find the squad in question Data.DB.squad squad = db.squads.FirstOrDefault(s => string.Compare(s.name, pkt.query, true) == 0 && s.zone == zone._zone.id); if (squad == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified squad."); return; } //Already squad joined somewhere? if (dbplayer.squad != null) { //Get his squad brothers! (if any...) IQueryable <Data.DB.player> squadmates = db.players.Where(p => p.zone == dbplayer.zone && p.squad != null && p.squad == dbplayer.squad); //Is he the captain? if (dbplayer.squad1.owner == dbplayer.id) { //We might need to dissolve the team! if (squadmates.Count() == 1) { //He's the only one left on the squad... dissolve it! db.squads.DeleteOnSubmit(dbplayer.squad1); db.SubmitChanges(); dbplayer.squad1 = null; dbplayer.squad = null; } else { //There are other people on the squad, transfer it to someone Data.DB.player transferPlayer = squadmates.FirstOrDefault(p => p.id != dbplayer.id); dbplayer.squad1.owner = transferPlayer.id; db.SubmitChanges(); zone._server.sendMessage(zone, transferPlayer.alias1.name, "You have been promoted to squad captain of " + transferPlayer.squad1.name); } } } dbplayer.squad = squad.id; db.SubmitChanges(); zone._server.sendMessage(zone, dbplayer.alias1.name, "You have joined " + squad.name); zone._server.sendMessage(zone, dbplayer.alias1.name, "Please relog to complete the process."); zone._server.sendMessage(zone, pkt.sender, "Squad joining completed."); } break; case CS_ModQuery <Zone> .QueryType.powered: { if (string.IsNullOrWhiteSpace(pkt.query)) { zone._server.sendMessage(zone, pkt.sender, "Payload cannot be empty."); return; } if (pkt.query.Equals("list")) { Data.DB.player sender = db.players.FirstOrDefault(p => string.Compare(p.alias1.name, pkt.sender, true) == 0 && p.zone == zone._zone.id); if (sender == null) { return; } SortedDictionary <string, string> powered = new SortedDictionary <string, string>(); string pAlias; foreach (Zone z in zone._server._zones) { foreach (KeyValuePair <int, Zone.Player> Player in z._players) { pAlias = Player.Value.alias; var alias = db.alias.SingleOrDefault(p => string.Compare(p.name, pAlias, true) == 0); if (alias == null) { continue; } if (alias.name == pkt.sender) { continue; } //Are they a global mod? if (alias.account1.permission > 0) { //Are they higher than us? if (alias.account1.permission > sender.alias1.account1.permission && alias.account1.permission > sender.permission) { continue; } powered.Add(pAlias, string.Format("*{0} - Lvl({1})", pAlias, alias.account1.permission.ToString())); } else { var player = db.zones.First(zones => zones.id == z._zone.id).players.First(p => p.alias1 == alias); if (player != null && player.permission > 0) { //Are they higher than us? if (player.permission > sender.permission && player.alias1.account1.permission > sender.alias1.account1.permission) { continue; } powered.Add(pAlias, string.Format("*{0} - Lvl({1})(dev)", pAlias, player.permission.ToString())); } } } } //Now send it! if (powered.Count > 0) { foreach (string str in powered.Values) { zone._server.sendMessage(zone, pkt.sender, str); } } else { zone._server.sendMessage(zone, pkt.sender, "Empty."); } } } break; case CS_ModQuery <Zone> .QueryType.find: { zone._server.sendMessage(zone, pkt.sender, "&Search Results:"); Data.DB.alias alias = db.alias.SingleOrDefault(ali => string.Compare(ali.name, pkt.query, true) == 0); if (alias == null) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified alias."); return; } bool found = false; IQueryable <Data.DB.alias> foundAlias = db.alias.Where(d => (d.IPAddress.Equals(alias.IPAddress) || d.account == alias.account)); foreach (KeyValuePair <string, Zone.Player> player in zone._server._players) { foreach (Data.DB.alias p in foundAlias) { if (player.Value.alias.Equals(p.name)) { zone._server.sendMessage(zone, pkt.sender, string.Format("*Found: {0} Zone: {1} Arena: {2}", p.name, player.Value.zone._zone.name, !String.IsNullOrWhiteSpace(player.Value.arena) ? player.Value.arena : "Unknown Arena")); found = true; } } } if (!found) { zone._server.sendMessage(zone, pkt.sender, "Cannot find the specified alias."); } } break; } } }