#add-on #guild-wars-2 #framework #safe-abstraction #ffi #api-bindings

arcdps

Rust bindings for the Guild Wars 2 dps-meter with focus on ease-of-use and performance

5 unstable releases

0.9.0 Jul 4, 2023
0.8.1 Mar 8, 2023
0.8.0 Aug 5, 2022
0.7.1 May 3, 2022
0.7.0 Feb 27, 2022

#693 in Games

Download history 392/week @ 2024-02-19 156/week @ 2024-02-26 10/week @ 2024-03-04 19/week @ 2024-03-11 3/week @ 2024-03-25

54 downloads per month

MIT/Apache

49KB
948 lines

Arcdps Plugin Bindings Latest Version

This provides arcdps plugin bindings featuring safe, zero-cost abstractions.

Easily integrate into arcdps with just a few lines of code.

Features

Current features include:

  • Versioning plugins via Cargo.toml
  • A simple interface for all callbacks
  • Optional opt out of safe abstractions to directly access the arcdps C interface
  • Imgui interfacing via imgui-rs
  • Logging to arcdps via the log crate
  • unofficial extras bindings

Still in development:

  • Exposing settings from arcdps

Still exploring technical boundaries:

  • Arcdps-like snapping of imgui windows

How to use

A small example showcasing 2 of the many functions provided. If init returns an error, arcdps won't consider the plugin as loaded and will display the error. No other function, except for unofficial-extras functions, will be called afterwards.

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: squad_update,
    init: init,
}

fn squad_update(users: UserInfoIter) {
    for user in users.into_iter() {
        println!("{:?}", user);
    }
}

fn init() -> Result<(), Box<dyn Error>> {
    Ok(())
}

Dependencies

~6.5MB
~119K SLoC