6个版本 (3个重大更新)
0.10.0 | 2024年5月20日 |
---|---|
0.9.0 | 2023年7月4日 |
0.8.1 | 2023年3月8日 |
0.8.0 | 2022年8月5日 |
0.7.0 | 2022年2月27日 |
#1199 in 过程宏
每月289次下载
在 arcdps 中使用
27KB
607 代码行
Arcdps 插件绑定
这提供了具有安全、零成本抽象的 arcdps 插件绑定。
只需几行代码即可轻松集成到 arcdps。
功能
当前功能包括
- 通过 Cargo.toml 版本化插件
- 所有回调的简单接口
- 可选地放弃安全抽象以直接访问 arcdps C 接口
- 通过
imgui-rs
接口与 Imgui 交互 - 通过
log
crate 记录到 arcdps - 非官方额外绑定
仍在开发中
- 公开 arcdps 的设置
仍在探索技术边界
- 类似于 arcdps 的 imgui 窗口吸附
如何使用
一个小示例展示了提供的许多功能中的两个。如果 init
返回错误,arcdps 不会将插件视为已加载,并将显示错误。之后不会调用其他函数,除非是非官方-extras 函数。
use std::error::Error;
use arcdps::UserInfoIter;
arcdps::arcdps_export! {
name: "example addon",
sig: 123, // change this to a random number
unofficial_extras_squad_update: crate::squad_update,
init: crate::init,
}
fn squad_update(users: UserInfoIter) {
for user in users.into_iter() {
println!("{:?}", user);
}
}
fn init(swapchain: Option<NonNull<c_void>>) -> Result<(), Box<dyn Error>> {
match swapchain {
Some(swapchain) => {
println!("init: initialized with swapchain: {:?}", swapchain);
Ok(())
}
None => Err("init: swapchain is None".into()),
}
}
依赖项
~1.5MB
~35K SLoC