[6810] Added new command: .sendmoney player "subject" "message" money - Sends a mail with money to a player

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
Fredi 2008-11-03 16:19:23 -02:00 committed by VladimirMangos
parent ad59efb6d9
commit 928ea2bdcf
7 changed files with 101 additions and 3 deletions

View file

@ -22,7 +22,7 @@
DROP TABLE IF EXISTS `db_version`;
CREATE TABLE `db_version` (
`version` varchar(120) default NULL,
`required_2008_11_09_01_mangos_command` bit(1) default NULL
`required_2008_11_09_02_mangos_command` bit(1) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
--
@ -396,6 +396,7 @@ INSERT INTO `command` VALUES
('saveall',1,'Syntax: .saveall\r\n\r\nSave all characters in game.'),
('senditems',3,'Syntax: .senditems #playername "#subject" "#text" itemid1[:count1] itemid2[:count2] ... itemidN[:countN]\r\n\r\nSend a mail to a player. Subject and mail text must be in "". If for itemid not provided related count values then expected 1, if count > max items in stack then items will be send in required amount stacks. All stacks amount in mail limited to 12.'),
('sendmail',1,'Syntax: .sendmail #playername "#subject" "#text"\r\n\r\nSend a mail to a player. Subject and mail text must be in "".'),
('sendmoney','3','Syntax: .sendmoney #playername "#subject" "#text" #money\r\n\r\nSend mail with money to a player. Subject and mail text must be in "".'),
('sendmessage',3,'Syntax: .sendmessage $playername $message\r\n\r\nSend screen message to player from ADMINISTRATOR.'),
('server corpses',2,'Syntax: .server corpses\r\n\r\nTriggering corpses expire check in world.'),
('server exit',4,'Syntax: .server exit\r\n\r\nTerminate mangosd NOW.'),

View file

@ -0,0 +1,5 @@
ALTER TABLE db_version CHANGE COLUMN required_2008_11_09_01_mangos_command required_2008_11_09_02_mangos_command bit;
delete from `command` where `name` = 'sendmoney';
insert into `command` (`name`, `security`, `help`) values
('sendmoney',3,'Syntax: .sendmoney #playername "#subject" "#text" #money\r\n\r\nSend mail with money to a player. Subject and mail text must be in "".');

View file

@ -128,6 +128,7 @@ pkgdata_DATA = \
2008_11_07_03_characters_guild_bank_tab.sql \
2008_11_07_04_realmd_account.sql \
2008_11_09_01_mangos_command.sql \
2008_11_09_02_mangos_command.sql \
README
## Additional files to include when running 'make dist'
@ -237,4 +238,5 @@ EXTRA_DIST = \
2008_11_07_03_characters_guild_bank_tab.sql \
2008_11_07_04_realmd_account.sql \
2008_11_09_01_mangos_command.sql \
2008_11_09_02_mangos_command.sql \
README

View file

@ -522,6 +522,7 @@ ChatCommand * ChatHandler::getCommandTable()
{ "respawn", SEC_ADMINISTRATOR, false, &ChatHandler::HandleRespawnCommand, "", NULL },
{ "senditems", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendItemsCommand, "", NULL },
{ "sendmail", SEC_MODERATOR, true, &ChatHandler::HandleSendMailCommand, "", NULL },
{ "sendmoney", SEC_ADMINISTRATOR, true, &ChatHandler::HandleSendMoneyCommand, "", NULL },
{ "rename", SEC_GAMEMASTER, true, &ChatHandler::HandleRenameCommand, "", NULL },
{ "loadscripts", SEC_ADMINISTRATOR, true, &ChatHandler::HandleLoadScriptsCommand, "", NULL },
{ "mute", SEC_GAMEMASTER, true, &ChatHandler::HandleMuteCommand, "", NULL },

View file

@ -119,6 +119,7 @@ class ChatHandler
bool HandleDrunkCommand(const char* args);
bool HandleSendItemsCommand(const char* args);
bool HandleSendMailCommand(const char* args);
bool HandleSendMoneyCommand(const char* args);
bool HandleEventActiveListCommand(const char* args);
bool HandleEventStartCommand(const char* args);
@ -414,7 +415,6 @@ class ChatHandler
bool HandleSendMessageCommand(const char * args);
bool HandleRepairitemsCommand(const char* args);
bool HandleWaterwalkCommand(const char* args);
bool HandleSendMoneyCommand(const char* args);
//! Development Commands
bool HandleSetValue(const char* args);

View file

@ -6274,6 +6274,95 @@ bool ChatHandler::HandleSendItemsCommand(const char* args)
return true;
}
///Send money by mail
bool ChatHandler::HandleSendMoneyCommand(const char* args)
{
if (!*args)
return false;
/// format: name "subject text" "mail text" money
char* pName = strtok((char*)args, " ");
if (!pName)
return false;
char* tail1 = strtok(NULL, "");
if (!tail1)
return false;
char* msgSubject;
if (*tail1=='"')
msgSubject = strtok(tail1+1, "\"");
else
{
char* space = strtok(tail1, "\"");
if (!space)
return false;
msgSubject = strtok(NULL, "\"");
}
if (!msgSubject)
return false;
char* tail2 = strtok(NULL, "");
if (!tail2)
return false;
char* msgText;
if (*tail2=='"')
msgText = strtok(tail2+1, "\"");
else
{
char* space = strtok(tail2, "\"");
if (!space)
return false;
msgText = strtok(NULL, "\"");
}
if (!msgText)
return false;
int32 money = atoi(strtok(NULL, ""));
if (money <= 0)
return false;
// pName, msgSubject, msgText isn't NUL after prev. check
std::string name = pName;
std::string subject = msgSubject;
std::string text = msgText;
if (!normalizePlayerName(name))
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
SetSentErrorMessage(true);
return false;
}
uint64 receiver_guid = objmgr.GetPlayerGUIDByName(name);
if (!receiver_guid)
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
SetSentErrorMessage(true);
return false;
}
uint32 mailId = objmgr.GenerateMailID();
// from console show not existed sender
uint32 sender_guidlo = m_session ? m_session->GetPlayer()->GetGUIDLow() : 0;
uint32 messagetype = MAIL_NORMAL;
uint32 stationery = MAIL_STATIONERY_GM;
uint32 itemTextId = !text.empty() ? objmgr.CreateItemText( text ) : 0;
Player *receiver = objmgr.GetPlayer(receiver_guid);
WorldSession::SendMailTo(receiver,messagetype, stationery, sender_guidlo, GUID_LOPART(receiver_guid), subject, itemTextId, NULL, money, 0, MAIL_CHECK_MASK_NONE);
PSendSysMessage(LANG_MAIL_SENT, name.c_str());
return true;
}
/// Send a message to a player in game
bool ChatHandler::HandleSendMessageCommand(const char* args)
{

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "6809"
#define REVISION_NR "6810"
#endif // __REVISION_NR_H__