DP-S-Script/Dps_C/New_Hook.nut

109 lines
4.6 KiB
Plaintext

/*
文件名:New_Hook.nut
路径:Dps_A/New_Hook.nut
创建日期:2024-09-23 20:15
文件用途:后续新增的玩家需求的HOOK
*/
//通用HOOK入口函数
function _Hook_Enter_Currency_Func_(args, TableObj) {
local Ret = null;
foreach(Func in TableObj) {
local Buf = Func(args);
if (Buf) 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) Ret = Buf;
}
return Ret;
}
//通用注册HOOK函数
function _Hook_Register_Currency_Func_(AddressString, ArgRetArr, EnterTable, LeaveTable) {
Haker.LoadHook(AddressString, ArgRetArr,
function(args) {
return _Hook_Enter_Currency_Func_(args, EnterTable);
},
function(args) {
return _Hook_Leave_Currency_Func_(args, LeaveTable);
}
);
}
//玩家新增道具时
Cb_User_Insert_Item_Enter_Func <- {};
Cb_User_Insert_Item_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x8502D86", ["pointer", "pointer", "int", "int", "int", "int", "int", "int", "int", "int", "int", "int", "int", "int", "int", "char", "int", "char", "char", "int"], Cb_User_Insert_Item_Enter_Func, Cb_User_Insert_Item_Leave_Func);
//玩家捡起道具
Cb_User_Get_Item_Enter_Func <- {};
Cb_User_Get_Item_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x85B949C", ["pointer", "pointer", "int", "int", "int"], Cb_User_Get_Item_Enter_Func, Cb_User_Get_Item_Leave_Func);
//服务器Chat日志HOOK
Cb_Server_Chat_Log_Enter_Func <- {};
Cb_Server_Chat_Log_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x86C9638", ["pointer", "pointer", "char", "string", "char"], Cb_Server_Chat_Log_Enter_Func, Cb_Server_Chat_Log_Leave_Func);
//玩家上线设置IP
Cb_User_Set_WebAddress_Enter_Func <- {};
Cb_User_Set_WebAddress_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x84EC918", ["pointer", "pointer", "pointer"], Cb_User_Set_WebAddress_Enter_Func, Cb_User_Set_WebAddress_Leave_Func);
//服务端关闭执行函数
Cb_Server_Close_Enter_Func <- {};
Cb_Server_Close_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x829F28B", ["pointer", "pointer"], Cb_Server_Close_Enter_Func, Cb_Server_Close_Leave_Func);
//检查地下城的状况
Cb_CheckInoutConditionDungeon_Enter_Func <- {};
Cb_CheckInoutConditionDungeon_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x85ABC80", ["pointer", "pointer", "int", "int"], Cb_CheckInoutConditionDungeon_Enter_Func, Cb_CheckInoutConditionDungeon_Leave_Func);
//地下城现场杀死地狱党组怪物Cnt
Cb_Field_KillHellPartyGroupMonsterCnt_Enter_Func <- {};
Cb_Field_KillHellPartyGroupMonsterCnt_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x830D704", ["pointer", "pointer", "pointer", "bool"], Cb_Field_KillHellPartyGroupMonsterCnt_Enter_Func, Cb_Field_KillHellPartyGroupMonsterCnt_Leave_Func);
//经验收益
Cb_Gain_Exp_Sp_Enter_Func <- {};
Cb_Gain_Exp_Sp_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x866A3FE", ["pointer", "int", "int", "int", "int", "int", "char"], Cb_Gain_Exp_Sp_Enter_Func, Cb_Gain_Exp_Sp_Leave_Func);
//货币收益
Cb_Gain_Money_Enter_Func <- {};
Cb_Gain_Money_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x84FF29C", ["int", "int", "char", "int", "int"], Cb_Gain_Money_Enter_Func, Cb_Gain_Money_Leave_Func);
//GetItem检查错误
Cb_GetItem_Check_Error_Enter_Func <- {};
Cb_GetItem_Check_Error_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x81C35AC", ["pointer", "pointer", "pointer", "int"], Cb_GetItem_Check_Error_Enter_Func, Cb_GetItem_Check_Error_Leave_Func);
//队伍清除副本
Cb_ClearDungeon_Enter_Func <- {};
Cb_ClearDungeon_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x85a9330", ["pointer", "void"], Cb_ClearDungeon_Enter_Func, Cb_ClearDungeon_Leave_Func);
//检查选择进入副本时状态
Cb_SelectDungeon_Check_Error_Enter_Func <- {};
Cb_SelectDungeon_Check_Error_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x81C7F32", ["pointer", "pointer", "pointer", "int"], Cb_SelectDungeon_Check_Error_Enter_Func, Cb_SelectDungeon_Check_Error_Leave_Func);
//切换装备
Cb_CInventory_ChangeEquip_Enter_Func <- {};
Cb_CInventory_ChangeEquip_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x84FC37E", ["pointer", "int", "pointer", "int"], Cb_CInventory_ChangeEquip_Enter_Func, Cb_CInventory_ChangeEquip_Leave_Func);
//获取通关时间回调
Cb_CParty_SetBestClearTime_Enter_Func <- {};
Cb_CParty_SetBestClearTime_Leave_Func <- {};
_Hook_Register_Currency_Func_("0x85BE178", ["pointer", "char", "int", "int", "bool"], Cb_CParty_SetBestClearTime_Enter_Func, Cb_CParty_SetBestClearTime_Leave_Func);