Esempio n. 1
0
        protected override bool ExecuteParent(ArraySegment <string> arguments, ICommandSender sender, out string response)
        {
            EventHandlers.LogCommandUsed((CommandSender)sender, EventHandlers.FormatArguments(arguments, 0));
            if (!CommandProcessor.CheckPermissions(((CommandSender)sender), "broadcast", PlayerPermissions.Broadcasting, "AdminTools", false))
            {
                response = "You do not have permission to use this command";
                return(false);
            }

            if (arguments.Count < 2)
            {
                response = "Usage: adminbroadcast (time) (message)";
                return(false);
            }

            if (!ushort.TryParse(arguments.At(0), out ushort t))
            {
                response = $"Invalid value for broadcast time: {arguments.At(0)}";
                return(false);
            }

            foreach (Player Pl in Player.List)
            {
                if (Pl.ReferenceHub.serverRoles.RemoteAdmin)
                {
                    Pl.Broadcast(t, EventHandlers.FormatArguments(arguments, 1) + $" - {((CommandSender)sender).Nickname}", Broadcast.BroadcastFlags.AdminChat);
                }
            }

            response = $"Message sent to all currently online staff";
            return(true);
        }
Esempio n. 2
0
        public void PlIntilizationUserString()
        {
            string expected = "pl=";
            Pl     Pl       = new Pl("UserString");

            expected += "UserString";
            Assert.AreEqual(expected, Pl.GetPartUrl());
        }
Esempio n. 3
0
    void LiftEndObject(GameObject _obj, bool _liftUp)
    {
        // 持ち上げ中オブジェクトの判定と挙動を無効化/有効化
        liftObj.GetComponent <BoxCollider>().enabled = !_liftUp;
        liftObj.GetComponent <MoveManager>().enabled = !_liftUp;

        // 通常時のプレイヤー当たり判定を無効化/有効化
        standbyCol.enabled = !_liftUp;

        // 持ち上げ中のプレイヤー当たり判定有効化時に接地方向によって判定位置を移動
        if (_liftUp)
        {
            BoxCollider liftingBoxCol = ((BoxCollider)liftingCol);
            if (Pl.GetComponent <WeightManager>().WeightForce < 0.0f)
            {
                liftingBoxCol.center = new Vector3(liftingBoxCol.center.x, stdLiftingColPoint, liftingBoxCol.center.z);
            }
            else
            {
                liftingBoxCol.center = new Vector3(liftingBoxCol.center.x, revLiftingColPoint, liftingBoxCol.center.z);
            }
        }
        // 持ち上げ中のプレイヤー当たり判定を有効化/無効化
        liftingCol.enabled = _liftUp;

        // 有効な当たり判定をMoveManagerに登録
        if (standbyCol.enabled)
        {
            MoveMng.UseCol = standbyCol;
        }
        else
        {
            MoveMng.UseCol = liftingCol;
        }

        // 持ち上げきったのなら
        if (_liftUp)
        {
            // 持ち上げ状態に遷移
            St = LiftState.lifting;
        }
        // 下ろし切ったのなら
        else
        {
            // 待機状態に遷移
            St = LiftState.standby;

            // 持ち上げオブジェクト中をnullに
            liftObj = null;

            // プレイヤーの重さ移しを可能に
            Pl.CanShift = true;
        }

        // プレイヤーのジャンプ、振り向きを可能に
        Pl.CanJump     = true;
        Pl.CanRotation = true;
    }
Esempio n. 4
0
 /// <summary>
 /// Static API формирует изображение карты
 /// </summary>
 /// <param name="l">Перечень слоев, определяющих тип карты</param>
 /// <param name="bbox">Географические координаты углов прямоугольника, ограничивающего область просмотра</param>
 /// <param name="size">Ширина и высота запрашиваемого изображения карты (в пикселах)</param>
 /// <param name="lang">API позволяет отображать карты, локализованные на различных языках с учетом специфики отдельных стран. Например, можно показать карту с надписями на английском языке и обозначить на ней расстояния в милях (инструмент Линейка)</param>
 /// <param name="scale">Коэффициент увеличения объектов на карте. Может принимать дробное значение от 1.0 до 4.0</param>
 /// <param name="pt">Содержит описание одной или нескольких меток, которые требуется отобразить на карте</param>
 /// <param name="pl">Содержит набор описаний геометрических фигур (ломаных и многоугольников), которые требуется отобразить на карте</param>
 public StaticAPI(L l, Bbox bbox, Size size = null, Lang lang = null, double scale = 0, Pt pt = null, Pl pl = null)
 {
     _l    = l;
     _bbox = bbox;
     _size = size;
     _lang = lang;
     Scale = scale;
     _pt   = pt;
     _pl   = pl;
 }
