• 塔防蜀的存档分析


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

    首先用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即可。

  • 相关阅读:
    <自动化测试>之<使用unittest Python测试框架进行参数化测试>
    <自动化测试>之<unittest框架使用1>
    <自动化测试>之<selenium API 查找元素操作底层方法>
    <自动化测试>之<selenium API 用法2>
    <自动化测试>之<Selenium API 的用法1>
    <Jmeter入门不放弃>之<3.两种常见录制脚本的方法>
    <Jmeter入门不放弃>之<2.常用功能>
    <Jmeter入门不放弃>之<1.认识jmeter>
    <自动化测试>之<SeleniumIDE使用详解 >
    sql 注入get与post模式语句
  • 原文地址:https://www.cnblogs.com/juqiang/p/1966495.html
Copyright © 2020-2023  润新知