北大侠客行MUD论坛

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

lua 一点儿疑问(函数调用方式)

[复制链接]
发表于 2009-12-3 00:33:09 | 显示全部楼层 |阅读模式
-------------------钓鱼机器人 start--------------------------
require "wait"
require "tprint"
function diaoyu_start()
        wait.make (function ()  --- coroutine below here

line, wildcards =
       wait.regexp ("^(You heal .*|You lose your concentration)$")
疑问:
1/
'make' 是 wait.lua 中的函数,这里调用方式是'wait.make()',直接用'make()'行不行?
并且,tprint.lua中的'tprint()'就可以直接以'tprint()'使用,何也。。
2/
这个'line, wildcards = '是怎么个意思,lua程序设计里好像没它的说明。

[ 本帖最后由 ssb 于 2009-12-3 12:35 AM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-3 08:08:56 | 显示全部楼层
触发器的发送框中不但可以发送普通的 MUD 命令,还可以执行脚本命令,你只要把发送框发送的对象选为“脚本解析器”就可以了。

  如果脚本很复杂,在发送框中编写会很吃力。这时你可以把这个脚本作为一个函数写在游戏的脚本文件中(在脚本配置对话框中设置),然后在触发器设置对话框的脚本框中填入这个脚本名称就可以调用它了。

  触发器调用的脚本函数必须有以下三个(Lua 中有四个)参数:

触发器名称
触发器匹配的行
包含前十个通配符内容的数组(Lua 中包含了所有通配符)
包含匹配行中所有样式的表(这个参数仅在 Lua 中有效)
  下面是一个 VBscript 脚本函数的示例:

sub MyTrigger (name, line, wildcards)
  world.Note "Trigger " & name & " matched."
  world.Note "Wildcard 1 was" & wildcards (1)
end sub  wildcard 10 包含了整个被匹配的文本,当使用正则表达式的时候,它不一定和匹配行一样。对于其它通配符(例如,命名的通配符,超过 9 的通配符),你可以用 GetTriggerWildcard 函数来获取。



  在 Lua 脚本中,wildcard 10 包含第十个通配符的内容,wildcard 11 包含了第十一个通配符的内容......wildcards 表中储存了触发器中所有通配符的内容,同时还包含了整个被匹配的行(关键字为 0)和指定了名称的通配符(关键字为通配符的名称)。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-3 23:17:06 | 显示全部楼层
非常感谢帮忙,
不过看了回复还是感觉有点云里雾里的,
最好再直接一点儿,

line, wildcards =
       wait.regexp ("^(You heal .*|You lose your concentration)$")
上面这两行它究竟是什么意思呢?
如果是赋值的话(感觉应该是),那是怎么样的一个过程呢,
路漫漫哪,,,
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-3 23:41:09 | 显示全部楼层
这几天感觉好像比较平静,莫非高手在秘密进行某种峰会?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-4 23:50:06 | 显示全部楼层
请高手帮忙解答吧
活鱼呢?这个机器可是你写的哪。
猫呢,时代呼唤大熊猫啊,
快来吃鱼了!
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-5 05:22:23 | 显示全部楼层
表达式可以为序列即 a, b, c, d ....
lua函数支持多重返回值
囧如
function TestMultiReturn(a, b)
        return a + b, a - b;
end
a = 4;
b = 1;
c, d = TestMultiReturn(a, b);
Note ("c = ", c, "  d = ", d);

输出
c = 5  d = 3
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-5 05:36:12 | 显示全部楼层
这么晚了duno还抽时间给回复,
感动中。。
终于等到了
第一个问题是怎么回事儿,感觉我的问题都是常识性的好像。。
1/
'make' 是 wait.lua 中的函数,这里调用方式是'wait.make()',直接用'make()'行不行?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-8 12:10:29 | 显示全部楼层
ssb去Gammon的网站问了?

http://gammon.com.au/forum/?id=9896&page=999
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2009-12-12 00:50:03 | 显示全部楼层
是啊,现在想想感觉挺虎的,
我那E文我自个儿都看不大懂
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2009-12-12 10:41:30 | 显示全部楼层
呵呵,回答你问题的3个老外,都是很牛的。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 02:35 PM , Processed in 0.014340 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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