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())); } } }
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 + ")"); } } }