信息有效

为剑侠新增NPC提供指定道具销毁

编号:T-2496  2024-10-21 有效期:756天  1人次

    1. 脚本你可以随意去配置,如果你实在不懂的话可以直接以纳兰真为基础,纳兰真脚本:\ServerScript\Npc\Class\ActivityNpc.lua

    2. 脚本分为两种方法,一种为清空背包全部道具,一种只销毁单一物品.

    以纳兰真为例子

    function tbNpc:OnDialog()

        Dialog:Show(

        {

            Text    = ("我可以为您提供以下服务"),

            OptList = {

                { Text = ("清理物品"), Callback = self.CleanBag, Param = {self} },--当玩家选择此项,将执行CleanBag这个方法

                { Text = ("你先忙"), Callback = function () end},

            },

        }, me, him);  

    end

    在OptList = {下新增一条以下内容

    { Text = ("清理物品"), Callback = self.CleanBag, Param = {self} },

    方法一:清空背包所有物品

    function tbNpc:CleanBag()

                    me.MsgBox("确定要清空包裹吗?操作后包裹内所有物品将被清空!",

                            {

                                    {"确定", self.CleanBagOK, Param = {self,1}, true}, --当用户选择确定,将执行CleanBagOK这个方法

                                    {"不了"}

                            });

    end

    function tbNpc:CleanBagOK() --经过用户选择后执行CleanBagOK这个方法清理背包

            local items = me.GetItemListInBag();

            for nIdx, pItem in ipairs(items) do

                    pItem.Delete(1)

            end

            me.CenterMsg("清理包裹成功", true)

    end

    方法二:销毁指定物品

    function tbNpc:CleanBag2()  --因为纳兰真我在测试的时候两种方法都使用,所以我这里是CleanBag2,当然如果你两个都要用的话,请记得在基础方法那边加多CleanBag2供玩家选择

            local opt  = {};

            local tbItem = me.GetItemListInBag() --获取背包道具,调用服务端原本的方法

                    for _, pItem in pairs(tbItem) do

                            local dwId = pItem.dwId

                            table.insert(opt, { Text = "销毁 → "..pItem.szName, Callback = self.delItemSure, Param = {self, dwId} })  --当玩家选择将执行delItemSure方法

                    end

            table.insert(opt, { Text = "抱歉点错了!", Callback = function () end})

                    Dialog:Show(

                                    {

                                            Text    = "物品销毁后将无法找回,请慎重选择!",

                                            OptList = opt,

                                    }, me, him);   

    end

    function tbNpc:delItemSure(dwId) --经过上面玩家选择销毁某个物品则执行这个方法

            local pItem = KItem.GetItemObj(dwId)

                    Dialog:Show(

                    {

                            Text    = "确定要销毁 → "..pItem.szName.."吗?",

                                    OptList = {

                                    { Text = "确定", Callback = self.delItem, Param = {self, dwId} }, --当玩家选择确定销毁则执行delItem这个方法

                                    { Text = "取消", Callback = function () end},

                                    },

                    }, me, him);   

            end

    function tbNpc:delItem(dwId) --执行销毁

            local pItem = KItem.GetItemObj(dwId)

                    me.CenterMsg("成功为您销毁物品:"..pItem.szName.."", true)

            pItem.Delete(1)

    end

    当你修改完之后打包服务端丢到服务器重启服务端即可

使用信息须知(必读)

①本主题所有言论和图片纯属会员个人意见,与本站立场无关

②本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权

③173资源网仅提供信息交流平台,不介入任何交易过程,不承担安全风险和法律责任

④本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责

⑤该页面资源下载仅保存于网盘,本站不涉及储存,用户下载仅供学习参考,不得用户商业用途

⑥如有侵权内容困扰请联系youxi@111.com,我们将针对版权信息及时予以删除

订阅 客服