From ea5d573cde62ff67bef8332f3f62eac1d611d05f Mon Sep 17 00:00:00 2001 From: lenheart Date: Wed, 31 Dec 2025 15:27:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=81=E6=A2=A6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MyProject/A.nut | 19 +- MyProject/修复老技能槽信息.nut | 121 +++++++ MyProject/分级机重写逻辑.nut | 9 +- .../毁梦定制战力系统/毁梦定制战力系统.nut | 333 +++++++++++++++--- _DPS_/_Core/New_Hook.nut | 5 + 5 files changed, 421 insertions(+), 66 deletions(-) create mode 100644 MyProject/修复老技能槽信息.nut diff --git a/MyProject/A.nut b/MyProject/A.nut index d39ce6f..bda1f02 100644 --- a/MyProject/A.nut +++ b/MyProject/A.nut @@ -112,26 +112,9 @@ Gm_InputFunc_Handle["点券"] <- function(SUser, CmdString) { Gm_InputFunc_Handle["test"] <- function(SUser, CmdString) { - +// MoveToCargo(SUser, 1); } - -Timer.SetTimeOut(function() { - - // Haker.LoadHook("0x0850D39C", ["pointer", "int", "bool"], - // function(args) { - // return null; - // }, - // function(args) { - - - // print(SUser.GetCharacName()); - // // return false; - // return null; - // }); - - -}, 1) \ No newline at end of file diff --git a/MyProject/修复老技能槽信息.nut b/MyProject/修复老技能槽信息.nut new file mode 100644 index 0000000..3e25582 --- /dev/null +++ b/MyProject/修复老技能槽信息.nut @@ -0,0 +1,121 @@ +// 定义修复老技能槽信息的函数 +function FixOldSkillSlotInfo() { + Cb_reform_ui_group_no_Leave_Func["月光修复老技能"] <- function(args) { + local skillClassValue = NativePointer(args[1]).sub(0x60).readInt(); + if (skillClassValue == 197) { + NativePointer(args[1]).writeInt(4); + } + return 0; + } + + Cb_get_skillslot_group_Leave_Func["月光修复老技能"] <- function(args) { + local slot = args[1]; + if (slot< 8 || slot >= 198) return -1; + else if (slot >= 160) return 4; + else if (slot >= 122) return 3; + else if (slot >= 84) return 2; + else if (slot >= 46) return 1; + else return 0; + } + + Cb_get_skillslot_no_Leave_Func["月光修复老技能"] <- function(args) { + local thisP = args[0]; + local skillId = args[1]; + local group = args[2]; + local slot = args[3]; + local is_active_skill = args[4]; + + if (!thisP || !NativePointer(thisP).readPointer()) { + return -1; + } + + local buf = Sq_CallFunc(S_Ptr("0x86067DE"), "pointer", ["pointer", "int"], thisP, slot); + if (!buf) { + + return -1; + } + + if (is_active_skill && Sq_CallFunc(S_Ptr("0x8608D58"), "byte", ["pointer", "int"], thisP, skillId)) { + local end = skillId ? 7 : 5; + for (local i = 0; i <= end; ++i) { + if (NativePointer(buf).add(2 * i).readU8() == skillId) { + return i; + } + } + for (local i = 198; i <= 203; ++i) { + if (NativePointer(buf).add(2 * i).readU8() == skillId) { + return i; + } + } + } + local pos = 8 + group * 38; + for (local i = 0; i< 38; ++i) { + if (NativePointer(buf).add(2 * (pos + i)).readU8() == skillId) { + return pos + i; + } + } + return -1; + } + + Cb_get_skillslot_no2_Leave_Func["月光修复老技能"] <- function(args) { + local thisP = args[0]; + local buf = args[1]; + local skillId = args[2]; + local group = args[3]; + local is_active_skill = args[4]; + + if (!thisP || !NativePointer(thisP).readPointer()) { + return -1; + } + + if (is_active_skill) { + local end = skillId ? 7 : 5; + for (local i = 0; i <= end; ++i) { + if (NativePointer(buf).add(2 * i).readU8() == skillId) { + return i; + } + } + for (local i = 198; i <= 203; ++i) { + if (NativePointer(buf).add(2 * i).readU8() == skillId) { + return i; + } + } + } + + local pos = 8 + group * 38; + for (local i = 0; i< 38; ++i) { + if (NativePointer(buf).add(2 * (pos + i)).readU8() == skillId) { + return pos + i; + } + } + return -1; + } + + + NativePointer(0x08604596).writeS8(5); + NativePointer(0x0860459C).writeS8(5); + NativePointer(0x08606A27).writeS8(5); + NativePointer(0x0860795E).writeS8(5); + + NativePointer(0x08608CD5).writeS8(8); + NativePointer(0x08608CCF).writeS8(8); + NativePointer(0x08608969).writeS8(8); + NativePointer(0x08609001).writeS8(8); + + NativePointer(0x08605090).writeUInt(8 + 38 * 4); + NativePointer(0x08605097).writeUInt(8 + 38 * 5); + NativePointer(0x0860514F).writeUInt(8 + 38 * 3); + NativePointer(0x08605156).writeUInt(8 + 38 * 4); + NativePointer(0x0860513F).writeUInt(8 + 38 * 2); + NativePointer(0x08605146).writeUInt(8 + 38 * 3); + NativePointer(0x0860512F).writeUInt(8 + 38 * 1); + NativePointer(0x08605136).writeUInt(8 + 38 * 2); + NativePointer(0x0860511F).writeUInt(8 + 38 * 0); + NativePointer(0x08605126).writeUInt(8 + 38 * 1); + NativePointer(0x0866C6C4).writeUInt(196); +} + +Timer.SetTimeOut(function() { + // 调用函数启用修复 + FixOldSkillSlotInfo(); +}, 1); \ No newline at end of file diff --git a/MyProject/分级机重写逻辑.nut b/MyProject/分级机重写逻辑.nut index 80b4a5d..a24bcdf 100644 --- a/MyProject/分级机重写逻辑.nut +++ b/MyProject/分级机重写逻辑.nut @@ -28,7 +28,6 @@ Cb_MyDisPatcher_DisJointItem_disjoint_Enter_Func["茶服自定义分解机"] <- if (Sq_CallFunc(S_Ptr("0x81424E8"), "int", ["pointer"], v9)) return null; } - ChaFuCustomDecompositionFixFlag = true; //跳过原逻辑 Sq_WriteByteArr(S_Ptr("0x81F92D0"), Haker.AsmGenerateMcd( @@ -42,6 +41,8 @@ Cb_MyDisPatcher_DisJointItem_disjoint_Enter_Func["茶服自定义分解机"] <- try { HandleDisjointRequest(SelfUser, args[1], args[2], args[3], OthersUser, args[5]); } catch (exception){ + print("error:") + print(exception) Sq_CallFunc(S_Ptr("0x0867bf42"), "int", ["pointer", "int", "char"], SelfUser.C_Object, args[3], 19); Sq_CallFunc(S_Ptr("0x0867bf42"), "int", ["pointer", "int", "char"], OthersUser.C_Object, args[3], 19); } @@ -321,10 +322,11 @@ function HandleDisjointRequest(MyUser, EquStol, Inventype, HeadId, ObjUser, Chan // 添加物品到玩家背包 // 参数说明:玩家对象, 物品ID, 数量, 类型(6=直接添加), 物品空间指针, 标志位(0) - local slot = MyUser.GiveItem(itemId, itemCount); + // local slot = MyUser.GiveItem(itemId, itemCount); + local slot = Sq_CallFunc(S_Ptr("0x867B6D4"), "int", ["pointer", "int", "int", "int", "pointer", "int"], MyUser.C_Object, itemId, itemCount, 6, item_space.C_Object, 0); // 将物品信息写入数据包 - PackObject.Put_Short(slot[1]); // 槽位 + PackObject.Put_Short(slot); // 槽位 PackObject.Put_Int(itemId); // 物品ID PackObject.Put_Int(itemCount); // 数量 } @@ -438,7 +440,6 @@ function SetLevelCnt(itemId, equLevel, disjointerLevel) { return ret; } } - // 确保至少返回1个 return baseCount > 0 ? baseCount : 1; } diff --git a/_DPS_/_BuiltProject/毁梦定制战力系统/毁梦定制战力系统.nut b/_DPS_/_BuiltProject/毁梦定制战力系统/毁梦定制战力系统.nut index 94cb0a0..e3b19b6 100644 --- a/_DPS_/_BuiltProject/毁梦定制战力系统/毁梦定制战力系统.nut +++ b/_DPS_/_BuiltProject/毁梦定制战力系统/毁梦定制战力系统.nut @@ -91,6 +91,120 @@ _HM_DQJYHD_ <- "0" function _Dps_JYYJBB2_Main_() { + Cb_History_ItemUp_Func["交易邮件播报"] <- function(SUser, args) { + local reason = args[18]; + if (reason == "1") { + local pvfitem = PvfItem.GetNameById(args[15].tointeger()); + local LoginMsgObj = AdMsg(); + LoginMsgObj.PutType(14); + LoginMsgObj.PutColorString("玩家[", [255, 255, 0]); + LoginMsgObj.PutColorString(SUser.GetCharacName(), [255, 0, 0]); + LoginMsgObj.PutColorString("]", [255, 255, 0]); + LoginMsgObj.PutColorString("获得", [255, 255, 0]); + LoginMsgObj.PutColorString("[" + args[20] + "]", [255, 255, 0]); + LoginMsgObj.PutColorString("交易的道具", [255, 255, 0]); + LoginMsgObj.PutColorString(pvfitem, [255, 255, 0]); + LoginMsgObj.PutColorString(args[17] + "个", [255, 255, 0]); + LoginMsgObj.Finalize(); + World.SendAll(LoginMsgObj.MakePack()); + LoginMsgObj.Delete(); + } + } + + + + + Cb_History_MoneyUp_Func["交易邮件播报"] <- function(SUser, args) { + local reason = args[16]; + if (reason == "1") { + local LoginMsgObj = AdMsg(); + LoginMsgObj.PutType(14); + LoginMsgObj.PutColorString("玩家[", [255, 255, 0]); + LoginMsgObj.PutColorString(SUser.GetCharacName(), [255, 0, 0]); + LoginMsgObj.PutColorString("]", [255, 255, 0]); + LoginMsgObj.PutColorString("获得", [255, 255, 0]); + LoginMsgObj.PutColorString("[" + getFirstBracketContent(args[17]) + "]", [255, 255, 0]); + LoginMsgObj.PutColorString("交易的", [255, 255, 0]); + LoginMsgObj.PutColorString(args[15], [255, 255, 0]); + LoginMsgObj.PutColorString("金币", [255, 255, 0]); + LoginMsgObj.Finalize(); + World.SendAll(LoginMsgObj.MakePack()); + LoginMsgObj.Delete(); + } + } + + Cb_MailBox11_Send_Leave_Func["交易邮件播报"] <- function(args) { + local jewelSocketID = NativePointer(args[0]).readPointer(); + local SUser = User(jewelSocketID); + local name = SUser.GetCharacName(); + local receive_name = NativePointer(args[1]).add(17).readUtf8String(); + local send_gold_count = NativePointer(args[1]).add(46).readU32(); + local send_item_id = NativePointer(args[1]).add(57).readU32(); + local send_item_count = NativePointer(args[1]).add(61).readU32(); //发送道具数量 + local item_name; + if (send_item_id > 0) { + item_name = PvfItem.GetNameById(send_item_id); + } + // 发送世界公告播报 + if (send_gold_count > 0 && send_item_id > 0) { + local LoginMsgObj = AdMsg(); + LoginMsgObj.PutType(14); + LoginMsgObj.PutColorString("玩家[", [255, 255, 0]); + LoginMsgObj.PutColorString(SUser.GetCharacName(), [0, 255, 0]); + LoginMsgObj.PutColorString("]", [255, 255, 0]); + LoginMsgObj.PutColorString("刚刚通过邮件向", [255, 255, 0]); + LoginMsgObj.PutColorString("[" + receive_name + "]", [0, 255, 0]); + LoginMsgObj.PutColorString("发送了", [255, 255, 0]); + LoginMsgObj.PutColorString("金币*" + send_gold_count, [255, 170, 0]); + LoginMsgObj.PutColorString("和", [255, 255, 0]); + LoginMsgObj.PutColorString(send_item_count + "个", [255, 255, 0]); + LoginMsgObj.PutColorString(item_name, [255, 255, 0]); + LoginMsgObj.Finalize(); + World.SendAll(LoginMsgObj.MakePack()); + LoginMsgObj.Delete(); + } else if (send_gold_count > 0) { + local LoginMsgObj = AdMsg(); + LoginMsgObj.PutType(14); + LoginMsgObj.PutColorString("玩家[", [255, 255, 0]); + LoginMsgObj.PutColorString(SUser.GetCharacName(), [0, 255, 0]); + LoginMsgObj.PutColorString("]", [255, 255, 0]); + LoginMsgObj.PutColorString("刚刚通过邮件向", [255, 255, 0]); + LoginMsgObj.PutColorString("[" + receive_name + "]", [0, 255, 0]); + LoginMsgObj.PutColorString("发送了", [255, 255, 0]); + LoginMsgObj.PutColorString("金币*" + send_gold_count, [255, 170, 0]); + LoginMsgObj.Finalize(); + World.SendAll(LoginMsgObj.MakePack()); + LoginMsgObj.Delete(); + } else if (send_item_id > 0) { + local LoginMsgObj = AdMsg(); + LoginMsgObj.PutType(14); + LoginMsgObj.PutColorString("玩家[", [255, 255, 0]); + LoginMsgObj.PutColorString(SUser.GetCharacName(), [0, 255, 0]); + LoginMsgObj.PutColorString("]", [255, 255, 0]); + LoginMsgObj.PutColorString("刚刚通过邮件向", [255, 255, 0]); + LoginMsgObj.PutColorString("[" + receive_name + "]", [0, 255, 0]); + LoginMsgObj.PutColorString("发送了", [255, 255, 0]); + LoginMsgObj.PutColorString(send_item_count + "个", [255, 255, 0]); + LoginMsgObj.PutColorString(item_name, [255, 255, 0]); + LoginMsgObj.Finalize(); + World.SendAll(LoginMsgObj.MakePack()); + LoginMsgObj.Delete(); + } else { + local LoginMsgObj = AdMsg(); + LoginMsgObj.PutType(14); + LoginMsgObj.PutColorString("玩家[", [255, 255, 0]); + LoginMsgObj.PutColorString(SUser.GetCharacName(), [0, 255, 0]); + LoginMsgObj.PutColorString("]", [255, 255, 0]); + LoginMsgObj.PutColorString("刚刚通过邮件向", [255, 255, 0]); + LoginMsgObj.PutColorString("[" + receive_name + "]", [0, 255, 0]); + LoginMsgObj.PutColorString("发送了一封邮件", [255, 255, 0]); + LoginMsgObj.Finalize(); + World.SendAll(LoginMsgObj.MakePack()); + LoginMsgObj.Delete(); + } + } + + Cb_History_ItemUp_Func["交易邮件播报"] <- function(SUser, args) { local reason = args[18]; if (reason == "1" || reason == "17") { @@ -161,55 +275,55 @@ function _Dps_JYYJBB2_Main_() { Cb_Inter_AuctionResultBidding_Leave_Func["交易播报2"] <- function(args) { - Timer.SetTimeOut(function() { + Timer.SetTimeOut(function() { - local username = User(args[1]).GetCharacName(); - local id = NativePointer(args[2]).add(14).readInt(); + local username = User(args[1]).GetCharacName(); + local id = NativePointer(args[2]).add(14).readInt(); - local CheckSql = "SELECT item_id,unit_price,owner_id FROM taiwan_cain_auction_gold.auction_history_" + getYearMonth() + " where auction_id = " + id + ";"; - //从池子拿连接 - local SqlObj = MysqlPool.GetInstance().GetConnect(); - local Ret = SqlObj.Select(CheckSql, ["int", "int", "int"]); + local CheckSql = "SELECT item_id,unit_price,owner_id FROM taiwan_cain_auction_gold.auction_history_" + getYearMonth() + " where auction_id = " + id + ";"; + //从池子拿连接 + local SqlObj = MysqlPool.GetInstance().GetConnect(); + local Ret = SqlObj.Select(CheckSql, ["int", "int", "int"]); + + + if (Ret == null || Ret.len() == 0) { + print(123); + MysqlPool.GetInstance().PutConnect(SqlObj); + return; + + } + + + local itemId = Ret[0][0]; + local unitPrice = Ret[0][1]; + local maijiacid = Ret[0][2]; + + if (maijiacid == User(args[1]).GetCID()) { + print(321); + MysqlPool.GetInstance().PutConnect(SqlObj); + return; + + } + + + local CheckSql2 = "SELECT price FROM taiwan_cain_auction_gold.auction_history_buyer_" + getYearMonth() + " ORDER BY occ_time DESC LIMIT 1;"; + + local Ret2 = SqlObj.Select(CheckSql2, ["int"]); + + local price = Ret2[0][0]; + + + + local CheckSql3 = "SELECT charac_name FROM taiwan_cain.charac_info where charac_no = " + maijiacid; + + local Ret3 = SqlObj.Select(CheckSql3, ["string"]); + + local mjname = Ret3[0][0]; - if (Ret == null || Ret.len() == 0) { - print(123); MysqlPool.GetInstance().PutConnect(SqlObj); - return; - } - - - local itemId = Ret[0][0]; - local unitPrice = Ret[0][1]; - local maijiacid = Ret[0][2]; - - if (maijiacid == User(args[1]).GetCID()) { - print(321); - MysqlPool.GetInstance().PutConnect(SqlObj); - return; - - } - - - local CheckSql2 = "SELECT price FROM taiwan_cain_auction_gold.auction_history_buyer_" + getYearMonth() + " ORDER BY occ_time DESC LIMIT 1;"; - - local Ret2 = SqlObj.Select(CheckSql2, ["int"]); - - local price = Ret2[0][0]; - - - - local CheckSql3 = "SELECT charac_name FROM taiwan_cain.charac_info where charac_no = " + maijiacid; - - local Ret3 = SqlObj.Select(CheckSql3, ["string"]); - - local mjname = Ret3[0][0]; - - - MysqlPool.GetInstance().PutConnect(SqlObj); - - World.SendNotiPacketMessage(format("玩家[%s]在拍卖行用[%d]金币从[%s]手里购得[%s]物品", username, price, mjname, PvfItem.GetNameById(itemId)), 14); + World.SendNotiPacketMessage(format("玩家[%s]在拍卖行用[%d]金币从[%s]手里购得[%s]物品", username, price, mjname, PvfItem.GetNameById(itemId)), 14); }, 100); @@ -262,7 +376,7 @@ function _Dps_JYYJBB2_Main_() { local ItemType = Sq_CallFunc(S_Ptr("0x085018D2"), "int", ["pointer", "int"], InvenObj.C_Object, item_id); local pvfitem = PvfItem.GetPvfItemById(item_id); // 史诗装备记录 - if (pvfitem.GetRarity() == 4 /*&& type == 4 */&& ItemType == 1) { + if (pvfitem.GetRarity() == 4 /*&& type == 4 */ && ItemType == 1) { local MsgObj = AdMsg(); MsgObj.PutType(14); MsgObj.PutColorString("玩家[" + SUser.GetCharacName() + "]于", [255, 220, 0]); @@ -276,6 +390,35 @@ function _Dps_JYYJBB2_Main_() { } } + Cb_DisPatcher_MoveItem_Enter_Func["毁梦定制一件入库"] <- function(args) { + local ParamBase = NativePointer(args[2]); + if (!ParamBase) return null; + + // 读取 type 参数(ParamBase + 16 位置) + local Type = ParamBase.add(16).readU8(); + + if (Type == 98) { + // 移动到个人仓库 + local SUser = User(args[1]); + if (SUser) { + MoveToCargo(SUser, 0); + } + //执行原函数会判断是否等于0x7FFFFFFF 所以这里写0以后 原函数条件不成立 会return 阻止原函数执行 + ParamBase.add(4).writeInt(0); + } else if (Type == 99) { + // 移动到账号仓库 + local SUser = User(args[1]); + if (SUser) { + MoveToCargo(SUser, 1); + } + //执行原函数会判断是否等于0x7FFFFFFF 所以这里写0以后 原函数条件不成立 会return 阻止原函数执行 + ParamBase.add(4).writeInt(0); + } + + // 其他情况继续执行原逻辑 + return null; + } + function getYearMonth() { local now = date(); return format("%d%02d", now.year, now.month + 1); @@ -317,6 +460,108 @@ function getContentBetweenDelimiters(str, delimiter = "\"") { + +// 移动物品到仓库的Hook实现 +// type: 0-个人仓库 1-账号仓库 +function MoveToCargo(SUser, type) { + // slot: 3-8快捷栏 9-56线名栏 57-104消耗品栏 105-152材料栏 153-200任务栏 201-248副职业栏 249-311徽章栏 + local Cargo = null; + local InvenObj = SUser.GetInven(); + if (!InvenObj) return; + + // 根据类型选择仓库 + if (type == 0) { + // 获取个人仓库 + local CargoPtr = Sq_CallFunc(S_Ptr("0x8151A94"), "pointer", ["pointer"], SUser.C_Object); + if (!CargoPtr) return; + Cargo = NativePointer(CargoPtr); + } else if (type == 1) { + // 获取账号仓库 + local CargoObj = SUser.GetAccountCargo(); + if (!CargoObj) return; + Cargo = NativePointer(CargoObj.C_Object); + } else { + return; + } + + // 遍历 57-152 槽位(消耗品栏和材料栏) + for (local slot = 57; slot <= 152; slot++) { + // 获取背包对应slot的物品 + local SlotItem = InvenObj.GetSlot(1, slot); + if (!SlotItem || SlotItem.IsEmpty) continue; + + // 获取物品ID + local ItemId = SlotItem.GetIndex(); + if (ItemId <= 0) continue; + + local IsExist = -1; + local CargoInvenItemPtr = null; + local CargoItemId = 0; + + // 根据仓库类型检查物品是否存在 + if (type == 0) { + // 个人仓库检查 + IsExist = Sq_CallFunc(S_Ptr("0x850BC14"), "int", ["pointer", "int"], Cargo.C_Object, ItemId); + if (IsExist == -1) continue; + + // 获取个人仓库中物品的指针 + local CargoItemListPtr = NativePointer(Cargo.add(4).readPointer()); + CargoInvenItemPtr = CargoItemListPtr.add(61 * IsExist); + CargoItemId = CargoItemListPtr.add(61 * IsExist + 2).readU32(); + } else { + // 账号仓库检查 + IsExist = Sq_CallFunc(S_Ptr("0x828A61A"), "int", ["pointer", "int"], Cargo.C_Object, ItemId); + if (IsExist == -1) continue; + + // 获取账号仓库中物品的指针 + CargoInvenItemPtr = Cargo.add(61 * IsExist); + CargoItemId = CargoInvenItemPtr.add(6).readU32(); + } + + // 获取物品数量 + local CargoItemCount = Sq_CallFunc(S_Ptr("0x80F783A"), "int", ["pointer"], CargoInvenItemPtr.C_Object); + local SlotItemCount = SlotItem.GetAdd_Info(); + + print("CargoItemCount: " + CargoItemCount + " SlotItemCount: " + SlotItemCount); + // 检查是否超过物品堆叠上限 0 超过 1没超过 + local IsMax = Sq_CallFunc(S_Ptr("0x8501A79"), "int", ["int", "int"], CargoItemId, CargoItemCount + SlotItemCount); + if (IsMax == 0) { + // 超过堆叠上限,跳过 + continue; + } + + // 移动物品到仓库 + local Result = -1; + if (type == 0) { + // 个人仓库插入 + Result = Sq_CallFunc(S_Ptr("0x850B400"), "int", ["pointer", "pointer"], Cargo.C_Object, SlotItem.C_Object); + } else { + // 账号仓库插入 + Result = Sq_CallFunc(S_Ptr("0x8289c82"), "int", ["pointer", "pointer", "int"], Cargo.C_Object, SlotItem.C_Object, IsExist); + } + + if (Result >= 0) { + // 删除背包物品 + Sq_CallFunc(S_Ptr("0x080CB7D8"), "int", ["pointer"], SlotItem.C_Object); + // 更新背包 + SUser.SendUpdateItemList(1, 0, slot); + + // 更新仓库显示 + if (type == 0) { + // 更新个人仓库 + Sq_CallFunc(S_Ptr("0x865DB6C"), "int", ["pointer", "int"], SUser.C_Object, 2); + } else { + // 更新账号仓库 + local CargoObj = SUser.GetAccountCargo(); + if (CargoObj) { + CargoObj.SendItemList(); + } + } + } + } +} + + Timer.SetTimeOut(function() { getroottable()._DreamDestroyerCustomizedCombatPowerSystemC_ <- DreamDestroyerCustomizedCombatPowerSystemC(); diff --git a/_DPS_/_Core/New_Hook.nut b/_DPS_/_Core/New_Hook.nut index 21f9b83..4ca9a50 100644 --- a/_DPS_/_Core/New_Hook.nut +++ b/_DPS_/_Core/New_Hook.nut @@ -683,6 +683,11 @@ Cb_MyDisPatcher_DisJointItem_disjoint_Leave_Func <- {}; _Hook_Register_Currency_Func_("0x81f92ca", ["pointer", "int", "int", "int", "pointer", "int", "short"], Cb_MyDisPatcher_DisJointItem_disjoint_Enter_Func, Cb_MyDisPatcher_DisJointItem_disjoint_Leave_Func); +//移动物品 +Cb_DisPatcher_MoveItem_Enter_Func <- {}; +Cb_DisPatcher_MoveItem_Leave_Func <- {}; +_Hook_Register_Currency_Func_("0x81C5B76", ["pointer", "pointer", "pointer", "void"],Cb_DisPatcher_MoveItem_Enter_Func, Cb_DisPatcher_MoveItem_Leave_Func); + function _Hook_Register_Currency_DelayHook_() { //五国时的热点函数 //获取Item Rarity