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 过程宏

Download history 10/week @ 2024-04-21 5/week @ 2024-04-28 1/week @ 2024-05-05 188/week @ 2024-05-19 10/week @ 2024-05-26 15/week @ 2024-06-02 20/week @ 2024-06-09 4/week @ 2024-06-16 4/week @ 2024-06-30 18/week @ 2024-07-07 271/week @ 2024-07-28

每月289次下载
arcdps 中使用

MIT/Apache

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