Code:
#include "StdAfx.h"
#include "Setup.h"
#ifdef WIN32
#pragma warning(disable:4305) // warning C4305: 'argument' : truncation from 'double' to 'float'
#endif
//Defining Warper
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)
{
if(Plr->CombatStatus.IsInCombat())
{
Plr->BroadcastMessage("You are in combat!");
}
if(!Plr->CombatStatus.IsInCombat())
{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 2593, 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(2, "Global Locations", 80);
Menu->AddItem(3, "Azeroth Instances", 30);
Menu->AddItem(4, "Twink Areas", 50);
Menu->AddItem(6, "Options", 69);
Menu->AddItem(5, "Shattrath", 20);
Menu->AddItem(9, "Remove Resurrection Sickness", 97);
if(AutoSend)
Menu->SendTo(Plr);
}
};
void Warper::GossipSelectOption(Object* pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
{
GossipMenu*Menu;
switch(IntId)
{
case 0:
GossipHello(pObject, Plr, true);
break;
case 1: // Horde Cities
{
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: // Alliance Cities
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "The Exodar", 8);
Menu->AddItem(5, "Stormwind", 9);
Menu->AddItem(5, "Ironforge", 10);
Menu->AddItem(5, "Darnassus", 11);
Menu->SendTo(Plr);
}
break;
case 4://Silvermoon
{
Plr->EventTeleport(530, 9400.486328, -7278.376953, 14.206780);
}break;
case 5://Orgrimmar
{
Plr->EventTeleport(1, 1371.068970, -4370.801758, 26.052483);
}break;
case 6://ThunderBluff
{
Plr->EventTeleport(1, -1304.569946, 205.285004, 68.681396);
}
break;
case 7://Undercity
{
Plr->EventTeleport(0, 2050.203125, 285.650604, 56.994549);
}
break;
case 8: //Exodar
{
Plr->EventTeleport(530, -4072.202393, -12014.337891, -1.277277);
}
break;
case 9: //Stormwind
{
Plr->EventTeleport(0, -9100.480469, 406.950745, 92.594185);
}
break;
case 10: //Ironforge
{
Plr->EventTeleport(0, -5028.265137, -825.976563, 495.301575);
}
break;
case 11: //Darnassus
{
Plr->EventTeleport(1, 9985.907227, 1971.155640, 1326.815674);
}
break;
case 20: //Shattrath
{
Plr->EventTeleport(530, -1887.510010, 5359.379883, -12.427300);
}
break;
case 30: // Azeroth Instances
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Shadowfang Keep", 31);
Menu->AddItem(5, "Scarlet Monastery", 32);
Menu->AddItem(5, "Zul'Farrak", 33);
//Menu->AddItem(5, "Stratholme", 41);
//Menu->AddItem(5, "Scholomance", 40);
//Menu->AddItem(5, "Blackrock Spire", 42);
//Menu->AddItem(5, "Onyxia's Lair", 38);
//Menu->AddItem(5, "Molten Core", 37);
//Menu->AddItem(5, "Zul'Gurub", 34);
//Menu->AddItem(5, "Karazhan", 43);
//Menu->AddItem(5, "Ahn'Qirai 20", 35);
//Menu->AddItem(5, "Ahn'Qirai 40", 36);
//Menu->AddItem(5, "Naxxramas", 39);
//Menu->AddItem(5, "Caverns of Time", 44);
Menu->SendTo(Plr);
}
break;
case 31: // Shadowfang Keep
{
Plr->EventTeleport(0, -234.495087, 1561.946411, 76.892143);
}
break;
case 32: // Scarlet Monastery
{
Plr->EventTeleport(0, 2870.442627, -819.985229, 160.331085);
}
break;
case 33: // Zul'Farrak
{
Plr->EventTeleport(1, -6797.278809, -2903.917969, 9.953360);
}
break;
case 34: // Zul'Gurub
{
Plr->EventTeleport(0, -11919.073242, -1202.459374, 92.298744);
}
break;
case 35: // Ahn'Qirai 20
{
Plr->EventTeleport(1, -8394.730469, 1485.658447, 21.038563);
}
break;
case 36: // Ahn'Qirai 40
{
Plr->EventTeleport(1, -8247.316406, 1970.156860, 129.071472);
}
break;
case 37: // Molten Core
{
// Plr->EventTeleport(0, -7515.409668, -1045.369629, 182.301208);
Plr->EventTeleport(409, 1089.6, -470.19, -106.41);
}
break;
case 38: // Onyxia
{
// Plr->EventTeleport(1, -4708.491699, -3727.672363, 54.535076);
Plr->EventTeleport(249, 30.0, -64.0, -5.0);
}
break;
case 39: // Naxxramas
{
// Plr->EventTeleport(0, 3132.915283, -3731.012939, 138.658371);
Plr->EventTeleport(533, 3006.06, -3436.72, 293.891);
}
break;
case 40: //Scholomance
{
Plr->EventTeleport(0, 1267.468628, -2556.651367, 94.127983);
}
break;
case 41: //Stratholme
{
Plr->EventTeleport(0, 3359.111572, -3380.8444238, 144.781860);
}break;
case 42: // Black Rock Spire
{
Plr->EventTeleport(0, -7527.129883, -1224.997437, 285.733002);
}break;
case 43: // Kharazan
{
// Plr->EventTeleport(0, -11122.913086, -2014.498779, 47.079350);
Plr->EventTeleport(532, -11087.3, -1977.47, 49.6135);
}break;
case 44: // Caverns of Times
{
Plr->EventTeleport(1, -8519.718750, -4297.542480, -208.441376);
}break;
case 50: // Twink Areas
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(0, "Malls", 64);
Menu->AddItem(5, "Level 19 Arena", 51);
Menu->AddItem(5, "Level 29 Arena", 52);
Menu->AddItem(5, "Level 39 Arena", 53);
Menu->AddItem(5, "Level 49 Arena", 54);
Menu->SendTo(Plr);
}
break;
case 51: //Level 19 Arena
{
if(Plr->getLevel() == 19){
Plr->EventTeleport(0, -13253.747070, 179.814621, 32.413891);}else{
Plr->BroadcastMessage("You must be level 19 to enter!");}
}break;
case 52: //Level 29 Arena
{
if(Plr->getLevel() == 29){
Plr->EventTeleport(530, 2781.667236, 5899.074219, 4.973204);}else{
Plr->BroadcastMessage("You must be level 29 to enter!");}
}break;
case 53: //Level 39 Arena
{
if(Plr->getLevel() == 39){
Plr->EventTeleport(530, -1985.680054, 6566.600098, 10.717000);}else{
Plr->BroadcastMessage("You must be level 39 to enter!");}
}break;
case 54: //Level 49 Arena
{
if(Plr->getLevel() == 49){
Plr->EventTeleport(1, -3761.219971, 1135.390015, 132.177002);}else{
Plr->BroadcastMessage("You must be level 49 to enter!");}
}break;
case 64: // Malls
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Level 19 Mall", 65);
Menu->AddItem(5, "Level 29 Mall", 66);
Menu->AddItem(5, "Level 39 Mall", 67);
Menu->AddItem(5, "Level 49 Mall", 68);
Menu->SendTo(Plr);
}
break;
case 65: //Level 19 Mall
{
if(Plr->getLevel() == 19){
Plr->EventTeleport(1, -10737.400391, 2459.629883, 6.92400);}else{
Plr->BroadcastMessage("You must be level 19 to enter!");}
}break;
case 66: //Level 29 Mall
{
if(Plr->getLevel() == 29){
Plr->EventTeleport(1, -11805.5000000, -4757.319824, 6.307307);}else{
Plr->BroadcastMessage("You must be level 29 to enter!");}
}break;
case 67: //Level 39 Mall
{
if(Plr->getLevel() == 39){
Plr->EventTeleport(1, 4684.029785, -3647.229980, 962.929016);}else{
Plr->BroadcastMessage("You must be level 39 to enter!");}
}break;
case 68: //Level 49 Mall
{
if(Plr->getLevel() == 49){
Plr->EventTeleport(1, 7444.549805, -1580.819946, 177.770004);}else{
Plr->BroadcastMessage("You must be level 49 to enter!");}
}break;
case 69: // Options
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(0, "Give Me Gold", 134);
Menu->AddItem(5, "Level Me to 19!", 130);
Menu->AddItem(5, "Level Me to 29!", 131);
Menu->AddItem(5, "Level Me to 39!", 132);
Menu->AddItem(5, "Level Me to 49!", 133);
Menu->SendTo(Plr);
}
break;
case 130: //Level to 19
{
LevelInfo * Info = objmgr.GetLevelInfo(Plr->getRace(), Plr->getClass(), 19);
Plr->ApplyLevelInfo(Info, 19);
}
break;
case 131: //Level to 29
{
LevelInfo * Info = objmgr.GetLevelInfo(Plr->getRace(), Plr->getClass(), 29);
Plr->ApplyLevelInfo(Info, 29);
}
break;
case 132: //Level to 39
{
LevelInfo * Info = objmgr.GetLevelInfo(Plr->getRace(), Plr->getClass(), 39);
Plr->ApplyLevelInfo(Info, 39);
}
break;
case 133: //Level to 49
{
LevelInfo * Info = objmgr.GetLevelInfo(Plr->getRace(), Plr->getClass(), 49);
Plr->ApplyLevelInfo(Info, 49);
}
break;
case 134: // Gold
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "100 Gold", 135);
Menu->AddItem(5, "1K Gold", 136);
Menu->AddItem(5, "10K Gold", 137);
Menu->AddItem(5, "100K Gold", 138);
Menu->SendTo(Plr);
}
break;
case 135: // Add 100 gold
{
Plr->ModUInt32Value( PLAYER_FIELD_COINAGE , 1000000);}
}
break;
case 136: // Add 1K Gold
{
Plr->ModUInt32Value( PLAYER_FIELD_COINAGE , 10000000);}
}
break;
case 137: // Add 10K Gold
{
Plr->ModUInt32Value( PLAYER_FIELD_COINAGE , 100000000);}
}
break;
case 138: // Add 100K Gold
{
Plr->ModUInt32Value( PLAYER_FIELD_COINAGE , 1000000000);}
}
break;
case 80: //SUB MENU
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Eastern Kingdoms", 81);
Menu->AddItem(5, "Kalimdor", 82);
//Menu->AddItem(5, "Outland", 3);
Menu->SendTo(Plr);
}
break;
case 81: // EASTERN KINGDOM
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Eastern Plaguelands", 70);
Menu->AddItem(5, "Western Plaguelands", 71);
Menu->AddItem(5, "Tristfal Glades", 72);
Menu->AddItem(5, "Alterac Mountains", 73);
Menu->AddItem(5, "Silverpine Forest", 74);
Menu->AddItem(5, "Hillsbrad Foothills", 75);
Menu->AddItem(5, "The Hinterlands", 76);
Menu->AddItem(5, "Arathi Highlands", 77);
Menu->AddItem(5, "Wetlands", 78);
Menu->AddItem(5, "Dun Morogh", 79);
Menu->AddItem(5, "Loch Modan", 100);
Menu->AddItem(5, "Badlands", 101);
Menu->AddItem(5, "Blackrock Mountain", 102);
Menu->AddItem(5, "Redridge Mountain", 103);
Menu->AddItem(5, "Elwynn Forest", 104);
Menu->AddItem(5, "Duskwood", 105);
Menu->AddItem(5, "Westfall", 106);
Menu->AddItem(5, "Swamp of Sorrows", 107);
Menu->AddItem(5, "The Blasted Lands", 108);
Menu->AddItem(5, "Deadwind Pass", 109);
Menu->AddItem(5, "Stranglethorn Vale", 110);
Menu->SendTo(Plr);
}
break;
case 82: // KALIMDOR
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(5, "Moonglade", 111);
Menu->AddItem(5, "Winterspring", 112);
Menu->AddItem(5, "Felwood", 113);
Menu->AddItem(5, "Darkshore", 114);
Menu->AddItem(5, "Azshara", 115);
Menu->AddItem(5, "Ashenvale", 116);
Menu->AddItem(5, "Stonetalon Mountains", 117);
Menu->AddItem(5, "The Barrens", 118);
Menu->AddItem(5, "Durotar", 119);
Menu->AddItem(5, "Mulgore", 120);
Menu->AddItem(5, "Desolace", 121);
Menu->AddItem(5, "Dustwallow Marsh", 122);
Menu->AddItem(5, "Feralas", 123);
Menu->AddItem(5, "Thousand Needles", 124);
Menu->AddItem(5, "Tanaris Desert", 125);
Menu->AddItem(5, "Un'Goro Crater", 126);
Menu->AddItem(5, "Silithus", 127);
Menu->SendTo(Plr);
}
break;
// EASTERN KINGDOMS [case] //
case 70: // WesternPlaguelands
{
Plr->EventTeleport( 0, 1855, -1569, 61);
}break;
case 71: // EasternPlaguelands
{
Plr->EventTeleport( 0, 2278, -5311, 89);
}break;
case 72: // Tristfall Glades
{
Plr->EventTeleport( 0, 2032, -432, 37);
}break;
case 73: // Alterac Mountains
{
Plr->EventTeleport( 0, 552, -275, 152);
}break;
case 74: // Silverpine Forest
{
Plr->EventTeleport( 0, -126, 815, 68);
}break;
case 75: // Hillsbrad
{
Plr->EventTeleport( 0, -502, 91, 61);
}break;
case 76: // The Hinterlands
{
Plr->EventTeleport( 0, -678, -4018, 240);
}break;
case 77: // Arathi Highlands
{
Plr->EventTeleport( 0, -797, -2068, 35);
}break;
case 78: // Wetlands
{
Plr->EventTeleport( 0, -3256, -2718, 11);
}break;
case 79: // Dunmorogh
{
Plr->EventTeleport( 0, -5826, -1586, 366);
}break;
case 100: // Lochmodan
{
Plr->EventTeleport( 0, -4771, -3329, 347);
}break;
case 101: // Badlands
{
Plr->EventTeleport( 0, -7027, -3330, 243);
}break;
case 102: // Blackrockmountain
{
Plr->EventTeleport( 0, -7317, -1072, 279);
}break;
case 103: // Redridgemountain
{
Plr->EventTeleport( 0, -9168, -2726, 92);
}break;
case 104: // ElwynnForest
{
Plr->EventTeleport( 0, -9325, -1038, 67);
}break;
case 105: // Duskwood
{
Plr->EventTeleport( 0, -10694, -884, 52);
}break;
case 106: // Westfall
{
Plr->EventTeleport( 0, -11018, 1513, 45);
}break;
case 107: // SwampofSorrows
{
Plr->EventTeleport( 0, -10429, -3828, -29);
}break;
case 108: // BlastedLands
{
Plr->EventTeleport( 0, -11853, -3197, -25);
}break;
case 109: // DeadwindPass
{
Plr->EventTeleport( 0, -10435, -1809, 101);
}break;
case 110: // Stranglethornvale
{
Plr->EventTeleport( 0, -13382, 2, 23);
}break;
// KALIMDOR [case] //
case 111: // Moonglade
{
Plr->EventTeleport( 1, 7978, -2501, 490);
}break;
case 112: // winterspring
{
Plr->EventTeleport( 1, 6721, -4659, 722);
}break;
case 113: // felwood
{
Plr->EventTeleport( 1, 4878, -614, 362);
}break;
case 114: // darkshore
{
Plr->EventTeleport( 1, 4565, 438, 34);
}break;
case 115: // azshara
{
Plr->EventTeleport( 1, 2717, -5968, 108);
}break;
case 116: // ashenvale
{
Plr->EventTeleport( 1, 3469, 847, 7);
}break;
case 117: // Stonetalon
{
Plr->EventTeleport( 1, 898, 922, 128);
}break;
case 118: // TheBarrens
{
Plr->EventTeleport( 1, -1330, -3120, 93);
}break;
case 119: // Durotar
{
Plr->EventTeleport( 1, 242, -5151, 3);
}break;
case 120: // Mulgore
{
Plr->EventTeleport( 1, -2326, -367, -6);
}break;
case 121: // Desolace
{
Plr->EventTeleport( 1, -939, 1091, 95);
}break;
case 122: // Dustwallow
{
Plr->EventTeleport( 1, -3719, -2530, 71);
}break;
case 123: // Feralas
{
Plr->EventTeleport( 1, -4508, 2041, 53);
}break;
case 124: // ThousandNeedles
{
Plr->EventTeleport( 1, -4619, -1850, 88);
}break;
case 125: // Tanaris
{
Plr->EventTeleport( 1, -7373, -2950, 12);
}break;
case 126: // Ungoro
{
Plr->EventTeleport( 1, -6186, -1106, -215);
}break;
case 127: // Silithus
{
Plr->EventTeleport( 1, -6824, 821, 51);
}break;
case 97: // REMOVE RESSURECTION SICKNESS
{
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Plr->addSpell(15007);
Plr->removeSpell(15007,0,0,0);
Menu->SendTo(Plr);
}break;
case 99: //main 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(2, "Global Locations", 80);
Menu->AddItem(3, "Azeroth Instances", 30);
Menu->AddItem(4, "Twink Areas", 50);
Menu->AddItem(6, "Options", 69);
Menu->AddItem(5, "Shattrath", 20);
Menu->AddItem(9, "Remove Resurrection Sickness", 97);
Menu->SendTo(Plr);
}break;
}
};
void Warper::GossipEnd(Object * pObject, Player* Plr)
{
GossipScript::GossipEnd(pObject, Plr);
}
void SetupWarper(ScriptMgr * mgr)
{
GossipScript * gs = (GossipScript*) new Warper();
mgr->register_item_gossip_script(60001,gs);
}
I've been messing with it for hours, need some assistance please :confused: (keep in mind I don't actually know C++ so if this is a stupid mistake that would be why