找回密码
 注册
搜索
查看: 727|回复: 6

风神,我对lujing.lua做了一点修改,烦请指教

[复制链接]
门派:桃花岛
发表于 2017-9-5 18:35:40 | 显示全部楼层 |阅读模式
本帖最后由 mythd@tj 于 2017-9-5 21:38 编辑

先说明一下,我用的是p版mush。
在目前的lujing查找当前房间的id时,有时候会遇到同名的npc,例如下面这种情况,本来要找的是小龙女,系统发的命令是bai xiao;xue xiao xxxx,但是萧赞有个id简称是xiao,所以mud会认为你找的是萧赞。所以我修改了一下lujing.lua,尽量避免出现这种重名情况,系统会自动选择与排前面的npc不重名的id

> 大室 - west
  古墓派神雕侠侣传人「送信一绝情谷大室」云逍(Yunxiao) <战斗中>
  天杀门女杀手 公西青(Gongxi qing) <战斗中>
  古墓侠侣「神雕侠侣」小龙女(Xiao longnv)
  中原护院 戴深魄(Dai shenpo)
  地煞门杀手 萧赞(Xiao zan) <战斗中>
  李小姐(Beauty)
> > 你现在精力充沛。
> 你把 "action" 设定为 "正在赶路中" 成功完成。
> 你把 "action" 设定为 "正在定位" 成功完成。
> 在这个房间中, 生物及物品的(英文)名称如下:
龙儿 = mygm
萧赞 = xiao zan, xiao, zan, killer
公西青 = gongxi qing, gongxi, qing, killer
戴深魄 = dai shenpo, dai, shenpo, guard
李小姐 = beauty
云逍 = yunxiao
小龙女 = xiao longnv, xiao, longnv
> 设定环境变量:look = "YES"
> 【你现在正处于绝情谷】
                                               
                                    
                   小室-----大室               
                                    
                                               
大室 -
小室-----大室大室
    你举步走入一间大室,只见屋右有塌,室中凌空拉着一条长绳。窗前小小
一几,室左立着一个粗糙木橱。室内桌椅用具都用粗木搭成。
    这里唯一的出口是 west。
  古墓派神雕侠侣传人「送信一绝情谷大室」云逍(Yunxiao) <战斗中>
  天杀门女杀手 公西青(Gongxi qing) <战斗中>
  古墓侠侣「神雕侠侣」小龙女(Xiao longnv)
  中原护院 戴深魄(Dai shenpo)
  地煞门杀手 萧赞(Xiao zan) <战斗中>
  李小姐(Beauty)
> 现在是书剑甲午年二月三日未时正。
您参与游戏的主机北京时间是 星期五 2017-九月- 1 18:53:29
                悉尼时间是 星期五 2017-九月- 1 20:53:29
      奥克兰、惠灵顿时间是 星期五 2017-九月- 1 22:53:29
      温哥华、洛杉矶时间是 星期五 2017-九月- 1 03:53:29 (夏令时间)
        多伦多、纽约时间是 星期五 2017-九月- 1 06:53:29 (夏令时间)
    柏林、罗马、巴黎时间是 星期五 2017-九月- 1 12:53:29 (夏令时间)
您已经连续玩了二十二小时四十三分十四秒。
你最近玩了六天二小时三十一分四十秒。
贵宾剩余时间:二十天七小时八分五十七秒。
贵宾生效时间:二零一七年八月二十三日二时二分二十六秒。
你共有贵宾累计时间:二十九天二十三小时五十九分三十九秒。
> 你现在不忙。
> Ok.
> 你身上带着十件东西(负重 29.39%):
  六十二两白银(Silver)
  二十六文铜钱(Coin)
  二十锭黄金(Gold)
□贵宾卡(VIP Card)
□背囊(Bei Nang)
□白布靴(Bai buxue)
□白纱长裙(Baisha changqun)
  一柄长剑(Changjian)
  一支火折(Fire)
  一柄长鞭(Changbian)
> 你身上带着十件东西(负重 29.39%):
  六十二两白银(Silver)
  二十六文铜钱(Coin)
  二十锭黄金(Gold)
□贵宾卡(VIP Card)
□背囊(Bei Nang)
□白布靴(Bai buxue)
□白纱长裙(Baisha changqun)
  一柄长剑(Changjian)
  一支火折(Fire)
  一柄长鞭(Changbian)
> 没有这个技能种类,用 enable ? 可以查看有哪些种类。
学习点数:38
> 萧赞既不属於任何门派,也没有开山立派,不能拜师。
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上带着十件东西(负重 29.39%):
  六十二两白银(Silver)
  二十六文铜钱(Coin)
  二十锭黄金(Gold)
□贵宾卡(VIP Card)
□背囊(Bei Nang)
□白布靴(Bai buxue)
□白纱长裙(Baisha changqun)
  一柄长剑(Changjian)
  一支火折(Fire)
  一柄长鞭(Changbian)
