内存中英雄的数据结构
肯请各位达人解读以下定义中的未知字节//sizeof(Hero) == 1170
struct Hero{
WORDxPos; // 1-2英雄在地图上的x坐标, 以格为单位
WORDyPos; // 3-4英雄在地图上的y坐标, 以格为单位
WORDzPos; // 5-6英雄在地图上的z坐标, 0为地上, 1为地下
BYTETmp1; // 7-24 未知 18 字节, 似乎1,5字节同时为0时且3字节不为0不为e8时表示当前选定英雄
WORDMgcPnts; // 25-26 魔法值
BYTETrait; // 27 特长
BYTETmp2; // 28-34 未知 7 字节
BYTEPlyerID; // 35 英雄所属颜色
charHeroName; // 36-48 英雄名称
BYTEHeroKnd; // 49 英雄类别
BYTETmp3; // 50-52 未知 3 字节
BYTEHeroID; // 53 英雄头像
BYTETmp4; // 54-71 未知 18 字节
BYTEHerodirection;// 72 英雄方向
BYTETmp5; // 73 未知 1 字节
DWORD HeroMvMax; // 74-77 英雄最大移动力
DWORD HeroMvCur; // 78-81 英雄剩余移动力
DWORD HeroExp; // 82-85 英雄经验值
BYTEHeroLvl; // 86 英雄级别
BYTETmp6; // 87-145 未知 59 字节
DWORD Troops; // 146-173
DWORD TrpNum; // 174-201
BYTESkills; // 202-229 技能等级列表
BYTESkllLst; // 230-257 学会的技能
BYTESkllCnt; // 258 要显示的技能数
BYTETmp7; // 259-301 未知 43 字节
DWORD Equip;// 302-453 装备宝物, 19 样, 每样8字节
/*头盔 -- 披肩 -- 项链 -- 右手 -- 左手 --
躯体 -- 右腕 -- 左腕 -- 脚 -- 杂物1--
杂物2 -- 杂物3 -- 杂物4 -- 弩车 -- 补给车 --
帐篷 -- 投石车 -- 魔法书 -- 杂物5*/
BYTETmp8; // 454 未知 1 字节
BYTEEquipStat;// 455-468 对应位置是否已放置宝物, 0 表示未放置, 1表示已放置
/*头-->披肩-->项链-->右手-->左手-->躯体-->手腕-->脚-->杂物-->补给车
-->弩车-->帐篷-->投石车-->魔法书, 其中手腕和杂物比较特殊,手腕由于
有左手腕和右手腕,所以该位置可为 00 、01 、02三个值, 杂物有五处,
所以对应的位置可以是 00 、01 、02 、03 、04 、05六个值*/
DWORD Craft;// 469-980 行囊中的宝物, 最多64样, 每样8字节
BYTECrftCnt; // 981 行囊中的宝物数量
BYTETmp9; // 982-1002 未知 21 字节
BYTEMgcs; // 1003-1072 魔法修习地址, 1表示已经学会魔法
BYTEMagics; // 1073-1142 魔法记载地址, 1表示魔法书已记载
BYTEAtt; // 1143 攻击力
BYTEDft; // 1144 防御力
BYTEPwr; // 1145 魔力
BYTEKwn; // 1146 知识
BYTETmp10; // 1147-1170 未知 24 字节
}; 对于H3,好像这些就够了,没什么补充的 有网友提出应该还有对建筑的访问纪录,如马概、水井、泉水等,我觉得有道理。
这些不具体值,可能不容易分析出来
[ 本帖最后由 magicfox 于 2009-10-4 15:38 编辑 ]
页:
[1]