Esempio n. 1
0
        public void CreateGroup(Client sender, int bossId, GroupType type, string name, string tag, string hexColor)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendWarning("Nie posiadasz uprawnień do tworzenia grupy.");
                return;
            }

            name = name.Replace('_', ' ');

            Color color;

            try
            {
                color = hexColor.ToColor();
            }
            catch (ColorConvertException)
            {
                sender.SendError("Wprowadzony kolor jest nieprawidłowy.");
                return;
            }

            if (EntityHelper.GetAccountByServerId(bossId) != null)
            {
                AccountEntity boss = EntityHelper.GetAccountByServerId(bossId);

                if (boss.CharacterEntity.DbModel.Workers.Count < 3)
                {
                    GroupEntity group = GroupEntity.Create(name, tag, type, color);
                    group.AddWorker(new WorkerModel
                    {
                        Group       = group.DbModel,
                        Character   = boss.CharacterEntity.DbModel,
                        Rights      = GroupRights.AllBasic,
                        DutyMinutes = 0,
                        Salary      = 0
                    });
                    group.Save();
                    sender.SendInfo($"Stworzyłeś grupę {group.GetColoredName()}.");
                }
                else
                {
                    boss.Client.SendError("Nie posiadasz wolnych slotów grupowych.");
                    if (boss.Client != sender)
                    {
                        sender.SendError(
                            $"Gracz: {boss.Client.Name} nie posiada wolnych slotów grupowych.");
                    }
                }
            }
            else
            {
                sender.SendError("Nie znaleziono gracza o podanym Id.");
            }
        }
        public void OnPlayerPlaceOrderHandler(Client sender, params object[] arguments)
        {
            /* Argumenty
             * args[0] - List<WarehouseItemInfo> JSON
             */

            AccountEntity player = sender.GetAccountEntity();
            GroupEntity   group  = player.CharacterEntity.OnDutyGroup;

            if (group != null)
            {
                List <WarehouseItemInfo> items =
                    JsonConvert.DeserializeObject <List <WarehouseItemInfo> >(arguments[0].ToString());

                decimal sum = items.Sum(x => x.ItemModelInfo.Cost * x.Count);
                if (group.HasMoney(sum))
                {
                    GroupWarehouseOrderModel shipment = new GroupWarehouseOrderModel
                    {
                        //Getter = group.DbModel,
                        //OrderItemsJson = JsonConvert.SerializeObject(items),
                        //ShipmentLog = $"[{DateTime.Now}] Złożenie zamówienia w magazynie. \n"
                    };

                    RoleplayContext ctx = Singletons.RoleplayContextFactory.Create();
                    using (GroupWarehouseOrdersRepository repository = new GroupWarehouseOrdersRepository(ctx))
                    {
                        repository.Insert(shipment);
                        repository.Save();
                    }
                    group.RemoveMoney(sum);

                    CurrentOrders.Add(new WarehouseOrderInfo
                    {
                        Data = shipment
                    });


                    sender.SendInfo("Zamawianie przesyłki zakończyło się pomyślnie.");
                }
                else
                {
                    sender.SendError($"Grupa {group.GetColoredName()} nie posiada wystarczającej ilości środków.");
                }
            }
        }
Esempio n. 3
0
        public void JoinGroup(Client sender, long groupId)
        {
            if (!sender.HasRank(ServerRank.AdministratorRozgrywki2))
            {
                sender.SendError("Nie posiadasz uprawnień do ustawienia wchodzenia do grupy.");
                return;
            }

            if (EntityHelper.GetGroup(groupId) != null)
            {
                AccountEntity player = sender.GetAccountEntity();

                GroupEntity group = EntityHelper.GetGroup(groupId);

                if (group.GetWorkers().Any(p => p.Character == player.CharacterEntity.DbModel))
                {
                    sender.SendError("Jesteś już w tej grupie.");
                    return;
                }

                if (player.CharacterEntity.DbModel.Workers.Count < 3)
                {
                    group.AddWorker(new WorkerModel
                    {
                        Group       = group.DbModel,
                        Character   = sender.GetAccountEntity().CharacterEntity.DbModel,
                        Rights      = GroupRights.AllBasic,
                        DutyMinutes = 0,
                        Salary      = 0
                    });
                    group.Save();

                    sender.SendInfo($"Wszedłeś do grupy {group.GetColoredName()}.");
                }
                else
                {
                    sender.SendError("Nie posiadasz wolnych slotów grupowych.");
                }
            }
            else
            {
                sender.SendError("Nie znaleziono grupy o podanym Id.");
            }
        }