关灯
开启左侧

带图标的魔兽私服单机传送代码C++脚本

  [复制链接]
admin实名认证 发表于 2016-4-23 17:36:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
下面是一个适用于TRINITY端的脚本代码。。给传送增加了一些图标显示,。




/*Teleporter Script for Trinity
Coded By Lhorath
Coding Inspired From Rochet2 Teleporter
*/

//     Link Types//
/*
{#,    #,    2,    "|cff4169E1 Non-Icon Links|r",    0,    0,    0,    0,    0,    0,    0,    0},
{#,    #,    2,    "|cff4169E1|TInterface\\icons\\Achievement_Leader_King_Varian_Wrynn:30|t Icon & Color Links|r",    0,    0,    0,    0,    0,    0,    0,    0},
{#,    #,    2,    "|TInterface\\icons\\Achievement_Leader_King_Varian_Wrynn:30|t Icon Links (NoColor)|t",    0,    0,    0,    0,    0,    0,    0,    0},
{#,    #,    2,    "Non-Formated Links Links",    0,    0,    0,    0,    0,    0,    0,    0},
*/

// Color List //
/*
ORANGE            "|cffFFA500"
DARKORANGE        "|cffFF8C00"
RED                "|cffFF0000"
LIGHTRED        "|cffD63931"
ROYALBLUE        "|cff4169E1"
LIGHTBLUE        "|cffADD8E6"
YELLOW            "|cffFFFF00"
GREEN            "|cff008000"
PURPLE            "|cffDA70D6"
WHITE            "|cffffffff"
SUBWHITE        "|cffbbbbbb"
*/

