diff --git a/src/server/scripts/Commands/cs_send.cpp b/src/server/scripts/Commands/cs_send.cpp index 3e3d6f56fe..0bc074e4b0 100644 --- a/src/server/scripts/Commands/cs_send.cpp +++ b/src/server/scripts/Commands/cs_send.cpp @@ -189,17 +189,31 @@ public: return true; } - static bool HandleSendMoneyCommand(ChatHandler* handler, Optional target, QuotedString subject, QuotedString text, uint32 money) + static bool HandleSendMoneyCommand(ChatHandler* handler, Optional target, QuotedString subject, QuotedString text, Tail money) { if (!target) - { target = PlayerIdentifier::FromTargetOrSelf(handler); - } if (!target) - { return false; - } + + auto IsExistWord = [](std::string_view line, std::initializer_list words) + { + for (auto const& word : words) + { + if (line.find(word) != std::string_view::npos) + return true; + } + + return false; + }; + + Optional moneyToAddO = IsExistWord(money, { "g", "s", "c" }) ? MoneyStringToMoney(money) : Acore::StringTo(money); + + if (!moneyToAddO) + return false; + + int32 moneyToAdd = *moneyToAddO; // from console show not existed sender MailSender sender(MAIL_NORMAL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetGUID().GetCounter() : 0, MAIL_STATIONERY_GM); @@ -207,7 +221,7 @@ public: CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); MailDraft(subject, text) - .AddMoney(money) + .AddMoney(moneyToAdd) .SendMailTo(trans, MailReceiver(target->GetConnectedPlayer(), target->GetGUID().GetCounter()), sender); CharacterDatabase.CommitTransaction(trans);