public static string ParseCommand(string cmd, TSPlayer plr) { var replacements = new Dictionary <string, object>() { { "NAME", plr.Name }, { "INDEX", plr.Index }, { "IP", plr.IP }, { "GROUP", plr.Group.Name }, { "RANK", plr.GetRank() == null ? "None" : plr.GetRank().name } }; string parsed = cmd; foreach (var word in replacements) { parsed = parsed.Replace(String.Format("%PLAYER_{0}%", word.Key), word.Value.ToString()); } return(parsed); }
async void BankTransferCompleted(object sender, BankTransferEventArgs e) { // Null check the instance - Thanks Wolfje if (SEconomyPlugin.Instance == null) { return; } // The world account does not have a rank if (e.ReceiverAccount == null || !e.ReceiverAccount.IsAccountEnabled || e.ReceiverAccount.IsSystemAccount || SEconomyPlugin.Instance.WorldAccount == null) { return; } // Stop chain transfers if (e.TransactionMessage.StartsWith("AutoRank")) { return; } TSPlayer ply = TShock.Players.FirstOrDefault(p => p != null && p.Active && p.IsLoggedIn && p.User.Name == e.ReceiverAccount.UserAccountName); if (ply == null) { return; } var rank = ply.GetRank(); if (rank != null) { var ranks = rank.FindNextRanks(e.ReceiverAccount.Balance); if (ranks != null && ranks.Count > 0) { //Money cost = 0L; //foreach (Rank rk in ranks) //{ // cost += rk.Cost(); //} //Money balance = e.ReceiverAccount.Balance; //var task = await e.ReceiverAccount.TransferToAsync(SEconomyPlugin.Instance.WorldAccount, cost, // BankAccountTransferOptions.SuppressDefaultAnnounceMessages, "", // String.Format("{0} paid {1} to rank up with AutoRank.", ply.Name, cost.ToString())); //if (!task.TransferSucceeded) //{ // if (task.Exception != null) // { // Log.ConsoleError("SEconomy Exception: {0}\nCheck logs for details.", task.Exception.Message); // Log.Error(task.Exception.ToString()); // } // // Returning the money; This transaction may fail, but I see no other way. // await SEconomyPlugin.Instance.WorldAccount.TransferToAsync(e.ReceiverAccount, // balance - e.ReceiverAccount.Balance, BankAccountTransferOptions.SuppressDefaultAnnounceMessages, // "", ""); // ply.SendErrorMessage( // "Your transaction could not be completed. Start a new transaction to retry."); //} //else await ply.RankUpAsync(ranks); //Task.Factory.StartNew(await args.ReceiverAccount.TransferToAsync(SEconomyPlugin.Instance.WorldAccount, cost, // BankAccountTransferOptions.None, String.Empty, // String.Format("{0} paid {1} to rank up with AutoRank.", ply.Name, // cost.ToString())) }); .ContinueWith((task) => // { // if (!task.Result.TransferSucceeded) // { // ply.SendErrorMessage( // "Your transaction could not be completed. Start a new transaction to retry."); // return; // } // ply.RankUpAsync(ranks); // }); } } }