Esempio n. 5
0
 /// <summary>
 /// Static API формирует изображение карты
 /// </summary>
 /// <param name="l">Перечень слоев, определяющих тип карты</param>
 /// <param name="ll">Долгота и широта центра карты в градусах</param>
 /// <param name="spn">Протяженность области показа карты по долготе и широте (в градусах)</param>
 /// <param name="size">Ширина и высота запрашиваемого изображения карты (в пикселах)</param>
 /// <param name="lang">API позволяет отображать карты, локализованные на различных языках с учетом специфики отдельных стран. Например, можно показать карту с надписями на английском языке и обозначить на ней расстояния в милях (инструмент Линейка)</param>
 /// <param name="scale">Коэффициент увеличения объектов на карте. Может принимать дробное значение от 1.0 до 4.0</param>
 /// <param name="pt">Содержит описание одной или нескольких меток, которые требуется отобразить на карте</param>
 /// <param name="pl">Содержит набор описаний геометрических фигур (ломаных и многоугольников), которые требуется отобразить на карте</param>
 public StaticAPI(L l, LL ll, Spn spn, Size size = null, Lang lang = null, double scale = 0, Pt pt = null, Pl pl = null)
 {
     _l    = l;
     _ll   = ll;
     _spn  = spn;
     _size = size;
     _lang = lang;
     Scale = scale;
     _pt   = pt;
     _pl   = pl;
 }
Esempio n. 6
0
        public List <Player> WinnersOfTournament()
        {
            FillResultTableau();
            winners = ChooseWinners(ratePlayers_NumOfWins());
            foreach (KIPlayer Pl in winners)
            {
                Pl.refreshNNData();
            }

//			//Nur KIPlayer haben ein NN. zum speichern od. anderweitig verarbeiten der Sieger muss also eine Liste rein aus KI
//			//KIPlayer erstellt werden: KIwinners
//			List<KIPlayer> KIwinners = winners.OfType<KIPlayer>().ToList();
//			KIwinners[1].appendNNData2Xml("#000100",@"..\StoredNNs.xml","NeuralNetworks","OlberichAusBern");
            return(winners);
        }
Esempio n. 7
0
 private void PlaceUnits(Pl pl, bool toRight = false)
 {
     if (pl == null)
     {
         return;
     }
     for (int i = 0; i < pl.Units.Count; i++)
     {
         var u = pl.Units[i];
         int q = toRight ? _map.ArraySize - u.StartPos.Q - 1 : u.StartPos.Q, r = toRight ? _map.ArraySize - u.StartPos.R - 1 : u.StartPos.R;
         _map.Cells[q, r].Unit = u;
         u.CurPos = new Axial(q, r);
         u.ResetCurrent();
     }
 }
Esempio n. 8
0
        public void TestLinearOptimizePl()
        {
            var pl = new Pl();

              var options = new GeneratorOptions
              {
            Function = pl.Evaluate,
            ErrorRange = 0.25
              };
              var generator = new Generator(options);
              var generated = generator.Generate();

              var optimizer = new LcFunctionLinearOptimizer(pl);
              optimizer.Optimize(generated);
              Console.WriteLine(pl.ToShow(generated));
        }
Esempio n. 9
0
 public void Set(Pl pl)
 {
     if (pl == null)
     {
         return;
     }
     Pl = pl;
     //p_hero.BackgroundImage = pl.Hero.Icon;
     for (int i = 0; i < pl.Units.Count; i++)
     {
         var u = pl.Units[i];
         var s = u.StartPos.Q + "" + u.StartPos.R;
         var p = pans.FirstOrDefault(x => (string)x.Tag == s);
         if (p != null)
         {
             p.BackgroundImage = new Bitmap(u.Icon, p.Size);
         }
     }
     cb_team.SelectedItem = Pl.TeamId;
 }
Esempio n. 10
0
        public void TestNonLinearOptimizePl()
        {
            var pl = new Pl();
              Console.WriteLine(pl);

              var options = new GeneratorOptions
              {
            Function = pl.Evaluate,
            ErrorRange = 0,//.1,
            TimeRangeMax = 0.8
              };
              var generator = new Generator(options);
              var generated = generator.Generate();

              pl.Tc += 0.5;// 5;
              pl.M += 0.3;

              var optimizer = new LcFunctionNonLinearOptimizer(pl);
              optimizer.Optimize(generated);
              Console.WriteLine(pl);
              Console.WriteLine(pl.ToShow(generated));
        }
Esempio n. 11
0
 public void NotifyPlayer() => Pl.NotifyAboutDamage(this);
