⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gossip_teleportnpc.cpp

📁 魔兽世界模拟服务器脚本代码. Menu->AddItem(0, " 主城传送 ",100) Menu->AddItem(0, " 初级副本传送 ",101) Menu-&gt
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#include "StdAfx.h"
#include "Setup.h"


class SCRIPT_DECL TeleportNPC : public GossipScript
{
public:
    ADD_GOSSIP_FACTORY_FUNCTION(TeleportNPC);
    void GossipHello(Creature * pCreature, Player * Plr, bool AutoSend)
    {
        GossipMenu *Menu;
        objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);

        Menu->AddItem(5, " 把这里设置成回城点 ", 98);
        if (Plr->GetTeam() > 0) 
        { Menu->AddItem(0, " 部落主城传送 ", 1); } 
        else
        { Menu->AddItem(0, " 联盟主城传送 ", 2); }
        Menu->AddItem(0, " 外域传送 ", 3);

        Menu->AddItem(0, " 主城传送 ",100);//100 开我加的
        Menu->AddItem(0, " 初级副本传送 ",101);
        Menu->AddItem(0, " 中级副本传送 ",102);
        Menu->AddItem(0, " 团队副本传送 ",103);
        Menu->AddItem(0, " 外域副本传送1 ",104);
        Menu->AddItem(0, " 外域副本传送2 ",     105);
        Menu->AddItem(0, " 个人银行 ",          106);
        Menu->AddItem(0, " 开通飞行点 ",        107);
        Menu->AddItem(0, " 领取工资 ",  108);
        Menu->AddItem(0, " 外域传送 ",      109);
        Menu->AddItem(0, " 野外BOSS传送 ", 110);

