深色
风格
视觉表达
S 循环切换
经典
稳定的技术默认风格
信号流
突出动态流向
蓝图
工程评审
编辑风格
适合发布与上线说明
动态
演示
导出
导出图表
便携、整洁的输出
E
分享
分享卡片
1200×630 PNG
路径分享卡片
1200×630 PNG
可达范围分享卡片
1200×630 PNG
复制分享卡片
复制 PNG 到剪贴板
复制图表
复制 PNG 到剪贴板
图像
PNG
无损图像
JPEG
紧凑图像
WebP
现代图像格式
矢量与动效
SVG
可编辑矢量图
WebM
6 秒动效
defineEvent 事件运行链路
←
引导视图
探索此系统
沿精选路径逐步查看,而不改变源图表。
节点
下一步
→
▶
播放故事
#
复制此刻
显示全部
defineEvent 事件运行链路
由 Archify 生成的时序图。
defineEvent({ name, identifier, isNative })
samp.registerEvent(name, identifier) + samp.on(name, trigger)
OnPlayerConnect(playerid)
trigger(playerid)
beforeEach 解析上下文 → 调用监听器
return next() 前进到下一个监听器
链尾后 executeAfterEach() 执行一次
transformReturnValue → 0 | 1,经 samp-node 回传
模块加载时注册
原生回调 → 监听链
返回值
业务脚本 · onConnect 监听器 · 时序参与者
业务脚本
onConnect 监听器
@infernus/core bus.ts · eventBus / trigger · 时序参与者
@infernus/core bus.ts
eventBus / trigger
samp-node 插件 · samp.on · 时序参与者
samp-node 插件
samp.on
open.mp Server · 原生回调 · 时序参与者
open.mp Server
原生回调
图例
请求
返回
默认消息
就绪
章节 01 / 01
引导章节
图表指南
探索此系统
×
正在检查已编译语义
01
查找任意节点
搜索标签、职责、类型和稳定 ID。
/
02
追踪路径
查看两个语义节点如何按编写方向连接。
R
03
查看完整系统
打开带实时视口和稳定节点的语义雷达。
M
04
比较语义类型
统计角色、显示流量并比较直接编写的连接。
L
05
播放引导故事
浏览已编写的章节和真实关系。
P
06
进入演示模式
让实时图表占满视口,同时不改变导出。
F
E
导出
T
主题
S
风格
0
重置
+
放大
-
缩小
Esc
关闭
查找节点
×
⌕
/
没有匹配的节点
语义护照
已验证来源
编写可达范围
上游
0
下游
0
×
复制链接
关系
路径探测
选择起点节点
查找起点
复制链接
清除
在图表中选择两个语义节点
←
▶
旅程
→
总览
先选择来源,再选择目标;方向很重要。
语义透镜
比较系统角色
×
最多选择两种语义类型。选择一种可显示其真实流量;选择两种只比较直接编写的关系。
选择一种类型以检查其节点和相连关系。
复制链接
清除
语义雷达
正在构建总览
打开雷达
×
点击节点
拖动平移
语义雷达需要更多地图可见空间。
路径
地图
透镜
阅读
100%
注册:import 副作用
• defineEvent 在模块被 import 时即注册,无需手动初始化
• isNative 为 false 时不调 samp.registerEvent/samp.on,成为进程内自定义事件
• name 重复即抛 CoreException:event [name:xxx] error: already defined
传播:next() 决定链的走向
• beforeEach 把原生参数解析成上下文,监听器收到 { next, defaultValue, ...上下文 }
• next(value) 前进且 value 会 Object.assign 进共享上下文,影响下游所见
• 不调 next() 即中断链路,该监听器返回值成为事件结果
返回值与错误
• 结果统一转成 0/1:布尔转数字,其他值回退到 defaultValue(默认 1)
• 监听器返回 Promise 不阻塞链路;afterEach 等 Promise.allSettled 完成后再执行
• 抛错交给 setEventErrorHandler;未设置时回退到 samp.logprint