示例#1
0
        /// <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;
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
        }
示例#6
0
文件: CTF.cs 项目: klyed/Zone-Assets
        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);
        }
示例#7
0
        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);
        }
示例#9
0
        /// <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;
            }
        }
示例#10
0
        /// <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;
            }
        }
示例#11
0
        /// <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);
        }
示例#12
0
        /// <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);
        }
示例#13
0
        /// <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;
                }
            }
        }