示例#1
0
        static CTFConfig RetrieveConfig(Player p)
        {
            CTFConfig cfg = new CTFConfig();

            cfg.SetDefaults(p.level);
            cfg.Retrieve(p.level.name);
            return(cfg);
        }
示例#2
0
 static void UpdateConfig(Player p, CTFConfig cfg)
 {
     if (!Directory.Exists("CTF"))
     {
         Directory.CreateDirectory("CTF");
     }
     cfg.Save(p.level.name);
     if (Server.ctf != null && p.level == Server.ctf.Map)
     {
         Server.ctf.UpdateConfig();
     }
 }
示例#3
0
        static bool RedFlagCallback(Player p, Vec3S32[] marks, object state, ExtBlock block)
        {
            CTFConfig cfg = RetrieveConfig(p);
            Vec3S32   P   = marks[0];

            cfg.RedFlagX = P.X; cfg.RedFlagY = P.Y; cfg.RedFlagZ = P.Z;
            Player.Message(p, "Set flag position of red team to ({0}, {1}, {2})", P.X, P.Y, P.Z);

            block = p.level.GetBlock((ushort)P.X, (ushort)P.Y, (ushort)P.Z);
            if (block.IsAir)
            {
                block = (ExtBlock)Block.Red;
            }
            cfg.RedFlagBlock = block.RawID;
            Player.Message(p, "Set flag block of red team to {0}", p.level.BlockName(block));

            UpdateConfig(p, cfg);
            return(false);
        }
示例#4
0
        void HandleSet(Player p, string property)
        {
            if (!CheckExtraPerm(p, 1))
            {
                return;
            }
            CTFConfig cfg = RetrieveConfig(p);

            if (property.CaselessEq("bluespawn"))
            {
                cfg.BlueSpawnX = p.Pos.X; cfg.BlueSpawnY = p.Pos.Y; cfg.BlueSpawnZ = p.Pos.Z;
                Player.Message(p, "Set spawn of blue team to your position.");
                UpdateConfig(p, cfg);
            }
            else if (property.CaselessEq("redspawn"))
            {
                cfg.RedSpawnX = p.Pos.X; cfg.RedSpawnY = p.Pos.Y; cfg.RedSpawnZ = p.Pos.Z;
                Player.Message(p, "Set spawn of red team to your position.");
                UpdateConfig(p, cfg);
            }
            else if (property.CaselessEq("blueflag"))
            {
                Player.Message(p, "Place or delete a block to set blue team's flag.");
                p.MakeSelection(1, null, BlueFlagCallback);
            }
            else if (property.CaselessEq("redflag"))
            {
                Player.Message(p, "Place or delete a block to set red team's flag.");
                p.MakeSelection(1, null, RedFlagCallback);
            }
            else if (property.CaselessEq("divider"))
            {
                cfg.ZDivider = p.Pos.BlockZ;
                Player.Message(p, "Set Z line divider to {0}.", cfg.ZDivider);
                UpdateConfig(p, cfg);
            }
            else
            {
                Help(p, "set");
            }
        }