装备镶嵌修复
This commit is contained in:
@@ -972,6 +972,35 @@ static SQInteger L_GetTimestampString(HSQUIRRELVM v)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#define NSUBHOOK_INIT(func, addr) \
|
||||
fn##func func = (fn##func)addr; \
|
||||
FuncHook h##func
|
||||
#define NSUBHOOK_SETUP(func) h##func.Hook((void **)&func, (void *)_##func)
|
||||
|
||||
typedef int (*fnInven_Item_reset)(void *a1);
|
||||
|
||||
typedef void *(*fnInven_Item_setcopy)(void *a1, void *a2);
|
||||
NSUBHOOK_INIT(Inven_Item_reset, 0x080CB7D8);
|
||||
int _Inven_Item_reset(void *item)
|
||||
{
|
||||
int ret = Inven_Item_reset(item);
|
||||
memset(item, 0, 61);
|
||||
return ret;
|
||||
}
|
||||
NSUBHOOK_INIT(Inven_Item_setcopy, 0x0814A62E);
|
||||
void *_Inven_Item_setcopy(void *item, void *item2)
|
||||
{
|
||||
Inven_Item_setcopy(item, item2);
|
||||
memcpy(item, item2, 61);
|
||||
return item2;
|
||||
}
|
||||
static SQInteger L_HookEquimentUseJewel(HSQUIRRELVM v)
|
||||
{
|
||||
NSUBHOOK_SETUP(Inven_Item_setcopy);
|
||||
NSUBHOOK_SETUP(Inven_Item_reset);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void RegisterGame(HSQUIRRELVM v)
|
||||
{
|
||||
getConfigPath(szGamePath, sizeof(szGamePath));
|
||||
@@ -1040,4 +1069,6 @@ static void RegisterGame(HSQUIRRELVM v)
|
||||
register_World_func(v, OutPutTable, _SC("Sq_OutPutTable"));
|
||||
// 开启自动热重载
|
||||
register_World_func(v, AutoReload, _SC("Sq_AutoReload"));
|
||||
// Hook装备镶嵌
|
||||
register_World_func(v, L_HookEquimentUseJewel, _SC("L_HookEquimentUseJewel"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user