Exemple #1
0
        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);
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
        //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);
        }
Exemple #4
0
        //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;
            }
        }