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, "Eastern Kingdoms Locations", 2);
Menu->AddItem(1, "Kalimdor Locations", 1);
Menu->AddItem(9, "Make This Place Your Home", 95);
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(pObject, Plr, true);
break;
case 1: //Kalimdor
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Goblin Mill", 4);
Menu->AddItem(5, "Stonetalon Peak", 5);
Menu->AddItem(5, "Isle of Dread", 6);
Menu->AddItem(5, "Ruins of Isildien", 7);
Menu->AddItem(5, "Desolace Ruins", 8);
Menu->AddItem(5, "Northwatch Hold", 9);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
}
break;
case 2: // Eastern Kingdoms
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Dun Morogh Instance", 10);
Menu->AddItem(5, "Area next to Wetlands", 11);
Menu->AddItem(5, "Stormwind Vault", 12);
Menu->AddItem(5, "Ironforge Airport", 13);
Menu->AddItem(5, "Old Ironforge", 14);
Menu->AddItem(5, "Grim Batol", 15);
Menu->AddItem(5, "Wetlands Farm", 16);
Menu->AddItem(5, "Western Tirisfal", 17);
Menu->AddItem(5, "Outside Naxxramas", 18);
Menu->AddItem(5, "Jintha'Alor", 19);
Menu->AddItem(5, "Night Elf's Landing", 20);
Menu->AddItem(5, "Stranglethorn Special", 21);
Menu->AddItem(5, "Arathi Dwarven Farm", 22);
Menu->AddItem(5, "Hearthglen", 23);
Menu->AddItem(5, "Dun Modr", 24);
Menu->AddItem(0, "[Back]", 99);
Menu->SendTo(Plr);
}
break;
case 4://Goblin Mill
{
Plr->EventTeleport(1, 1876.058472, 1476.522949, 142.102249);
}
break;
case 5://Stonetalon Peak
{
Plr->EventTeleport(1, 2506.300049, 1470.140015, 262.722626);
}
break;
case 6://Isle of Dread
{
Plr->EventTeleport(1, -5811.144531, 3399.459717, 63.450497);
}
break;
case 7://Ruins of Isildien
{
Plr->EventTeleport(1, -5523.183105, 1362.717529, 82.331253);
}
break;
case 8: //Desolace Ruins
{
Plr->EventTeleport(1, -2212.477783, 600.015869, 198.405182);
}
break;
case 9: //Northwatch Hold
{
Plr->EventTeleport(1, -1986.579956, -3688.250000, 18.314852);
}
break;
case 10: //Dun Morogh Instance
{
Plr->EventTeleport(0, -5582.658691, 887.209534, 392.631073);
}
break;
case 11: //Area next to Wetlands
{
Plr->EventTeleport(0, -3438.822510, -3644.946289, 56.700352);
}
break;
case 12: //Stormwind Vault
{
Plr->EventTeleport(0, -8653.801758, 607.536316, 90.675499);
}
break;
case 13: //Ironforge Airport
{
Plr->EventTeleport(0, -4653.808105, -1688.603882, 503.324615);
}
break;
case 14: //Old Ironforge
{
Plr->EventTeleport(0, -4815.6, -1033.32, 438.683);
}
break;
case 15: //Grim Batol
{
Plr->EventTeleport(0, -4070.542725, -3456.188232, 281.388184);
}
break;
case 16: //Wetlands farm
{
Plr->EventTeleport(0, -4024.388672, -1407.047974, 155.663696);
}
break;
case 17: //Western Tirisfal
{
Plr->EventTeleport(0, 1954.999878, 2399.141357, 131.252274);
}
break;
case 18: //Outside Naxxramas
{
Plr->EventTeleport(533, 3580.185791, -4505.611328, 197.894821);
}
break;
case 19: //Jintha'Alor
{
Plr->EventTeleport(0, -205.978485, -4137.642090, 117.683640);
}
break;
case 20: // Night Elf's Landing
{
Plr->EventTeleport(0, 4263.138672, -2779.382324, 6.165768);
}
break;
case 21: // Stranglethorn Special
{
Plr->EventTeleport(0, -12991.005859, -1301.977905, 42.370300);
}
break;
case 22: //Arathi Dwarven Farm
{
Plr->EventTeleport(0, -1798.949951, -4248.970215, 2.135110);
}
break;
case 23: //Hearthglen
{
Plr->EventTeleport(0, 2905.245850, -1493.115234, 146.304962);
}
break;
case 24: // Dun Modr
{
Plr->EventTeleport(0, -2614.581055, -2414.518799, 79.228951);
}
break;
case 95: // Bind Position
{
Plr->GetSession()->SendInnkeeperBind(pCreature);
}break;
case 99: //main menu
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(0, "Eastern Kingdoms Locations", 2);
Menu->AddItem(1, "Kalimdor Locations", 1);
Menu->AddItem(5, "Outland Locations", 3);
Menu->AddItem(9, "Make This Place Your Home", 95);
Menu->SendTo(Plr);
}
break;
}
}
void Warper::GossipEnd(Object * pObject, Player* Plr)
{
GossipScript::GossipEnd(pObject, Plr);
}
void SetupWarper(ScriptMgr * mgr)
{
GossipScript * ga = (GossipScript*) new Warper();
/* Teleporter List */
mgr->register_gossip_script(90009, ga); // Gahme's Custom Warper
}
Code:
delete from creature_proto where entry in (90009);
delete from creature_names where entry in (90009);
INSERT INTO `creature_names` VALUES ('90009', 'Custom Places', 'Want to take a ride?', '0', '0', '4', '4', '0', '0', '0', '9229', '9229', '0', '0', '1', '1', '1', '1');
INSERT INTO `creature_proto` VALUES ('90009', '90', '90', '35', '200000', '200000', '1', '1', '98207', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 0, '2.5', '8', '14', '0');