Code:
#include "StdAfx.h"
#include "Setup.h"
#ifdef WIN32
#pragma warning(disable:4305)
#endif
class SCRIPT_DECL GlobalNPC : public GossipScript
{
public:
void GossipHello(Object * pObject, Player* Plr, bool AutoSend);
void GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code);
void GossipEnd(Object * pObject, Player* Plr);
void Destroy()
{
delete this;
}
};
void GlobalNPC::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
if(Plr->getRace()== 10||Plr->getRace()== 2||Plr->getRace()== 6||Plr->getRace()== 8||Plr->getRace()== 5)
{Menu->AddItem(0, "Horde Cities", 1);}else{Menu->AddItem(1, "Alliance Cities", 2);}
Menu->AddItem(3, "Mall", 30);
Menu->AddItem(4, "Horde Portal Area", 31);}else{Menu->AddItem(6, "Alliance Portal Area", 32);}
Menu->AddItem(5, "Custom Instances", 20);
Menu->AddItem(7, "Make This Place Your Home", 95);
Menu->AddItem(8, "Remove Resurrection Sickness", 97);
if(AutoSend)
Menu->SendTo(Plr);
}
void GlobalNPC::GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
{
Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?((Creature*)pObject):NULL;
if(pCreature==NULL)
return;
GossipMenu * Menu;
switch(IntId)
{
case 0:
GossipHello(pObject, Plr, true);
break;
case 1:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Silvermoon", 4);
Menu->AddItem(5, "Orgrimmar", 5);
Menu->AddItem(5, "Thunder Bluff", 6);
Menu->AddItem(5, "Undercity", 7);
Menu->SendTo(Plr);
}
break;
case 2:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Stormwind", 8);
Menu->AddItem(5, "Ironforge", 9);
Menu->AddItem(5, "Exodar", 10);
Menu->AddItem(5, "Darnassus", 11);
Menu->SendTo(Plr);
}
break;
case 30:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 31:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 32:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 20:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 95:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 97:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 4:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 5:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 6:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 7:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 8:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 9:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 10:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
case 11:
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Warper NPC In Development", 0);
Menu->AddItem(5, "Please Try Again Later", 0);
Menu->SendTo(Plr);
}
break;
void GlobalNPC::GossipEnd(Object * pObject, Player* Plr)
{
GossipScript::GossipEnd(pObject, Plr);
}
void SetupGlobalNPC(ScriptMgr * mgr)
{
GossipScript * gs = (GossipScript*) new GlobalNPC();
mgr->register_gossip_script(150099, gs);
}