|
楼主 |
发表于 2024-8-8 15:33:10
|
显示全部楼层
本帖最后由 doumimi 于 2024-8-8 04:08 PM 编辑
五、如何发射事件
- ## 别名 event.Emit <事件名称> [<回调钩子通配符>] [<事件参数>]
- 发射事件。这将导致与回调钩子通配符相匹配的回调钩子被立即执行。
- 默认会触发所有注册在本事件下的事件回调钩子。
- 你可以参考 event.Handle 理解什么是事件回调钩子。
复制代码
直接看例子。
- event.Emit {move-message} {};
- #nop 发送一个名字叫 move-message的消息,我希望被所有监听者接受, 消息没有参数;
- event.Emit {task-finish} {} {韩世忠};
- #nop 发送一个名字叫 task-finish的消息,我希望被所有监听者接受, 消息带有一个参数: 韩世忠;
- event.Emit {move-message} {jxf};
- #nop 发送一个名字叫 move-message的消息,我只希望 名字叫jxf的监听者 能够听到这个消息;
- event.Emit {move-message} {job%*};
- #nop 发送一个名字叫 move-message的消息,我希望 所有名字以job开头的监听者 能够听到这个消息;
复制代码
前期大家刚开始理解的时候, 就只用第一种方式就行,也就是发送一个无参数的消息, 那么信息如何传递呢? 通过#var 就可以, 因为#var 定义完成之后, 是全局的,任何地方都可以访问到。 Paotin 自己本身的事件,绝大部分都是无参的。
发送消息通常是要结合场景的,通常是执行了某个命令,或者触发了一些action,或者接收到gmcp信息后,发送event。下面给出一些example。
- #action {韩世忠说:恭喜你完成%*, 你获取的了%*经验,%*声望} {
- event.Emit {task-finish} {} {韩世忠}; #nop 发送任务完成的消息,参数是韩世忠;
- };
- #action {纪晓芙说:恭喜你完成%*, 你获取的了%*经验,%*声望} {
- event.Emit {task-finish} {} {jxf}; #nop 发送任务完成的消息,参数是jxf;
- };
- #alise move2 {
- #if {"%1" != "{e|w|n|s}"} {
- errLog 只能走 东南西北 ewns;
- #return;
- };
- %1; #nop 执行移动;
- event.Emit {move-message} {}; #nop 发送移动了一步的消息;
- };
复制代码
|
|