113 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			113 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名: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); |