diff --git a/omp-gdk/src/scripting/actors/events.rs b/omp-gdk/src/scripting/actors/events.rs index 46c0f0e..8edd49f 100644 --- a/omp-gdk/src/scripting/actors/events.rs +++ b/omp-gdk/src/scripting/actors/events.rs @@ -1,5 +1,5 @@ #![allow(clippy::all)] -use std::mem::transmute; +use std::{mem::transmute, rc::Rc}; use crate::{events::EventArgs, players::Player}; @@ -23,8 +23,9 @@ pub unsafe extern "C" fn OMPRS_OnPlayerGiveDamageActor( .unwrap() .as_mut() .unwrap(); - for script in scripts.iter_mut() { - script.borrow_mut().on_player_give_damage_actor( + for script in scripts.iter() { + let script = &mut *(*Rc::as_ptr(script)).as_ptr(); + script.on_player_give_damage_actor( Player::new(*(*(*args).list).player), Actor::new(*(*(*args).list).actor), *(*(*args).list).amount, @@ -47,8 +48,9 @@ pub unsafe extern "C" fn OMPRS_OnActorStreamIn(args: *const EventArgs) { .unwrap() .as_mut() .unwrap(); - for script in scripts.iter_mut() { - script.borrow_mut().on_tick(*(*(*args).list).elapsed); + for script in scripts.iter() { + let script = &mut *(*Rc::as_ptr(script)).as_ptr(); + script.on_tick(*(*(*args).list).elapsed); } } @@ -58,8 +61,9 @@ pub unsafe extern "C" fn OMPRS_OnRconLoginAttempt( .as_mut() .unwrap(); let mut ret = false; - for script in scripts.iter_mut() { - ret = script.borrow_mut().on_rcon_login_attempt( + for script in scripts.iter() { + let script = &mut *(*Rc::as_ptr(script)).as_ptr(); + ret = script.on_rcon_login_attempt( (*(*(*args).list).address).get_data(), (*(*(*args).list).password).get_data(), *(*(*args).list).success, diff --git a/omp-gdk/src/scripting/dialogs/events.rs b/omp-gdk/src/scripting/dialogs/events.rs index 63c4947..7f87bbc 100644 --- a/omp-gdk/src/scripting/dialogs/events.rs +++ b/omp-gdk/src/scripting/dialogs/events.rs @@ -1,6 +1,6 @@ #![allow(clippy::all)] use crate::{events::EventArgs, players::Player, types::stringview::StringView}; -use std::mem::transmute; +use std::{mem::transmute, rc::Rc}; #[repr(C)] pub struct OnDialogResponseArgs { @@ -18,8 +18,9 @@ pub unsafe extern "C" fn OMPRS_OnDialogResponse(args: *const EventArgs