LUA傻瓜式学习笔记与疑问5(lua脚本触发器及ZMUD模式比较)
本帖最后由 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 本帖最后由 emyt 于 2012-3-1 02:53 PM 编辑
看看这帖,测试理解会会更好些
http://pkuxkx.com/forum/thread-23433-2-1.html 感谢分享。学习了 好好学习,天天向上 回复 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 【 精力 】 2517/ 2517(+ 0)
n = hp_stat_jing
l = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
w = 1313
n = hp_stat_jing
l = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
w = 1313
n = hp_stat_jing
l = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
w = 100
n = hp_stat_jing
l = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
w = 2517
n = hp_stat_jing
l = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
w = 2517
n = hp_stat_jing
l = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
w = 0
n = hp_stat_jing
l = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
w = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
【 气血 】 2747/ 2747 【 内力 】 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)
end
end
复制代码
hp
≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
【 气血 】 2747/ 2747 【 内力 】 3986/ 3986(+ 0)
n = hp_stat_jing
l = 【 气血 】 2747/ 2747 【 内力 】 3986/ 3986(+ 0)
w = 1313
w = 1313
w = 100
w = 2517
w = 2517
w = 0
w = 2747
w = 2747
w = 100
w = 3986
w = 3986
w = 0
w = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
【 气血 】 2747/ 2747 【 内力 】 3986/ 3986(+ 0)
【 食物 】 0 / 410 [饥饿]【 潜能 】 230.5K
n是个变量,值为触发名称
l是个变量,值为触发的匹配的最后一行
w是个table
w是包含了整个被匹配的行
w 包含第1个通配符的内容
........ 看不懂啊 看着feixiong的笔记,我才发现feixiong和我遇到的问题差不多
页:
[1]