广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 9918 个阅读者
 
<<   1   2  下页 >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
牙京
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x148 鲜花 x155
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x3
[插件] register_event注册事件函数解说
register_event是AMX的注册事件语句,简单来说就是在特定事件发生的时候调用某个函数,来达到自己特定的目的。比如说,我们想在每局开始的时候,给每名玩家发一把M4(我比较喜欢M4),就可以用到register_event语句。下面我们来看一个具体的例子,Bread会结合这个例子来具体讲解。

register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")

这是一个典型的注册事件语句,register_event至少应包含4个参数,分别是事件Event、函数Function、标志位 Flag以及判断条件Condition,而其中的判断条件可以是多条并列。它的作用则是在事件Event出现的时候,先判断是否符合Flag标志位的标准,然后判断此事件消息是否符合condition的条件,若两者都通过则自动调用Function函数。.....-_-...难理解的话就先不要理解,下面我们来一一对参数进行讲解。第一个参数Event是事件常量,比如说常见的"SendAudio","TextMsg"等等,具体的事件列表你可以在游戏中由控制台敲入"meta game"(大小写敏感)来获得。第二个参数,Function,则需要由用户自己定义。我们来举个简单的例子:

register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
在这条语句中,Event是"SendAudio",也就是发送声音的事件。第二个参数,"t_win"则是由用户自己定义的。整条语句的作用就是在T方获胜的时候调用t_win这个函数。

再来看第三个参数,标志位flag,用来标识事件类型。只有事件出现时符合其所规定的类型,函数才会被调用。它也是个常量,具体的赋值如下:

"a" 表示是全局事件,比如说开局,某方胜利等等,这种消息人人都可以看到,因此是全局信息
"b" 表示是发送给某个个体的事件,比如说某人被对方击中等等
"c" 表示此信息重复发送给其他玩家,而对这个个体只发送一遍。这个解释起来有点麻烦,你这样理解好了。某个事件发送给你之后,会重复发给其他玩家,但即便如此,自定义函数也只会被调用一次。
"d" 表示此事件信息只发送给死亡玩家
"e" 表示此事件只发送给活着的玩家

对于我们的例子来说,SendAudio显然是全局事件。再来看下面这个经典的例子::

register_event("TextMsg","setSpecMode","bd")

后面的参数先不要管,第三个参数用的是"bd",也就是说,只有事件"TextMsg"被发送给一个单独的玩家,并且此玩家已经死亡的时候,"setSpecMode"才会被调用。

下面再来看最重要的部分,判断条件:

在此之前,我们要清楚事件消息的发送格式,HL引擎在发送事件消息的时候,会在事件名之后跟上几个参数,用来表达具体的信息。当然参数个数和类型会根据事件的不同而有所变化。在我们的这个例子中,"SendAudio"的参数共有两个,第一个是sound mode,也就是声音格式,第二个是声音标识,为字符串型。
而判断条件所要比对的,就是这几个参数的信息。首先,每个条件在开头要写上一个数字,用来表示要比对的参数序列。再回到开头的例子:
"2&%!MRAD_terwin"

则表示要比对的是"SendAudio"第二个参数,声音标识。然后,我们要介绍几个逻辑符号。
"&" 表示包含关系,比如说"2&Bread",则表示若第二个参数中包含"Bread"则条件成立
"=" 表示完全相符,比如说"2=Bread",则表示第二个参数必须是"Bread",条件才成立
表示不包含,比如说"4!Bread",则表示第四个参数中不得包含"Bread",这样条件才成立
">"和"<" 和代数意义相同,比如说"3>15"则表示第3个参数必须大于15才行

这样一来,"2&%!MRAD_terwin"的意思就不言而喻了。它要做的就是比对声音标识中是否含有"%!MRAD_terwin"这个字符串。说到这里,就废话多说几句。事件"SendAudio"顾名思义是向客户端发送声音的,而第二个参数则表示发送的声音类型,比如说此例中的"%!MRAD_terwin"表示T方获胜,还有"=%!MRAD_ctwin"(表示CT方胜利),"=%!MRAD_rounddraw"(表示平局)。相信大家对这些声音都不会陌生。

register_event()语句因其独特的作用,几乎在每个知名插件中都能找到它的身影。我记忆犹深的是比赛插件playoff投票无效的BUG,就是由于使用"TeamScore"事件的时候考虑不够周全.总之这个语句很有用就是了,嘿嘿...多看几个经典的插件,慢慢就会灵活掌握的。

根据Bread之前的感觉来说,刚接触register_event的时候,最头疼的就是各个事件的具体参数,以及各个参数的意义。虽然"meta game"能把事件都调出来..却看不到参数。有鉴于此,Bread在附件中为大家准备了简单的事件列表,其中有比较详尽的参数分析,经常用到的事件也都包括在内了。对了,忘了说,这份事件列表是从官方得来的,作者已经无从考证..无论如何...谢谢作者的辛勤劳动

转自c7



献花 x0 回到顶端 [楼 主] From:香港 | Posted:2009-04-28 23:24 |
s922197 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x67 鲜花 x251
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

毕竟整理这些资料是需要时间的
而且对不会的人很有帮助喔 表情


新RC:25369787欢迎来听歌、放歌、聊天^^ (2012/08/25)
献花 x0 回到顶端 [1 楼] From:台湾 | Posted:2009-04-29 06:48 |
夜魂
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
路人甲
级别: 路人甲 该用户目前不上站
推文 x200 鲜花 x519
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

对阿 对于新手帮助很大


我退出数位了 我会请我朋友持续帮我发世纪帝国 我热爱世纪帝国 数位让我太伤心了

指定接班人(不是cs的) ""夜梦魂"
献花 x0 回到顶端 [2 楼] From:台湾 | Posted:2009-08-26 18:37 |
tocade 手机
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x34 鲜花 x25
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我初学这些东西
不管怎样
总是能知道多点相关函数用法总是有帮助的


每次遇到装B的人,
      哥总是默默的低下头,
          不是哥的修养好,
                  是哥在找砖头!
献花 x0 回到顶端 [3 楼] From:台湾凯擘 | Posted:2010-03-25 18:49 |
oscarbox2001 手机 会员卡
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x48 鲜花 x297
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

看到文章发布时间
顿时感到惊讶
竟然过了那么久我才发现这篇文章
对我帮助很大~!


献花 x0 回到顶端 [4 楼] From:台湾中华电信 | Posted:2010-03-25 19:15 |
tony987852
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x42 鲜花 x140
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

判断条件Condition.......好难运用...


献花 x0 回到顶端 [5 楼] From:未知地址 | Posted:2010-03-25 20:52 |
T.o.n..y
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x0 鲜花 x1031
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

嗯嗯!!详细的教学!!感谢分享!


献花 x0 回到顶端 [6 楼] From:台湾台固媒体股份有限公司 | Posted:2011-06-05 01:23 |
HoJai
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x53 鲜花 x93
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

这个教学真的很实用..
但我也不太明白..
不过感谢分享!


献花 x0 回到顶端 [7 楼] From:美国 | Posted:2012-07-06 10:28 |
killer200
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x6
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感谢大大分享
这对我很有帮助^^


My name is killer200~~~~~~~~~~~~
献花 x0 回到顶端 [8 楼] From:香港 | Posted:2012-07-09 13:39 |
qiaoqiao520
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

有点懂了,谢谢大大。。


献花 x0 回到顶端 [9 楼] From:未知地址 | Posted:2013-05-20 20:44 |

<<   1   2  下页 >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.015210 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言