zoukankan      html  css  js  c++  java
  • 塔防蜀的存档分析

    最近在玩塔防新春版,上手很容易,过关也简单。偶很喜欢研究游戏存档,看看有没有什么特别的剧情、人物、道具能够出来。

    首先用iFunBox或者别的东西,把存档目录copy到本地电脑上,如我这里就是存放在了:C:\Users\username\Desktop\FolderName\F38DE1C9-0098-42AC-AF62-8D2A6A82E44F。

    下面有4个子目录,我感兴趣的是两个,一个是documents,这里存放存档文件;另一个是threekingdomstdsehd.app,这里面有所有的图片、音乐、将领资料、道具资料、地图、剧情。除了save.plist在documents目录外,其他的都是在前文中的第二个目录。所有的xml文件都包含有英语、简体中文、繁体中文和日文四种语言。

    • Items_HD.xml
      • 物品一共分为3种,武器、装备、坐骑。对应的itemtypename分别是Weapon,equipment和viecle。攻击力最大的是方天画戟150,其次是青钢剑和朱雀爪,各自140。攻击范围最大的兵器是青龙偃月刀,32;最大的装备是孙子兵法、神兽砚、饺子和中国结,都是攻击范围增加40;最大的坐骑是赤兔,攻击范围增加48。
      • 每个item下面
        • icon image,指定了该道具的图片名称。
        • money包含buy和sell,我玩的里面没发现有可以买卖道具的地方,所以这个可能是为将来扩展用的。
        • limites。lv,这个应该是说武器最低使用等级,如诸葛连弩,只能3级或以上兵来用。wuxings这个不详,也许和五行有关?bosses,这个应该是该道具只能某个武将用。如,方天画戟只能吕布用。
        • Impacts,value=1应该是指攻击力,num=+150则意味着增加150。所以<impact value=”1” num=”+150”意味着方天画戟可以增加武将攻击力150。从其他的道具,如8651丈八蛇矛,impact value=”5” num=”+32”,结合介绍,可以看到,5代表攻击范围,值是num/2。所以这里意味着丈八蛇矛的攻击范围可以增加16。从9540倚天剑的介绍中可以猜出来,impact value=”3” num=”+0.1”,意味着倚天剑的攻击速度+0.1。再如9542青钢剑,impace value=”5” num=”-32”意味着青钢剑的攻击范围减少16。
    • Skills_HD.xml
      • 技能分为将领和普通兵的,但是从xml item上没有明显标志区分。
      • expend/food~value代表该技能消耗术的点数。如鼓舞,消耗45点术。注意的是,effectarea表明技能的使用范围,如鼓舞的effectarea value=”320”,但是游戏中用大、局部、全局来表示范围大小。如果看主要将领的最高一级技能,如水淹七军,可以知道effectarea value=”19998”代表全局。
      • duration代表技能持续时间;
      • effectargets,代表该技能针对哪些soldier有效,包括将领、普通兵种。如skill id=”27“,勇猛,专门针对张飞的:effectarget soldierid=”18”/8816/8815/8814/8813
    • soldier_HD.xml
      • 所有的将领和普通兵的资料,这里面包含的是该将领“初始”状态具有的道具和技能。
      • 让人诟病的是,每个将领都按照start lv从1到5,设置了5条记录,并且分别采用不同的soldier id,不知道为什么要这么设计。本来我想写一个修改器,可以把曹操、吕布等都选成我的人,但是里面有5个曹操、5个吕布,实在影响心情啊!!!每个将领从1到5,是通过Promotie来连接的,类似于一个链表一样。如刘备id=16, promotie=8805;id=8805,promotie=8806这么连接下去的。
      • hp value、atk value分别是生命、攻击力,注意的是def value,如张飞def value=”90”,代表他的防御力,这个游戏里面没有用到。
      • Soldierskill代表该将领在每级可以拥有的技能,最多3项。注意里面有一个是requirementskillid value=”0”,貌似技能需要另外技能作为前提,这个游戏里面现在没有体现。
      • kindoms,似乎代表每个将领属于哪个主公的,xml中都是空,这个估计做外将来游戏扩展用。
      • 里面有超过100个将领(士兵)的头像是dazhonglian01,就是“大众脸”,这个比较搞。如大名鼎鼎的曹彰、司马兄弟等。
    • save.plist
      • 这里就是存档文件。因为游戏支持三个存档,所以文件中有三组plist/array/dict。
      • 每个dict下面主要分为hero、level、storage、unit、是否完成。
      • hero
        • 下面有若干个dict,代表将领的信息。isActive意味着该将领是否在出征队列。curExp代表经验值,这是一个real类型,比较怪异。
        • 然后是5组的道具信息,用center/downleft/downright/topleft/topright代表,该位置是否装备着某个武器或者道具或者坐骑(中间、左下、右下、左上、右上)。如果是-1,则意味该位置没有装备。如果都是-1,则该将领没有任何装备。
        • id代表武将或者士兵的id,和soldier_hd.xml相关联。
      • level
        • easyHighscore、hardHighscore,代表普通、难的最高分。
        • maxStar代表几个星
      • storage
        • 包含了当前仓库里面可用的装备信息,用id与items_hd.xml关联。
      • Unit
        • 代表出场的士兵,如大象、弓兵等,用id与soldier_hd.xml关联。
    • Stage*_level_hd.xml
      • *代表第几关,如01代表第一关。
      • enemy_bosses代表本关会出场的boss的id,与soldier_hd.xml关联。
      • exp_prize代表本关可以得到的经验值
      • resource/money代表初始金币,resource/food代表初始术
      • bonusitems代表本关可能出现的宝物奖励。如level01,有铁戟蛇矛、钱串等物品。每个物品后面有一个probability,应该代表掉落纪律。如铁戟蛇矛,0.7,但是钱串是1.3。所以不解这里是代表70%、130%还是说代表0.7%和1.3%。如果是后者,那么掉落几率是在太小了。
      • Attackwave代表第几波的攻击。soldiers/soldier代表这一波有哪些将领、士兵来攻击;pathnodes代表在地图上的行动路线。
      • 最后是events,分为condition和result,如event id=123226代表刘备如果遇到孙权,那么会发生单挑,如果单挑成功,则孙权退走。<dropitem triger=”false” itemid=”0/>,这里让我比较迷惑,看了很多关,这里好像都是triger=false, itemid=0。
    • state*_map_hd.xml
      • 同上,02代表第二关。
      • 里面都是地图的描述,不感兴趣。除非自己要写地图编辑器。

    总结一下,基本上通过上述几个文件的增加、修改,开发商就可以迅速造出大量剧本和关卡莱。我们要自己改,也很容易。

    如果要改装备,就修改save.plist。如果要改将领的攻击力、速度等,就改soldier_hd.xml,如果要改将领的技能,也改soldier_hd这个文件。

    如果改某项技能的花钱数(如水淹七军只用1个术,或者负数),则修改skill_hd.xml。

    其他诸如每关开始的钱、术,修改stage*_level_hd.xml即可。

  • 相关阅读:
    React元素渲染
    初识JSX
    微信小程序复制文本到剪切板
    微信小程序报错request:fail url not in domain list
    小程序,通过自定义编译条件,模拟推荐人功能
    积分抵扣逻辑
    微信小程序 switch 样式
    tomcat 配置开启 APR 模式
    tomcat8 传输json 报错 Invalid character found in the request target. The valid characters are defined in RFC 3986
    c++数组初始化误区
  • 原文地址:https://www.cnblogs.com/juqiang/p/1966495.html
Copyright © 2011-2022 走看看