深色
风格
视觉表达
S 循环切换
经典
稳定的技术默认风格
信号流
突出动态流向
蓝图
工程评审
编辑风格
适合发布与上线说明
动态
演示
导出
导出图表
便携、整洁的输出
E
分享
分享卡片
1200×630 PNG
路径分享卡片
1200×630 PNG
可达范围分享卡片
1200×630 PNG
复制分享卡片
复制 PNG 到剪贴板
复制图表
复制 PNG 到剪贴板
图像
PNG
无损图像
JPEG
紧凑图像
WebP
现代图像格式
矢量与动效
SVG
可编辑矢量图
WebM
6 秒动效
samp-node 插件内部架构与 libnode 嵌入
←
引导视图
探索此系统
沿精选路径逐步查看,而不改变源图表。
节点
下一步
→
▶
播放故事
#
复制此刻
显示全部
samp-node 插件内部架构与 libnode 嵌入
由 Archify 生成的架构图。
sampgdk · 静态桥接库 · open.mp 宿主
sampgdk
静态桥接库
open.mp Server · 宿主与原生 · open.mp 宿主
open.mp Server
宿主与原生
Load / Unload · 插件导出入口 · 插件导出入口
Load / Unload
插件导出入口
OnPublicCall · 回调分发 · 插件导出入口
OnPublicCall
回调分发
nodeimpl.cpp · 初始化与 Tick · 嵌入运行时
nodeimpl.cpp
初始化与 Tick
resource.cpp · bootstrap 装载 · 嵌入运行时
resource.cpp
bootstrap 装载
libnode 与 V8 · Node 22 共享库 · 嵌入运行时
libnode 与 V8
Node 22 共享库
events.cpp · 事件注册表 · 事件与原生转换
events.cpp
事件注册表
natives.cpp · 原生参数转换 · 事件与原生转换
natives.cpp
原生参数转换
callbacks.cpp · 公共函数转换 · 事件与原生转换
callbacks.cpp
公共函数转换
entry_file 模块 · 业务脚本入口 · JS 资源层
entry_file 模块
业务脚本入口
@infernus/core · 事件引擎触发 · JS 资源层
@infernus/core
事件引擎触发
全局 samp 对象 · JS 调用入口 · JS 资源层
全局 samp 对象
JS 调用入口
宿主加载
PLUGIN_EXPORT
Initialize
LoadResource
CreateEnv
动态 import
register / on
OnPublicCall
events[name]->call
调用 trigger
callNative
callPublic
InvokeNativeArray
open.mp 宿主
插件导出入口
嵌入运行时
事件与原生转换
JS 资源层
图例
前端
后端
云服务
就绪
章节 01 / 01
引导章节
图表指南
探索此系统
×
正在检查已编译语义
01
查找任意节点
搜索标签、职责、类型和稳定 ID。
/
02
追踪路径
查看两个语义节点如何按编写方向连接。
R
03
查看完整系统
打开带实时视口和稳定节点的语义雷达。
M
04
比较语义类型
统计角色、显示流量并比较直接编写的连接。
L
05
播放引导故事
浏览已编写的章节和真实关系。
P
06
进入演示模式
让实时图表占满视口,同时不改变导出。
F
E
导出
T
主题
S
风格
0
重置
+
放大
-
缩小
Esc
关闭
查找节点
×
⌕
/
没有匹配的节点
语义护照
已验证来源
编写可达范围
上游
0
下游
0
×
复制链接
关系
路径探测
选择起点节点
查找起点
复制链接
清除
在图表中选择两个语义节点
←
▶
旅程
→
总览
先选择来源,再选择目标;方向很重要。
语义透镜
比较系统角色
×
最多选择两种语义类型。选择一种可显示其真实流量;选择两种只比较直接编写的关系。
选择一种类型以检查其节点和相连关系。
复制链接
清除
语义雷达
正在构建总览
打开雷达
×
点击节点
拖动平移
语义雷达需要更多地图可见空间。
路径
地图
透镜
阅读
100%
插件导出与启动顺序
• Load() 读 samp-node.json,再 Log::Init、sampgdk::Load、Initialize、LoadResource
• Supports() 声明 AMX 原生与 PROCESS_TICK 支持
• OnPublicCall 查 js_calling_public 防递归;AmxLoad 注册 SAMPNode_CallEvent
libnode 嵌入与 bootstrap
• InitializeOncePerProcess,再 MultiIsolatePlatform::Create(4) 与 NewIsolate,并建 uv_loop
• functions::init 注入全局 samp,再 CreateEnvironment 装载 bootstrap
• bootstrap 设 ipv4first、import entry_file,最后 __internal_esmLoaded 解除等待
单线程事件循环与同步桥
• 无独立 Node 线程:ProcessTick 每帧跑微任务、uv_run(NOWAIT)、DrainTasks
• async 监听器返回 Promise 时,循环驱动事件循环直到它完成,再取结果
• callNative 走 FindNative 并按格式串转换参数;callPublic 遍历所有 AMX 实例