Exemple #1
0
        // Range: -1 Access: 0 Flags: ( 0, 4, 255 )
        public static dynamic Topic(string T = null, dynamic addr = null, dynamic master = null, dynamic key = null)
        {
            int     x      = 0;
            dynamic C      = null;
            int     n      = 0;
            dynamic M      = null;
            ByTable s      = null;
            int     admins = 0;
            dynamic C2     = null;
            ByTable input  = null;
            dynamic C3     = null;

            ((dynamic)GlobalVars.diary).write("TOPIC: \"" + T + "\", from:" + addr + ", master:" + master + ", key:" + key);
            if (T == "ping")
            {
                x = 1;
                C = null;
                foreach (dynamic _a in GlobalVars.clients)
                {
                    C = _a;
                    if (!Lang13.Bool(((dynamic)typeof(Client)).IsInstanceOfType(C)))
                    {
                        continue;
                    }
                    x++;
                }
                ;
                return(x);
            }
            else if (T == "players")
            {
                n = 0;
                M = null;
                foreach (dynamic _b in GlobalVars.player_list)
                {
                    M = _b;
                    if (Lang13.Bool(M.client))
                    {
                        n++;
                    }
                }
                ;
                return(n);
            }
            else if (T == "status")
            {
                s            = new ByTable();
                s["version"] = GlobalVars.game_version;
                s["mode"]    = GlobalVars.master_mode;
                s["respawn"] = (GlobalVars.config != null ? GlobalVars.abandon_allowed : false);
                s["enter"]   = GlobalVars.enter_allowed;
                s["vote"]    = GlobalVars.config.allow_vote_mode;
                s["ai"]      = GlobalVars.config.allow_ai;
                s["host"]    = (Lang13.Bool(Game13.host) ? Game13.host : null);
                admins       = 0;
                C2           = null;
                foreach (dynamic _c in GlobalVars.clients)
                {
                    C2 = _c;
                    if (!Lang13.Bool(((dynamic)typeof(Client)).IsInstanceOfType(C2)))
                    {
                        continue;
                    }
                    if (Lang13.Bool(C2.holder))
                    {
                        if (Lang13.Bool(C2.holder.fakekey))
                        {
                            continue;
                        }
                        admins++;
                    }
                }
                ;
                s["active_players"] = GlobalFuncs.get_active_player_count();
                s["players"]        = GlobalVars.clients.len;
                s["revision"]       = GlobalVars.revdata.revision;
                s["revision_date"]  = GlobalVars.revdata.date;
                s["admins"]         = admins;
                s["gamestate"]      = 1;
                if (GlobalVars.ticker != null)
                {
                    s["gamestate"] = GlobalVars.ticker.current_state;
                }
                s["map_name"] = (Lang13.Bool(GlobalVars.map_name) ? GlobalVars.map_name : "Unknown");
                return(String13.conv_list2urlParams(s));
            }
            else if (String13.substr(T, 1, 9) == "announce")
            {
                input = String13.conv_urlParams2list(T);
                if (GlobalVars.comms_allowed)
                {
                    if (input["key"] != GlobalVars.comms_key)
                    {
                        return("Bad Key");
                    }
                    else
                    {
                        C3 = null;
                        foreach (dynamic _d in GlobalVars.clients)
                        {
                            C3 = _d;
                            if (!Lang13.Bool(((dynamic)typeof(Client)).IsInstanceOfType(C3)))
                            {
                                continue;
                            }
                            if (Lang13.Bool(C3.prefs) && Lang13.Bool(C3.prefs.chat_toggles & 64))
                            {
                                C3.write("<span class='announce'>PR: " + input["announce"] + "</span>");
                            }
                        }
                        ;
                    }
                }
            }
            return(null);
        }