北大侠客行MUD论坛

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

关于Mush 的一个简单问题,还请大家帮忙 想不明白呀

[复制链接]
发表于 2013-12-13 18:33:06 | 显示全部楼层 |阅读模式
本帖最后由 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[1])
Execute("id here")
end

一触发就报这个错误 ,求解呀。。。。。。。。。。
Run-time error
World: gogogo
Immediate execution
[string "Script file"]:4: attempt to index local 'w' (a nil value)
stack traceback:
        [string "Script file"]:4: in function 'find_jobnpc'
        [string "触发器: "]:1: in main chunk
脚本错误处的上下文:
   1 : require "wait"
   2 : require "tprint"
   3 : find_jobnpc = function(n, l, w)
   4*: Note("n = "..w[1])
   5 : Execute("id here")
   6 : end
   7 :
   8 :

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-12-13 18:59:42 | 显示全部楼层
回复 2# yyahoo

刚转的 mush 我看了hyd的脚本 所以自己学着写

那知道第一句就栽了跟头

是不是发送 里要改成  find_jobnpc(“%1”)  ?

貌似没效果呀
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-12-13 19:14:45 | 显示全部楼层
本帖最后由 daliyid 于 2013-12-13 11:16 AM 编辑

回复 4# yyahoo

哎 才弄明白 我看了hyd脚本 钓鱼脚本 都是
以 xxx = function(n, l, w)
这个标准格式写脚本
然后下面直接开始 aa=w[1]
bb=w[2]
cc=w[3]
还以为 一这种格式  直接可以省略了 发送里面的%1 %2 %3555555
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-12-13 23:51:22 | 显示全部楼层
如果你是抄的这段,这里n=w[1],说明w 是叔祖。直接由游戏触发向脚本发送叔祖我个人认为有难度。 lua里不管你函数括号里放多少个变量,只要不用,发送空的没有任何问题(全部默认为nil)。所以你n,l都没有包错,只有w,因为你脚本里调用这个变量了。

参考你用了wait.lua,你是靠脚本触发的,少了一句
l,w=reg.exp("^\s*「.*」\s*(.*)\(.*\)")
这时,
l=「说书先生」 张十五(Zhang shiwu)
w[1] =  张十五
w[2] = Zhang shiwu
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-12-14 00:07:15 | 显示全部楼层
六楼正解。发送:find_jobnpc()这里不对。这个富文本框要置空,然后在把find_jobnpc填到下面的一个文本框里(文本框标签好像是叫脚本?记不太清楚了),注意不要带括号。mush会自动传递三个参数到这个find_jobnpc函数的,不用自己指定。你仔细看看你模仿的那个机器人的触发器是怎么填的吧
换句话说,如果按你那样的填写位置,结合你的参数定义方式,就要自己指定参数了,发送:find_jobnpc(0, ["%1","%2"],0) 类似这样(0用来占位),比较麻烦。或者是指定参数+改函数的定义方式。这些都有点需要编程基础,爪机无力不详述了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-12-14 00:17:59 | 显示全部楼层
http://pkuxkx.net/forum/viewthread.php?tid=23433&extra=&page=3
这个帖子完整,包括回复仔细看看你对mush的触发就会理解的深入点
你要这样触发的话,按照回帖27楼的图片设置
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2013-12-14 00:19:01 | 显示全部楼层
ps : n,l,w是一种mush特色的东西,它是把触发器捕获的一些特定信息自动传给函数。n的具体含义记不清了,好像和多行触发的行数有关,l是line的意思,指匹配的整行信息,w是wildcards的意思,会把%1,%2这些以数组的形式传递给函数,在函数里对应的调用方式就是w[1]这样。所以这三个参数用的比较多的是w,n和l更多时候只能沦为占位的炮灰。
这种mush特色的东西只有把函数名填到我刚才说的位置,mush才能帮你传递参数。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2013-12-14 07:52:02 | 显示全部楼层
已经明白了这个特定格式是 mush 的一种机制
从zmud 转 mush ,zmud 的观念太深了  一时脑子转不过来。

感谢大家
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 07:56 AM , Processed in 0.012961 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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