Esempio n. 12
0
    public GameObject Lift()
    {
        Debug.Log("lift");
        switch (St)
        {
        case LiftState.standby:
            // 重さ変更中は処理しない
            if (Pl.IsShift)
            {
                return(null);
            }

            // 範囲内で最も近い持ち上げられるオブジェクトを取得
            List <RaycastHit> hitInfos = new List <RaycastHit>();
            //			hitInfos.AddRange(Physics.BoxCastAll(transform.position, liftUpCol.localScale * 0.5f, (liftUpCol.position - transform.position),
            //				liftPoint.rotation, Vector3.Distance(transform.position, liftUpCol.position), boxMask));
            hitInfos.AddRange(Physics.BoxCastAll(liftUpCol.transform.position, liftUpCol.localScale * 0.5f, (transform.position - liftUpCol.position),
                                                 liftPoint.rotation, float.Epsilon, boxMask));
            GameObject liftableObj = null;
            float      dis         = float.MaxValue;
            Debug.LogWarning(hitInfos.Count);
            foreach (var hitInfo in hitInfos)
            {
                Debug.LogWarning(hitInfo.collider.name + " " + hitInfo.collider.tag);
                if ((hitInfo.collider.tag == "LiftableObject") && (hitInfo.distance < dis))
                {
                    liftableObj = hitInfo.collider.gameObject;
                    dis         = hitInfo.distance;
                }
            }

            // 持ち上げれるオブジェクトがあれば
            if (liftableObj != null)
            {
                // 重さがプレイヤーより重ければ失敗フラグを立てる
                heavyFailedFlg = (Pl.GetComponent <WeightManager>().WeightLv < liftableObj.GetComponent <WeightManager>().WeightLv);

                // ジャンプ、重さ変更、振り向きを不可に
                Pl.CanJump     = false;
                Pl.CanShift    = false;
                Pl.CanRotation = false;

                // 持ち上げ開始
                return(LiftUp(liftableObj));
            }
            else
            {
                liftObj = null;
            }
            break;

        case LiftState.lifting:
            // ジャンプ、重さ変更、振り向きを不可に
            Pl.CanJump     = false;
            Pl.CanShift    = false;
            Pl.CanRotation = false;

            // 下ろし始める
            LiftDown();

            break;

        default:
            break;
        }
        return(null);
    }
Esempio n. 13
0
    public GameObject Lift()
    {
        // 処理後状態なら入力が解除されるまで処理しない
        if (afterHoldInput)
        {
            return(null);
        }

        Debug.Log("lift");
        switch (St)
        {
        case LiftState.standby:
            // 重さ変更中は処理しない
            if (Pl.IsShift)
            {
                return(null);
            }

            // 範囲内で最も近い持ち上げられるオブジェクトを取得
            List <RaycastHit> hitInfos = new List <RaycastHit>();
            //			hitInfos.AddRange(Physics.BoxCastAll(transform.position, liftUpCol.localScale * 0.5f, (liftUpCol.position - transform.position),
            //				liftPoint.rotation, Vector3.Distance(transform.position, liftUpCol.position), boxMask));
            hitInfos.AddRange(Physics.BoxCastAll(liftUpCol.transform.position, liftUpCol.localScale * 0.5f, (transform.position - liftUpCol.position), liftPoint.rotation, float.Epsilon, boxMask));

            // 浮いているオブジェクトは持ち上げられない
            for (int idx = hitInfos.Count - 1; idx >= 0; idx--)
            {
                Landing    hitInfoLand     = hitInfos[idx].collider.GetComponent <Landing>();
                WaterState hitInfoWaterStt = hitInfos[idx].collider.GetComponent <WaterState>();
                if ((!hitInfoLand || !hitInfoWaterStt) ||
                    (!hitInfoLand.IsLanding && !hitInfoLand.IsWaterFloatLanding && !hitInfoWaterStt.IsWaterSurface))
                {
                    hitInfos.RemoveAt(idx);
                }
            }

            // 上下をオブジェクトに挟まれている場合
            if (Pl.IsSandwitch)
            {
                // 挟んでいるオブジェクト以外は持ち上げ対象から除外
                for (int idx = hitInfos.Count - 1; idx >= 0; idx--)
                {
                    if (!Pl.SandwitchCols.Contains(hitInfos[idx].collider))
                    {
                        hitInfos.RemoveAt(idx);
                    }
                }
            }

            GameObject liftableObj = null;
            float      dis         = float.MaxValue;
            //			Debug.LogWarning(hitInfos.Count);

            foreach (var hitInfo in hitInfos)
            {
                //				Debug.LogWarning(hitInfo.collider.name + " " + hitInfo.collider.tag);
                if (!underPriority)
                {
                    if ((hitInfo.collider.tag == "LiftableObject") && (hitInfo.distance < dis))
                    {
                        liftableObj = hitInfo.collider.gameObject;
                        dis         = hitInfo.distance;
                    }
                }
                else
                {
                    if ((hitInfo.collider.tag == "LiftableObject") && (!liftableObj || (hitInfo.transform.position.y < liftableObj.transform.position.y)))
                    {
                        liftableObj = hitInfo.collider.gameObject;
                    }
                }
            }

            // 持ち上げれるオブジェクトがあれば
            if (liftableObj != null)
            {
                if (!canHeavyLift)
                {
                    // 重さがプレイヤーより重ければ失敗フラグを立てる
                    heavyFailedFlg = (Pl.GetComponent <WeightManager>().WeightLv < liftableObj.GetComponent <WeightManager>().WeightLv);
                }

                // ジャンプ、重さ変更、振り向きを不可に
                Pl.CanJump         = false;
                Pl.CanShift        = false;
                Pl.CanRotationTurn = false;

                // 移動量を削除
                MoveMng.StopMoveVirticalAll();
                MoveMng.StopMoveHorizontalAll();

                // 持ち上げ中のオブジェクトが水で浮かないように
                WaterState liftWaterStt = liftableObj.GetComponent <WaterState>();
                liftWaterStt.CanFloat = false;

                // 持ち上げ開始
                return(LiftUpStart(liftableObj));
            }
            else
            {
                // 持ち上げキャンセル
                LiftObj = null;
            }
            break;

        case LiftState.lifting:
            // 重さ変更中は処理しない
            if (Pl.IsShift)
            {
                return(null);
            }

            //// 持ち上げ中オブジェクト以外のすり抜け中のオブジェクトがある場合は処理しない
            //foreach (var throughObj in MoveMng.ThroughObjList) {
            //	if (throughObj != LiftObj) {
            //		return null;
            //	}
            //}

            // ジャンプ、重さ変更、振り向きを不可に
            Pl.CanJump         = false;
            Pl.CanShift        = false;
            Pl.CanRotationTurn = false;

            // 下ろし始める
            LiftDownStart();

            // 移動量を削除
            MoveMng.StopMoveVirticalAll();
            MoveMng.StopMoveHorizontalAll();

            break;

        default:
            break;
        }
        return(null);
    }
