public static void ClientEvent_ATM(Client player, params object[] args) { try { if (Admin.IsServerStoping) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Сервер сейчас не может принять это действие", 3000); return; } int act = Convert.ToInt32(args[0]); string data1 = Convert.ToString(args[1]); var acc = Main.Players[player]; int amount; if (!Int32.TryParse(data1, out amount)) { return; } Log.Debug($"{player.Name} : {data1}"); switch (act) { case 0: //put money if (Wallet.Change(player, -Math.Abs(amount))) { Bank.Change(acc.Bank, amount); GameLog.Money($"player({Main.Players[player].UUID})", $"bank({acc.Bank})", Math.Abs(amount), $"atmIn"); Trigger.ClientEvent(player, "setbank", Bank.Accounts[acc.Bank].Balance.ToString(), ""); } break; case 1: //take money if (Bank.Change(acc.Bank, -Math.Abs(amount))) { Wallet.Change(player, amount); GameLog.Money($"bank({acc.Bank})", $"player({Main.Players[player].UUID})", Math.Abs(amount), $"atmOut"); Trigger.ClientEvent(player, "setbank", Bank.Accounts[acc.Bank].Balance.ToString(), ""); } break; case 2: //put house tax var house = Houses.HouseManager.GetHouse(player, true); if (house == null) { return; } var maxMoney = Convert.ToInt32(house.Price / 100 * 0.013) * 24 * 7; if (Bank.Accounts[house.BankID].Balance + Math.Abs(amount) > maxMoney) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Невозможно перевести столько средств на счет дома.", 3000); return; } if (!Wallet.Change(player, -Math.Abs(amount))) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Недостаточно средств.", 3000); return; } Bank.Change(house.BankID, Math.Abs(amount)); GameLog.Money($"player({Main.Players[player].UUID})", $"bank({house.BankID})", Math.Abs(amount), $"atmHouse"); Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, "Успешный перевод.", 3000); break; case 3: //put biz tax var check = NAPI.Data.GetEntityData(player, "bizcheck"); if (check == null) { return; } if (acc.BizIDs.Count != check) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Возникла ошибка! Попробуйте еще раз.", 3000); return; } int bid = 0; if (!Int32.TryParse(Convert.ToString(args[2]), out bid)) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Возникла ошибка! Попробуйте еще раз.", 3000); return; } Business biz = BusinessManager.BizList[acc.BizIDs[bid]]; maxMoney = Convert.ToInt32(biz.SellPrice / 100 * 0.01) * 24 * 7; if (Bank.Accounts[biz.BankID].Balance + Math.Abs(amount) > maxMoney) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Невозможно перевести столько средств на счет бизнеса.", 3000); return; } if (!Wallet.Change(player, -Math.Abs(amount))) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Недостаточно средств.", 3000); return; } Bank.Change(biz.BankID, Math.Abs(amount)); GameLog.Money($"player({Main.Players[player].UUID})", $"bank({biz.BankID})", Math.Abs(amount), $"atmBiz"); Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, "Успешный перевод.", 3000); break; case 4: //transfer to int num = 0; if (!Int32.TryParse(Convert.ToString(args[2]), out num)) { return; } Bank.Transfer(acc.Bank, num, +Math.Abs(amount)); break; } } catch (Exception e) { Log.Write("atm: " + e.Message, nLog.Type.Error); } }
public static void ClientEvent_ATMVAL(Client player, params object[] args) { try { if (Admin.IsServerStoping) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Сервер сейчас не может принять это действие", 3000); return; } var acc = Main.Players[player]; int type = NAPI.Data.GetEntityData(player, "ATMTYPE"); string data = Convert.ToString(args[0]); int amount; if (!Int32.TryParse(data, out amount)) { return; } switch (type) { case 0: Trigger.ClientEvent(player, "atmClose"); if (Wallet.Change(player, -Math.Abs(amount))) { Bank.Change(acc.Bank, +Math.Abs(amount)); GameLog.Money($"player({Main.Players[player].UUID})", $"bank({acc.Bank})", Math.Abs(amount), $"atmIn"); Trigger.ClientEvent(player, "setbank", Bank.Accounts[acc.Bank].Balance.ToString(), ""); } break; case 1: if (Bank.Change(acc.Bank, -Math.Abs(amount))) { Wallet.Change(player, +Math.Abs(amount)); GameLog.Money($"bank({acc.Bank})", $"player({Main.Players[player].UUID})", Math.Abs(amount), $"atmOut"); Trigger.ClientEvent(player, "setbank", Bank.Accounts[acc.Bank].Balance.ToString(), ""); } break; case 2: var house = Houses.HouseManager.GetHouse(player, true); if (house == null) { return; } var maxMoney = Convert.ToInt32(house.Price / 100 * 0.013) * 24 * 7; if (Bank.Accounts[house.BankID].Balance + Math.Abs(amount) > maxMoney) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Невозможно перевести столько средств на счет дома.", 3000); return; } if (!Wallet.Change(player, -Math.Abs(amount))) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Недостаточно средств.", 3000); return; } Bank.Change(house.BankID, +Math.Abs(amount)); GameLog.Money($"player({Main.Players[player].UUID})", $"bank({house.BankID})", Math.Abs(amount), $"atmHouse"); Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, "Успешный перевод.", 3000); Trigger.ClientEvent(player, "atmOpen", $"[2,'{Bank.Accounts[house.BankID].Balance}/{Convert.ToInt32(house.Price / 100 * 0.013) * 24 * 7}$','Сумма внесения наличных']"); break; case 3: int bid = NAPI.Data.GetEntityData(player, "ATMBIZ"); Business biz = BusinessManager.BizList[acc.BizIDs[bid]]; maxMoney = Convert.ToInt32(biz.SellPrice / 100 * 0.013) * 24 * 7; if (Bank.Accounts[biz.BankID].Balance + Math.Abs(amount) > maxMoney) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Невозможно перевести столько средств на счет бизнеса.", 3000); return; } if (!Wallet.Change(player, -Math.Abs(amount))) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Недостаточно средств.", 3000); return; } Bank.Change(biz.BankID, +Math.Abs(amount)); GameLog.Money($"player({Main.Players[player].UUID})", $"bank({biz.BankID})", Math.Abs(amount), $"atmBiz"); Notify.Send(player, NotifyType.Success, NotifyPosition.BottomCenter, "Успешный перевод.", 3000); Trigger.ClientEvent(player, "atmOpen", $"[2,'{Bank.Accounts[biz.BankID].Balance}/{Convert.ToInt32(biz.SellPrice / 100 * 0.013) * 24 * 7}$','Сумма зачисления']"); break; case 4: if (!Bank.Accounts.ContainsKey(amount) || amount <= 0) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Счет не найден!", 3000); Trigger.ClientEvent(player, "closeatm"); return; } NAPI.Data.SetEntityData(player, "ATM2ACC", amount); Trigger.ClientEvent(player, "atmOpen", "[2,0,'Сумма для перевода']"); NAPI.Data.SetEntityData(player, "ATMTYPE", 44); break; case 44: if (Main.Players[player].LVL < 1) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Перевод денег доступен после первого уровня", 3000); return; } if (player.HasData("NEXT_BANK_TRANSFER") && DateTime.Now < player.GetData("NEXT_BANK_TRANSFER")) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Следующая транзакция будет возможна в течение минуты", 3000); return; } int bank = NAPI.Data.GetEntityData(player, "ATM2ACC"); if (!Bank.Accounts.ContainsKey(bank) || bank <= 0) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Счет не найден!", 3000); Trigger.ClientEvent(player, "closeatm"); return; } if (Bank.Accounts[bank].Type != 1 && Main.Players[player].AdminLVL == 0) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Счет не найден!", 3000); Trigger.ClientEvent(player, "closeatm"); return; } if (acc.Bank == bank) { Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, "Операция отменена.", 3000); Trigger.ClientEvent(player, "closeatm"); return; } Bank.Transfer(acc.Bank, bank, Math.Abs(amount)); Trigger.ClientEvent(player, "closeatm"); if (Main.Players[player].AdminLVL == 0) { player.SetData("NEXT_BANK_TRANSFER", DateTime.Now.AddMinutes(1)); } break; } } catch (Exception e) { Log.Write(e.ToString(), nLog.Type.Error); } }