北大侠客行MUD论坛

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

请问mush中有没有办法一次性打开所有的触发器

[复制链接]
发表于 2011-9-15 00:18:56 | 显示全部楼层 |阅读模式
我实验做机器,在那个一个脚本走天下的基础上但是我发现每当我载入或者保存一次,他的机器会把我所建立的所有的触发器都关掉
我的触发器分了很多的很多的class
因此一个一个打开很麻烦
所有想请问mush中有没有办法一次性打开所有的触发器
或者如何把我这些所有的触发器再放到一个class下面,类似于zmud721中的文件夹下面的文件夹,
据说要用到table
具体是如何做的

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-15 07:02:20 | 显示全部楼层
没有可以统一打开的命令,不过,可以自己做.

我个人的意见是,在整个程序开始的时候,就发所有的触发,定时器之类的,做一次总的初始设置,这个工作可以在程序一边写一边不停的添加.因为,随着机器人越来越复杂,每次去分析哪些开了,哪些没开,很麻烦,还不如---载入初始设置---打开目前需要的设置--这样不容易出错
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-15 09:14:11 | 显示全部楼层
  1. alltrigger=GetTriggerList()
  2. for k,v in ipairs(alltrigger) do
  3. EnableTrigger(v,true)
  4. end
复制代码
可以试试以上代码。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-15 09:23:20 | 显示全部楼层
原帖由 littleknife 于 2011-9-15 09:14 AM 发表
alltrigger=GetTriggerList()
for k,v in ipairs(alltrigger) do
EnableTrigger(v,true)
end可以试试以上代码。

必须的
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-15 21:51:04 | 显示全部楼层
非常感谢
虽然我没看懂。。。
呵呵
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-16 07:43:49 | 显示全部楼层
  1. alltrigger=GetTriggerList()
  2. for k,v in ipairs(alltrigger) do
  3. EnableTrigger(v,true)
  4. end
复制代码


我来简单解释一下

alltrigger=GetTriggerList()
--这是取所有触发的名字
--alltrigger这个是变量
--GetTriggerList()是函数,具体可以查mush手册
for k,v in ipairs(alltrigger) do
...
end
--以上内容是一个循环...具体就查lua手册吧,不展开了
EnableTrigger(v,true)
--这句是打开触发,简单说一下,是把触发名放到v这个变量中了.

--就讲这么多了,再说下去,就一点味道都没有了哈.如果基本的循环都看不懂,呃..介个..就建议先去学习一点基本的程序语句
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-16 07:50:28 | 显示全部楼层
  1. for k,v in ipairs(GetTriggerList()) do
  2.     EnableTrigger(v,true)
  3. end
复制代码
这样是不是更简洁些,环保些,不增加变量
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-16 18:48:15 | 显示全部楼层
嘿嘿,大概明白了,就是先调出所有的tigger,然后挨个打开
其中的K和V没看懂,不知道为啥K和V就成了tigger里面的值
---------------------------
名称 GetTriggerList
类型 方法
简介 获取一个包含所有触发器名称的列表
原形 VARIANT GetTriggerList();  
详细说明 返回一个包含所有触发器名称的数组。你可以用 GetTrigger 和 GetTriggerInfo 获得每个触发器的详细信息。
--------------
Lua 示例
for k, v in pairs (GetTriggerList()) do
  Note (v)
end
-----------------
这个k v具体是啥意思?我大概明白代表了gettriggerlist获取的这么说触发器的内容
pairs也不懂 呵呵
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-16 19:32:49 | 显示全部楼层
原帖由 selfmud 于 2011-9-16 06:48 PM 发表
嘿嘿,大概明白了,就是先调出所有的tigger,然后挨个打开
其中的K和V没看懂,不知道为啥K和V就成了tigger里面的值
---------------------------
名称 GetTriggerList
类型 方法
简介 获取一个包含所有触发器 ...


我要哭了。。。。k v ipairs 啥回事,去查lua手册,北侠wiki有下载
要是再那啥,直接百度lua + ipairs 也行。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-16 21:30:35 | 显示全部楼层
以下是lua5.1中文手册中查到的

ipairs (t)
Returns three values: an iterator function, the table t, and 0, so that the construction

     for i,v in ipairs(t) do body end

will iterate over the pairs (1,t[1]), (2,t[2]), ···, up to the first integer key absent from the table.

See next for the caveats of modifying the table during its traversal
----------------------
英文啊
下面是我自己的翻译:
ipairs (t)
返回3个值:一个XX(不会翻译)函数,一个table,一个0,以及建设?

for i,v in ipairs(t) do body end
将会重复pairs (1,t[1]), (2,t[2]), ···, (paris是啥?)直到第一个整数从table中不存在?

看不懂着。。。
我结合
这个代码
for k,v in ipairs(GetTriggerList()) do
    EnableTrigger(v,true)
end
估计意思是完成全部的内容吧
但是还是不理解k v是啥东西
看不懂。。。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 07:22 AM , Processed in 0.010443 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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