Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type OnLevelAddedPlayerFn = fn(*mut LevelC, *mut PlayerC) -> bool;
- struct FunctionPtrAddress {
- addy: OnLevelAddedPlayerFn
- }
- lazy_static! {
- static ref fn_ptrs: FunctionPtrAddress = FunctionPtrAddress {
- addy: unsafe {
- std::mem::transmute::<usize, OnLevelAddedPlayerFn>(0x10111790)
- }
- };
- }
- static_detours! {
- struct CreateMoveDetour: fn(*mut LevelC, *mut PlayerC) -> bool;
- }
- pub fn init_hooks() {
- let closure_for_on_level_added_player = |level, player| {
- ui::toast("Not original", "lol");
- return (fn_ptrs.addy)(level, player);
- };
- let mut hook = unsafe {
- CreateMoveDetour.initialize(on_level_added_player_hook, closure_for_on_level_added_player).unwrap()
- };
- unsafe {
- hook.enable().unwrap();
- }
- on_level_added_player_hook(std::ptr::null_mut(), std::ptr::null_mut());
- hook.call(std::ptr::null_mut(), std::ptr::null_mut());
- }
- fn on_level_added_player_hook(level: *mut LevelC, player: *mut PlayerC) -> bool {
- ui::toast("Original", "lol");
- return (fn_ptrs.addy)(level, player);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement