Есть 2 турнирных нпц пета(33238 и 33239), которые помимо всего прочего, предоставляют доступ к почте игрока, воспользовался готовым решением в ядре.))
Код:
diff --git a/src/game/GossipDef.h b/src/game/GossipDef.h
index 9e46bb2..b058e21 100644
--- a/src/game/GossipDef.h
+++ b/src/game/GossipDef.h
@@ -49,6 +49,7 @@ enum Gossip_Option
GOSSIP_OPTION_ARMORER = 15, //UNIT_NPC_FLAG_ARMORER (4096)
GOSSIP_OPTION_UNLEARNTALENTS = 16, //UNIT_NPC_FLAG_TRAINER (16) (bonus option for GOSSIP_OPTION_TRAINER)
GOSSIP_OPTION_UNLEARNPETSKILLS = 17, //UNIT_NPC_FLAG_TRAINER (16) (bonus option for GOSSIP_OPTION_TRAINER)
+ GOSSIP_OPTION_MAILBOX = 18, //UNIT_NPC_FLAG_GOSSIP (8388608)
GOSSIP_OPTION_MAX
};
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index d4e246e..cfc7498 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -13091,6 +13091,7 @@ void Player::PrepareGossipMenu(WorldObject *pSource, uint32 menuId)
case GOSSIP_OPTION_PETITIONER:
case GOSSIP_OPTION_TABARDDESIGNER:
case GOSSIP_OPTION_AUCTIONEER:
+ case GOSSIP_OPTION_MAILBOX:
break; // no checks
default:
sLog.outErrorDb("Creature entry %u have unknown gossip option %u for menu %u", pCreature->GetEntry(), itr->second.option_id, itr->second.menu_id);
@@ -13317,6 +13318,10 @@ void Player::OnGossipSelect(WorldObject* pSource, uint32 gossipListId, uint32 me
case GOSSIP_OPTION_AUCTIONEER:
GetSession()->SendAuctionHello(((Creature*)pSource));
break;
+ case GOSSIP_OPTION_MAILBOX:
+ PlayerTalkClass->CloseGossip();
+ GetSession()->SendShowMailBox(guid);
+ break;
case GOSSIP_OPTION_SPIRITGUIDE:
PrepareGossipMenu(pSource);
SendPreparedGossip(pSource);
В базу нужным:
Код:
REPLACE INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `action_script_id`, `box_coded`, `box_money`, `box_text`, `cond_1`, `cond_1_val_1`, `cond_1_val_2`, `cond_2`, `cond_2_val_1`, `cond_2_val_2`, `cond_3`, `cond_3_val_1`, `cond_3_val_2`) VALUES
(0, 0, 0, 'Visit a mailbox.', 18, 8388608, 0, 0, 0, 0, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0);