Esempio n. 14
0
        protected override bool ExecuteParent(ArraySegment <string> arguments, ICommandSender sender, out string response)
        {
            EventHandlers.LogCommandUsed((CommandSender)sender, EventHandlers.FormatArguments(arguments, 0));
            if (!CommandProcessor.CheckPermissions(((CommandSender)sender), "hp", PlayerPermissions.PlayersManagement, "AdminTools", false))
            {
                response = "You do not have permission to use this command";
                return(false);
            }

            if (arguments.Count != 2)
            {
                response = "Usage: hp ((player id / name) or (all / *)) (value)";
                return(false);
            }

            switch (arguments.At(0))
            {
            case "*":
            case "all":
                if (!int.TryParse(arguments.At(1), out int value))
                {
                    response = $"Invalid value for HP: {value}";
                    return(false);
                }

                foreach (Player Pl in Player.List)
                {
                    if (value <= 0)
                    {
                        Pl.Kill();
                    }
                    else
                    {
                        Pl.Health = value;
                    }
                }

                response = $"Everyone's HP was set to {value}";
                return(true);

            default:
                Player Ply = Player.Get(arguments.At(0));
                if (Ply == null)
                {
                    response = $"Player not found: {arguments.At(0)}";
                    return(false);
                }

                if (!int.TryParse(arguments.At(1), out int val))
                {
                    response = $"Invalid value for HP: {val}";
                    return(false);
                }

                if (val <= 0)
                {
                    Ply.Kill();
                }
                else
                {
                    Ply.Health = val;
                }
                response = $"Player {Ply.Nickname}'s HP was set to {val}";
                return(true);
            }
        }
Esempio n. 15
0
 public void DeletePl(Pl pl)
 {
     _plRepository.RemoveItem(pl);
 }
