关于Mush 的一个简单问题,还请大家帮忙 想不明白呀
本帖最后由 daliyid 于 2013-12-13 10:34 AM 编辑匹配:^\s*「.*」\s*(.*)\(.*\)
触发:「说书先生」 张十五(Zhang shiwu)
发送:find_jobnpc()
发送到脚本
脚本:
require "wait"
require "tprint"
find_jobnpc = function(n, l, w)
Note("n = "..w)
Execute("id here")
end
一触发就报这个错误 ,求解呀。。。。。。。。。。
Run-time error
World: gogogo
Immediate execution
:4: attempt to index local 'w' (a nil value)
stack traceback:
:4: in function 'find_jobnpc'
:1: in main chunk
脚本错误处的上下文:
1 : require "wait"
2 : require "tprint"
3 : find_jobnpc = function(n, l, w)
4*: Note("n = "..w)
5 : Execute("id here")
6 : end
7 :
8 :
北大侠客行MUD,中国最好的MUD 回复 2# yhzzyahoo
刚转的 mush 我看了hyd的脚本 所以自己学着写
那知道第一句就栽了跟头
是不是发送 里要改成find_jobnpc(“%1”)?
貌似没效果呀 本帖最后由 daliyid 于 2013-12-13 11:16 AM 编辑
回复 4# yhzzyahoo
哎 才弄明白 我看了hyd脚本 钓鱼脚本 都是
以 xxx = function(n, l, w)
这个标准格式写脚本
然后下面直接开始 aa=w
bb=w
cc=w
还以为 一这种格式直接可以省略了 发送里面的%1 %2 %3555555 如果你是抄的这段,这里n=w,说明w 是叔祖。直接由游戏触发向脚本发送叔祖我个人认为有难度。 lua里不管你函数括号里放多少个变量,只要不用,发送空的没有任何问题(全部默认为nil)。所以你n,l都没有包错,只有w,因为你脚本里调用这个变量了。
参考你用了wait.lua,你是靠脚本触发的,少了一句
l,w=reg.exp("^\s*「.*」\s*(.*)\(.*\)")
这时,
l=「说书先生」 张十五(Zhang shiwu)
w =张十五
w = Zhang shiwu 六楼正解。发送:find_jobnpc()这里不对。这个富文本框要置空,然后在把find_jobnpc填到下面的一个文本框里(文本框标签好像是叫脚本?记不太清楚了),注意不要带括号。mush会自动传递三个参数到这个find_jobnpc函数的,不用自己指定。你仔细看看你模仿的那个机器人的触发器是怎么填的吧
换句话说,如果按你那样的填写位置,结合你的参数定义方式,就要自己指定参数了,发送:find_jobnpc(0, ["%1","%2"],0) 类似这样(0用来占位),比较麻烦。或者是指定参数+改函数的定义方式。这些都有点需要编程基础,爪机无力不详述了 http://pkuxkx.net/forum/viewthread.php?tid=23433&extra=&page=3
这个帖子完整,包括回复仔细看看你对mush的触发就会理解的深入点
你要这样触发的话,按照回帖27楼的图片设置 ps : n,l,w是一种mush特色的东西,它是把触发器捕获的一些特定信息自动传给函数。n的具体含义记不清了,好像和多行触发的行数有关,l是line的意思,指匹配的整行信息,w是wildcards的意思,会把%1,%2这些以数组的形式传递给函数,在函数里对应的调用方式就是w这样。所以这三个参数用的比较多的是w,n和l更多时候只能沦为占位的炮灰。
这种mush特色的东西只有把函数名填到我刚才说的位置,mush才能帮你传递参数。 已经明白了这个特定格式是 mush 的一种机制
从zmud 转 mush ,zmud 的观念太深了一时脑子转不过来。
感谢大家
页:
[1]