关灯
开启左侧

一套T端魔兽世界私服1.12.1版本的PVP头衔购买脚本

  [复制链接]
admin实名认证 发表于 2016-4-25 22:52:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
这个是一套NPC脚本的功能代码。主要实现购买头衔



下面是脚本代码,

/****************************************
*      Created by: Rochet2        *
*      Updated by: Asbert75        *
*      With help from:            *
*      LilleCarl, Rochet2, Jamey    *
*     *----- Title Vendor -----*    *
****************************************/

#include "ScriptPCH.h"

struct Rochet2
{
  uint8 icon;
  std::string name;
    uint32 HK, titleID;
};

/********************************************************
Possible icons:
0, //white chat bubble
1, //brown bag
2, //flight
3, //book
4, //interaction wheel
5, //interaction wheel
6, //brown bag with yellow dot
7, //white chat bubble with black dots
8, //tabard
9, //two swords
10, //yellow dot

Example Gossip Option: {iconID (see above), "title name", honorable_kills_required (set to whatever you require the player to have to get this rank), titleID (from database)}
***********************************************************/

Rochet2 Titles [] =
{

    {9,        "Private",                      50,            1     },
    {9,        "Corporal",                      100,        2     },
    {9,        "Sergeant",                    250,        3     },
    {9,        "Master Sergeant",            500,        4     },
    {9,        "Sergeant Major",              750,        5     },
    {9,        "Knight",                    1000,        6     },
    {9,        "Knight-Lieutenant",        1500,        7     },
    {9,        "Knight-Captain",              2000,        8     },
    {9,        "Knight-Champion",            2500,        9     },
    {9,        "Lieutenant Commander",        3000,        10  },
    {9,        "Commander",                3500,        11    },
    {9,        "Marshal",                    4000,        12    },
    {9,        "Field Marshal",              4500,        13    },
    {9,        "Grand Marshal",              5000,        14    },

    {9,        "Scout",                    50,          15    },
    {9,        "Grunt",                    100,        16    },
    {9,        "Sergeant",                    250,        17    },
    {9,        "Senior Sergeant",            500,        18    },
    {9,        "First Sergeant",              750,        19    },
    {9,        "Stone Guard",                1000,        20    },
    {9,        "Blood Guard",                1500,        21    },
    {9,        "Legionnaire",                2000,        22    },
    {9,        "Centurion",                2500,        23    },
    {9,        "Champion",                    3000,        24    },
    {9,        "Lieutenant General",        3500,        25    },
    {9,        "General",                    4000,        26    },
    {9,        "Warlord",                    4500,        27    },
    {9,        "High Warlord",                  5000,        28    },
};

enum eEnums
{
    Amount    =    sizeof Titles/sizeof(*Titles),

    // npc_text ID
    Greetings_A    =    1,
    Greetings_H    =    2,
};

#define ERROR_HASTITLE    "|cffff0000You already have this title|r" // Error message that shows up when a player already has the title
#define ERROR_CASH "|cffff0000You don't have enough honorable kills|r" // Error message if player does not have enough honorable kills


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

    bool OnGossipHello(Player* pPlayer, Creature* pCreature)
    {
        uint32 txt    = Greetings_A;
        uint32 i    = 0;
        uint32 m    = Amount/2;
        if(pPlayer->GetTeam() == HORDE)
        {
            txt = Greetings_H;
            i = Amount/2;
            m = Amount;
        }
        for (i; i<m; i++)
        {
            std::ostringstream ss;
            ss << Titles.name << " - " << Titles.HK << " HKs";
            std::string showcoolshit = ss.str();
            ss.str(" ");
            ss.clear();
            ss << "Are you sure? You will be granted the title: " << Titles.name;
            std::string showcoolshit2 = ss.str();
            // ADD_GOSSIP_ITEM_EXTENDED Parameters: (icon, label, GOSSIP_SENDER_MAIN (Sender), Title ID ? (action - Sends info to OnGossipSelect), popup, coppercost, code (codebox))
            pPlayer->ADD_GOSSIP_ITEM_EXTENDED(Titles.icon, showcoolshit.c_str(), GOSSIP_SENDER_MAIN, i, showcoolshit2, 0, false);
        }
        pPlayer->PlayerTalkClass->SendGossipMenu(txt, pCreature->GetGUID());
        return true;
    }

    bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 i)
    {
        pPlayer->PlayerTalkClass->ClearMenus(); // clear the menu

        if (CharTitlesEntry const* Title = sCharTitlesStore.LookupEntry(Titles.titleID)) // Get title
        {
            if(pPlayer->HasTitle(Title)) // If has title
                pPlayer->GetSession()->SendAreaTriggerMessage(ERROR_HASTITLE);
            else if(Titles.HK > pPlayer->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)) // If doesnt have enough honored kills
                pPlayer->GetSession()->SendAreaTriggerMessage(ERROR_CASH);
            else
            {
                pPlayer->SetTitle(Title);
                pPlayer->SaveToDB();
            }
            OnGossipHello(pPlayer, pCreature);
        }
        return true;
    }
};

void AddSC_Title_gossip_codebox()
{
    new Title_gossip_codebox();
}

下载完整代码
游客,如果您要查看本帖隐藏内容请回复

标签:魔兽世界
20130514095542940.png
20130514095153327.jpg
 

精彩评论1

倒序浏览
你懂的 发表于 2016-11-12 04:23:10 来自手机 | 显示全部楼层
 
找了好久终于找到了!吾爱尚玩真棒!
 
VIP介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

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

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

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

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

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

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

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

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

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

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

0关注

5粉丝

3421帖子

排行榜
作者专栏

QQ交流群&&微信订阅号

QQ交流群

微信订阅号

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

Www.523Play.Com

在线管理员QQ:1589479632

邮箱:Email@523play.com

QQ交流群:558936238

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