查看: 20|回复: 0

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

[复制链接]

3381

主题

5

回帖

3万

积分

管理员

Rank: 9

积分
33810
发表于 2024-5-27 11:01:04 | 显示全部楼层 |阅读模式



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

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





混沌资源社区- 论坛版权- 免责声明
1、本主题所有言论和图片纯属会员个人意见,与本站立场无关
2、本站的所有内容都不保证其准确性,有效性,完整性,时间性,凡因本站内容引起误导等因素而造成的损失本站不承担连带责任。
3、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意
5、本站发布的所有资源(包括动漫作品.文字.图片.FLASH.动画及各种软件工具)只为本地单机测试用途,请勿用于商业途径或非法使用,否则后果自负!请下载后24小时内删除!
6、本站管理员和版主有权不事先通知发贴者而删除本文
7、如您认为本文内容侵犯了您的权益,请与我们联系!我们将及时予与删除并致以最深的歉意!同时本站保留全部修改、解释、更新本声明的权利
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表