Code:
//warning C4305: 'argument' : truncation from 'double' to 'float'
#pragma warning(disable:4305)
#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(5, "The Bank", 1);
Menu->AddItem(5, "The Wind Rider Master", 2);
Menu->AddItem(5, "The Guild Master", 3);
Menu->AddItem(5, "The Inn", 4);
Menu->AddItem(5, "The Mail Box", 5);
Menu->AddItem(5, "The Auction House", 6);
Menu->AddItem(5, "The Zeppelin Master", 7);
Menu->AddItem(5, "The Weapon Master", 8);
Menu->AddItem(5, "The Stable Master", 9);
Menu->AddItem(5, "The Officers Lounge", 10);
Menu->AddItem(5, "The Battle Master", 11);
Menu->AddItem(0, "A Class Trainer", 12);
Menu->AddItem(0, "A Profession Trainer", 21);
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 0: // Return to start
GossipHello(pCreature, Plr, true);
break;
case 1: // The Bank
{
Plr->EventTeleport(1, 1624.005493, -4376.836914, 11.832124);
}break;
case 2: // The Wind Rider Master
{
Plr->EventTeleport(1, 1675.274414, -4316.876465, 61.492710);
}break;
case 3: // The Guild Master
{
Plr->EventTeleport(1, 1573.594116, -4296.287109, 26.105478);
}break;
case 4: // The Inn
{
Plr->EventTeleport(1, 1631.591309, -4439.370117, 15.545703);
}break;
case 5: // The Mail Box
{
Plr->EventTeleport(1, 1613.145142, -4393.043945, 10.298344);
}break;
case 6: // The Auction House
{
Plr->EventTeleport(1, 1677.856201, -4452.716309, 19.007420);
}break;
case 7: // The Zeppelin Master
{
Plr->EventTeleport(1, 1343.855347, -4638.791016, 53.543720);
}break;
case 8: // The Weapon Master
{
Plr->EventTeleport(1, 2092.201172, -4820.813965, 24.193218);
}break;
case 9: // The Stable Master
{
Plr->EventTeleport(1, 2134.017334, -4661.900391, 47.147541);
}break;
case 10: // The Officers Lounge
{
Plr->EventTeleport(1, 1629.840576, -4252.753418, 52.108551);
}break;
case 11: // The Battle Master
{
Plr->EventTeleport(1, 1987.204956, -4799.816895, 55.820541);
}break;
case 12: // Class Trainers
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, "Hunter", 13);
Menu->AddItem(5, "Mage", 14);
Menu->AddItem(5, "Priest", 15);
Menu->AddItem(5, "Shaman", 16);
Menu->AddItem(5, "Rogue", 17);
Menu->AddItem(5, "Warlock", 18);
Menu->AddItem(5, "Warrior", 19);
Menu->AddItem(5, "Paladin", 20);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 13: // Hunter
{
Plr->EventTeleport(1, 2098.876709, -4624.548340, 58.508503);
}break;
case 14: // Mage
{
Plr->EventTeleport(1, 1474.749634, -4223.067871, 42.959259);
}break;
case 15: // Priest
{
Plr->EventTeleport(1, 1458.646362, -4180.693848, 44.085209);
}break;
case 16: // Shaman
{
Plr->EventTeleport(1, 1926.768311, -4219.193359, 40.945278);
}break;
case 17: // Rogue
{
Plr->EventTeleport(1, 1779.050171, -4288.550781, 6.760933);
}break;
case 18: // Warlock
{
Plr->EventTeleport(1, 1835.543945, -4357.160156, -14.835423);
}break;
case 19: // Warrior
{
Plr->EventTeleport(1, 1990.227539, -4807.867676, 56.764660);
}break;
case 20: // Paladin
{
Plr->EventTeleport(1, 1920.645996, -4137.566406, 40.325436);
}break;
case 21: // Profession Trainers
objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
Menu->AddItem(5, "Alchemy", 22);
Menu->AddItem(5, "Blachsmithing", 23);
Menu->AddItem(5, "Cooking", 24);
Menu->AddItem(5, "Enchanting", 25);
Menu->AddItem(5, "Engineering", 26);
Menu->AddItem(5, "First Aid", 27);
Menu->AddItem(5, "Fishing", 28);
Menu->AddItem(5, "Herbalism", 29);
Menu->AddItem(5, "Leatherworking / Skinning", 30);
Menu->AddItem(5, "Mining", 31);
Menu->AddItem(5, "Tailoring", 32);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
break;
case 22: // Alchemy
{
Plr->EventTeleport(1, 1949.396973, -4472.826660, 25.869463);
}break;
case 23: // Blacksmithing
{
Plr->EventTeleport(1, 2061.875977, -4808.765625, 22.561069);
}break;
case 24: // Cooking
{
Plr->EventTeleport(1, 1774.318848, -4488.827637, 45.420769);
}break;
case 25: // Enchanting
{
Plr->EventTeleport(1, 1922.008667, -4431.770508, 24.660080);
}break;
case 26: // Engineering
{
Plr->EventTeleport(1, 2041.634766, -4738.637207, 29.158888);
}break;
case 27: // First Aid
{
Plr->EventTeleport(1, 1484.575073, -4152.647949, 40.911854);
}break;
case 28: // Fishing
{
Plr->EventTeleport(1, 2003.995850, -4649.808105, 25.967529);
}break;
case 29: // Herbalism
{
Plr->EventTeleport(1, 1898.203979, -4452.222168, 53.224289);
}break;
case 30: // Leatherworking / Skinning
{
Plr->EventTeleport(1, 1850.564819, -4556.475098, 24.760695);
}break;
case 31: // Mining
{
Plr->EventTeleport(1, 2023.082520, -4705.049316, 26.803726);
}break;
case 32: // Tailoring
{
Plr->EventTeleport(1, 1803.104614, -4554.586914, 22.779684);
}break;
case 99: //main menu
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "The Bank", 1);
Menu->AddItem(5, "The Wind Rider Master", 2);
Menu->AddItem(5, "The Guild Master", 3);
Menu->AddItem(5, "The Inn", 4);
Menu->AddItem(5, "The Mail Box", 5);
Menu->AddItem(5, "The Auction House", 6);
Menu->AddItem(5, "The Zeppelin Master", 7);
Menu->AddItem(5, "The Weapon Master", 8);
Menu->AddItem(5, "The Stable Master", 9);
Menu->AddItem(5, "The Officers Lounge", 10);
Menu->AddItem(5, "The Battle Master", 11);
Menu->AddItem(0, "A Class Trainer", 12);
Menu->AddItem(0, "A Profession Trainer", 21);
Menu->SendTo(Plr);
}
break;
}
}
void Warper::GossipEnd(Object * pObject, Player* Plr)
{
GossipScript::GossipEnd(pObject, Plr);
}
void SetupWarper(ScriptMgr * mgr)
{
GossipScript * gs = (GossipScript*) new Warper();
/* Teleporter List */
mgr->register_gossip_script(100000, gs); // Nega
}
5) Save the file as Warper.cpp