template <typename type, typename... Args> __forceinline type _vcall(void* base, int index, Args... args) {
return ((type(__stdcall*)(void*, Args...))(*(uintptr_t**)base)[index])(base, Args(args)...);
}
template <typename type, typename... Args> __forceinline type _call(uintptr_t address, Args... args) {
return ((type(__stdcall*)(Args...))address)(Args(args)...);
}
struct IActor
{
IItem* GetCurrentItem(bool includeVehicle) {
return _vcall<IItem*>(this, 57, includeVehicle);
}
};
void* CryMalloc(size_t _Size) {
return _call<void*>(0x1400A2F80, _Size);
}