mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[11560] Implement .mailbox command
Work semilar .bank for mailbox case.
This commit is contained in:
parent
e3463dca0d
commit
598c843548
10 changed files with 61 additions and 11 deletions
|
|
@ -24,7 +24,7 @@ CREATE TABLE `db_version` (
|
|||
`version` varchar(120) default NULL,
|
||||
`creature_ai_version` varchar(120) default NULL,
|
||||
`cache_id` int(10) default '0',
|
||||
`required_11549_01_mangos_spell_proc_event` bit(1) default NULL
|
||||
`required_11560_01_mangos_command` bit(1) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
||||
|
||||
--
|
||||
|
|
@ -649,6 +649,7 @@ INSERT INTO `command` VALUES
|
|||
('lookup taxinode',3,'Syntax: .lookup taxinode $substring\r\n\r\nSearch and output all taxinodes with provide $substring in name.'),
|
||||
('lookup tele',1,'Syntax: .lookup tele $substring\r\n\r\nSearch and output all .tele command locations with provide $substring in name.'),
|
||||
('lookup title',2,'Syntax: .lookup title $$namepart\r\n\r\nLooks up a title by $namepart, and returns all matches with their title ID\'s and index\'s.'),
|
||||
('mailbox',3,'Syntax: .mailbox\r\n\r\nShow your mailbox content.'),
|
||||
('maxskill',3,'Syntax: .maxskill\r\nSets all skills of the targeted player to their maximum VALUESfor its current level.'),
|
||||
('modify arena',1,'Syntax: .modify arena #value\r\nAdd $amount arena points to the selected player.'),
|
||||
('modify aspeed',1,'Syntax: .modify aspeed #rate\r\n\r\nModify all speeds -run,swim,run back,swim back- of the selected player to \"normalbase speed for this move type\"*rate. If no player is selected, modify your speed.\r\n\r\n #rate may range from 0.1 to 10.'),
|
||||
|
|
|
|||
6
sql/updates/11560_01_mangos_command.sql
Normal file
6
sql/updates/11560_01_mangos_command.sql
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_11549_01_mangos_spell_proc_event required_11560_01_mangos_command bit;
|
||||
|
||||
DELETE FROM command WHERE name = 'mailbox';
|
||||
|
||||
INSERT INTO command (name, security, help) VALUES
|
||||
('mailbox',3,'Syntax: .mailbox\r\n\r\nShow your mailbox content.');
|
||||
|
|
@ -749,6 +749,7 @@ ChatCommand * ChatHandler::getCommandTable()
|
|||
{ "additem", SEC_ADMINISTRATOR, false, &ChatHandler::HandleAddItemCommand, "", NULL },
|
||||
{ "additemset", SEC_ADMINISTRATOR, false, &ChatHandler::HandleAddItemSetCommand, "", NULL },
|
||||
{ "bank", SEC_ADMINISTRATOR, false, &ChatHandler::HandleBankCommand, "", NULL },
|
||||
{ "mailbox", SEC_ADMINISTRATOR, false, &ChatHandler::HandleMailBoxCommand, "", NULL },
|
||||
{ "wchange", SEC_ADMINISTRATOR, false, &ChatHandler::HandleChangeWeatherCommand, "", NULL },
|
||||
{ "ticket", SEC_GAMEMASTER, true, &ChatHandler::HandleTicketCommand, "", NULL },
|
||||
{ "delticket", SEC_GAMEMASTER, true, &ChatHandler::HandleDelTicketCommand, "", NULL },
|
||||
|
|
|
|||
|
|
@ -570,6 +570,7 @@ class MANGOS_DLL_SPEC ChatHandler
|
|||
bool HandleBankCommand(char* args);
|
||||
bool HandleChangeWeatherCommand(char* args);
|
||||
bool HandleKickPlayerCommand(char* args);
|
||||
bool HandleMailBoxCommand(char* args);
|
||||
|
||||
bool HandleTicketCommand(char* args);
|
||||
bool HandleDelTicketCommand(char* args);
|
||||
|
|
|
|||
|
|
@ -4502,6 +4502,12 @@ bool ChatHandler::HandleBankCommand(char* /*args*/)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleMailBoxCommand(char* /*args*/)
|
||||
{
|
||||
m_session->SendShowMailBox(m_session->GetPlayer()->GetObjectGuid());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ChatHandler::HandleStableCommand(char* /*args*/)
|
||||
{
|
||||
m_session->SendStablePet(m_session->GetPlayer()->GetObjectGuid());
|
||||
|
|
|
|||
|
|
@ -36,6 +36,32 @@
|
|||
#include "WorldPacket.h"
|
||||
#include "WorldSession.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Chat.h"
|
||||
|
||||
bool WorldSession::CheckMailBox(ObjectGuid guid)
|
||||
{
|
||||
// GM case
|
||||
if (guid == GetPlayer()->GetObjectGuid())
|
||||
{
|
||||
// command case will return only if player have real access to command
|
||||
if (!ChatHandler(GetPlayer()).FindCommand("mailbox"))
|
||||
{
|
||||
DEBUG_LOG("%s attempt open mailbox in cheating way.", guid.GetString().c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// mailbox case
|
||||
else
|
||||
{
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
{
|
||||
DEBUG_LOG("Mailbox %s not found or you can't interact with him.", guid.GetString().c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the Packet sent by the client when sending a mail.
|
||||
|
|
@ -95,7 +121,7 @@ void WorldSession::HandleSendMail(WorldPacket & recv_data )
|
|||
|
||||
// packet read complete, now do check
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
if (receiver.empty())
|
||||
|
|
@ -295,7 +321,7 @@ void WorldSession::HandleMailMarkAsRead(WorldPacket & recv_data )
|
|||
recv_data >> mailboxGuid;
|
||||
recv_data >> mailId;
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
Player *pl = _player;
|
||||
|
|
@ -326,7 +352,7 @@ void WorldSession::HandleMailDelete(WorldPacket & recv_data )
|
|||
recv_data >> mailId;
|
||||
recv_data.read_skip<uint32>(); // mailTemplateId
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
Player* pl = _player;
|
||||
|
|
@ -362,7 +388,7 @@ void WorldSession::HandleMailReturnToSender(WorldPacket & recv_data )
|
|||
recv_data >> mailId;
|
||||
recv_data.read_skip<uint64>(); // original sender GUID for return to, not used
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
Player *pl = _player;
|
||||
|
|
@ -421,7 +447,7 @@ void WorldSession::HandleMailTakeItem(WorldPacket & recv_data )
|
|||
recv_data >> mailId;
|
||||
recv_data >> itemId; // item guid low
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
Player* pl = _player;
|
||||
|
|
@ -516,7 +542,7 @@ void WorldSession::HandleMailTakeMoney(WorldPacket & recv_data )
|
|||
recv_data >> mailboxGuid;
|
||||
recv_data >> mailId;
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
Player *pl = _player;
|
||||
|
|
@ -551,7 +577,7 @@ void WorldSession::HandleGetMailList(WorldPacket & recv_data )
|
|||
ObjectGuid mailboxGuid;
|
||||
recv_data >> mailboxGuid;
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
// client can't work with packets > max int16 value
|
||||
|
|
@ -680,7 +706,7 @@ void WorldSession::HandleMailCreateTextItem(WorldPacket & recv_data )
|
|||
recv_data >> mailboxGuid;
|
||||
recv_data >> mailId;
|
||||
|
||||
if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailboxGuid, GAMEOBJECT_TYPE_MAILBOX))
|
||||
if (!CheckMailBox(mailboxGuid))
|
||||
return;
|
||||
|
||||
Player *pl = _player;
|
||||
|
|
|
|||
|
|
@ -96,6 +96,13 @@ void WorldSession::SendShowBank(ObjectGuid guid)
|
|||
SendPacket(&data);
|
||||
}
|
||||
|
||||
void WorldSession::SendShowMailBox(ObjectGuid guid)
|
||||
{
|
||||
WorldPacket data(SMSG_SHOW_MAILBOX, 8);
|
||||
data << ObjectGuid(guid);
|
||||
SendPacket(&data);
|
||||
}
|
||||
|
||||
void WorldSession::HandleTrainerListOpcode( WorldPacket & recv_data )
|
||||
{
|
||||
ObjectGuid guid;
|
||||
|
|
|
|||
|
|
@ -300,6 +300,8 @@ class MANGOS_DLL_SPEC WorldSession
|
|||
void SendListInventory(ObjectGuid guid);
|
||||
bool CheckBanker(ObjectGuid guid);
|
||||
void SendShowBank(ObjectGuid guid);
|
||||
bool CheckMailBox(ObjectGuid guid);
|
||||
void SendShowMailBox(ObjectGuid guid);
|
||||
void SendTabardVendorActivate(ObjectGuid guid);
|
||||
void SendSpiritResurrect();
|
||||
void SendBindPoint(Creature* npc);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "11559"
|
||||
#define REVISION_NR "11560"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef __REVISION_SQL_H__
|
||||
#define __REVISION_SQL_H__
|
||||
#define REVISION_DB_CHARACTERS "required_11436_01_characters_character_queststatus"
|
||||
#define REVISION_DB_MANGOS "required_11549_01_mangos_spell_proc_event"
|
||||
#define REVISION_DB_MANGOS "required_11560_01_mangos_command"
|
||||
#define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version"
|
||||
#endif // __REVISION_SQL_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue