omp-gdk 2.1.0

Rust SDK for developing open.mp gamemodes
Documentation
#![allow(clippy::all)]
use std::mem::transmute;

use crate::{events::EventArgs, players::Player, runtime::each_module};

use super::Actor;

#[repr(C)]
pub struct OnPlayerGiveDamageActorArgs {
    player: *const *const std::ffi::c_void,
    actor: *const *const std::ffi::c_void,
    amount: *const f32,
    weapon: *const i32,
    part: *const i32,
}

#[no_mangle]
pub unsafe extern "C" fn OMPRS_OnPlayerGiveDamageActor(
    args: *const EventArgs<OnPlayerGiveDamageActorArgs>,
) {
    each_module(move |mut script| {
        script.on_player_give_damage_actor(
            Player::new(*(*(*args).list).player),
            Actor::new(*(*(*args).list).actor),
            *(*(*args).list).amount,
            *(*(*args).list).weapon,
            transmute(*(*(*args).list).part),
        );
        None
    });
}

#[repr(C)]
pub struct OnActorStreamInArgs {
    actor: *const *const std::ffi::c_void,
    forPlayer: *const *const std::ffi::c_void,
}

#[no_mangle]
pub unsafe extern "C" fn OMPRS_OnActorStreamIn(args: *const EventArgs<OnActorStreamInArgs>) {
    each_module(move |mut script| {
        script.on_actor_stream_in(
            Actor::new(*(*(*args).list).actor),
            Player::new(*(*(*args).list).forPlayer),
        );
        None
    });
}

#[repr(C)]
pub struct OnActorStreamOutArgs {
    actor: *const *const std::ffi::c_void,
    forPlayer: *const *const std::ffi::c_void,
}

#[no_mangle]
pub unsafe extern "C" fn OMPRS_OnActorStreamOut(args: *const EventArgs<OnActorStreamOutArgs>) {
    each_module(move |mut script| {
        script.on_actor_stream_out(
            Actor::new(*(*(*args).list).actor),
            Player::new(*(*(*args).list).forPlayer),
        );
        None
    });
}