public BankItem GetBankItem(TSPlayer player) { var matches = new List <BankItem>(); BankItem account = null; using (var reader = db.QueryReader("SELECT * FROM ServerBank WHERE PlayerName = @0", player.User.Name)) { while (reader.Read()) { matches.Add(new BankItem( reader.Get <string>("PlayerName"), reader.Get <int>("Balance")) ); } } if (matches.Count < 1) //Player isn't in db, create account { db.Query("INSERT INTO ServerBank (PlayerName, Balance) " + "VALUES (@0, @1)", player.User.Name, 0); account = GetBankItem(player); //recurse through the function } else { account = matches.ElementAt(0); } return(account); }
private void Bank(CommandArgs args) { var account = SEconomyPlugin.Instance.GetBankAccount(args.Player.User.Name); BankItem bankAccount = new BankItem(); List <BankItem> bankList = new List <BankItem>(); Money balance; if (args.Parameters.Count < 2) { args.Player.SendValidBankUsage(); return; } string subcmd = args.Parameters[0].ToLower(); switch (subcmd) { #region balance case "balance": case "bal": //Display the player's balance return; #endregion #region deposit case "deposit": //Deposit the specified amount. Max balance = 10 Platinum ServerCoins (10,000,000) return; #endregion #region withdraw case "withdraw": //Withdraw specified amount. Include a fee. Simulate a savings account return; #endregion default: args.Player.SendValidBankUsage(); return; } }
//Withdraw public bool WithdrawBal(BankItem account, Money amount, double INTEREST_RATE) { var matches = new List <string>(); using (var reader = db.QueryReader("SELECT * FROM ServerBank WHERE PlayerName = @0", account.player)) { while (reader.Read()) { matches.Add(account.player); } if (matches.Count != 0) { db.Query("UPDATE ServerBank SET Balance = Balance - @0", (int)(amount * (1 + INTEREST_RATE))); } else { return(false); } } return(true); }
//Get Balance, returns -1 if name not found /* public int GetBalance(BankItem account) * { * int balance = -1; * var matches = new List<string>(); * using (var reader = db.QueryReader("SELECT * FROM ServerBank WHERE PlayerName = @0", account.player)) * { * while (reader.Read()) * { * matches.Add(account.player); * } * if (matches.Count != 0) * { * balance = reader.Get<int>("Balance"); * } * } * return balance; * * }*/ //Deposit public bool DepositBal(BankItem account, int amount) { var matches = new List <string>(); using (var reader = db.QueryReader("SELECT * FROM ServerBank WHERE PlayerName = @0", account.player)) { while (reader.Read()) { matches.Add(account.player); } if (matches.Count != 0) { db.Query("UPDATE ServerBank SET Balance = Balance + @0", amount); } else { return(false); } } return(true); }
private void Bank(CommandArgs args) { if (args.Player == null) { return; } BankItem bankAccount = new BankItem(); Money balance; if (args.Parameters.Count < 1) { args.Player.SendValidBankUsage(); return; } bankAccount = manager.GetBankItem(args.Player); string subcmd = args.Parameters[0].ToLower(); switch (subcmd) { #region balance case "balance": case "bal": //Display the player's balance Money.TryParse(bankAccount.balance.ToString(), out balance); args.Player.SendSuccessMessage("[ServerBank] Balance: {0}", balance); return; #endregion #region deposit case "deposit": //Deposit the specified amount. Max balance = 10 Platinum ServerCoins (10,000,000) Money deposit = -1; if (args.Parameters.Count > 2 || !Money.TryParse(args.Parameters[1], out deposit)) { args.Player.SendErrorMessage("[ServerBank] Invalid Desposit Amount!"); return; } else if (((int)deposit + (int)bankAccount.balance) > MAXBALANCE) { args.Player.SendErrorMessage("[ServerBank] Maximum Balance Amount is: {0}", Money.Parse(MAXBALANCE.ToString())); return; } else if ((int)deposit <= 0) { args.Player.SendErrorMessage("[ServerBank] Invalid Desposit Amount!"); return; } else if (manager.DepositBal(bankAccount, (int)deposit)) { args.Player.SendSuccessMessage("[ServerBank] Success! You have deposited: {0}", deposit); bankAccount = manager.GetBankItem(args.Player); Money.TryParse(bankAccount.balance.ToString(), out balance); args.Player.SendSuccessMessage("[ServerBank] Balance {0}", balance); } else { args.Player.SendErrorMessage("[ServerBank] An Error has Occured!"); return; } return; #endregion #region withdraw case "withdraw": //Withdraw specified amount. Include a fee. Simulate a savings account Money withdraw = -1; if (args.Parameters.Count > 2 || !Money.TryParse(args.Parameters[1], out withdraw)) { args.Player.SendErrorMessage("[ServerBank] Invalid Withdraw Amount!"); return; } else if ((int)withdraw <= 0) { args.Player.SendErrorMessage("[ServerBank] Invalid Withdraw Amount!"); return; } else if ((int)withdraw == (int)bankAccount.balance) //No Interest when withdraw amount == balance { if (manager.WithdrawBal(bankAccount, (int)withdraw, 0)) { args.Player.SendSuccessMessage("[ServerBank] Success! You have withdrawed: {0}", withdraw); bankAccount = manager.GetBankItem(args.Player); Money.TryParse(bankAccount.balance.ToString(), out balance); args.Player.SendSuccessMessage("[ServerBank] Balance {0}", balance); } else { args.Player.SendErrorMessage("[ServerBank] An Error has Occured!"); } return; } else if ((int)(withdraw * (1 + INTEREST_RATE)) > (int)bankAccount.balance) { args.Player.SendErrorMessage("[ServerBank] Withdraw Amount Exceeds Balance With Interest"); //args.Player.SendErrorMessage("[ServerBank] Withdraw Entire Balance for No Interest"); return; } else if (manager.WithdrawBal(bankAccount, (int)withdraw, INTEREST_RATE)) { args.Player.SendSuccessMessage("[ServerBank] Success! You have withdrawed with interest: {0}", (Money)(withdraw * (1 + INTEREST_RATE))); bankAccount = manager.GetBankItem(args.Player); Money.TryParse(bankAccount.balance.ToString(), out balance); args.Player.SendSuccessMessage("[ServerBank] Balance {0}", balance); } else { args.Player.SendErrorMessage("[ServerBank] An Error has Occured!"); return; } return; #endregion default: args.Player.SendValidBankUsage(); return; } }