        if(AutoSend)
            Menu->SendTo(Plr);
    }

    void GossipSelectOption(Creature* pCreature, Player* Plr, uint32 Id, uint32 IntId)
    {
        GossipMenu * Menu;
        switch(IntId)
        {
        case 0:     // Return to start
                GossipHello(pCreature, Plr, true);
            break;

        case 98:     // BINDER
                Plr->GetSession()->SendInnkeeperBind(pCreature);
            break;

        case 1:     // Horde
                objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
                Menu->AddItem(5, " 部落 银月城 ", 4);
                Menu->AddItem(5, " 部落 奥格瑞玛 ", 5);
                Menu->AddItem(5, " 部落 雷霆崖 ", 6);
                Menu->AddItem(5, " 部落 幽暗城 ", 7);
                Menu->AddItem(0, "[返回]", 99);


                Menu->SendTo(Plr);
            break;

        case 2:     // Alliance
                objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
                Menu->AddItem(5, " 联盟 埃索达 ", 8);
                Menu->AddItem(5, " 联盟 暴风城 ", 9);
                Menu->AddItem(5, " 联盟 铁炉堡 ", 10);
                Menu->AddItem(5, " 联盟 达纳苏斯 ", 11);
                Menu->AddItem(0, "[返回]", 99);
                Menu->SendTo(Plr);
            break;

        case 3:     // Outland
            if(Plr->getLevel() < 60)
            {
                pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL," 你还没有资格进入(等级限制60). ");
                Plr->Gossip_Complete();
            }else{
                objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
                Menu->AddItem(5, " 黑暗之门 ", 12);
                Menu->AddItem(5, " 赞加沼泽 ", 13);
                Menu->AddItem(5, " 纳格兰 ", 14);
                Menu->AddItem(5, " 刀锋山 ", 15);
                Menu->AddItem(5, " 虚空风暴 ", 16);
                Menu->AddItem(5, " 泰罗卡森林 ", 17);
                Menu->AddItem(5, " 影月谷 ", 18);
                Menu->AddItem(0, "[返回]", 99);
                Menu->SendTo(Plr);
            }
            break;

            //////////////////
            // Horde submenu
            ////////

        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;

            ////////////////
            // Alliance Menu
            ////////

        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;

            ////////////////
            // Outland Menu
            ////////

        case 12: //Hellfire Peninsula
            {
                Plr->EventTeleport(530, -248.160004, 922.348999, 84.379799);
            }break;

        case 13: //Zangermarsh
            {
                Plr->EventTeleport(530, -225.863632, 5405.927246, 22.346397);
            }break;

        case 14: //Nagrand
            {
                Plr->EventTeleport(530, -468.232330, 8418.666016, 28.031298);

            }break;

        case 15: //Blades Edge Mountains
            {
                Plr->EventTeleport(530, 1471.672852, 6828.047852, 107.759239);

            }break;

        case 16: //Netherstorm
            {
                Plr->EventTeleport(530, 3396.123779, 4182.208008, 137.097992);

            }break;

        case 17: //Terokkar Forest
            {
                Plr->EventTeleport(530, -1202.426636, 5313.692871, 33.774723);

            }break;

        case 18: //Shadowmoon Valley
            {
                Plr->EventTeleport(530, -2859.522461, 3182.34773, 10.008426);

            }break;
        case 99: //main menu
            {
                objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);

                Menu->AddItem(5, " 把这里设置成回城点 ", 98);
                if (Plr->GetTeam() > 0) 
                { Menu->AddItem(0, " 部落主城传送 ", 1); } 
                else
                { Menu->AddItem(0, " 联盟主城传送 ", 2); }
                Menu->AddItem(0, " 外域传送 ", 3);
                Menu->AddItem(0, " 主城传送 ",100);//100 开我加的
                Menu->AddItem(0, " 初级副本传送 ",101);
                Menu->AddItem(0, " 中级副本传送 ",102);
                Menu->AddItem(0, " 团队副本传送 ",103);
                Menu->AddItem(0, " 外域副本传送1 ",104);
                Menu->AddItem(0, " 外域副本传送2 ",     105);
                Menu->AddItem(0, " 个人银行 ",          106);
                Menu->AddItem(0, " 开通飞行点 ",        107);
                Menu->AddItem(0, " 领取工资 ",  108);
                Menu->AddItem(0, " 外域传送 ",      109);
                Menu->AddItem(0, " 野外BOSS传送 ", 110);
                Menu->SendTo(Plr);
            }break;
        case 100://主城传送
            {
                objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
                Menu->AddItem(5, " 联盟 暴风城 ",        1001); 
                Menu->AddItem(5, " 联盟 铁炉堡 ",         1002); 
                Menu->AddItem(5, " 联盟 达纳苏斯 ",    1003); 
                Menu->AddItem(5, " 联盟 埃索达 ",         1004); 
                Menu->AddItem(5, " 部落 奥格瑞玛 ",    1005); 
                Menu->AddItem(5, " 部落 雷霆崖 ",        1006); 
                Menu->AddItem(5, " 部落 幽暗城 ",        1007); 
                Menu->AddItem(5, " 部落 银月城 ",        1008); 
                Menu->AddItem(5, " 中立 棘齿城 ",      1009); 
                Menu->AddItem(5, " 中立 藏宝海湾 ",    10010); 
                Menu->AddItem(5, " 中立 加基森 ",      10011); 
                Menu->AddItem(5, " 中立 塞纳里奥要塞 ",10012);
                Menu->AddItem(0, "[返回]",              99);
                Menu->SendTo(Plr);            
            }break;
        case 1001://联盟 暴风城 
            {
                Plr->EventTeleport(0,-9065,434,94);
            }break;
        case 1002://联盟 铁炉堡
            {
                Plr->EventTeleport(0,-5032,-819,495);
            }break;
        case 1003://联盟 达纳苏斯
            {
                Plr->EventTeleport(1,9961,2055,1329);
            }break;
        case 1004://联盟 埃索达
            {
                Plr->EventTeleport(530,-4071.7,-12036.7,-1.5);
            }break;
        case 1005://部落 奥格瑞玛
            {
                Plr->EventTeleport(1,1317,-4383,27);
            }break;
        case 1006://部落 雷霆崖
            {
                Plr->EventTeleport(1,-1391,140,23);
            }break;
        case 1007://部落 幽暗城
            {
                Plr->EventTeleport(0,1909,235,53);
            }break;
        case 1008://部落 银月城
            {
                Plr->EventTeleport(530,9336.9,-7278.4,13.6);
            }break;
        case 1009://中立 棘齿城
            {
                Plr->EventTeleport(1,-977,-3788,6);
            }break;
        case 10010://中立 藏宝海湾
            {
                Plr->EventTeleport(0,-14302,518,9);
            }break;
        case 10011://中立 加基森
            {
                Plr->EventTeleport(1,-7103.7,-2961.6,10.8);
            }break;
        case 10012://中立 塞纳里奥要塞
            {
                Plr->EventTeleport(1,-6831.1,748.8,42.5);
            }break;
        case 101://初级副本传送
            {
                objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 1, Plr);
                Menu->AddItem(5, " [14] 怒焰裂谷 ",   1011); 
                Menu->AddItem(5, " [19] 死亡矿井 ",   1012); 
                Menu->AddItem(5, " [22] 哀嚎洞穴 ",   1013); 
                Menu->AddItem(5, " [24] 影牙城堡 ",   1014); 
                Menu->AddItem(5, " [26] 黑暗深渊 ",     1015); 
                Menu->AddItem(5, " [27] 暴风城监狱 ", 1016); 
                Menu->AddItem(5, " [31] 剃刀沼泽 ",   1017); 
                Menu->AddItem(5, " [33] 诺莫瑞根 ",   1018); 
                Menu->AddItem(5, " [40] 血色修道院 ", 1019); 
                Menu->AddItem(5, " [42] 剃刀高地 ",   10110); 
                Menu->AddItem(5, " [45] 奥达曼 ",     10111);
                Menu->AddItem(0, "[返回]",               99);
                Menu->SendTo(Plr);            
            }break;
        case 1011://初级副本传送[14] 怒焰裂谷 
            {
                //Plr->EventTeleport(389,2.024650,-10.021000,-16.187500);
                /*
                //Map *pMap = sWorldCreator.GetMap(389);
                //MapMgr *pMapMgr = pMap->CreateMapMgrInstance();
                //sLog.outString("Instance %u on map %u created.", pMapMgr->GetInstanceID(), pMapMgr->GetMapId());
                //Plr->SafeTeleport(389,pMapMgr->GetInstanceID(),LocationVector(2.024650,-10.021000,-16.187500));
                */
                Teleport(Plr,389,2.024650,-10.021000,-16.187500,0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -