static void HandleGive(EcoTransaction data) { MessageAll("{0} %Sgave {1} &f{2} &3{3}{4}", data); Economy.EcoStats stats = Economy.RetrieveStats(data.TargetName); stats.Salary = Format(" by " + data.Source.name, data); Economy.UpdateStats(stats); }
static string Format(string action, EcoTransaction data) { string entry = "%f" + data.Amount + "%3 " + ServerConfig.Currency + action + "%3 on %f" + DateTime.Now.ToString(CultureInfo.InvariantCulture); string reason = data.Reason; if (reason == null) { return(entry); } if (!Database.Backend.EnforcesTextLength) { return(entry + " (" + reason + ")"); } int totalLen = entry.Length + 3 + reason.Length; if (totalLen >= 256) { int truncatedLen = reason.Length - (totalLen - 255); reason = reason.Substring(0, truncatedLen); data.Source.Message("Reason too long, truncating to: {0}", reason); } return(entry + " (" + reason + ")"); }
static void HandleTake(EcoTransaction data) { MessageAll("{0} %Stook &f{2} &3{3} %Sfrom {1}{4}", data); Economy.EcoStats stats = Economy.RetrieveStats(data.TargetName); stats.Fine = Format(" by " + data.Source.name, data); Economy.UpdateStats(stats); }
protected bool ParseArgs(Player p, string message, ref bool all, string action, out EcoTransaction data) { data = new EcoTransaction(); string[] args = message.SplitSpaces(3); if (args.Length < 2) { Help(p); return(false); } data.TargetName = args[0]; data.Reason = args.Length > 2 ? args[2] : null; data.SourcePlayer = p; if (p == null) { data.SourceName = "(console)"; data.SourceFormatted = "(console)"; } else { data.SourceName = p.name; data.SourceFormatted = p.ColoredName; } all = all && args[1].CaselessEq("all"); return(all || CommandParser.GetInt(p, args[1], "Amount", ref data.Amount, 1)); }
static void MessageAll(string format, EcoTransaction data) { string reason = data.Reason == null ? "" : " %S(" + data.Reason + "%S)"; Chat.MessageGlobal(format, data.SourceFormatted, data.TargetFormatted, data.Amount, ServerConfig.Currency, reason); }
static void MessageAll(string format, EcoTransaction data) { string reason = data.Reason == null ? "" : " %S(" + data.Reason + "%S)"; string msg = string.Format(format, data.Source.ColoredName, data.TargetFormatted, data.Amount, Server.Config.Currency, reason); Chat.MessageGlobal(msg); }
static void Take(ref int money, bool all, EcoTransaction data) { if (all || money < data.Amount) { data.Amount = money; money = 0; } else { money -= data.Amount; } }
static void HandlePurchase(EcoTransaction data) { Economy.EcoStats stats = Economy.RetrieveStats(data.TargetName); stats.TotalSpent += data.Amount; stats.Purchase = data.ItemDescription + "%3 for %f" + data.Amount + " %3" + ServerConfig.Currency + " on %f" + DateTime.Now.ToString(CultureInfo.InvariantCulture); Player p = PlayerInfo.FindExact(data.TargetName); if (p != null) { p.Message("Your balance is now &f{0} &3{1}", p.money, ServerConfig.Currency); } Economy.UpdateStats(stats); }
static void HandlePayment(EcoTransaction data) { MessageAll("{0} %Spaid {1} &f{2} &3{3}{4}", data); Economy.EcoStats stats = Economy.RetrieveStats(data.TargetName); stats.Salary = Format(" by " + data.Source.name, data); Economy.UpdateStats(stats); if (data.Source.IsSuper) { return; } stats = Economy.RetrieveStats(data.Source.name); stats.Payment = Format(" to " + data.TargetName, data); Economy.UpdateStats(stats); data.Source.SetMoney(data.Source.money - data.Amount); }
internal static void HandleEcoTransaction(EcoTransaction transaction) { switch (transaction.Type) { case EcoTransactionType.Purchase: HandlePurchase(transaction); break; case EcoTransactionType.Take: HandleTake(transaction); break; case EcoTransactionType.Give: HandleGive(transaction); break; case EcoTransactionType.Payment: HandlePayment(transaction); break; } }