Esempio n. 16
0
        public void Play()
        {
            while (state == State.commenced)
            {
                Thread.Sleep(speed);

                //движение игрока
                Pl.Run();

                //движение снаряда
                for (int i = 0; i < Pr.Count; i++)
                {
                    if (Pr[i] != null)
                    {
                        Pr[i].Run();
                    }
                }

                //движение охотника по направлению к игроку
                ((Hunter)Tanks[0]).Run(Pl.X, Pl.Y);

                //движение танков
                for (int q = 1; q < Tanks.Count; q++)
                {
                    Tanks[q].Run();
                }

                //попадание снаряда в танк
                if (Pr != null)
                {
                    for (int p = 1; p < Tanks.Count; p++)
                    {
                        for (int pi = 0; pi < Pr.Count; pi++)
                        {
                            if ((Pr[pi].X - Tanks[p].X >= 0 && Pr[pi].X - Tanks[p].X <= 20) && (Pr[pi].Y - Tanks[p].Y >= 0 && Pr[pi].Y - Tanks[p].Y <= 20))
                            {
                                Tanks.RemoveAt(p);
                                Pr.RemoveAt(pi);
                                crushedTankCounter++;
                                if (crushedTankCounter >= 4)
                                {
                                    state = State.winner;
                                    statuschange();
                                }
                            }
                        }
                    }
                }

                //проверка вылета снаряда за границы поля
                if (Pr != null)
                {
                    for (int pi = 0; pi < Pr.Count; pi++)
                    {
                        if (Pr[pi].X == -1 || Pr[pi].X == size + 1 || Pr[pi].Y == -1 || Pr[pi].Y == size + 1)
                        {
                            Pr.RemoveAt(pi);
                        }
                    }
                }


                //механика отталкивания
                for (int i = 0; i < Tanks.Count - 1; i++)
                {
                    for (int j = i + 1; j < Tanks.Count; j++)
                    {
                        if
                        (
                            Math.Abs(Tanks[i].X - Tanks[j].X) <= 19 && (Tanks[i].Y == Tanks[j].Y)
                            ||
                            Math.Abs(Tanks[i].Y - Tanks[j].Y) <= 19 && (Tanks[i].X == Tanks[j].X)
                            ||
                            Math.Abs(Tanks[i].X - Tanks[j].X) <= 19 && Math.Abs(Tanks[i].Y - Tanks[j].Y) <= 19
                        )
                        {
                            if (i == 0)
                            {
                                ((Hunter)Tanks[0]).TurnAround();
                            }
                            else
                            {
                                Tanks[i].TurnAround();
                            }

                            Tanks[j].TurnAround();
                        }
                    }
                }

                //проверка столкновения
                for (int c = 0; c < Tanks.Count; c++)
                {
                    if (
                        Math.Abs(Pl.X - Tanks[c].X) <= 19 && (Pl.Y == Tanks[c].Y)
                        ||
                        Math.Abs(Pl.Y - Tanks[c].Y) <= 19 && (Pl.X == Tanks[c].X)
                        ||
                        Math.Abs(Pl.X - Tanks[c].X) <= 19 && Math.Abs(Pl.Y - Tanks[c].Y) <= 19

                        )
                    {
                        state = State.looser;
                        statuschange();
                    }
                }

                //реализация подбора оружия
                for (int k = 0; k < Weapons.Count; k++)
                {
                    if (Math.Abs(Pl.X - Weapons[k].X) <= 19 && (Pl.Y == Weapons[k].Y)
                        ||
                        Math.Abs(Pl.Y - Weapons[k].Y) <= 19 && (Pl.X == Weapons[k].X))
                    {
                        weapons.RemoveAt(k);
                        weaponCounter.PutCurrentImg(++weaponC);
                    }
                }

                //создает на поле кол-во снарядов которое нехватает по отношению снарядов у игрока
                CreateWeapons(applesAmount - weaponC);
            }
        }
