Пример #1
0
 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);
 }
Пример #2
0
        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 + ")");
        }
Пример #3
0
 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);
 }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
 static void Take(ref int money, bool all, EcoTransaction data)
 {
     if (all || money < data.Amount)
     {
         data.Amount = money;
         money       = 0;
     }
     else
     {
         money -= data.Amount;
     }
 }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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;
            }
        }