#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
{
//  下面这些就是传送的一些图片Icons 。这些图片都是客户端MPQ里面的路径

    {1,    2,    2,    "|cff4169E1|TInterface\\icons\\Achievement_Leader_King_Varian_Wrynn:30|t Alliance Capital Cities|r",    0,    0,    0,    0,    0,    0,    0,    0},
    {1,    3,    2,    "|cffFF0000|TInterface\\icons\\Achievement_Leader_Sylvanas:30|t Horde Capital Cities|r",    0,    0,    0,    0,    0,    0,    0,    0},
    {1,    4,    2,    "|cffFFFF00|TInterface\\icons\\Temp:30|t Neutral Capital Cities|r",    0,    0,    0,    0,    0,    0,    0,    0},
    {1,    5,    9,    "|cffFF8C00|TInterface\\icons\\Achievement_FeatsOfStrength_Gladiator_10:30|t PvP Areas|r",    0,    0,    0,    0,    0,    0,    0,    0},
    {1,    6,    3,    "|cffADD8E6|TInterface\\icons\\Achievement_Dungeon_Icecrown_Frostmourne:30|t Raids|r",    0,    0,    0,    0,    0,    0,    0,    0},

    {2,    0,    2,    "Stormwind",    0,    0,    2,    0,    -8842.09f,    626.358f,    94.0867f,    3.61363f},
    {2,    0,    2,    "Darnassus",    0,    0,    2,    1,    9869.91f,    2493.58f,    1315.88f,    2.78897f},
    {2,    0,    2,    "Ironforge",    0,    0,    2,    0,    -4900.47f,    -962.585f,    501.455f,    5.40538f},
    {2,    0,    2,    "Exodar",    0,    0,    2,    530,    -3864.92f,    -11643.7f,    -137.644f,    5.50862f},
    {2,    0,    9,    "|cffFF0000Attack Stormwind|r",    0,    80,    1,    0,    -9449.06f,    64.8392f,    56.3581f,    3.07047f},
    {2,    0,    9,    "|cffFF0000Attack Darnassus|r",    0,    80,    1,    1,    9889.03f,    915.869f,    1307.43f,    1.9336f},
    {2,    0,    9,    "|cffFF0000Attack Ironforge|r",    0,    80,    1,    0,    -5603.76f,    -482.704f,    396.98f,    5.23499f},
    {2,    0,    9,    "|cffFF0000Attack Exodar|r",    0,    80,    1,    530,    -4192.62f,    -12576.7f,    36.7598f,    1.62813f},
    {2,    1,    7,    "|cffffffffBack..|r",    0,    0,    0,    0,    0,    0,    0,    0},

    {3,    0,    2,    "Orgrimmar",    0,    0,    1,    1,    1601.08f,    -4378.69f,    9.9846f,    2.14362f},
    {3,    0,    2,    "Thunder bluff",    0,    0,    1,    1,    -1274.45f,    71.8601f,    128.159f,    2.80623f},
    {3,    0,    2,    "Undercity",    0,    0,    1,    0,    1633.75f,    240.167f,    -43.1034f,    6.26128f},
    {3,    0,    2,    "Silvermoon city",    0,    0,    1,    530,    9738.28f,    -7454.19f,    13.5605f,    0.043914f},
    {3,    0,    9,    "|cffFF0000Attack Orgrimmar|r",    0,    80,    2,    1,    228.978f,    -4741.87f,    10.1027f,    0.416883f},
    {3,    0,    9,    "|cffFF0000Attack Thunder bluff|r",    0,    80,    2,    1,    -2473.87f,    -501.225f,    -9.42465f,    0.6525f},
    {3,    0,    9,    "|cffFF0000Attack Undercity|r",    0,    80,    2,    0,    2274.95f,    323.918f,    34.1137f,    4.24367f},
    {3,    0,    9,    "|cffFF0000Attack Silvermoon|r",    0,    80,    2,    530,    9024.37f,    -6682.55f,    16.8973f,    3.14131f},
    {3,    1,    7,    "|cffffffffBack..|r",    0,    0,    0,    0,    0,    0,    0,    0},

    {4,    0,    2,    "Dalaran",    0,    67,    0,    571,    5809.55f,    503.975f,    657.526f,    2.38338f},
    {4,    0,    2,    "Shattrath",    0,    57,    0,    530,    -1887.62f,    5359.09f,    -12.4279f,    4.40435f},
    {4,    0,    2,    "Booty bay",    0,    30,    0,    0,    -14281.9f,    552.564f,    8.90422f,    0.860144f},
    {4,    1,    7,    "|cffffffffBack..|r",    0,    0,    0,    0,    0,    0,    0,    0},

    {5,    0,    2,    "Gurubashi arena",    0,    30,    0,    0,    -13181.8f,    339.356f,    42.9805f,    1.18013f},
    {5,    1,    7,    "|cffffffffBack..|r",    0,    0,    0,    0,    0,    0,    0,    0},

    {6,    0,    2,    "Trial of the Crusader",    0,    80,    0,    571,    8515.61f,    714.153f,    558.248f,    1.57753f},
    {6,    0,    2,    "Icecrown Citadel",    0,    80,    0,    571,    5855.22f,    2102.03f,    635.991f,    3.57899f},
    {6,    0,    2,    "Naxxramas",    0,    80,    0,    571,    3668.72f,    -1262.46f,    243.622f,    4.785f},
    {6,    0,    2,    "Onyxia's Lair",    0,    80,    0,    1,    -4708.27f,    -3727.64f,    54.5589f,    3.72786f},
    {6,    0,    2,    "The Eye of Eternity",    0,    80,    0,    571,    3784.17f,    7028.84f,    161.258f,    5.79993f},
    {6,    0,    2,    "The Obsidian Sanctum",    0,    80,    0,    571,    3472.43f,    264.923f,    -120.146f,    3.27923f},
    {6,    0,    2,    "Ulduar",    0,    80,    0,    571,    9222.88f,    -1113.59f,    1216.12f,    6.27549f},
    {6,    0,    2,    "Vault of Archavon",    0,    80,    0,    571,    5453.72f,    2840.79f,    421.28f,    0.0f},
    {6,    7,    7,    "|cffffffffBack..|r",    0,    0,    0,    0,    0,    0,    0,    0},

//    {10,    0,    2,    "Teleport",    0,    0,    0,    map,    xf,    yf,    zf,    of},
//    {10,    1,    7,    "Back..",    0,    0,    0,    0,    0,    0,    0,    0},
};

