public override TemplateObject Handle(TagData data)
        {
            OfflinePlayerTag ptag = OfflinePlayerTag.For(Utilities.StringToULong(data.GetModifier(0)));

            if (ptag == null)
            {
                return(new TextTag("&{NULL}").Handle(data.Shrink()));
            }
            return(ptag.Handle(data.Shrink()));
        }
Exemplo n.º 2
0
        public override TemplateObject Handle(TagData data)
        {
            data.Shrink();
            if (data.Remaining == 0)
            {
                return(new TextTag(ToString()));
            }
            switch (data[0])
            {
            // <--[tag]
            // @Name ServerTag.item_assets
            // @Group Server Information
            // @ReturnType ListTag
            // @Returns a list of all item assets in the game.
            // -->
            case "item_assets":
            {
                List <TemplateObject> items = new List <TemplateObject>();
                foreach (ItemAsset it in ItemAssetTag.Items)
                {
                    items.Add(new ItemAssetTag(it));
                }
                return(new ListTag(items).Handle(data.Shrink()));
            }

            // <--[tag]
            // @Name ServerTag.online_players
            // @Group Server Information
            // @ReturnType ListTag
            // @Returns a list of all online players.
            // -->
            case "online_players":
            {
                List <TemplateObject> players = new List <TemplateObject>();
                foreach (SteamPlayer player in Provider.clients)
                {
                    players.Add(new PlayerTag(player));
                }
                return(new ListTag(players).Handle(data.Shrink()));
            }

            // <--[tag]
            // @Name ServerTag.offline_players
            // @Group Server Information
            // @ReturnType ListTag
            // @Returns a list of all offline players.
            // @Other This specifically excludes any online players.
            // -->
            case "offline_players":
            {
                List <TemplateObject> players = new List <TemplateObject>();
                foreach (string playerFolder in ReadWrite.getFolders(ServerSavedata.directory + "/" + Provider.serverID + "/Players"))
                {
                    string[] split = playerFolder.Substring(playerFolder.LastIndexOf('\\') + 1).Split('_');
                    if (split.Length == 2)
                    {
                        ulong steamID = Utilities.StringToULong(split[0]);
                        bool  online  = false;
                        foreach (SteamPlayer onlinePlayer in Provider.clients)
                        {
                            if (onlinePlayer.playerID.steamID.m_SteamID == steamID)
                            {
                                online = true;
                                break;
                            }
                        }
                        if (!online)
                        {
                            OfflinePlayerTag player = OfflinePlayerTag.For(Utilities.StringToULong(split[0]), Utilities.StringToByte(split[1]));
                            if (player != null)
                            {
                                players.Add(player);
                            }
                        }
                    }
                }
                return(new ListTag(players).Handle(data.Shrink()));
            }

            default:
                return(new TextTag(ToString()).Handle(data));
            }
        }