关灯
开启左侧

一个比较老的M端的飞行宝石代码(启发性代码)

  [复制链接]
admin实名认证 发表于 2016-4-23 17:15:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
这个是一个Scriptdev2的脚本代码。主要是实现一个骑乘效果的宝石代码

你可以把这个脚本加到某个物品上面。然后就可以实现菜单式的骑乘效果代码

主要是,实现给角色自身加BUFF来实现飞行,骑乘等效果



/* Copyright (C) 2006,2007 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation; either version 2 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*/


#include "sc_gossip.h"

#include "Item.h"

#include "Player.h"

#include "SpellAuras.h"

#include "GossipDef.h"

#include "Chat.h"

bool GossipHello_ItemUse_flying_mount(Player *player, Item* _Item, SpellCastTargets const& targets)

{

        player->CLEAR_GOSSIP_MENU();

        if (!player->isDead() && !player->isInCombat())

        {

        player->ADD_GOSSIP_ITEM( 1, " |CFF0000FF【大芒果系统WWW.MangosCn.COM】|CFF009933 ", 1, GOSSIP_ACTION_INFO_DEF + 10);

        player->ADD_GOSSIP_ITEM( 8, "【普通陆地坐骑】 普通陆地坐骑 " , 1, GOSSIP_ACTION_INFO_DEF + 1);

    player->ADD_GOSSIP_ITEM( 4, "【高级陆地坐骑】 高级陆地坐骑 "        , 1, GOSSIP_ACTION_INFO_DEF + 2);

    player->ADD_GOSSIP_ITEM( 4, "【普通飞行坐骑】 普通飞行坐骑 "       , 1, GOSSIP_ACTION_INFO_DEF + 3);

    player->ADD_GOSSIP_ITEM( 4, "【高级飞行坐骑】 高级飞行坐骑 "       , 1, GOSSIP_ACTION_INFO_DEF + 4);

        player->ADD_GOSSIP_ITEM( 4, "【特殊最新坐骑】 特殊最新坐骑 "     , 1, GOSSIP_ACTION_INFO_DEF + 5);

        player->SEND_GOSSIP_MENU(999999,_Item->GetGUID());

        return true;

        }

        else

        {

                return true;

        }

}  


void SendDefaultMenu_ItemUse_flying_mount(Player *player, Item *_Item, uint32 action ,SpellCastTargets const& targets)

{

        switch(action) {

                //【普通陆地坐骑】

                case GOSSIP_ACTION_INFO_DEF + 1 :

                player->ADD_GOSSIP_ITEM( 0, " ·普通坐骑1 " , 2, GOSSIP_ACTION_INFO_DEF + 1);

                player->ADD_GOSSIP_ITEM( 0, " ·普通坐骑2 " , 2, GOSSIP_ACTION_INFO_DEF + 2);

                player->ADD_GOSSIP_ITEM( 7, "·返回上一级菜单 ", 2, GOSSIP_ACTION_INFO_DEF + 99);

                player->SEND_GOSSIP_MENU(999999,_Item->GetGUID());

                break;

                //【高级陆地坐骑】

                case GOSSIP_ACTION_INFO_DEF + 2 :

                player->ADD_GOSSIP_ITEM( 0, " ·高级坐骑1 " , 3, GOSSIP_ACTION_INFO_DEF + 1);

                player->ADD_GOSSIP_ITEM( 0, " ·高级坐骑2 " , 3, GOSSIP_ACTION_INFO_DEF + 2);

                player->ADD_GOSSIP_ITEM( 7, "·返回上一级菜单 ", 3, GOSSIP_ACTION_INFO_DEF + 99);

                player->SEND_GOSSIP_MENU(999999,_Item->GetGUID());

                break;

                //【普通飞行坐骑】

                case GOSSIP_ACTION_INFO_DEF + 3 :

                player->ADD_GOSSIP_ITEM( 0, " ·普通飞行坐骑1 " , 4, GOSSIP_ACTION_INFO_DEF + 1);

                player->ADD_GOSSIP_ITEM( 0, " ·普通飞行坐骑2 " , 4, GOSSIP_ACTION_INFO_DEF + 2);

                player->ADD_GOSSIP_ITEM( 7, "·返回上一级菜单 ", 4, GOSSIP_ACTION_INFO_DEF + 99);

                player->SEND_GOSSIP_MENU(999999,_Item->GetGUID());

                break;

                //【高级飞行坐骑】

                case GOSSIP_ACTION_INFO_DEF + 4 :

                player->ADD_GOSSIP_ITEM( 0, " ·高级飞行坐骑1 " , 5, GOSSIP_ACTION_INFO_DEF + 1);

                player->ADD_GOSSIP_ITEM( 0, " ·高级飞行坐骑2 " , 5, GOSSIP_ACTION_INFO_DEF + 2);

                player->ADD_GOSSIP_ITEM( 7, "·返回上一级菜单 ", 5, GOSSIP_ACTION_INFO_DEF + 99);

                player->SEND_GOSSIP_MENU(999999,_Item->GetGUID());

                break;

                //【特殊最新坐骑】

            case GOSSIP_ACTION_INFO_DEF + 5 :

                player->ADD_GOSSIP_ITEM( 0, " ·特殊最新坐骑1 " , 6, GOSSIP_ACTION_INFO_DEF + 1);

                player->ADD_GOSSIP_ITEM( 0, " ·特殊最新坐骑2 " , 6, GOSSIP_ACTION_INFO_DEF + 2);

                player->ADD_GOSSIP_ITEM( 7, "·返回上一级菜单 ", 6, GOSSIP_ACTION_INFO_DEF + 99);

                player->SEND_GOSSIP_MENU(999999,_Item->GetGUID());

                break;

        }


}


