关灯
开启左侧

包含很多种宠物的兽栏管理员脚本(宠物驯化师)

  [复制链接]
admin实名认证 发表于 2016-4-25 22:59:16 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
这个脚本包含了很多种的宠物驯化,你需要把脚本编译到你的脚本库里面。

支持T端335版本

更新日期:2013-5-15

至于怎么在你的代码里面增加脚本。你需要搜索一下资料

#include "ScriptPCH.h"#include "Pet.h"

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

        void CreatePet(Player *player, Creature * m_creature, uint32 entry) {

                if(player->getClass() != CLASS_HUNTER) {
                        m_creature->MonsterWhisper("You are not a Hunter!", player->GetGUID());
                        player->PlayerTalkClass->SendCloseGossip();
                        return;
                }

                if(player->GetPet()) {
                        m_creature->MonsterWhisper("First drop your current Pet!", player->GetGUID());
                        player->PlayerTalkClass->SendCloseGossip();
                        return;
                }

                Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);
                if(!creatureTarget) return;

                Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);
                if(!pet) return;

                creatureTarget->setDeathState(JUST_DIED);
                creatureTarget->RemoveCorpse();
                creatureTarget->SetHealth(0);                       // just for nice GM-mode view

                pet->SetPower(POWER_HAPPINESS, 1048000);

                pet->SetUInt64Value(UNIT_FIELD_CREATEDBY, player->GetGUID());
                pet->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE, player->getFaction());

                pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1);
                pet->GetMap()->AddToMap(pet->ToCreature());

                pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());

                pet->GetCharmInfo()->SetPetNumber(sObjectMgr->GeneratePetNumber(), true);
                if(!pet->InitStatsForLevel(player->getLevel()))
                        sLog->outError(LOG_FILTER_PETS, "Fail: no init stats for entry %u", entry);

                pet->UpdateAllStats();

                player->SetMinion(pet, true);

                pet->SavePetToDB(PET_SAVE_AS_CURRENT);
                pet->InitTalentForLevel();
                player->PetSpellInitialize();

                player->PlayerTalkClass->SendCloseGossip();
                m_creature->MonsterWhisper("Pet successfully added!", player->GetGUID());
        }


        bool OnGossipHello(Player *player, Creature * m_creature)
        {

                if(player->getClass() != CLASS_HUNTER)
                {
                        m_creature->MonsterWhisper("You are not a Hunter!", player->GetGUID());
                        return true;
                }
                player->ADD_GOSSIP_ITEM(7, "Get a New Pet.", GOSSIP_SENDER_MAIN, 1000);
                if (player->CanTameExoticPets())
                {
                        player->ADD_GOSSIP_ITEM(7, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);
                }
                player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
                player->ADD_GOSSIP_ITEM(1, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
                player->ADD_GOSSIP_ITEM(4, "Close Beastmaster Window.", GOSSIP_SENDER_MAIN, 150);
                player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
                return true;
        }

        bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action)
        {
                player->PlayerTalkClass->ClearMenus();
                switch (action)
                {

                case 100:
                        player->ADD_GOSSIP_ITEM(7, "Get a New Pet.", GOSSIP_SENDER_MAIN, 1000);
                        if (player->CanTameExoticPets())
                        {
                                player->ADD_GOSSIP_ITEM(7, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);
                        }
                        player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
                        player->ADD_GOSSIP_ITEM(1, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
                        player->ADD_GOSSIP_ITEM(4, "Close Beastmaster Window.", GOSSIP_SENDER_MAIN, 150);
                        player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
                        break;

                case 150:
                        player->CLOSE_GOSSIP_MENU();
                        break;

                        case 1000: // Submenu
                                        player->ADD_GOSSIP_ITEM(4, "<- [Main Menu]", GOSSIP_SENDER_MAIN, 100);
                                        player->ADD_GOSSIP_ITEM(5, "[Next Page] ->", GOSSIP_SENDER_MAIN, 10000);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Bat!", GOSSIP_SENDER_MAIN, 1001);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Bear!", GOSSIP_SENDER_MAIN, 1002);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Bird of Prey!", GOSSIP_SENDER_MAIN, 1003);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Boar!", GOSSIP_SENDER_MAIN, 1004);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Carrion Bird!", GOSSIP_SENDER_MAIN, 1005);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Cat!", GOSSIP_SENDER_MAIN, 1006);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Crab!", GOSSIP_SENDER_MAIN, 1007);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Crocolisk!", GOSSIP_SENDER_MAIN, 1008);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Dragonhawk!", GOSSIP_SENDER_MAIN, 1009);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Gorilla!", GOSSIP_SENDER_MAIN, 1010);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Hyena!", GOSSIP_SENDER_MAIN, 1011);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Moth!", GOSSIP_SENDER_MAIN, 1012);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Nether Ray!", GOSSIP_SENDER_MAIN, 1013);
                                        player->ADD_GOSSIP_ITEM(4, "Tame a Raptor!", GOSSIP_SENDER_MAIN, 1014);
                                        player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
                                        break;

                        case 10000: // Submenu

上面是部分代码显示

下面是全部代码下载
游客,如果您要查看本帖隐藏内容请回复




标签:管理员宠物
 
VIP介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

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

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

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

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

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

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

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

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

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

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

0关注

5粉丝

3421帖子

排行榜
作者专栏

QQ交流群&&微信订阅号

QQ交流群

微信订阅号

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

Www.523Play.Com

在线管理员QQ:1589479632

邮箱:Email@523play.com

QQ交流群:558936238

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