class example_submenus_gossip : public CreatureScript
{
public:
example_submenus_gossip() : CreatureScript("example_submenus_gossip") { }
bool OnGossipHello(Player* player, Creature* creature) override
{
// Let's create our menus first
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Test1", 0, 1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Nevermind..", 0, 2);
// Send Gossip menus to the player
player->SEND_GOSSIP_MENU(1, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 actions) override
{
player->PlayerTalkClass->ClearMenus();
switch (actions)
{
case 1: // Test1
// Create our submenus
// It is best to create a method for submenus for easy handling and editing, especially for bigger scripts
SendSubMenus(player, creature);
break;
case 2: // Nevermind..
player->CLOSE_GOSSIP_MENU();
break;
case 3: // SendSubMenus '<- Back <-'. Goes to Home
OnGossipHello(player, creature);
break;
case 4: // Submenu 1
break;
case 5: // Submenu 2
break;
case 6: // Submenu 3
break;
}
return true;
}
// SubMenus: Home (OnGossipHello) -> SubMenus
void SendSubMenus(Player* player, Creature* creature)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Submenu 1", 0, 4);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Submenu 2", 0, 5);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Submenu 3", 0, 6);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "<- Back <-", 0, 3);
// Send our submenus to the player
player->SEND_GOSSIP_MENU(1, creature->GetGUID());
}
};