예제 #1
0
        static void Toggle(Player p, Level lvl, ref bool target, string name, bool not = false)
        {
            target = !target;
            bool   display   = not ? !target : target;
            string targetStr = display ? "&aON" : "&cOFF";

            lvl.Message(name + ": " + targetStr);
            if (p.level != lvl)
            {
                p.Message(name + ": " + targetStr);
            }
        }
예제 #2
0
파일: Zone.cs 프로젝트: takaaptech/MCGalaxy
        protected override void ApplyChanges(Player p, Level lvl, string msg)
        {
            lvl.Save(true);
            msg += " &Sin " + ColoredName;
            Logger.Log(LogType.UserActivity, "{0} &Son {1}", msg, lvl.name);

            lvl.Message(msg);
            if (p.level != lvl)
            {
                p.Message("{0} &Son {1}", msg, lvl.ColoredName);
            }
        }
예제 #3
0
        public static bool Backup(Player p, Level lvl, string backup)
        {
            string map  = lvl.name;
            bool   auto = backup.Length == 0;

            if (auto)
            {
                backup = LevelInfo.NextBackup(map);
            }

            TimeSpan delta = lvl.lastBackup - DateTime.UtcNow;

            if (delta.TotalSeconds >= 0)
            {
                p.Message("You must wait another {0} to backup {1} &Sagain",
                          delta.Shorten(true, true), lvl.ColoredName);
                return(false);
            }
            lvl.lastBackup = DateTime.UtcNow.AddSeconds(10);

            if (!LevelActions.Backup(map, backup))
            {
                p.Message("&WFailed to backup {0}", lvl.ColoredName);
                return(false);
            }

            if (auto)
            {
                Logger.Log(LogType.SystemActivity, "Backup {1} saved for {0}", map, backup);
                lvl.Message("Backup " + backup + " saved for " + lvl.ColoredName);
            }
            else
            {
                Logger.Log(LogType.SystemActivity, "{0} had a backup created named &b{1}", map, backup);
                lvl.Message(lvl.ColoredName + " &Shad a backup created named &b" + backup);
            }
            return(true);
        }
예제 #4
0
        protected override void ApplyChanges(Player p, Level lvl, string msg)
        {
            Update(lvl);
            Logger.Log(LogType.UserActivity, "{0} %Son {1}", msg, lvlName);
            if (lvl != null)
            {
                lvl.Message(msg);
            }

            if (p != Player.Console && p.level != lvl)
            {
                p.Message("{0} %Son {1}", msg, ColoredName);
            }
        }
예제 #5
0
        static void SetMotd(Player p, Level lvl, string value)
        {
            lvl.Config.MOTD = value.Length == 0 ? "ignore" : value;
            lvl.Message("Map's MOTD was changed to: &b" + lvl.Config.MOTD);

            Player[] players = PlayerInfo.Online.Items;
            foreach (Player pl in players)
            {
                // Some clients will freeze or crash if we send a MOTD packet, but don't follow it up by a new map.
                // Hnece only send MOTD for clients supporting InstantMOTD CPE extension
                if (pl.Supports(CpeExt.InstantMOTD))
                {
                    pl.SendMapMotd();
                }
                else
                {
                    PlayerActions.ReloadMap(pl);
                }
            }
        }
예제 #6
0
        static void SetMotd(Player p, Level lvl, string value)
        {
            lvl.Config.MOTD = value.Length == 0 ? "ignore" : value;
            lvl.Message("Map's MOTD was changed to: &b" + lvl.Config.MOTD);

            Player[] players = PlayerInfo.Online.Items;
            foreach (Player pl in players)
            {
                // Some clients will freeze or crash if we send a MOTD packet, but don't follow it up by a new map.
                // Although checking for CPE extension support is preferred, also send to whitelisted clients for maximum compatibility
                bool motdOnly = pl.Supports(CpeExt.InstantMOTD) || (pl.appName != null && pl.appName.CaselessStarts("classicalsharp"));
                if (motdOnly)
                {
                    pl.SendMapMotd();
                }
                else
                {
                    PlayerActions.ReloadMap(pl);
                }
            }
        }
예제 #7
0
 static void SetInt(Level lvl, int raw, ref int target, string name)
 {
     target = raw;
     lvl.Message(name + ": &b" + target);
 }