/* 文件名:CharacterInfoData.nut 路径:Base/_Z_Data/CharacterInfoData.nut 创建日期:2024-09-03 11:34 文件用途:角色信息数据 */ //读取属性数据 function Lenheart_Character_GetAttribute(Address) { //传入读传入不传读自己 local ObjectAddress = Address; if (ObjectAddress == null) ObjectAddress = L_sq_RA(0x1AB7CDC); if (!ObjectAddress) return; local Info = {}; //当前HP Info.CurHp <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x2BEC); //总HP Info.MaxHp <- L_sq_RA(ObjectAddress + 0x36A0); //当前MP Info.CurMp <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x2BF8); //总MP Info.MaxMp <- L_sq_RA(ObjectAddress + 0x36A4); //力量 Info.Strength <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x2364); //智力 Info.Intellect <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x2394); //体力 Info.Vitality <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x237C); //精神 Info.Spirit <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x23AC); //物理攻击 (没读武器精通) Info.PhysicalAttack <- (MemoryTool.DecodeMemoryData(ObjectAddress + 0x1E54) * (Info.Strength.tofloat() * 0.004 + 1)).tointeger() + MemoryTool.DecodeMemoryData(ObjectAddress + 0x1EB4); //魔法攻击 Info.MagicalAttack <- (MemoryTool.DecodeMemoryData(ObjectAddress + 0x1E84) * (Info.Intellect.tofloat() * 0.004 + 1)).tointeger() + MemoryTool.DecodeMemoryData(ObjectAddress + 0x1ED8); //独立攻击力 //TODO 需要加上成长独立攻击力 需要服务端发送给我 Info.IndependentAttack <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x22C8) + MemoryTool.DecodeMemoryData(ObjectAddress + 0x22F8); //物理防御 Info.PhysicalDefend <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x273C); //魔法防御 Info.MagicalDefend <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x276C); //物理暴击 Info.PhysicalCrit <- MemoryTool.DecodeMemoryDataF(ObjectAddress + 0x1F14); //魔法暴击 Info.MagicalCrit <- MemoryTool.DecodeMemoryDataF(ObjectAddress + 0x1F20); //攻击速度 Info.AttackSpeed <- (MemoryTool.DecodeMemoryDataF(ObjectAddress + 0x2688) - 1.0) * 100.0; //释放速度 Info.ReleaseSpeed <- (MemoryTool.DecodeMemoryDataF(ObjectAddress + 0x26A0) - 1.0) * 100.0; //移动速度 Info.MoveSpeed <- (MemoryTool.DecodeMemoryDataF(ObjectAddress + 0x2670) - 1.0) * 100.0; //抗魔值 local Kbuf = 0; for (local i = 1; i< 13; ++i) { local EquOffset = Rindro_GetEquAddr(i); local AbAddress = L_sq_RA(ObjectAddress + EquOffset); if (AbAddress) { Kbuf += MemoryTool.DecodeMemoryData(AbAddress + 0xAD4); } } Info.AntiMagic <- Kbuf; //命中率 Info.HitRate <- MemoryTool.DecodeMemoryDataF(ObjectAddress + 0x1F50); //闪避率 Info.DodgeRate <- MemoryTool.DecodeMemoryDataF(ObjectAddress + 0x1C50); //HP回复量 Info.HPRecovery <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1D64) * 1.6; //MP回复量 Info.MPRecovery <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1D7C) * 7.2; //僵直度 Info.StunRate <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1DF4); //硬直 Info.StunResist <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1DDC); //火属性强化 Info.FireStrength <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1B54); //冰属性强化 Info.IceStrength <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1B60); //光属性强化 Info.LightStrength <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1B78); //暗属性强化 Info.DarkStrength <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1B6C); //火属性抗性 Info.FireResist <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1AF4); //冰属性抗性 Info.IceResist <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1B00); //光属性抗性 Info.LightResist <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1B18); //暗属性抗性 Info.DarkResist <- MemoryTool.DecodeMemoryData(ObjectAddress + 0x1B0C); //名望值 Info.Fame <- 0; //最终伤害 Info.FinalDamage <- 0; return Info; } // function Rindro_GetCharacterInfoCallBack(Chunk) { // local Jso = Json.Decode(Chunk); // Jso.op <- 20069011; // Jso.Info <- Lenheart_Character_GetAttribute(null); // Rindro_BaseToolClass.SendPackEx(Jso); // } // Pack_Control.rawset(20069010, Rindro_GetCharacterInfoCallBack);