拖拽 .json 文件到这里,或点击选择文件
- 这里主要用来修改模版的开局奖励和一些基础设置。
- 对制作 MOD 时查询游戏内部用的 SID 也略有帮助。
- 制作模版请用模版编辑器。
- 官方模版放置目录: 游戏目录\HeroesOldenEra_Data\StreamingAssets\map_templates
- 下载模版放置目录: C:\Users\%USERNAME%\AppData\LocalLow\Unfrozen\HeroesOldenEra\users\Steam_id数字\downloads\map_templates\
上古纪元的模版文件使用的是json格式。
由于部分数据的格式复杂程度,全写成点点点选选选对我的难度可太大了。
所以很多内容是手工填的,但是手工填就很容易导致格式错误,尤其是不懂json格式的。
总之 json 格式的基础知识如下:
- 数据以键值对形式存在:"键名": 值
- 键名(Key) 必须用双引号 ""包裹,且必须是字符串。
- 值(Value) 可以是以下几种数据类型之一:
- 字符串(String):必须用双引号 ""包裹。
- 数字(Number):直接书写,不加引号。
- 布尔值(Boolean):直接书写 true或 false。
- 空值(null):直接书写 null。
- 对象(Object):用花括号 {}包裹的一组无序的键值对。{"name": "John", "age": 30}
- 数组(Array):用方括号 []包裹的一组有序的值,值之间用逗号分隔。["apple", "banana", "orange"]
- 逗号分隔:对象内的键值对之间、数组内的值之间,必须用逗号 , 分隔。
- 不支持注释:标准的 JSON 格式不支持注释。
- 常见格式错误:
- 键名未加双引号:
{ name: "John" } // 错误
{ "name": "John" } // 正确 - 字符串使用了单引号:
{ 'name': 'John' } // 错误
{ "name": "John" } // 正确 - 最后一个元素后有多余的逗号(“尾随逗号”):
{
"name": "John",
"age": 30, // 这个逗号是多余的
} - 数字、布尔值或 null 加了引号:
{ "age": "30" } // 这是字符串 "30",不是数字 30
{ "isStudent": "true" } // 这是字符串 "true",不是布尔值 true - 不过上古纪元很多数值是用了双引号的,不加反而无效。
- 键名未加双引号:
下载保存时会使用什么作为文件名。
由于游戏目前快速游戏使用的模版列表是白名单,如果不想改名单推荐替换 Anarchy 这个没有明确拓扑图并且比较混乱的模版。
白名单位置:Core.zip\quickStart.json。
自定义游戏可选无所谓。
模版类型只负责分类。
能否招募新英雄看的是酒馆封禁。
如果没封禁酒馆才到考虑英雄数量。
所以单英雄模式是三管齐下的,至少前两要选对。
选模版时展示的胜利条件和实际胜利条件是不绑定的。
经典胜利 基本上的模版都是开启的。
desertion 和 heroLighting 字面上看是到达特定地点和英雄存活时间。
比较像是剧情图才使用的胜利条件,实际上官方模版这两都是全开启。
失去起始城镇 和 失去起始英雄 看需求。
失去起始城镇 和 失去起始城镇天数 看官方模版并不绑定。可以分开使用。
如果不想启用 失去起始城镇天数 直接留空或者填 0。
坚守指定城镇 需要在 zones → [] → mainObjects 里 "type" 为 "City" 的项里加 "holdCityWinCon": true,并且需要配合坚守城镇天数使用。
这个模式通常是配合单英雄模式使用的。
定时触发要配合 定时通知决战天数 使用。
决战天数是通知天数加倒计时天数。
如果地图连接是开放的,或者没有在关键路口放置竞技场,则能用经典胜利完成地图。
否则需要在地图上放置竞技场。
封闭式要在 connections 里加入类似,{ "name": "Win-Connection", "from": "Center-Win-A", "to": "Center-Win-B", "connectionType": "GladiatorArena", "road": true, "guardValue": 5000000 }
开放式要在 zones → [] → mainObjects 里加入类似{ "type": "GladiatorArena", "placement": "Uniform", "placementArgs": [ "true", "0", "0" ] }
锦标赛模式的参数似乎全都要填。
通知对决天数和通知后开战天数要根据胜利场次需求来填,比如 3 分赢就要填 5 次。
通知对决天数 的格式是:11, 18, 25
通知后开战天数 的格式是:4, 4, 4
代码范例:
"tournament": true,
"tournamentPointsToWin": 2,
"tournamentSaveArmy": true,
"tournamentDays": [ 3, 5, 7 ],
"tournamentAnnounceDays": [ 7, 14, 21 ],
"championSelectRule": "StartHero"
官方模版里只有 Anarchy 和 Maze 开启了这个选项。
并且需要在每个 zones 里有对应的 encounterHolesSettings 设置。
其它模版都设置为 false。
具体作用还没研究明白。
模版可以自定义 ban 的英雄、魔法、宝物。
在实际数据里是这样的数组:
"magics":["neutral_magic_pocket_dimension", "neutral_magic_light_gate", "neutral_magic_town_portal", "neutral_magic_dimension_door", "neutral_magic_shadow_form" ],
"heroes": ["demon_hero_3", "dungeon_hero_10", "nature_hero_17", "human_hero_8", "human_hero_9", "unfrozen_hero_14", "demon_hero_5", "dungeon_hero_3", "human_hero_11", "unfrozen_hero_8", "nature_hero_9"],
"items": [ "voodoosh_doll_artifact", "flag_of_truce_artifact" ]
在这里则一行填一个 sid。
模版定制的开局奖励。
SID 总共有 8 类:
- add_bonus_hero_item: 宝物
- add_bonus_res: 资源
- add_bonus_hero_exp: 英雄经验
- add_bonus_side_exp: 律法经验
- add_bonus_hero_spell: 魔法
- add_bonus_hero_unit_multipler: 初始兵种倍数
- add_bonus_hero_unit: 送指定兵力
- add_bonus_hero_stat: 英雄属性
add_bonus_hero_item
代码范例:
{
"sid": "add_bonus_hero_item",
"receiverSide": -1,
"receiverFilter": "start_hero",
"parameters": [ "swamp_boots_artifact"]
}
- receiverSide:-1 代表全部玩家都有,0 代表只有第一个玩家有,1 代表只有第二个玩家有,以此类推。
- receiverFilter:start_hero 代表只有首发英雄有,all_heroes 代表所有英雄都有。
- parameters:给的宝物的SID,一次只能写一件,想给多件则需要一个个写。其中卷轴的 SID 不能用宝物列表里那个,要用卷轴列表里的。
add_bonus_res
代码范例:
{
"sid": "add_bonus_res",
"receiverSide": -1,
"parameters": [ "gemstones", "15" ]
}
- receiverSide和receiverFilter:同上,后面不再赘述。
- parameters:前面是资源 SID,后面是数量。注意这游戏圣杯属于资源而不是宝物。
add_bonus_hero_exp
代码范例:
{
"sid": "add_bonus_hero_exp",
"receiverSide": -1,
"receiverFilter": "start_hero",
"parameters": [ "15000" ]
}
- parameters:15000 是给的英雄经验的数量。
add_bonus_side_exp
代码范例:
{
"sid": "add_bonus_side_exp",
"receiverSide": -1,
"parameters": [ "10000" ]
}
- parameters:10000 是给的律法经验的数量。
add_bonus_hero_spell
代码范例:
{
"sid": "add_bonus_hero_spell",
"receiverSide": -1,
"receiverFilter": "start_hero",
"parameters": [ "neutral_magic_town_portal" ]
}
- parameters:给的魔法的 SID,也是只能一个个给。
add_bonus_hero_unit_multipler
代码范例:
{
"sid": "add_bonus_hero_unit_multipler",
"receiverSide": -1,
"receiverFilter": "start_hero",
"parameters": [ "2" ]
}
- parameters:给的初始兵力倍数。
add_bonus_hero_unit
代码范例:
{
"sid": "add_bonus_hero_unit",
"receiverSide": -1,
"receiverFilter": "start_hero",
"parameters": [ "lich_dragon", "1" ]
}
- parameters:给的额外初始兵力的种类和数量。
add_bonus_hero_stat
代码范例:
{
"sid": "add_bonus_hero_stat",
"receiverSide": -1,
"receiverFilter": "start_hero",
"parameters": [ "magicCostSidSet", "neutral_magic_town_portal", "-999", "0" ]
}
- parameters:这个种类实在是多,比如官方模版里用了 4 次,都是这个给回城减魔耗的。具体的参数可以去找对应的技能或者宝物来抄。只要是 type 是 heroStat 的都能用。比如:
- 招魂能量:"parameters": [ "energyValuesSet", "undead", "0", "1000" ]
- 后勤给移动力:"parameters": [ "movementPerBonus", "0.10" ]
- 魔法伤害:"parameters": [ "magicAttackPerBonus", "0.1" ]
- 魔法值百分比:"parameters": [ "manaBonusPercent", "0.30" ]
- 奇术给施法次数:"parameters": [ "magicOverloadsPerRound", "1" ]
- 领导给士气:"parameters": [ "moral", "1" ]
- 攻击:offence。防御:defence。咒力:spellPower。知识:intelligence。幸运:luck。视野:viewRadius。
- 可用列表Excel,做MOD有用。