Esempio n. 17
0
        protected override bool ExecuteParent(ArraySegment <string> arguments, ICommandSender sender, out string response)
        {
            EventHandlers.LogCommandUsed((CommandSender)sender, EventHandlers.FormatArguments(arguments, 0));
            if (!CommandProcessor.CheckPermissions(((CommandSender)sender), "broadcast", PlayerPermissions.Broadcasting, "AdminTools", false))
            {
                response = "You do not have permission to use this command";
                return(false);
            }

            if (arguments.Count < 1)
            {
                response = "Usage:\nbroadcast (time) (message)" +
                           "\nbroadcast user (player id / name) (time) (message)" +
                           "\nbroadcast users (player id / name group (i.e.: 1,2,3 or hello,there,hehe)) (time) (message)" +
                           "\nbroadcast group (group name) (time) (message)" +
                           "\nbroadcast groups (list of groups (i.e.: owner,admin,moderator)) (time) (message)" +
                           "\nbroadcast role (RoleType) (time) (message)" +
                           "\nbroadcast roles (RoleType group (i.e.: ClassD,Scientist,NtfCadet)) (time) (message)" +
                           "\nbroadcast (random / someone) (time) (message)" +
                           "\nbroadcast (staff / admin) (time) (message)" +
                           "\nbroadcast clearall";
                return(false);
            }

            switch (arguments.At(0))
            {
            case "user":
                if (arguments.Count < 4)
                {
                    response = "Usage: broadcast user (player id / name) (time) (message)";
                    return(false);
                }

                Player Ply = Player.Get(arguments.At(1));
                if (Ply == null)
                {
                    response = $"Player not found: {arguments.At(1)}";
                    return(false);
                }

                if (!ushort.TryParse(arguments.At(2), out ushort time) && time <= 0)
                {
                    response = $"Invalid value for duration: {arguments.At(2)}";
                    return(false);
                }

                Ply.Broadcast(time, EventHandlers.FormatArguments(arguments, 3));
                response = $"Message sent to {Ply.Nickname}";
                return(true);

            case "users":
                if (arguments.Count < 4)
                {
                    response = "Usage: broadcast users (player id / name group (i.e.: 1,2,3 or hello,there,hehe)) (time) (message)";
                    return(false);
                }

                string[]      Users   = arguments.At(1).Split(',');
                List <Player> PlyList = new List <Player>();
                foreach (string s in Users)
                {
                    if (int.TryParse(s, out int id) && Player.Get(id) != null)
                    {
                        PlyList.Add(Player.Get(id));
                    }
                    else if (Player.Get(s) != null)
                    {
                        PlyList.Add(Player.Get(s));
                    }
                }

                if (!ushort.TryParse(arguments.At(2), out ushort tme) && tme <= 0)
                {
                    response = $"Invalid value for duration: {arguments.At(2)}";
                    return(false);
                }

                foreach (Player P in PlyList)
                {
                    P.Broadcast(tme, EventHandlers.FormatArguments(arguments, 3));
                }


                StringBuilder Builder = StringBuilderPool.Shared.Rent("Message sent to players: ");
                foreach (Player P in PlyList)
                {
                    Builder.Append("\"");
                    Builder.Append(P.Nickname);
                    Builder.Append("\"");
                    Builder.Append(" ");
                }
                string message = Builder.ToString();
                StringBuilderPool.Shared.Return(Builder);
                response = message;
                return(true);

            case "group":
                if (arguments.Count < 4)
                {
                    response = "Usage: broadcast group (group) (time) (message)";
                    return(false);
                }

                UserGroup BroadcastGroup = ServerStatic.PermissionsHandler.GetGroup(arguments.At(1));
                if (BroadcastGroup == null)
                {
                    response = $"Invalid group: {arguments.At(1)}";
                    return(false);
                }

                if (!ushort.TryParse(arguments.At(2), out ushort tim) && tim <= 0)
                {
                    response = $"Invalid value for duration: {arguments.At(2)}";
                    return(false);
                }

                foreach (Player player in Player.List)
                {
                    if (player.Group.BadgeText.Equals(BroadcastGroup.BadgeText))
                    {
                        player.Broadcast(tim, EventHandlers.FormatArguments(arguments, 3));
                    }
                }

                response = $"Message sent to all members of \"{arguments.At(1)}\"";
                return(true);

            case "groups":
                if (arguments.Count < 4)
                {
                    response = "Usage: broadcast groups (list of groups (i.e.: owner,admin,moderator)) (time) (message)";
                    return(false);
                }

                string[]      Groups    = arguments.At(1).Split(',');
                List <string> GroupList = new List <string>();
                foreach (string s in Groups)
                {
                    UserGroup BroadGroup = ServerStatic.PermissionsHandler.GetGroup(s);
                    if (BroadGroup != null)
                    {
                        GroupList.Add(BroadGroup.BadgeText);
                    }
                }

                if (!ushort.TryParse(arguments.At(2), out ushort e) && e <= 0)
                {
                    response = $"Invalid value for duration: {arguments.At(2)}";
                    return(false);
                }

                foreach (Player P in Player.List)
                {
                    if (GroupList.Contains(P.Group.BadgeText))
                    {
                        P.Broadcast(e, EventHandlers.FormatArguments(arguments, 3));
                    }
                }


                StringBuilder Bdr = StringBuilderPool.Shared.Rent("Message sent to groups with badge text: ");
                foreach (string P in GroupList)
                {
                    Bdr.Append("\"");
                    Bdr.Append(P);
                    Bdr.Append("\"");
                    Bdr.Append(" ");
                }
                string ms = Bdr.ToString();
                StringBuilderPool.Shared.Return(Bdr);
                response = ms;
                return(true);

            case "role":
                if (arguments.Count < 4)
                {
                    response = "Usage: broadcast role (RoleType) (time) (message)";
                    return(false);
                }

                if (!Enum.TryParse(arguments.At(1), true, out RoleType Role))
                {
                    response = $"Invalid value for RoleType: {arguments.At(1)}";
                    return(false);
                }

                if (!ushort.TryParse(arguments.At(2), out ushort te) && te <= 0)
                {
                    response = $"Invalid value for duration: {arguments.At(2)}";
                    return(false);
                }

                foreach (Player Player in Player.List)
                {
                    if (Player.Role == Role)
                    {
                        Player.Broadcast(te, EventHandlers.FormatArguments(arguments, 3));
                    }
                }

                response = $"Message sent to all members of \"{arguments.At(1)}\"";
                return(true);

            case "roles":
                if (arguments.Count < 4)
                {
                    response = "Usage: broadcast roles (RoleType group (i.e.: ClassD, Scientist, NtfCadet)) (time) (message)";
                    return(false);
                }

                string[]        Roles    = arguments.At(1).Split(',');
                List <RoleType> RoleList = new List <RoleType>();
                foreach (string s in Roles)
                {
                    if (Enum.TryParse(s, true, out RoleType R))
                    {
                        RoleList.Add(R);
                    }
                }

                if (!ushort.TryParse(arguments.At(2), out ushort ti) && ti <= 0)
                {
                    response = $"Invalid value for duration: {arguments.At(2)}";
                    return(false);
                }

                foreach (Player P in Player.List)
                {
                    if (RoleList.Contains(P.Role))
                    {
                        P.Broadcast(ti, EventHandlers.FormatArguments(arguments, 3));
                    }
                }

                StringBuilder Build = StringBuilderPool.Shared.Rent("Message sent to roles: ");
                foreach (RoleType Ro in RoleList)
                {
                    Build.Append("\"");
                    Build.Append(Ro.ToString());
                    Build.Append("\"");
                    Build.Append(" ");
                }
                string msg = Build.ToString();
                StringBuilderPool.Shared.Return(Build);
                response = msg;
                return(true);

            case "random":
            case "someone":
                if (arguments.Count < 3)
                {
                    response = "Usage: broadcast (random / someone) (time) (message)";
                    return(false);
                }

                if (!ushort.TryParse(arguments.At(1), out ushort me) && me <= 0)
                {
                    response = $"Invalid value for duration: {arguments.At(1)}";
                    return(false);
                }

                Player Plyr = Player.List.ToList()[Plugin.NumGen.Next(0, Player.List.Count())];
                Plyr.Broadcast(me, EventHandlers.FormatArguments(arguments, 2));
                response = $"Message sent to {Plyr.Nickname}";
                return(true);

            case "staff":
            case "admin":
                if (arguments.Count < 3)
                {
                    response = "Usage: broadcast (staff / admin) (time) (message)";
                    return(false);
                }

                if (!ushort.TryParse(arguments.At(1), out ushort t))
                {
                    response = $"Invalid value for broadcast time: {arguments.At(1)}";
                    return(false);
                }

                foreach (Player Pl in Player.List)
                {
                    if (Pl.ReferenceHub.serverRoles.RemoteAdmin)
                    {
                        Pl.Broadcast(t, EventHandlers.FormatArguments(arguments, 2) + $" - {((CommandSender)sender).Nickname}", Broadcast.BroadcastFlags.AdminChat);
                    }
                }

                response = $"Message sent to all currently online staff";
                return(true);

            case "clearall":
                if (arguments.Count != 1)
                {
                    response = "Usage: broadcast clearall";
                    return(false);
                }

                PlayerManager.localPlayer.GetComponent <Broadcast>().RpcClearElements();
                response = "All current broadcasts have been cleared";
                return(true);

            default:
                if (arguments.Count < 2)
                {
                    response = "Usage: broadcast (time) (message)";
                    return(false);
                }

                if (!ushort.TryParse(arguments.At(0), out ushort tm))
                {
                    response = $"Invalid value for broadcast time: {arguments.At(0)}";
                    return(false);
                }
                Map.Broadcast(tm, EventHandlers.FormatArguments(arguments, 1));
                break;
            }
            response = "";
            return(false);
        }
