/* 文件名: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; }); OnSetCharacter_Control.MarrySystem <- function() { if (getroottable().rawin("Yosin_14SkillXpos1") && getroottable().rawin("Yosin_14SkillXpos2") && getroottable().rawin("Yosin_14SkillYpos1") && getroottable().rawin("Yosin_14SkillYpos2") ) { for (local i = 6; i< 7; i++) { L_sq_WA(L_sq_RA(L_sq_RA(0x01ADE0CC) + 0x30 + (i * 0x4)) + 0x14, Yosin_14SkillXpos1 + (i * 31)); L_sq_WA(L_sq_RA(L_sq_RA(0x01ADE0CC) + 0x30 + (i * 0x4)) + 0x18, Yosin_14SkillYpos1); L_sq_WA(L_sq_RA(L_sq_RA(0x01ADE0CC) + 0x60 + (i * 0x4)) + 0x14, Yosin_14SkillXpos2 + (i * 31)); L_sq_WA(L_sq_RA(L_sq_RA(0x01ADE0CC) + 0x60 + (i * 0x4)) + 0x18, Yosin_14SkillYpos2); } } };