bool GossipSelect_ItemUse_flying_mount(Player *player, Item *_Item, uint32 sender, uint32 action ,SpellCastTargets const& targets)

{

        int icount = 0;

        //uint32 price_city;

        switch(sender) {

                // 主选单

          case 1 :

                  SendDefaultMenu_ItemUse_flying_mount(player, _Item, action,targets);

                  break;

          case 2 ://普通陆地坐骑

                  switch(action) {

                   case GOSSIP_ACTION_INFO_DEF + 1 :

                                   if (!player->IsMounted()) //判断是否在飞行状态

                               {

                            player->FlyingMount(player,34790);

                            break;   //执行飞行命令

                               }

                               else

                               {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets); //返回菜单

                               }

                   case GOSSIP_ACTION_INFO_DEF + 2 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                                {

                            player->FlyingMount(player,34896);

                            break;   //执行飞行命令

                                }

                               else

                                {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                }

                                        break;

                                case GOSSIP_ACTION_INFO_DEF + 99 :

                                        {

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                        break;

                                }

                           }

                          break;

          case 3 ://高级陆地坐骑

                  switch(action) {

                   case GOSSIP_ACTION_INFO_DEF + 1 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                               {

                            player->FlyingMount(player,39315);

                            break;   //执行飞行命令

                               }

                               else

                               {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets); //返回菜单

                               }

                   case GOSSIP_ACTION_INFO_DEF + 2 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                                {

                            player->FlyingMount(player,36702);

                            break;   //执行飞行命令

                                }

                               else

                                {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                }

                                        break;

                                case GOSSIP_ACTION_INFO_DEF + 99 :

                                        {

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                        break;

                                }

                           }

                          break;

          case 4 ://普通飞行坐骑

                  switch(action) {

                   case GOSSIP_ACTION_INFO_DEF + 1 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                               {

                            player->FlyingMount(player,32235);

                            break;   //执行飞行命令

                               }

                               else

                               {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets); //返回菜单

                               }

                   case GOSSIP_ACTION_INFO_DEF + 2 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                                {

                            player->FlyingMount(player,32244);

                            break;   //执行飞行命令

                                }

                               else

                                {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                }

                                        break;

                                case GOSSIP_ACTION_INFO_DEF + 99 :

                                        {

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                        break;

                                }

                           }

                          break;

           case 5 ://高级飞行坐骑

                  switch(action) {

                   case GOSSIP_ACTION_INFO_DEF + 1 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                               {

                            player->FlyingMount(player,37015);

                            break;   //执行飞行命令

                               }

                               else

                               {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets); //返回菜单

                               }

                   case GOSSIP_ACTION_INFO_DEF + 2 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                                {

                            player->FlyingMount(player,32345);

                            break;   //执行飞行命令

                                }

                               else

                                {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                }

                                        break;

                                case GOSSIP_ACTION_INFO_DEF + 99 :

                                        {

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                        break;

                                }

                           }

                          break;

           case 6 ://特殊最新坐骑

                  switch(action) {

                   case GOSSIP_ACTION_INFO_DEF + 1 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                               {

                            player->FlyingMount(player,34767);

                            break;   //执行飞行命令

                               }

                               else

                               {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets); //返回菜单

                               }

                   case GOSSIP_ACTION_INFO_DEF + 2 :

                            if (!player->IsMounted()) //判断是否在飞行状态

                                {

                            player->FlyingMount(player,33943);

                            break;   //执行飞行命令

                                }

                               else

                                {

                                    player->GetSession()->SendAreaTriggerMessage("你正在使用-行驶工具");

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                }

                                        break;

                                case GOSSIP_ACTION_INFO_DEF + 99 :

                                        {

                                    GossipHello_ItemUse_flying_mount(player,_Item,targets);//返回菜单

                                        break;

                                }

                           }

                          break;

  }

  return true;

}

void AddSC_flying_mount()

{

    Script *newscript;


    newscript = new Script;

    newscript->Name="flying_mount";

        newscript->pItemUse = GossipHello_ItemUse_flying_mount;

    newscript->pGossipSelect_Item = GossipSelect_ItemUse_flying_mount;

    m_scripts[nrscripts++] = newscript;

}

 

精彩评论1

倒序浏览
1314 发表于 2016-11-8 08:59:24 | 显示全部楼层
 
感谢楼主分享,祝愿吾爱尚玩越来越好!
 
VIP介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

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

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

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

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

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

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

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

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

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

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

0关注

5粉丝

3421帖子

排行榜
作者专栏

QQ交流群&&微信订阅号

QQ交流群

微信订阅号

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

Www.523Play.Com

在线管理员QQ:1589479632

邮箱:Email@523play.com

QQ交流群:558936238

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