Code:
#include "StdAfx.h"
#include "Setup.h"
class SCRIPT_DECL Warper : 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 Warper::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(0, "Level 50-99 Area", 1);
Menu->AddItem(0, "Level 100-149 Area", 2);
Menu->AddItem(0, "Level 150-199 Area", 3);
Menu->AddItem(0, "Level 200+ Ah'Qirraj Area", 4);
Menu->AddItem(0, "PvP Arena", 5);
Menu->AddItem(0, "Shopping Center", 6);
Menu->AddItem(0, "High Level Class Trainers", 7);
Menu->AddItem(0, "Fun Quests Zone+ Portals to All Area", 8);
Menu->AddItem(0, "All in One Map Level 1-255+ AKA Hyjal", 9);
Menu->AddItem(0, "Chronos Battleground", 10);
Menu->AddItem(0, "Holy Shopping Center", 11);
Menu->AddItem(0, "Naxxramas Entry", 12);
if(AutoSend)
Menu->SendTo(Plr);
}
void Warper::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 1:
{
Plr->EventTeleport(1, -627.069702, -2519.464355, 91.769150);
}
break;
case 2:
{
Plr->EventTeleport(0, -11131.925781, -1829.380249, 71.837288);
}
break;
case 3:
{
Plr->EventTeleport(230, 1116.369995, -458.123993, -102.811348);
}
break;
case 4:
{
Plr->EventTeleport(509, -8452.962891, 1534.351929, 321.908716);
}
break;
case 5:
{
Plr->EventTeleport(0, -13227.691406, 230.985336, 33.228024);
}
break;
case 6:
{
Plr->EventTeleport(30, 20.236012, -299.914551, 14.033435);
}
break;
case 7:
{
Plr->EventTeleport(30, 353.021484, -301.219391, -42.987324);
}
break;
case 8:
{
Plr->EventTeleport(30, -247.062973, -261.332184, 7.645180);
}
break;
case 9:
{
Plr->EventTeleport(1, 4631.811523, -3828.893555, 943.290466);
}
break;
case 10:
{
Plr->EventTeleport(529, 3358, 1295.180176, 1291.109253, -12.680390);
}
break;
case 11:
{
Plr->EventTeleport(0, -8512.835938, 861.715637, 109.843857);
}
break;
case 12:
{
Plr->EventTeleport(0, 3103.101807, -3712.486572, 132.566681);
}
break;
}
}
void Warper::GossipEnd(Object * pObject, Player* Plr)
{
GossipScript::GossipEnd(pObject, Plr);
}
void SetupWarper(ScriptMgr * mgr)
{
GossipScript * gs = (GossipScript*) new Warper();
mgr->register_gossip_script(600000, gs);
mgr->register_gossip_script(600001, gs);
mgr->register_gossip_script(600002, gs);
}