自动更新计划
阅读
2025-05-16更新
最新编辑:黄ET
阅读:
更新日期:2025-05-16
最新编辑:黄ET
介绍
[1]中包含了由解包工具解出的游戏内容,理论上可以用这些数据实现wiki的自动更新
- 由于不能使用机器人账号,无法做到真正意义上的全自动更新,但可以创建一个仅管理员可见的更新按钮,按下后js脚本可以使用mediawiki api自动使用该管理员的账号修改wiki
- 负责获取js并作出修改的脚本称为主脚本
- 不支持mw.loadJsonData,无法将数据保存到wiki本地,但可以使用XMLHttpRequest直接访问deadlock-data github页面获取数据并现场处理/更新
- 英雄和物品模板可能需要更改以适配deadlock-data中的数据格式
- category:需要手动补全 是计划用来标注需要手动补全的页面的分类,简称手动标记
- Group-sysop.js 以及 Common.js 的解释器都为ES5,而其他js文件则为ES6,允许导入
链接
物品
/data/json/item-data.json
如果IsDisabled为true或Name为null,则可以认为其没有实装
回声碎片:
"upgrade_ability_power_shard": { "Name": "Echo Shard", "Description": null, "Cost": "6000", "Tier": "4", "Activation": "InstantCast", "Slot": "Tech", "Components": null, "TargetTypes": null, "ShopFilters": [ "Movement", "MagicDamage" ], "IsDisabled": false, "AbilityCooldown": 23.0, "AbilityDuration": "0", "AbilityCastRange": "0", "AbilityUnitTargetLimit": "1", "AbilityCastDelay": "0.2", "AbilityChannelTime": "0", "AbilityPostCastDuration": "0", "AbilityCharges": "0", "AbilityCooldownBetweenCharge": "0", "ChannelMoveSpeed": "50", "AbilityResourceCost": "0", "TechPower": "12", "WeaponPower": "0", "BonusMoveSpeed": "1m", "BulletResist": "16" }
- 装备id(或key)以固定以upgrade开头
- Description可能为null,但有些能力(例如主动技能)会有单独存放在别处的主动能力描述(例如本地化文件中的upgrade_ability_power_shard_active对应回声碎片的主动能力的描述)
- Activation有三种,Passive表示被动物品,InstantCast和ActivationPress都是主动装备,差别在于前者按键后立刻触发,后者需要再次左键确认
- Slot三种,Weapon对应武器,Tech对应元灵,Armor对应活力
- Components为依赖项,没有为null,有依赖则为字符串数组,其中包含依赖项的key
- TargetTypes为目标类型,为字符串数组,也存在空数组的情况,可能的值有HeroEnemy(敌方英雄),HeroFriendly(友方英雄),MinionFriendly(友方小兵)等,理论上为Hero/Minion/All + Enemey/Friendly
物品自动更新策略
每个物品都有以下页面:
- /Items/类型/物品名(自动更新)
- /Items/物品key/图鉴(自动更新)
- /Items/物品key/data.json(自动更新)
- /Items/物品key/template(手动编写)
主脚本在获取所有物品的json数据后,会遍历每个物品并单独处理:
- 如果ShopFilters属性为null则跳过后续
- 根据物品key,读取保存在数据页面中的原json
- 如果页面不存在,则创建并写入数据页面,创建模板页面并添加手动标记,根据本地化文件找到名称后创建图鉴页面并添加手动标记,并跳过后续
- 如果原json和现json相同则跳过后续
- 如果Name或Slot不同,则添加移动标记,且保存原名用于访问图鉴页面
- 以字符串读取template页面,将其中指定的key替换为现json中的数据,并将替换完的内容覆盖进图鉴页面
- 使用ask自动更新组件所属
- 将现json写入数据页面
物品template示例
基础:
{{物品图鉴 |类别=${Slot} |层级=${Tier} |名称=${chName} |价格=${Cost} |图标=${key}.png |属性加成=${state} |组件=${require} |主动=${isActive} |加强=${isImbue} }}
物品template手动补全流程
- 打开一个需要手动补全的template
- 使用工具栏中的的“打开相关页面”按钮(可能需要一定时间加载出来)
- 编辑template,覆盖掉原本的需要手动补全的分类
- 复制进示例中的基础模板,将原图鉴下的被动或主动能力的部分复制到后续
- 将刚复制进来的被动或主动能力中的数值替换为data.json中对应的key (例如:${desc}为常见的能力描述)
- 如果存在特例,则添加分类:物品特例
物品其他注释
- 对于自动判断是否是主动物品,可以查看Activation,而对于加强物品的判断方式则较为不稳妥
- 截止于2025/05/12,目前的加强物品的通用特点是:
- 都是元灵物品
- 其description或属性key(注意不是物品key)中都可以匹配上imbue字符
- 目前暂时使用imbue字符匹配法自动判断是否是加强物品