Esempio n. 18
0
        public async Task <IActionResult> Plan(Pl plan, int id, string st)
        {
            IQueryable <Plan> pl = db.Plans.Include(c => c.User).Include(u => u.Operations).ThenInclude(u => u.p);

            pl = pl.Where(p => p.User.Email == User.Identity.Name);
            if (id != 0)
            {
                pl = pl.Where(p => p.Id == id);
                Pl pl2 = new Pl();
                pl2.pl = pl;
                return(View(pl2));
            }
            else
            {
                if (st == "выполняются")
                {
                    pl = pl.Where(p => p.Data <= DateTime.Now && p.DataPeriod >= DateTime.Now);
                    foreach (Plan p in pl)
                    {
                        int i    = 0;
                        int t    = 0;
                        int ras  = 0;
                        int doch = 0;
                        foreach (Operation op in p.Operations)
                        {
                            if (op.NameAct == "доход")
                            {
                                doch += op.SumP;
                            }
                            else
                            {
                                ras += op.SumP;
                            }
                            i += op.Procent;
                            t++;
                        }
                        p.RasMonth    = ras;
                        p.DochMonth   = doch;
                        p.RaznDochRas = doch - ras;
                        if (i != 0)
                        {
                            p.Procent = i / t;
                        }
                        else
                        {
                            p.Procent = 0;
                        }
                        db.Plans.Update(p);
                    }
                    await db.SaveChangesAsync();

                    return(View(pl));
                }
                else if (st == "ожидают")
                {
                    pl = pl.Where(p => p.Data > DateTime.Now);
                    Pl pl1 = new Pl();
                    pl1.pl = pl;
                    return(View(pl1));
                }
                else if (st == "выполнены")
                {
                    pl = pl.Where(p => p.DataPeriod < DateTime.Now);
                    Pl pl1 = new Pl();
                    pl1.pl = pl;
                    return(View(pl1));
                }
                else
                {
                    Pl pl1 = new Pl();
                    pl1.pl = pl;
                    return(View(pl1));
                }
            }
        }