> 你只能对战斗中的使用「心经」绝技。。
> 你身上没有这样东西。
> 你现在精神饱满。
> 这项技能你恐怕必须找别人学了。
>
·精血· 1526 /  1526 (100%)  ·精力· 2534 /  2534(2534)
·气血· 2988 /  2988 (100%)  ·内力· 3214 /  3234(+94)
·正气· 468,969          ·内力上限· 3166 /  4082
·食物·  93.75%              ·潜能·  299 /  299
·饮水·  97.92%              ·经验· 782,281 (51.12%)
·合气度·    0
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上没有这样东西。
> 你身上带着十件东西(负重 29.39%):
  六十二两白银(Silver)
  二十六文铜钱(Coin)
  二十锭黄金(Gold)
□贵宾卡(VIP Card)
□背囊(Bei Nang)
□白布靴(Bai buxue)
□白纱长裙(Baisha changqun)
  一柄长剑(Changjian)
  一支火折(Fire)
  一柄长鞭(Changbian)
> 你「唰」的一声抽出一柄长剑握在手中。
> 你身上带着十件东西(负重 29.39%):
  六十二两白银(Silver)
  二十六文铜钱(Coin)
  二十锭黄金(Gold)
□长剑(Changjian)
□贵宾卡(VIP Card)
□背囊(Bei Nang)
□白布靴(Bai buxue)
□白纱长裙(Baisha changqun)
  一支火折(Fire)
  一柄长鞭(Changbian)
> 你身上没有这样东西。
> 没有这个技能种类,用 enable ? 可以查看有哪些种类。
学习点数:38
>
萧赞神志迷糊,脚下一个不稳,倒在地上昏了过去。

你现在精神饱满。
> 嗯....你得先把萧赞弄醒再说。

评分

1

查看全部评分

门派:桃花岛
 楼主| 发表于 2017-9-5 18:38:19 | 显示全部楼层
本帖最后由 mythd@tj 于 2017-9-5 21:55 编辑

1.在lujing.lua文件开头部分添加一个变量
local AllLocalId=''

2.在local_start=function()函数里面添加一个语句
    AllLocalId=''

3.修改原local_id=function(n,l,w)函数为
local_id=function(n,l,w)
    local l_name=w[1]
    local l_id=w[2]
    local l_set={}
    if string.find(l_id,",") or string.find(l_id," ") then
       --选择一个避免与前面已有的id重名的id
        l_set=utils.split(l_id,',')
        for p,q in pairs(l_set) do
            l_id=Trim(q)
                  if not string.find(l_id," ") and string.find(AllLocalId,l_id..' ')==nil then
                     break
                end
        end
    else
       if not string.find(l_id,'beauty') and string.len(l_name)<9 then
          MudUser[l_name]=l_id
       end
    end
    locl.id[l_name]=Trim(l_id)
    if ItemGet[l_name] then
       exe('get '.. l_id)
    end
    if weaponPrepare[l_name] and (not weaponStore[l_name] or not Bag[l_name])then
       exe('get '.. l_id)
    end
       
        l_set=utils.split(w[2],',')
        locl.item[l_name] = {}
        for p,q in pairs(l_set) do
            locl.item[l_name][Trim(q)] = true  
        AllLocalId=AllLocalId..Trim(q)..' '
        end
end
门派:桃花岛
 楼主| 发表于 2017-9-5 18:43:02 | 显示全部楼层
本帖最后由 mythd@tj 于 2017-9-5 21:59 编辑

我这个算法的假设是,你一旦进入一个房间,这个房间里面的npc等id排序就固定下来了,所以只要排在后面的id与前面的不重复即可,但前面的不用考虑和后面重名问题。如果我的这个假设是错误的,那么上面的算法就有问题。


另外,我全文搜索了一下,p版mush中,用到locl.item[]的地方只有shujian.lua中的function xuexiStart()函数,他的原方法是,就是找一个中间没空格的id作为master.id:
        if not master.id and locl.item and locl.item[score.master] then
        master.id=locl.item[score.master]
           for p in pairs(locl.item[score.master]) do
               if not string.find(p," ") then
                      master.id = p
                   end
           end
        end
       exe('bai '..master.id)

所以,选择了xiao作为master.id
因此,还需要修改这段程序为
        if not master.id and locl.id and locl.id[score.master] then
               master.id=locl.id[score.master]
        end
       exe('bai '..master.id)

这样修改后,如果没有同名id的npc在房间里,mush选择bai xiao,如果有叫xiao的npc在房间里,mush选择bai  longnv,避免拜错师傅
门派:昆仑派
发表于 2017-9-5 19:55:02 | 显示全部楼层
都是高手啊,我还是老老实实等大神更新吧
门派:天龙寺
发表于 2017-9-5 21:01:51 | 显示全部楼层
这个有请专家来解答                           
门派:明教
发表于 2017-9-5 21:19:52 | 显示全部楼层
大神啊,完全看不懂啊        
门派:古墓派
发表于 2017-9-6 14:38:12 | 显示全部楼层
高手,这个问题适用固定npc,因为一般固定npc和房间一般都是同时刷新出来的,所以id拍在前面,但npc被打晕或者重新刷新就不一定在前面,所以师傅学习这个最好还是弄个全id数组比较保险。但查找任务npc用你这个办法挺好,每次都找排在后面的npcid一般都是你自己job的刚刷出来的npc。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-21 10:12 , Processed in 0.028212 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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