From 9c6f49d2ea54cfb05c5f81444619678a68373556 Mon Sep 17 00:00:00 2001 From: Lenheart <947330670@qq.com> Date: Sun, 15 Mar 2026 01:59:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(ObjectConvert):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=94=BB=E5=87=BB=E4=BF=A1=E6=81=AF=E7=9B=B8=E5=85=B3=E4=BC=A4?= =?UTF-8?q?=E5=AE=B3=E7=8E=87=E5=92=8C=E6=9A=B4=E5=87=BB=E7=8E=87=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加多个函数用于获取和设置攻击信息的不同伤害率(对人、建筑、怪物)和暴击率,以及获取伤害反应值。这些函数通过内存操作实现,为战斗系统提供更精细的控制能力。 --- Project/CustomPlugins/lulu/ObjectConvert.nut | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/Project/CustomPlugins/lulu/ObjectConvert.nut b/Project/CustomPlugins/lulu/ObjectConvert.nut index 4049d89..3b4b20b 100644 --- a/Project/CustomPlugins/lulu/ObjectConvert.nut +++ b/Project/CustomPlugins/lulu/ObjectConvert.nut @@ -174,4 +174,87 @@ function sq_SetCurrentAttackInfoChangeStatus(attackInfo, Data1, Data2, Data3) B.writen(Data3, 'i'); B.seek(0); MemoryTool.EncodeMemoryData(AtkC + 0x234, B.readn('i')); +} + +function sq_GetCurrentAttackInfoHumanDamageRate(attackInfo) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local Res = MemoryTool.DecodeMemoryData(AtkC + 0x294); + local B = blob(); + B.writen(Res, 'i'); + B.seek(0); + return B.readn('f'); +} + +function sq_SetCurrentAttackInfoHumanDamageRate(attackInfo, rate) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local B = blob(); + B.writen(rate, 'f'); + B.seek(0); + MemoryTool.EncodeMemoryData(AtkC + 0x294, B.readn('i')); +} + +function sq_GetCurrentAttackInfoFortDamageRate(attackInfo) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local Res = MemoryTool.DecodeMemoryData(AtkC + 0x2A0); + local B = blob(); + B.writen(Res, 'i'); + B.seek(0); + return B.readn('f'); +} + +function sq_SetCurrentAttackInfoFortDamageRate(attackInfo, rate) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local B = blob(); + B.writen(rate, 'f'); + B.seek(0); + MemoryTool.EncodeMemoryData(AtkC + 0x2A0, B.readn('i')); +} + +function sq_GetCurrentAttackInfoMonsterDamageRate(attackInfo) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local Res = MemoryTool.DecodeMemoryData(AtkC + 0x2AC); + local B = blob(); + B.writen(Res, 'i'); + B.seek(0); + return B.readn('f'); +} + +function sq_SetCurrentAttackInfoMonsterDamageRate(attackInfo, rate) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local B = blob(); + B.writen(rate, 'f'); + B.seek(0); + MemoryTool.EncodeMemoryData(AtkC + 0x2AC, B.readn('i')); +} + +function sq_GetCurrentAttackInfoCriticalRate(attackInfo) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local Res = MemoryTool.DecodeMemoryData(AtkC + 0x68); + local B = blob(); + B.writen(Res, 'i'); + B.seek(0); + return B.readn('f'); +} + +function sq_SetCurrentAttackInfoCriticalRate(attackInfo, rate) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local B = blob(); + B.writen(rate, 'f'); + B.seek(0); + MemoryTool.EncodeMemoryData(AtkC + 0x68, B.readn('i')); +} + +function sq_GetCurrentAttackInfoDamageReaction(attackInfo) +{ + local AtkC = L_sq_P2I(attackInfo["__ot"][28259608]); + local Res = MemoryTool.DecodeMemoryData(AtkC + 0x4C); + return Res; } \ No newline at end of file