Esempio n. 19
0
        static void Main(string[] args)
        {
            L    l    = new L(true, false, false, true);
            LL   ll   = new LL(56.00848, 92.85302);
            int  z    = 15;
            Bbox bbox = new Bbox(56.01000, 92.85, 56.00580, 92.85778);
            Spn  spn  = new Spn(0.005, 0.005);
            Size size = new Size(450, 450);
            Lang lang = new Lang(Lang.Lang_reg.en_US);

            //Создание карты с слоем пробок
            StaticAPI map1 = new StaticAPI(l, ll, z, size, lang);

            Console.Write("Создание карты с слоем пробок.\n");
            Console.Write(map1.GetPictureURL() + "\n\n");

            //Создание карты с различными метками
            Pm              pm1      = new Pm(56.00922, 92.84895);
            Pm              pm2      = new Pm(56.00956, 92.85569, Pm.Color.do_, Pm.Size.l, 2);
            Pm              pm3      = new Pm(56.00891, 92.85581, Pm.Color.nt, Pm.Size.s, 3);
            Pm2             pm4      = new Pm2(56.00895, 92.85679);
            Pm2             pm5      = new Pm2(56.00702, 92.85713, Pm2.Color.gr, Pm2.Size.l, 5);
            Vk              pm6      = new Vk(56.00690, 92.85552, Vk.Color.bk);
            Vector          pm7      = new Vector(56.00613, 92.85574, Vector.Mark.comma);
            Vector          pm8      = new Vector(56.00574, 92.85283, Vector.Mark.ya_ru);
            Vector          pm9      = new Vector(56.00672, 92.85258, Vector.Mark.home);
            Flag            pm10     = new Flag(56.00661, 92.84937);
            List <MarkBase> listMark = new List <MarkBase>()
            {
                pm1, pm2, pm3, pm4, pm5, pm6, pm7, pm8, pm9, pm10
            };
            Pt        pt   = new Pt(listMark);
            StaticAPI map2 = new StaticAPI(new L(), bbox, pt: pt);

            Console.Write("Создание карты с различными метками.\n");
            Console.Write(map2.GetPictureURL() + "\n\n");

            //Создание спутниковой карты с полилиниями разного цвета
            Polyline polyline1 = new Polyline("0000FF99", 6, new List <Point>()
            {
                new Point(56.00976, 92.85251),
                new Point(56.00519, 92.85328),
                new Point(56.00518, 92.85359),
                new Point(56.00978, 92.85290)
            });
            Polyline polyline2 = new Polyline("FF0000FF", 10, new List <Point>()
            {
                new Point(56.00673, 92.84922),
                new Point(56.00719, 92.85721)
            });
            List <Polyline> listPol = new List <Polyline>()
            {
                polyline1, polyline2
            };
            Pl        pl   = new Pl(listPol);
            StaticAPI map3 = new StaticAPI(
                new L(false, true, true, false),
                ll,
                spn,
                new Size(450, 300),
                scale: 4,
                pl: pl);

            Console.Write("Создание спутниковой карты с полилиниями разного цвета.\n");
            Console.Write(map3.GetPictureURL() + "\n\n");

            //Создание карты с двумя пересекающимися полигонами
            List <Point> listPolygonPoint = new List <Point>()
            {
                new Point(56.00922, 92.84895),
                new Point(56.00956, 92.85569),
                new Point(56.00891, 92.85581),
                new Point(56.00895, 92.85679),
                new Point(56.00702, 92.85713),
                new Point(56.00690, 92.85552),
                new Point(56.00613, 92.85574),
                new Point(56.00574, 92.85283),
                new Point(56.00672, 92.85258),
                new Point(56.00661, 92.84937)
            };
            List <Point> listPolygonPoint2 = new List <Point>()
            {
                new Point(56.00827, 92.85097),
                new Point(56.00819, 92.85516),
                new Point(56.00693, 92.85367),
                new Point(56.00758, 92.85076)
            };
            Polyline     polygons          = new Polygon("F473fFAF", "ec473fF2", 8, listPolygonPoint, listPolygonPoint2);
            List <Point> listPolygonPoint3 = new List <Point>()
            {
                new Point(56.00976, 92.85251),
                new Point(56.00978, 92.85290),
                new Point(56.00518, 92.85359),
                new Point(56.00519, 92.85328)
            };
            Polyline        polygons2   = new Polygon(listPolygonPoint3);
            List <Polyline> listPolygon = new List <Polyline>()
            {
                polygons, polygons2
            };
            Pl        pl2  = new Pl(listPolygon);
            StaticAPI map4 = new StaticAPI(new L(), bbox, pl: pl2);

            Console.Write("Создание карты с двумя пересекающимися полигонами.\n");
            Console.Write(map4.GetPictureURL() + "\n\n");

            //Создание карты со всеми ранее созданными объектами
            List <Polyline> listPolygonPoint4 = new List <Polyline>()
            {
                polyline1, polyline2, polygons, polygons2
            };
            Pl        pl3  = new Pl(listPolygonPoint4);
            StaticAPI map5 = new StaticAPI(
                new L(true, false, true, true),
                bbox,
                new Size(450, 650),
                new Lang(Lang.Lang_reg.ru_RU),
                1.5,
                pt,
                pl3);

            Console.Write("Создание карты со всеми ранее созданными объектами.\n");
            Console.Write(map5.GetPictureURL() + "\n\n");

            Console.ReadLine();
        }