Rindro-Sqr/Base/_Tool/HookMap.nut

44 lines
1.4 KiB
Plaintext

/*
文件名:HookMap.nut
路径:Base/_Tool/HookMap.nut
创建日期:2025-12-12 22:40
文件用途:
*/
//通用HOOK入口函数
function _Hook_Enter_Currency_Func_(args, TableObj) {
local Ret = null;
foreach(Func in TableObj) {
local Buf = Func(args);
if (Buf != null) Ret = Buf;
}
return Ret;
}
//通用HOOK出口函数
function _Hook_Leave_Currency_Func_(args, TableObj) {
local Ret = null;
foreach(Func in TableObj) {
local Buf = Func(args);
if (Buf != null) Ret = Buf;
}
return Ret;
}
//通用HOOK注册全局临时表名
_Hook_Register_Currency_TableName_ <- null;
//通用注册HOOK函数
function _Hook_Register_Currency_Func_(AddressString, ArgRetArr, TableName) {
getroottable().rawset(TableName + "Enter_Func", {});
getroottable().rawset(TableName + "Leave_Func", {});
_Hook_Register_Currency_TableName_ = TableName;
Rindro_Haker.LoadHook(AddressString, ArgRetArr,
function(args) {
return _Hook_Enter_Currency_Func_(args, getroottable()[getroottable()._Hook_Register_Currency_TableName_ + "Enter_Func"]);
},
function(args) {
return _Hook_Leave_Currency_Func_(args, getroottable()[getroottable()._Hook_Register_Currency_TableName_ + "Leave_Func"]);
}
);
}
// _Hook_Register_Currency_Func_(0xE6E070, ["int", "int", "int", "int"], "Cb_OpenWindow_");