Esempio n. 1
0
        private void OnClientEventTrigger(Client sender, string eventName, params object[] arguments)
        {
            if (eventName == "ActivateATM")
            {
                foreach (Vector3 atm in PlayerPositionAtATM.Keys)
                {
                    if (sender.position.DistanceTo(atm) < 1.5f)
                    {
                        List <Vector3> offsets = PlayerPositionAtATM[atm];
                        sender.position = atm;
                        sender.rotation = offsets[0];

                        API.triggerClientEvent(sender, "onExecuteATM", offsets[1], offsets[2]);

                        Player.PlayerData[sender].InEvent = PlayerEvent.UsingATM;
                        API.playPlayerScenario(sender, "PROP_HUMAN_ATM");
                        return;
                    }
                }
            }
            else if (eventName == "chooseBankCard")
            {
                Player p = Player.PlayerData[sender];
                p.AccessingBank   = -1;
                p.TransactionType = -1;

                p.AwaitingInventorySelection = InventoryType.BankCard;
                InventoryManager.UpdatePlayerInventory(p);
            }
            else if (eventName == "closeATM")
            {
                try
                {
                    Player p = Player.PlayerData[sender];
                    p.AccessingBank   = -1;
                    p.TransactionType = -1;

                    p.InEvent = PlayerEvent.None;
                    API.stopPlayerAnimation(sender);
                }
                catch
                {
                    // ignored
                }
            }
            else if (eventName == "ATMCardSelected")
            {
                Player p = Player.PlayerData[sender];
                try
                {
                    BankAccount bankAccount = BankRepository.GetAccountByCardNumber(long.Parse(p.Inventory.First(i => i.Id == (int)arguments[0]).Value));

                    p.AccessingBank   = bankAccount.Id;
                    p.TransactionType = -1;

                    API.triggerClientEvent(sender, "enterATMPin");
                    InventoryManager.HidePlayerInventory(p, true);
                }
                catch
                {
                    API.triggerClientEvent(sender, "invalidCardATM");
                }
            }
            else if (eventName == "atmValidatePin")
            {
                Player      p           = Player.PlayerData[sender];
                BankAccount bankAccount = BankRepository.GetAccountById(p.AccessingBank);

                Player bankOwner = PlayerRepository.GetPlayerDataById(bankAccount.RegisterOwnerId);
                if ((string)arguments[0] == bankAccount.Pin)
                {
                    API.triggerClientEvent(sender, "atmCorrectPin", bankOwner.Username.Roleplay(), bankAccount.CardNumber.ToString());
                }
                else
                {
                    API.sendChatMessageToPlayer(sender, "Booo");
                }
            }
            else if (eventName == "atmRequestBalance")
            {
                Player      p           = Player.PlayerData[sender];
                BankAccount bankAccount = BankRepository.GetAccountById(p.AccessingBank);

                API.triggerClientEvent(sender, "atmBalanceReturn", bankAccount.Balance.ToString("C0"));
            }
            else if (eventName == "atmWithdrawMoney")
            {
                Player      p           = Player.PlayerData[sender];
                BankAccount bankAccount = BankRepository.GetAccountById(p.AccessingBank);
                long        value       = long.Parse(arguments[0].ToString());
                if (value <= bankAccount.Balance)
                {
                    if (value <= 1000 && value > 0)
                    {
                        Inventory cashItem = Inventory.CreateCashInventoryItem(value);
                        cashItem.OwnerType = InventoryOwnerType.Player;
                        cashItem.OwnerId   = p.Id;
                        if (!cashItem.AddToPlayer(p, true))
                        {
                            API.SendErrorNotification(sender, "You don't have enough space to withdraw this amount of cash.", 7);
                            return;
                        }

                        InventoryRepository.AddNewInventoryItem(cashItem);
                        p.Inventory.Add(cashItem);
                        bankAccount.Balance -= value;

                        CashLogRepository.AddNew(new CashLog(bankAccount.Id, p.Id, value, MoneyTransferMethod.ATMWithdraw));
                        BankRepository.UpdateAsync(bankAccount);

                        API.triggerClientEvent(sender, "atmWithdrawComplete", bankAccount.Balance);
                    }
                    else
                    {
                        API.triggerClientEvent(sender, "atmWithdrawError", 3, "<span id='withdrawErrorMsg' style='color:#f00'>EXCEEDED DAILY LIMIT</span>");
                    }
                }
                else
                {
                    API.triggerClientEvent(sender, "atmWithdrawError", 2, "<span style='color:#f00'>Insufficient funds</span>");
                }
            }
            else if (eventName == "atmChangePin")
            {
                Player      p           = Player.PlayerData[sender];
                BankAccount bankAccount = BankRepository.GetAccountById(p.AccessingBank);

                int value = int.Parse(arguments[0].ToString());
                if (value > 999 && value < 10000)
                {
                    string encPin = value.ToString();
                    bankAccount.Pin = encPin;

                    p.AccessingBank   = -1;
                    p.TransactionType = -1;

                    BankRepository.UpdateAsync(bankAccount);

                    IEnumerable <Inventory> bankCards = p.Inventory.Where(e => e.Type == InventoryType.BankCard);
                    API.triggerClientEvent(sender, "showATMMenu", string.Join(",", bankCards.Select(e => e.Id).ToList()),
                                           string.Join(",", bankCards.Select(e => e.Name).ToList()), string.Join(".", bankCards.Select(e => Inventory.GetInventoryImage[e.Type]).ToList()),
                                           string.Join(",", bankCards.Select(e => e.Quantity).ToList()));
                }
            }
        }
Esempio n. 2
0
        public void LookupPropertyCommand(Client sender, string option = "")
        {
            if (option == "")
            {
                Message.Syntax(sender, "/propertylookup [PartOfName / ID]"); return;
            }
            int val; Int32.TryParse(option, out val);

            if (val != 0)
            {
                Message.Info(sender, "Property lookup (ID: " + val + ")");

                Property prop = PropertyManager.Properties[val - 1];
                Message.Info(sender, prop.Name + " | Owner: " + (prop.OwnerId != -1 ? PlayerRepository.GetPlayerDataById(prop.OwnerId).Username : "******") + " (SQL ID: " + prop.Id + ")");
            }
            else
            {
                PropertyManager mng        = new PropertyManager();
                List <Property> properties = mng.GetPropertiesByPartialName(option);

                Message.Info(sender, "Property lookup (Name: " + option + ")");
                foreach (Property prop in properties)
                {
                    Message.Info(sender, prop.Name + " | Owner: " + (prop.OwnerId != -1 ? PlayerRepository.GetPlayerDataById(prop.OwnerId).Username : "******") + " (SQL ID: " + prop.Id + ")");
                }
            }
        }