/* 文件名:Hacker_Class.nut 路径:Base/_Tool/Hacker_Class.nut 创建日期:2024-09-24 06:25 文件用途: */ class _Rindro_Hacker { HookTable = null; constructor() { HookTable = {}; } function UnLoadHook(AddressStr) { Sq_DeHookFunc(HookTable[AddressStr]); } function LoadHook(AddressStr, ArgumentArr, EnterFunc, LeaveFunc) { //如果已经HOOK过 需要先卸载原来的HOOK if (HookTable.rawin(AddressStr)) { UnLoadHook(AddressStr); print("地址: " + AddressStr + " 已经装载了Hook,本次操作将会卸载之前的Hook在执行。") } local Controler = Sq_HookFunc(AddressStr, ArgumentArr, EnterFunc, LeaveFunc); HookTable.rawset(AddressStr, Controler); } } //初始化Hacker if (!(getroottable().rawin("Rindro_Haker"))) Rindro_Haker <- _Rindro_Hacker(); //重选角色时触发的回调函数(进入赛利亚房间) OnSetCharacter_Control <- {} Rindro_Haker.LoadHook(0x674350, ["pointer", "int"], function(args) { foreach(Func in OnSetCharacter_Control) { Func(); } return null; }, function(args) { return null; });