diff --git a/src/utils/hook.hpp b/src/utils/hook.hpp index 7e2f89a..2bb5ea9 100644 --- a/src/utils/hook.hpp +++ b/src/utils/hook.hpp @@ -99,7 +99,25 @@ namespace utils::hook template T invoke(Args... args) { - return static_cast(this->get_original())(args...); + return static_cast(this->get_original())(args...); + } + + template + T invoke_pascal(Args... args) + { + return static_cast(this->get_original())(args...); + } + + template + T invoke_this(Args... args) + { + return static_cast(this->get_original())(args...); + } + + template + T invoke_fast(Args... args) + { + return static_cast(this->get_original())(args...); } [[nodiscard]] void* get_original() const; @@ -153,15 +171,63 @@ namespace utils::hook return set(reinterpret_cast(place), value); } + template + static T get(void* place) + { + return *static_cast(place); + } + + template + static T get(const size_t place) + { + return get(reinterpret_cast(place)); + } + template static T invoke(size_t func, Args... args) { - return reinterpret_cast(func)(args...); + return reinterpret_cast(func)(args...); } template static T invoke(void* func, Args... args) { - return static_cast(func)(args...); + return static_cast(func)(args...); + } + + template + static T invoke_pascal(size_t func, Args... args) + { + return reinterpret_cast(func)(args...); + } + + template + static T invoke_pascal(void* func, Args... args) + { + return static_cast(func)(args...); + } + + template + static T invoke_this(size_t func, Args... args) + { + return reinterpret_cast(func)(args...); + } + + template + static T invoke_this(void* func, Args... args) + { + return static_cast(func)(args...); + } + + template + static T invoke_fast(size_t func, Args... args) + { + return reinterpret_cast(func)(args...); + } + + template + static T invoke_fast(void* func, Args... args) + { + return static_cast(func)(args...); } } \ No newline at end of file