Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Portal Master convert to C++ for Trinitycore
- By Rochet2
- Credits:
- Rochet2
- Eric
- ScriptName: TeLe_gossip_codebox
- */
- #include "ScriptPCH.h"
- // Teleport data
- struct Eric
- {
- uint32 menu_id, next_menu_id;
- uint8 icon;
- std::string name;
- uint32 cost;
- uint8 level, faction; // 0 Both, 1 Horde, 2 Ally
- uint32 map;
- float x, y, z, o;
- };
- typedef struct Eric Rochet2;
- // {menu_id, next_menu_id, icon, name, cost, level, faction, map, x, y, z, o}
- Rochet2 TeLe [] = // key = i & Key
- {
- {1, 0, 2, "Mall", 0, 0, 2, 0, -8322.487305f, 2091.193115f, 125.813408f, 3.489510f}, // A
- {1, 0, 2, "Mall", 0, 0, 1, 1, -8564.412109f, -1998.245483f, 100.350288f, 0.356550f}, // H
- {1, 0, 2, "Duel Zone", 0, 0, 0, MAP, 4298.943848f, -2761.944336f, 16.662846f, 3.664825f},
- {1, 0, 2, "Gurubashi Arena", 0, 0, 0, MAP, -13263.814453f, 158.768204f, 36.077797f, 1.079510f},
- {1, 2, 3, "Eastern Kingdoms", 0, 0, 0, 0, 0, 0, 0, 0},
- {1, 3, 3, "Kalimdor", 0, 0, 0, 0, 0, 0, 0, 0},
- {1, 4, 3, "Outland", 0, 58, 0, 0, 0, 0, 0, 0},
- {1, 5, 9, "Raid Teleports", 0, 70, 0, 0, 0, 0, 0, 0},
- {2, 0, 2, "Elwynn Forest", 0, 0, 2, 0, -9449.06f, 64.8392f, 56.3581f, 3.07047f},
- {2, 0, 2, "Eversong Woods", 0, 0, 1, 530, 9024.37f, -6682.55f, 16.8973f, 3.14131f},
- {2, 0, 2, "Dun Morogh", 0, 0, 2, 0, -5603.76f, -482.704f, 396.98f, 5.23499f},
- {2, 0, 2, "Tirisfal Glades", 0, 0, 1, 0, 2274.95f, 323.918f, 34.1137f, 4.24367f},
- {2, 0, 2, "Ghostlands", 0, 10, 1, 530, 7595.73f, -6819.6f, 84.3718f, 2.56561f},
- {2, 0, 2, "Loch modan", 0, 10, 2, 0, -5405.85f, -2894.15f, 341.972f, 5.48238f},
- {2, 0, 2, "Silverpine Forest", 0, 10, 1, 0, 505.126f, 1504.63f, 124.808f, 1.77987f},
- {2, 0, 2, "Westfall", 0, 10, 2, 0, -10684.9f, 1033.63f, 32.5389f, 6.07384f},
- {2, 0, 2, "Redridge mountains", 0, 15, 2, 0, -9447.8f, -2270.85f, 71.8224f, 0.283853f},
- {2, 0, 2, "Duskwood", 0, 18, 2, 0, -10531.7f, -1281.91f, 38.8647f, 1.56959f},
- {2, 0, 2, "Hillsbrad Foothills", 0, 20, 0, 0, -385.805f, -787.954f, 54.6655f, 1.03926f},
- {2, 0, 2, "Wetlands", 0, 20, 2, 0, -3517.75f, -913.401f, 8.86625f, 2.60705f},
- {2, 0, 2, "Alterac Mountains", 0, 30, 0, 0, 275.049f, -652.044f, 130.296f, 0.502032f},
- {2, 0, 2, "Arathi Highlands", 0, 30, 0, 0, -1581.45f, -2704.06f, 35.4168f, 0.490373f},
- {2, 0, 2, "Stranglethorn Vale", 0, 30, 0, 0, -11921.7f, -59.544f, 39.7262f, 3.73574f},
- {2, 0, 2, "Badlands", 0, 35, 0, 0, -6782.56f, -3128.14f, 240.48f, 5.65912f},
- {2, 0, 2, "Swamp of Sorrows", 0, 35, 0, 0, -10368.6f, -2731.3f, 21.6537f, 5.29238f},
- {2, 0, 2, "The Hinterlands", 0, 40, 0, 0, 112.406f, -3929.74f, 136.358f, 0.981903f},
- {2, 0, 2, "Searing Gorge", 0, 43, 0, 0, -6686.33f, -1198.55f, 240.027f, 0.916887f},
- {2, 0, 2, "The Blasted Lands", 0, 45, 0, 0, -11184.7f, -3019.31f, 7.29238f, 3.20542f},
- {2, 0, 2, "Burning Steppes", 0, 50, 0, 0, -7979.78f, -2105.72f, 127.919f, 5.10148f},
- {2, 0, 2, "Western Plaguelands", 0, 51, 0, 0, 1743.69f, -1723.86f, 59.6648f, 5.23722f},
- {2, 0, 2, "Eastern Plaguelands", 0, 53, 0, 0, 2280.64f, -5275.05f, 82.0166f, 4.7479f},
- {2, 0, 2, "Isle of Quel'Danas", 0, 70, 0, 530, 12806.5f, -6911.11f, 41.1156f, 2.22935f},
- {2, 1, 7, "Back..", 0, 0, 0, 0, 0, 0, 0, 0},
- {3, 0, 2, "Azuremyst Isle", 0, 0, 2, 530, -4192.62f, -12576.7f, 36.7598f, 1.62813f},
- {3, 0, 2, "Teldrassil", 0, 0, 2, 1, 9889.03f, 915.869f, 1307.43f, 1.9336f},
- {3, 0, 2, "Durotar", 0, 0, 1, 1, 228.978f, -4741.87f, 10.1027f, 0.416883f},
- {3, 0, 2, "Mulgore", 0, 0, 1, 1, -2473.87f, -501.225f, -9.42465f, 0.6525f},
- {3, 0, 2, "Bloodmyst Isle", 0, 15, 2, 530, -2095.7f, -11841.1f, 51.1557f, 6.19288f},
- {3, 0, 2, "Darkshore", 0, 10, 2, 1, 6463.25f, 683.986f, 8.92792f, 4.33534f},
- {3, 0, 2, "The Barrens", 0, 10, 1, 1, -575.772f, -2652.45f, 95.6384f, 0.006469f},
- {3, 0, 2, "Stonetalon Mountains", 0, 15, 0, 1, 1574.89f, 1031.57f, 137.442f, 3.8013f},
- {3, 0, 2, "Ashenvale Forest", 0, 18, 0, 1, 1919.77f, -2169.68f, 94.6729f, 6.14177f},
- {3, 0, 2, "Thousand Needles", 0, 25, 1, 1, -5375.53f, -2509.2f, -40.432f, 2.41885f},
- {3, 0, 2, "Desolace", 0, 30, 0, 1, -656.056f, 1510.12f, 88.3746f, 3.29553f},
- {3, 0, 2, "Dustwallow Marsh", 0, 35, 0, 1, -3350.12f, -3064.85f, 33.0364f, 5.12666f},
- {3, 0, 2, "Feralas", 0, 40, 0, 1, -4808.31f, 1040.51f, 103.769f, 2.90655f},
- {3, 0, 2, "Tanaris Desert", 0, 40, 0, 1, -6940.91f, -3725.7f, 48.9381f, 3.11174f},
- {3, 0, 2, "Azshara", 0, 45, 0, 1, 3117.12f, -4387.97f, 91.9059f, 5.49897f},
- {3, 0, 2, "Felwood", 0, 48, 0, 1, 3898.8f, -1283.33f, 220.519f, 6.24307f},
- {3, 0, 2, "Un'Goro Crater", 0, 48, 0, 1, -6291.55f, -1158.62f, -258.138f, 0.457099f},
- {3, 0, 2, "Silithus", 0, 55, 0, 1, -6815.25f, 730.015f, 40.9483f, 2.39066f},
- {3, 0, 2, "Winterspring", 0, 55, 0, 1, 6658.57f, -4553.48f, 718.019f, 5.18088f},
- {3, 1, 7, "Back..", 0, 0, 0, 0, 0, 0, 0, 0},
- {4, 0, 2, "Hellfire Peninsula", 0, 58, 0, 530, -207.335f, 2035.92f, 96.464f, 1.59676f},
- {4, 0, 2, "Zangarmarsh", 0, 60, 0, 530, -220.297f, 5378.58f, 23.3223f, 1.61718f},
- {4, 0, 2, "Terokkar Forest", 0, 62, 0, 530, -2266.23f, 4244.73f, 1.47728f, 3.68426f},
- {4, 0, 2, "Nagrand", 0, 64, 0, 530, -1610.85f, 7733.62f, -17.2773f, 1.33522f},
- {4, 0, 2, "Blade's Edge Mountains", 0, 65, 0, 530, 2029.75f, 6232.07f, 133.495f, 1.30395f},
- {4, 0, 2, "Netherstorm", 0, 67, 0, 530, 3271.2f, 3811.61f, 143.153f, 3.44101f},
- {4, 0, 2, "Shadowmoon Valley", 0, 67, 0, 530, -3681.01f, 2350.76f, 76.587f, 4.25995f},
- {4, 1, 7, "Back..", 0, 0, 0, 0, 0, 0, 0, 0},
- {5, 0, 2, "Black Temple", 0, 70, 0, MAP, -3637.785400f, 314.684021f, 35.578209f, 2.900472f},
- {5, 0, 2, "Hyjal Summit", 0, 70, 0, MAP, -8174.817871f, -4175.274902f, -166.112244f, 0.921193f},
- {5, 0, 2, "Karazhan", 0, 70, 0, MAP, -11118.900391f, -2010.329956f, 47.081902f, 0.649895f},
- {5, 0, 2, "Serpentshrine Cavern", 0, 70, 0, MAP, 796.593384f, 6866.157227f, -65.125031f, 6.275439f},
- {5, 0, 2, "Gruul's Lair", 0, 70, 0, MAP, 3532.722168f, 5101.472168f, 3.636398f, 5.648614f},
- {5, 0, 2, "Sunwel Plateau", 0, 70, 0, MAP, 12562.410156f, -6774.766602f, 15.090400f, 3.137880f},
- {5, 0, 2, "Tempest Keep", 0, 70, 0, MAP, 3087.918457f, 1379.465820f, 184.908508f, 4.615966f},
- {5, 0, 2, "Zul'Aman", 0, 70, 0, MAP, 6851.916016f, -7988.957520f, 189.120056f, 4.690108f},
- {5, 1, 7, "Back..", 0, 0, 0, 0, 0, 0, 0, 0},
- // {6, 0, 2, "Teleport", 0, 0, 0, map, xf, yf, zf, of},
- // {6, 1, 7, "Back..", 0, 0, 0, 0, 0, 0, 0, 0},
- };
- // TextIDs from npc_text
- enum eEnums
- {
- TEXT_MAIN_H = 300000, //Horde main menu text
- TEXT_MAIN_A = 300001, //Alliance main menu text
- TEXT_DUNGEON = 300002, //Dungeon teleport menu texts
- TEXT_RAID = 300003, //Raid teleport menu text
- TEXT_AREA = 300004, //Area teleport location menu texts
- TELEPORT_COUNT = sizeof TeLe/sizeof(*TeLe),
- };
- #define ARE_YOU_SURE "Are you sure, that you want to go to "
- #define ERROR_COMBAT "|cffff0000You are in combat|r"
- bool Custom_FactCheck (uint32 Fact, unsigned char Key)
- {
- bool Show = false;
- switch (TeLe[Key].faction)
- {
- case 0:
- Show = true;
- break;
- case 1:
- if (Fact == HORDE)
- Show = true;
- break;
- case 2:
- if (Fact == ALLIANCE)
- Show = true;
- break;
- }
- return (Show);
- }
- uint32 Custom_GetText (unsigned int menu, Player* pPlayer)
- {
- uint32 TEXT = TEXT_AREA;
- switch (menu)
- {
- case 0:
- switch (pPlayer->GetTeam())
- {
- case ALLIANCE:
- TEXT = TEXT_MAIN_A;
- break;
- case HORDE:
- TEXT = TEXT_MAIN_H;
- break;
- }
- case 1:
- case 2:
- case 3:
- TEXT = TEXT_DUNGEON;
- break;
- case 4:
- TEXT = TEXT_RAID;
- break;
- }
- return (TEXT);
- }
- void Custom_GetMenu (Player* pPlayer, Creature* pCreature, uint32 Key)
- {
- bool ENDMENU = false;
- for(uint32 i = 0; i < TELEPORT_COUNT; i++)
- {
- if (ENDMENU && TeLe[i].menu_id != Key)
- break;
- if (TeLe[i].menu_id == Key && pPlayer->getLevel() >= TeLe[i].level && Custom_FactCheck(pPlayer->GetTeam(), i))
- {
- if (TeLe[i].next_menu_id != 0)
- pPlayer->ADD_GOSSIP_ITEM_EXTENDED(TeLe[i].icon, TeLe[i].name, GOSSIP_SENDER_MAIN, i, "", TeLe[i].cost, false);
- else
- 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);
- ENDMENU = true;
- }
- }
- pPlayer->PlayerTalkClass->SendGossipMenu(Custom_GetText(Key, pPlayer), pCreature->GetGUID());
- }
- class TeLe_gossip_codebox : public CreatureScript
- {
- public:
- TeLe_gossip_codebox()
- : CreatureScript("TeLe_gossip_codebox")
- {
- }
- bool OnGossipHello(Player* pPlayer, Creature* pCreature)
- {
- Custom_GetMenu(pPlayer, pCreature, 1);
- return true;
- }
- bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
- {
- pPlayer->PlayerTalkClass->ClearMenus(); // clear the menu
- pPlayer->ModifyMoney(-1 * TeLe[uiAction].cost); // take cash
- uint32 Key = TeLe[uiAction].next_menu_id;
- if (Key == 0) // if no next_menu_id, then teleport to coords
- {
- if (!pPlayer->isInCombat())
- {
- pPlayer->CLOSE_GOSSIP_MENU();
- pPlayer->TeleportTo(TeLe[uiAction].map, TeLe[uiAction].x, TeLe[uiAction].y, TeLe[uiAction].z, TeLe[uiAction].o);
- return true;
- }
- pPlayer->GetSession()->SendAreaTriggerMessage(ERROR_COMBAT);
- Key = TeLe[uiAction].menu_id;
- }
- Custom_GetMenu(pPlayer, pCreature, Key);
- return true;
- }
- };
- void AddSC_TeLe_gossip_codebox()
- {
- new TeLe_gossip_codebox();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement