北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 8201|回复: 6

LUA傻瓜式学习笔记与疑问5(lua脚本触发器及ZMUD模式比较)

[复制链接]
发表于 2012-3-1 19:32:22 | 显示全部楼层 |阅读模式
本帖最后由 feixiong 于 2012-3-1 07:37 PM 编辑

如果大家看hellua或者胡小子两位的脚本会发现一个疑问:
       他们的MUSH 触发器里的文字,只是对应一个脚本就OK了,这和ZMUD天壤之别
zmud的脚本里是:
#TRIGGER {您上次是在*连线进入,请及时核对。} {#mess 这是宇宙流独立开发的路径机器人,请学会感恩我们宇宙流!} {yellboat} 519
       我就一直很迷惑,他们究竟是如何利用mush脚本达到ZMUD里的功能的j.
今天在六师兄 水鬼 的知道下我终于明白了,举个lua例子吧:
  trigger:  您上次是在*连线进入,请及时核对。 对应脚本:lianxian.busy
在脚本内的具体内容是:
lianxian.busy=function(n,l,w)
        Walk=1
        if string.find(l,"流氓") then
        print("流氓出现了:")
        lianxian.kill()
        end
end
这里固定采取 xxxx=function(n,l,w)的形式来实现ZMUD里的触发,N 代表名字,应该是ZMUD触发器里的类型,l就代表了   您上次是在*连线进入,请及时核对。  这个我要匹配的文本,W呢代表了文本里我们设置的变量。
我举得例子只是在文本里查找 流氓 这个词,没用到变量,所以呢就string.find(l ,“流氓”)  了
哈哈哈,开心吧,只要你跟着我的笔记看,我相信掌握起来会比我快很多



看了我通俗易懂的论述,再来看胡小子专业的论述:是不是很容易理解了哈哈

help----trigger选项:
sub MyTrigger (name, line, wildcards)
  world.Note "Trigger " & name & " matched."
  world.Note "Wildcard 1 was" & wildcards (1)
end sub

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-3-1 22:34:30 | 显示全部楼层
本帖最后由 emyt 于 2012-3-1 02:53 PM 编辑

看看这帖,测试理解会会更好些
http://pkuxkx.net/forum/thread-23433-2-1.html
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-3-14 19:57:50 | 显示全部楼层
感谢分享。学习了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-3-22 13:01:46 | 显示全部楼层
好好学习,天天向上
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2012-3-22 20:18:18 | 显示全部楼层
回复 4# heartyi
把onlinego的 移过来 看着方便


    测试下,就出来了hp_stat_jing=function(n,l,w)

        for k, v in pairs (w) do

                world.Note ("n = "..n)

                world.Note ("l = "..l)

                world.Note ("w["..k.."] = "..v)

        end

end
复制代码
hp
≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
n = hp_stat_jing
l = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
w[1] = 1313
n = hp_stat_jing
l = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
w[2] = 1313
n = hp_stat_jing
l = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
w[3] = 100
n = hp_stat_jing
l = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
w[4] = 2517
n = hp_stat_jing
l = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
w[5] = 2517
n = hp_stat_jing
l = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
w[6] = 0
n = hp_stat_jing
l = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
w[0] = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
【 气血 】 2747  / 2747   [100%]  【 内力 】 3986  / 3986  (+   0)



测试了多行触发的结果^【 精神 】\s*(\d+)\s*/\s*(\d+)\s*\[\s*(\d+)%\]\s*【 精力 】\s*(\d+)\s*/\s*(\d+)\s*\(\s*\+\s*(\d+)\).*$\n^【 气血 】\s*(\d+)\s*/\s*(\d+)\s*\[\s*(\d+)%\]\s*【 内力 】\s*(\d+)\s*/\s*(\d+)\s*\(\s*\+\s*(\d+)\)
复制代码hp_stat_jing=function(n,l,w)

         world.Note ("n = "..n)

         world.Note ("l = "..l)

         for k, v in pairs (w) do

                world.Note ("w["..k.."] = "..w[k])

        end

end
复制代码
hp
≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
【 气血 】 2747  / 2747   [100%]  【 内力 】 3986  / 3986  (+   0)
n = hp_stat_jing
l = 【 气血 】 2747  / 2747   [100%]  【 内力 】 3986  / 3986  (+   0)
w[1] = 1313
w[2] = 1313
w[3] = 100
w[4] = 2517
w[5] = 2517
w[6] = 0
w[7] = 2747
w[8] = 2747
w[9] = 100
w[10] = 3986
w[11] = 3986
w[12] = 0
w[0] = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
【 气血 】 2747  / 2747   [100%]  【 内力 】 3986  / 3986  (+   0)
【 食物 】 0     / 410    [饥饿]  【 潜能 】 230.5K   


n是个变量,值为触发名称
l是个变量,值为触发的匹配的最后一行
w是个table
w[0]是包含了整个被匹配的行
w[1] 包含第1个通配符的内容
........
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-3-23 11:49:36 | 显示全部楼层
看不懂啊
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2012-4-4 02:40:57 | 显示全部楼层
看着feixiong的笔记,我才发现feixiong和我遇到的问题差不多
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-17 10:01 AM , Processed in 0.014044 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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