// TextIDs from npc_text
enum eEnums
{
    TEXT_MAIN_H        =    400000,            //Horde main menu text
    TEXT_MAIN_A        =    400001,            //Alliance main menu text
    TEXT_DUNGEON    =    400002,            //Dungeon teleport menu texts
    TEXT_RAID        =    400003,            //Raid teleport menu text
    TEXT_AREA        =    400004,            //Area teleport location menu texts

    TELEPORT_COUNT    =    sizeof TeLe/sizeof(*TeLe),
};

#define ARE_YOU_SURE    "|cffffffffGetting a Move on to|r "
#define ERROR_COMBAT    "|cffff0000Kill Whatever that thing is first!|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.menu_id != Key)
            break;
        if (TeLe.menu_id == Key && pPlayer->getLevel() >= TeLe.level && Custom_FactCheck(pPlayer->GetTeam(), i))
        {
            if (TeLe.next_menu_id != 0)
                pPlayer->ADD_GOSSIP_ITEM_EXTENDED(TeLe.icon, TeLe.name, GOSSIP_SENDER_MAIN, i, "", TeLe.cost, false);
            else
                pPlayer->ADD_GOSSIP_ITEM_EXTENDED(TeLe.icon, TeLe.name, GOSSIP_SENDER_MAIN, i, ARE_YOU_SURE+TeLe.name, TeLe.cost, false);
            ENDMENU = true;
        }
    }
    pPlayer->PlayerTalkClass->SendGossipMenu(Custom_GetText(Key, pPlayer), pCreature->GetGUID());
}

class tele_script_mortal : public CreatureScript
{
    public:
    tele_script_mortal()
    : CreatureScript("tele_script_mortal")
    {
    }

    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_script_mortal()
{
    new tele_script_mortal();
}

OK.完成,上面的就是脚本代码。你自己加到你的脚本代码里面。编译后就可以使用了



完整代码见下面的下载连接



游客,如果您要查看本帖隐藏内容请回复




 

精彩评论5

倒序浏览
blfqqqf 发表于 2023-2-22 18:23:16 | 显示全部楼层
 
RE: 带图标的魔兽私服单机传送代码C++脚本 [修改]
 
52NonoPanda 发表于 2023-2-20 10:55:34 | 显示全部楼层
 
感谢楼主分享,祝愿吾爱尚玩越来越好!
 
神级丶 发表于 2021-10-25 17:16:52 | 显示全部楼层
 
RE: 带图标的魔兽私服单机传送代码C++脚本
 
lxcmk 发表于 2020-7-18 04:25:06 | 显示全部楼层
 
太好了终于找到了啊
 
1314 发表于 2016-10-19 03:22:00 | 显示全部楼层
 
感谢楼主分享,祝愿吾爱尚玩越来越好!
 
VIP介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

    注册账号后积极发帖的会员
  • 活跃会员

    经常参与各类话题的讨论,发帖内容较有主见
  • 热心会员

    经常帮助其他会员答疑
  • 推广达人

    积极宣传本站,为本站带来更多注册会员
  • 宣传达人

    积极宣传本站,为本站带来更多的用户访问量
  • 灌水之王

    经常在论坛发帖,且发帖量较大
  • 突出贡献

    长期对论坛的繁荣而不断努力,或多次提出建设性意见
  • 优秀版主

    活跃且尽责职守的版主
  • 荣誉管理

    曾经为论坛做出突出贡献目前已离职的版主
  • 论坛元老

    为论坛做出突出贡献的会员

0关注

5粉丝

3421帖子

排行榜
作者专栏

QQ交流群&&微信订阅号

QQ交流群

微信订阅号

吾爱尚玩资源基地永久域名:

Www.523Play.Com

在线管理员QQ:1589479632

邮箱:Email@523play.com

QQ交流群:558936238

Copyright   ©2015-2116  吾爱尚玩资源基地|523play.comPowered by©523Pplay.Com技术支持:吾爱尚玩资源基地