Advertisement
Rochet2

Portal Master convert to C++ for Trinitycore

Oct 29th, 2011
844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.21 KB | None | 0 0
  1. /*
  2. Portal Master convert to C++ for Trinitycore
  3. By Rochet2
  4.  
  5. Credits:
  6. Rochet2
  7. Eric
  8.  
  9. ScriptName: TeLe_gossip_codebox
  10. */
  11.  
  12. #include "ScriptPCH.h"
  13.  
  14. // Teleport data
  15.  
  16. struct Eric
  17. {
  18.     uint32 menu_id, next_menu_id;
  19.     uint8 icon;
  20.     std::string name;
  21.     uint32 cost;
  22.     uint8 level, faction; // 0 Both, 1 Horde, 2 Ally
  23.     uint32 map;
  24.     float x, y, z, o;
  25. };
  26. typedef struct Eric Rochet2;
  27.  
  28. //  {menu_id, next_menu_id, icon, name, cost, level, faction, map, x, y, z, o}
  29. Rochet2 TeLe [] = // key = i & Key
  30. {
  31.     {1, 02"Stormwind",    1020-8842.09f626.358f,   94.0867f,   3.61363f},
  32.     {1, 02"Orgrimmar",    00111601.08f,   -4378.69f9.9846f,    2.14362f},
  33.     {1, 02"Darnassus",    00219869.91f,   2493.58f,   1315.88f,   2.78897f},
  34.     {1, 02"Ironforge",    0020-4900.47f-962.585f501.455f,   5.40538f},
  35.     {1, 02"Exodar",   002530,    -3864.92f-11643.7f-137.644f5.50862f},
  36.     {1, 02"Thunder bluff",    0011-1274.45f71.8601f,   128.159f,   2.80623f},
  37.     {1, 02"Undercity",    00101633.75f,   240.167f,   -43.1034f6.26128f},
  38.     {1, 02"Silvermoon city"001530,    9738.28f,   -7454.19f13.5605f,   0.043914f},
  39.     {1, 02"Dalaran"067, 0571,    5809.55f,   503.975f,   657.526f,   2.38338f},
  40.     {1, 02"Shattrath",    057, 0530,    -1887.62f5359.09f,   -12.4279f4.40435f},
  41.     {1, 02"Booty bay",    030, 00-14281.9f552.564f,   8.90422f,   0.860144f},
  42.     {1, 02"Gurubashi arena"030, 00-13181.8f339.356f,   42.9805f,   1.18013f},
  43.     {1, 63"Eastern Kingdoms", 00000000},
  44.     {1, 73"Kalimdor", 00000000},
  45.     {1, 83"Outland"058, 000000},
  46.     {1, 93"Northrend",    068, 000000},
  47.     {1, 29"Classic Dungeons", 015, 000000},
  48.     {1, 39"BC Dungeons"059, 000000},
  49.     {1, 49"Wrath Dungeons",   069, 000000},
  50.     {1, 59"Raid Teleports",   057, 000000},
  51.  
  52.     {2, 02"Gnomeregan",   025, 20-5163.54f925.423f,   257.181f,   1.57423f},
  53.     {2, 02"The Deadmines",    017, 20-11209.6f1666.54f,   24.6974f,   1.42053f},
  54.     {2, 02"The Stockade", 022, 20-8799.15f832.718f,   97.6348f,   6.04085f},
  55.     {2, 02"Ragefire Chasm",   015, 111811.78f,   -4410.5f,   -18.4704f5.20165f},
  56.     {2, 02"Razorfen Downs",   034, 11-4657.3f,   -2519.35f81.0529f,   4.54808f},
  57.     {2, 02"Razorfen Kraul",   024, 11-4470.28f-1677.77f81.3925f,   1.16302f},
  58.     {2, 02"Scarlet Monastery",    032, 102873.15f,   -764.523f160.332f,   5.10447f},
  59.     {2, 02"Shadowfang Keep"018, 10-234.675f1561.63f,   76.8921f,   1.24031f},
  60.     {2, 02"Wailing Caverns"017, 11-731.607f-2218.39f17.0281f,   2.78486f},
  61.     {2, 02"Blackfathom Deeps",    021, 014249.99f,   740.102f,   -25.671f,   1.34062f},
  62.     {2, 02"Blackrock Depths", 053, 00-7179.34f-921.212f165.821f,   5.09599f},
  63.     {2, 02"Blackrock Spire"057, 00-7527.05f-1226.77f285.732f,   5.29626f},
  64.     {2, 02"Dire Maul",    055, 01-3520.14f1119.38f,   161.025f,   4.70454f},
  65.     {2, 02"Maraudon", 045, 01-1421.42f2907.83f,   137.415f,   1.70718f},
  66.     {2, 02"Scholomance"055, 001269.64f,   -2556.21f93.6088f,   0.620623f},
  67.     {2, 02"Stratholme",   055, 003352.92f,   -3379.03f144.782f,   6.25978f},
  68.     {2, 02"Sunken Temple",    047, 00-10177.9f-3994.9f,   -111.239f6.01885f},
  69.     {2, 02"Uldaman"037, 00-6071.37f-2955.16f209.782f,   0.015708f},
  70.     {2, 02"Zul'Farrak",   035, 01-6801.19f-2893.02f9.00388f,   0.158639f},
  71.     {2, 17"Back..",   00000000},
  72.  
  73.     {3, 02"Auchindoun",   064, 0530,    -3324.49f4943.45f,   -101.239f4.63901f},
  74.     {3, 02"Caverns of Time"066, 01-8369.65f-4253.11f-204.272f-2.70526f},
  75.     {3, 02"Coilfang Reservoir",   062, 0530,    738.865f,   6865.77f,   -69.4659f6.27655f},
  76.     {3, 02"Hellfire Citadel", 059, 0530,    -347.29f,   3089.82f,   21.394f,    5.68114f},
  77.     {3, 02"Magisters' Terrace",   070, 0530,    12884.6f,   -7317.69f65.5023f,   4.799f},
  78.     {3, 02"Tempest Keep", 070, 0530,    3100.48f,   1536.49f,   190.3f, 4.62226f},
  79.     {3, 17"Back..",   00000000},
  80.  
  81.     {4, 02"Azjol-Nerub"073, 0571,    3707.86f,   2150.23f,   36.76f, 3.22f},
  82.     {4, 02"The Culling of Stratholme",    079, 01-8756.39f-4440.68f-199.489f4.66289f},
  83.     {4, 02"Trial of the Champion",    079, 0571,    8590.95f,   791.792f,   558.235f,   3.13127f},
  84.     {4, 02"Drak'Tharon Keep", 074, 0571,    4765.59f,   -2038.24f229.363f,   0.887627f},
  85.     {4, 02"Gundrak"071, 0571,    6722.44f,   -4640.67f450.632f,   3.91123f},
  86.     {4, 02"Icecrown Citadel Dungeons",    079, 0571,    5643.16f,   2028.81f,   798.274f,   4.60242f},
  87.     {4, 02"The Nexus Dungeons",   071, 0571,    3782.89f,   6965.23f,   105.088f,   6.14194f},
  88.     {4, 02"The Violet Hold"075, 0571,    5693.08f,   502.588f,   652.672f,   4.0229f},
  89.     {4, 02"Halls of Lightning",   079, 0571,    9136.52f,   -1311.81f1066.29f,   5.19113f},
  90.     {4, 02"Halls of Stone",   077, 0571,    8922.12f,   -1009.16f1039.56f,   1.57044f},
  91.     {4, 02"Utgarde Keep", 069, 0571,    1203.41f,   -4868.59f41.2486f,   0.283237f},
  92.     {4, 02"Utgarde Pinnacle", 075, 0571,    1267.24f,   -4857.3f,   215.764f,   3.22768f},
  93.     {4, 17"Back..",   00000000},
  94.  
  95.     {5, 02"Black Temple", 070, 0530,    -3649.92f317.469f,   35.2827f,   2.94285f},
  96.     {5, 02"Blackwing Lair",   060, 0229,    152.451f,   -474.881f116.84f,    0.001073f},
  97.     {5, 02"Hyjal Summit", 070, 01-8177.89f-4181.23f-167.552f0.913338f},
  98.     {5, 02"Serpentshrine Cavern", 070, 0530,    797.855f,   6865.77f,   -65.4165f0.005938f},
  99.     {5, 02"Trial of the Crusader",    080, 0571,    8515.61f,   714.153f,   558.248f,   1.57753f},
  100.     {5, 02"Gruul's Lair", 070, 0530,    3530.06f,   5104.08f,   3.50861f,   5.51117f},
  101.     {5, 02"Magtheridon's Lair",   070, 0530,    -336.411f3130.46f,   -102.928f5.20322f},
  102.     {5, 02"Icecrown Citadel", 080, 0571,    5855.22f,   2102.03f,   635.991f,   3.57899f},
  103.     {5, 02"Karazhan", 070, 00-11118.9f-2010.33f47.0819f,   0.649895f},
  104.     {5, 02"Molten Core"060, 0230,    1126.64f,   -459.94f,   -102.535f3.46095f},
  105.     {5, 02"Naxxramas",    080, 0571,    3668.72f,   -1262.46f243.622f,   4.785f},
  106.     {5, 02"Onyxia's Lair",    080, 01-4708.27f-3727.64f54.5589f,   3.72786f},
  107.     {5, 02"Ruins of Ahn'Qiraj",   060, 01-8409.82f1499.06f,   27.7179f,   2.51868f},
  108.     {5, 02"Sunwell Plateau"070, 0530,    12574.1f,   -6774.81f15.0904f,   3.13788f},
  109.     {5, 02"The Eye"067, 0530,    3088.49f,   1381.57f,   184.863f,   4.61973f},
  110.     {5, 02"Temple of Ahn'Qiraj"060, 01-8240.09f1991.32f,   129.072f,   0.941603f},
  111.     {5, 02"The Eye of Eternity"080, 0571,    3784.17f,   7028.84f,   161.258f,   5.79993f},
  112.     {5, 02"The Obsidian Sanctum", 080, 0571,    3472.43f,   264.923f,   -120.146f3.27923f},
  113.     {5, 02"Ulduar",   080, 0571,    9222.88f,   -1113.59f1216.12f,   6.27549f},
  114.     {5, 02"Vault of Archavon",    080, 0571,    5453.72f,   2840.79f,   421.28f,    0.0f},
  115.     {5, 02"Zul'Gurub",    057, 00-11916.7f-1215.72f92.289f,    4.72454f},
  116.     {5, 02"Zul'Aman", 070, 1530,    6851.78f,   -7972.57f179.242f,   4.64691f},
  117.     {5, 17"Back..",   00000000},
  118.  
  119.     {6, 02"Elwynn Forest",    0020-9449.06f64.8392f,   56.3581f,   3.07047f},
  120.     {6, 02"Eversong Woods",   001530,    9024.37f,   -6682.55f16.8973f,   3.14131f},
  121.     {6, 02"Dun Morogh",   0020-5603.76f-482.704f396.98f,    5.23499f},
  122.     {6, 02"Tirisfal Glades"00102274.95f,   323.918f,   34.1137f,   4.24367f},
  123.     {6, 02"Ghostlands",   010, 1530,    7595.73f,   -6819.6f,   84.3718f,   2.56561f},
  124.     {6, 02"Loch modan",   010, 20-5405.85f-2894.15f341.972f,   5.48238f},
  125.     {6, 02"Silverpine Forest",    010, 10505.126f,   1504.63f,   124.808f,   1.77987f},
  126.     {6, 02"Westfall", 010, 20-10684.9f1033.63f,   32.5389f,   6.07384f},
  127.     {6, 02"Redridge mountains",   015, 20-9447.8f,   -2270.85f71.8224f,   0.283853f},
  128.     {6, 02"Duskwood", 018, 20-10531.7f-1281.91f38.8647f,   1.56959f},
  129.     {6, 02"Hillsbrad Foothills"020, 00-385.805f-787.954f54.6655f,   1.03926f},
  130.     {6, 02"Wetlands", 020, 20-3517.75f-913.401f8.86625f,   2.60705f},
  131.     {6, 02"Alterac Mountains",    030, 00275.049f,   -652.044f130.296f,   0.502032f},
  132.     {6, 02"Arathi Highlands", 030, 00-1581.45f-2704.06f35.4168f,   0.490373f},
  133.     {6, 02"Stranglethorn Vale",   030, 00-11921.7f-59.544f,   39.7262f,   3.73574f},
  134.     {6, 02"Badlands", 035, 00-6782.56f-3128.14f240.48f,    5.65912f},
  135.     {6, 02"Swamp of Sorrows", 035, 00-10368.6f-2731.3f,   21.6537f,   5.29238f},
  136.     {6, 02"The Hinterlands"040, 00112.406f,   -3929.74f136.358f,   0.981903f},
  137.     {6, 02"Searing Gorge",    043, 00-6686.33f-1198.55f240.027f,   0.916887f},
  138.     {6, 02"The Blasted Lands",    045, 00-11184.7f-3019.31f7.29238f,   3.20542f},
  139.     {6, 02"Burning Steppes"050, 00-7979.78f-2105.72f127.919f,   5.10148f},
  140.     {6, 02"Western Plaguelands"051, 001743.69f,   -1723.86f59.6648f,   5.23722f},
  141.     {6, 02"Eastern Plaguelands"053, 002280.64f,   -5275.05f82.0166f,   4.7479f},
  142.     {6, 02"Isle of Quel'Danas",   070, 0530,    12806.5f,   -6911.11f41.1156f,   2.22935f},
  143.     {6, 17"Back..",   00000000},
  144.  
  145.     {7, 02"Azuremyst Isle",   002530,    -4192.62f-12576.7f36.7598f,   1.62813f},
  146.     {7, 02"Teldrassil",   00219889.03f,   915.869f,   1307.43f,   1.9336f},
  147.     {7, 02"Durotar"0011228.978f,   -4741.87f10.1027f,   0.416883f},
  148.     {7, 02"Mulgore"0011-2473.87f-501.225f-9.42465f0.6525f},
  149.     {7, 02"Bloodmyst Isle",   015, 2530,    -2095.7f,   -11841.1f51.1557f,   6.19288f},
  150.     {7, 02"Darkshore",    010, 216463.25f,   683.986f,   8.92792f,   4.33534f},
  151.     {7, 02"The Barrens"010, 11-575.772f-2652.45f95.6384f,   0.006469f},
  152.     {7, 02"Stonetalon Mountains", 015, 011574.89f,   1031.57f,   137.442f,   3.8013f},
  153.     {7, 02"Ashenvale Forest", 018, 011919.77f,   -2169.68f94.6729f,   6.14177f},
  154.     {7, 02"Thousand Needles", 025, 11-5375.53f-2509.2f,   -40.432f,   2.41885f},
  155.     {7, 02"Desolace", 030, 01-656.056f1510.12f,   88.3746f,   3.29553f},
  156.     {7, 02"Dustwallow Marsh", 035, 01-3350.12f-3064.85f33.0364f,   5.12666f},
  157.     {7, 02"Feralas"040, 01-4808.31f1040.51f,   103.769f,   2.90655f},
  158.     {7, 02"Tanaris Desert",   040, 01-6940.91f-3725.7f,   48.9381f,   3.11174f},
  159.     {7, 02"Azshara"045, 013117.12f,   -4387.97f91.9059f,   5.49897f},
  160.     {7, 02"Felwood"048, 013898.8f,    -1283.33f220.519f,   6.24307f},
  161.     {7, 02"Un'Goro Crater",   048, 01-6291.55f-1158.62f-258.138f0.457099f},
  162.     {7, 02"Silithus", 055, 01-6815.25f730.015f,   40.9483f,   2.39066f},
  163.     {7, 02"Winterspring", 055, 016658.57f,   -4553.48f718.019f,   5.18088f},
  164.     {7, 17"Back..",   00000000},
  165.  
  166.     {8, 02"Hellfire Peninsula",   058, 0530,    -207.335f2035.92f,   96.464f,    1.59676f},
  167.     {8, 02"Zangarmarsh"060, 0530,    -220.297f5378.58f,   23.3223f,   1.61718f},
  168.     {8, 02"Terokkar Forest"062, 0530,    -2266.23f4244.73f,   1.47728f,   3.68426f},
  169.     {8, 02"Nagrand"064, 0530,    -1610.85f7733.62f,   -17.2773f1.33522f},
  170.     {8, 02"Blade's Edge Mountains",   065, 0530,    2029.75f,   6232.07f,   133.495f,   1.30395f},
  171.     {8, 02"Netherstorm"067, 0530,    3271.2f,    3811.61f,   143.153f,   3.44101f},
  172.     {8, 02"Shadowmoon Valley",    067, 0530,    -3681.01f2350.76f,   76.587f,    4.25995f},
  173.     {8, 17"Back..",   00000000},
  174.  
  175.     {9, 02"Borean Tundra",    068, 0571,    2954.24f,   5379.13f,   60.4538f,   2.55544f},
  176.     {9, 02"Howling Fjord",    068, 0571,    682.848f,   -3978.3f,   230.161f,   1.54207f},
  177.     {9, 02"Dragonblight", 071, 0571,    2678.17f,   891.826f,   4.37494f,   0.101121f},
  178.     {9, 02"Grizzly Hills",    073, 0571,    4017.35f,   -3403.85f290.0f, 5.35431f},
  179.     {9, 02"Zul'Drak", 074, 0571,    5560.23f,   -3211.66f371.709f,   5.55055f},
  180.     {9, 02"Sholazar Basin",   076, 0571,    5614.67f,   5818.86f,   -69.722f,   3.60807f},
  181.     {9, 02"Crystalsong Forest",   077, 0571,    5411.17f,   -966.37f,   167.082f,   1.57167f},
  182.     {9, 02"Storm Peaks"077, 0571,    6120.46f,   -1013.89f408.39f,    5.12322f},
  183.     {9, 02"Icecrown", 077, 0571,    8323.28f,   2763.5f,    655.093f,   2.87223f},
  184.     {9, 02"Wintergrasp"077, 0571,    4522.23f,   2828.01f,   389.975f,   0.215009f},
  185.     {9, 17"Back..",   00000000},
  186.  
  187. //  {10,    0,  2,  "Teleport", 0,  0,  0,  map,    xf, yf, zf, of},
  188. //  {10,    1,  7,  "Back..",   0,  0,  0,  0,  0,  0,  0,  0},
  189. };
  190.  
  191. // TextIDs from npc_text
  192. enum eEnums
  193. {
  194.     TEXT_MAIN_H     =   300000,         //Horde main menu text
  195.     TEXT_MAIN_A     =   300001,         //Alliance main menu text
  196.     TEXT_DUNGEON    =   300002,         //Dungeon teleport menu texts
  197.     TEXT_RAID       =   300003,         //Raid teleport menu text
  198.     TEXT_AREA       =   300004,         //Area teleport location menu texts
  199.    
  200.     TELEPORT_COUNT  =   sizeof TeLe/sizeof(*TeLe),
  201. };
  202.  
  203. #define ARE_YOU_SURE    "Are you sure, that you want to go to "
  204. #define ERROR_COMBAT    "|cffff0000You are in combat|r"
  205.  
  206. bool Custom_FactCheck (uint32 Fact, unsigned char Key)
  207. {
  208.     bool Show = false;
  209.     switch (TeLe[Key].faction)
  210.     {
  211.     case 0:
  212.         Show = true;
  213.         break;
  214.     case 1:
  215.         if (Fact == HORDE)
  216.             Show = true;
  217.         break;
  218.     case 2:
  219.         if (Fact == ALLIANCE)
  220.             Show = true;
  221.         break;
  222.     }
  223.     return (Show);
  224. }
  225.  
  226. uint32 Custom_GetText (unsigned int menu, Player* pPlayer)
  227. {
  228.     uint32 TEXT = TEXT_AREA;
  229.     switch (menu)
  230.     {
  231.     case 0:
  232.         switch (pPlayer->GetTeam())
  233.         {
  234.         case ALLIANCE:
  235.             TEXT = TEXT_MAIN_A;
  236.             break;
  237.         case HORDE:
  238.             TEXT = TEXT_MAIN_H;
  239.             break;
  240.         }
  241.     case 1:
  242.     case 2:
  243.     case 3:
  244.         TEXT = TEXT_DUNGEON;
  245.         break;
  246.     case 4:
  247.         TEXT = TEXT_RAID;
  248.         break;
  249.     }
  250.     return (TEXT);
  251. }
  252.  
  253. void Custom_GetMenu (Player* pPlayer, Creature* pCreature, uint32 Key)
  254. {
  255.     bool ENDMENU = false;
  256.     for(uint32 i = 0; i < TELEPORT_COUNT; i++)
  257.     {
  258.         if (ENDMENU && TeLe[i].menu_id != Key)
  259.             break;
  260.         if (TeLe[i].menu_id == Key && pPlayer->getLevel() >= TeLe[i].level && Custom_FactCheck(pPlayer->GetTeam(), i))
  261.         {
  262.             if (TeLe[i].next_menu_id != 0)
  263.                 pPlayer->ADD_GOSSIP_ITEM_EXTENDED(TeLe[i].icon, TeLe[i].name, GOSSIP_SENDER_MAIN, i, "", TeLe[i].cost, false);
  264.             else
  265.                 pPlayer->ADD_GOSSIP_ITEM_EXTENDED(TeLe[i].icon, TeLe[i].name, GOSSIP_SENDER_MAIN, i, ARE_YOU_SURE+TeLe[i].name, TeLe[i].cost, false);
  266.             ENDMENU = true;
  267.         }
  268.     }
  269.     pPlayer->PlayerTalkClass->SendGossipMenu(Custom_GetText(Key, pPlayer), pCreature->GetGUID());
  270. }
  271.  
  272. class TeLe_gossip_codebox : public CreatureScript
  273. {
  274.     public:
  275.     TeLe_gossip_codebox()
  276.     : CreatureScript("TeLe_gossip_codebox")
  277.     {
  278.     }
  279.  
  280.     bool OnGossipHello(Player* pPlayer, Creature* pCreature)
  281.     {
  282.         Custom_GetMenu(pPlayer, pCreature, 1);
  283.         return true;
  284.     }
  285.  
  286.     bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
  287.     {
  288.         pPlayer->PlayerTalkClass->ClearMenus(); // clear the menu
  289.  
  290.         pPlayer->ModifyMoney(-1 * TeLe[uiAction].cost); // take cash
  291.         uint32 Key = TeLe[uiAction].next_menu_id;
  292.         if (Key == 0) // if no next_menu_id, then teleport to coords
  293.         {
  294.             if (!pPlayer->isInCombat())
  295.             {
  296.                 pPlayer->CLOSE_GOSSIP_MENU();
  297.                 pPlayer->TeleportTo(TeLe[uiAction].map, TeLe[uiAction].x, TeLe[uiAction].y, TeLe[uiAction].z, TeLe[uiAction].o);
  298.                 return true;
  299.             }
  300.             pPlayer->GetSession()->SendAreaTriggerMessage(ERROR_COMBAT);
  301.             Key = TeLe[uiAction].menu_id;
  302.         }
  303.  
  304.         Custom_GetMenu(pPlayer, pCreature, Key);
  305.         return true;
  306.     }
  307. };
  308.  
  309. void AddSC_TeLe_gossip_codebox()
  310. {
  311.     new TeLe_gossip_codebox();
  312. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement