【GTFO】MOD图制作——WardenObjectiveDataBlock

接着上次的讲
本篇主要讲关于MOD图的任务部分——WardenObjectiveDataBlock
跟上个Rundown db一样,我简单的把WardenObjective db的功能分为三部分
一、任务描述
二、连锁事件
三、目标设置

先贴个空框架
老规矩,按这个空任务为例一个一个讲

"Type": 0,
任务类型(enum)
每个类型我都举了个例子,不清楚是什么任务的去对应地图看一下就行了
"Header": 0,
任务标题(游戏内不显示)
"MainObjective": 0,
主要目标 Text DB
"WardenObjectiveSpecialUpdateType": 0,
管理员目标特殊更新类型(enum,机翻)
"GenericItemFromStart": 0,
落地运送的Item(Item DB)
"DoNotMarkPickupItemsAsWardenObjectives": false,
不要将取货项目标记为管理员目标
下面是设置所有跟任务有关的描述,全部的对应db都是Text db
"FindLocationInfo": 0,
查找位置信息(通常提示需要在终端使用query查找任务目标所在位置信息)
"FindLocationInfoHelp": 0,
查找位置信息提示(长时间没有使用query查找后的提示)
"GoToZone": 0,
前往区域(正确使用query后更新,通常显示前往目标所在区域)
"GoToZoneHelp": 0,
前往区域提示(长时间没有前往目标所在区域后的提示)
"InZoneFindItem": 0,
区域内查找项目(到达目标所在区域位置后更新,通常要求找到目标项目)
"InZoneFindItemHelp": 0,
区域内查找项目提示(长时间没有找到任务目标后的提示,通常提示使用ping来查找)
"SolveItem": 0,
解决项目(找到/完成 任务目标后更新,通常是任务内容提示或撤离点位置)
"SolveItemHelp": 0,
解决项目提示(长时间在找到任务目标后没有继续完成时更新的提示)
"GoToWinCondition_Elevator": 0,
完成任务条件_电梯(完成任务后在撤离点设定为出生点时更新)
"GoToWinConditionHelp_Elevator": 0,
完成任务条件提示_电梯(长时间没有到达撤离点时的提示)
"GoToWinCondition_CustomGeo": 0,
完成任务条件_自定义地区(完成任务后在撤离点设定为自定义区域时更新)
"GoToWinConditionHelp_CustomGeo": 0,
完成任务条件提示_自定义地区(长时间没有到达撤离点时的提示)
"GoToWinCondition_ToMainLayer": 0,
完成任务条件_返回主要层(完成任务后且此任务不是主线任务时更新,通常为“返回主要目标并完成任务”)
"GoToWinConditionHelp_ToMainLayer": 0,
完成任务条件提示_返回主要层(长时间没有返回主线区域时更新???不确定,官图好像没有出现过,正常也没用过)
"ShowHelpDelay": 180.0,
显示提示的延迟

第二部分 连锁事件
"WavesOnElevatorLand": [],
落地时的警报(GenericEnemyWaveData)

"EventsOnElevatorLand": [],
落地时触发的事件(WardenObjectiveEventData)
这个事件很长,我分开来写
"Type": 0,
事件类型(enum)
"Condition": {
"ConditionIndex": -1,
"IsTrue": false
},
条件设置,具体用法不知道,问高手
"Trigger": 0,
事件触发阶段,已反应堆验证为例:在开始就是反应堆预热阶段刚开始,在中间就是验证阶段刚开始,在结束就是完成验证之后。
"ChainPuzzle": 0,
连锁扫描,对应persistentID为 ChainedPuzzleDataBlock
"UseStaticBioscanPoints": false,
使用静态生物扫描点,为true后扫描点固定
"Layer": 0,
事件发生所在层
"DimensionIndex": 0,
事件发生所在维度
"LocalIndex": 0,
事件发生所在区域
"Delay": 0.0,
延迟触发时间
"Duration": 0.0,
持续时间
"ClearDimension": false,
清除维度敌人,会将设定维度的敌人全部清除,包括原生怪
"WardenIntel": 0,
任务信息,对应persistentID为 Text DataBlock
"CustomSubObjectiveHeader": 0,
自定义子目标标题,对应persistentID为 Text DataBlock
"CustomSubObjective": 0,
自定义子目标,对应persistentID为 Text DataBlock
"SoundID": 0,
声音ID
"SoundSubtitle": 0,
声音字幕,对应persistentID为 Text DataBlock
"DialogueID": 0,
对话ID,对应persistentID为 PlayerDialog DataBlock
"FogSetting": 0,
雾设置,对应persistentID为 FogSettings DataBlock
这个雾设置的db后面会讲
"FogTransitionDuration": 0.0,
雾过渡持续时间
"EnemyWaveData": {},
警报设置见上面的GenericEnemyWaveData
"EnemyID": 0,
敌人ID
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"magnitude": 0.0,
"sqrMagnitude": 0.0
},
位置
"Count": 0,
计数
"Enabled": false,
是否启用
"TerminalCommand": 0,
终端命令
"TerminalCommandRule": 0,
终端命令规则
"WorldEventObjectFilter":""
世界事件对象筛选器
用来触发一些世界事件(游戏内置有,我不懂,别问我)

"WaveOnElevatorWardenIntel": 0,
电梯降落中的任务提示信息,对应persistentID为 Text DataBlock
"FogTransitionDataOnElevatorLand": 0,
电梯着陆时的雾过渡数据,对应persistentID为 FogSettings DataBlock
"FogTransitionDurationOnElevatorLand": 0.0,
电梯着陆上的雾过渡持续时间
"OnActivateOnSolveItem": false,
在解决项目时激活,为true时和事件999搭配使用
"WavesOnActivate": [],
激活时的警报(GenericEnemyWaveData)
"EventsOnActivate": [],
激活时的事件(WardenObjectiveEventData)
"StopAllWavesBeforeGotoWin": false,
完成任务后关闭所有警报(包有限警报括欠的怪?哦,我关于警报的视频鸽了来着)
"WavesOnGotoWin": [],
完成任务后触发的警报(GenericEnemyWaveData)
"WaveOnGotoWinTrigger": 0,
完成任务后的警报触发阶段
"EventsOnGotoWin": [],
完成任务后触发的事件(WardenObjectiveEventData)
"EventsOnGotoWinTrigger": 0,
完成任务后的事件触发阶段
"FogTransitionDataOnGotoWin": 0,
完成任务后的雾过渡数据,对应persistentID为 FogSettings DataBlock
"FogTransitionDurationOnGotoWin": 0.0,
完成任务后的雾过渡持续时间
"ChainedPuzzleToActive": 0,
激活时的连锁扫描,对应persistentID为 ChainedPuzzleDataBlock
"ChainedPuzzleMidObjective": 0,
中间目标的连锁扫描,目前只出现在关闭反应堆任务,对应persistentID为 ChainedPuzzleDataBlock
"ChainedPuzzleAtExit": 11,
撤离点连锁扫描,对应persistentID为 ChainedPuzzleDataBlock
"ChainedPuzzleAtExitScanSpeedMultiplier": 1.0,
撤离点连锁扫描速度设置

第三部分 目标设置
我按任务分开了进行说明,在写代码的时候不需要的代码都可以省略
type 3 收集小物品
type 6 收集大物品
type 1/2 开启/关闭反应堆
如果你要写任务为反应堆的关卡,需要在 LevelLayoutDatablock
中指定特定地形来生成反应堆
官图目前有四个反应堆地形
Mining Reactor Open HA 1
"Assets/AssetPrefabs/Complex/Mining/Geomorphs/geo_64x64_mining_reactor_open_HA_01.prefab"
Mining Reactor HA 2
"Assets/AssetPrefabs/Complex/Mining/Geomorphs/geo_64x64_mining_reactor_HA_02.prefab"
Lab Reactor HA 1
"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_lab_reactor_HA_01.prefab"
Lab Reactor HA 2
"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_lab_reactor_HA_02.prefab"
如果是关闭反应堆任务除非你有相关的插件不然只能使用只能使用 Mining Reactor HA 2这一个地形
type 5 特殊终端命令
type 7 运送动力电池
如果使用此类任务类型为主线(MAIN)时, 所需数量的电池将在电梯货物集装箱中给出
如果用作支线/附加(EX/OV)时,电池将在进入支线/附加的第一个区域生成
如果没有生成在该区域对应的LeveLayout db中找到 ForceBigpickupDistribution
并将其设置为 true
如果不想在电梯落地时给电池,需要下载MOD插件 Tweaker 来调整电梯货物
别忘了在目标区域的 LevelLayoutDatablock
中生成所需数量的电桩,任务目标会自动选择没被使用的电桩
type 8/13 上行链路
此类目标需要在目标区域的 LevelLayoutDatablock
中生成所需数量的终端,在任务目标为双终端的情况下,两台子母终端必须在同一个大区内
关于上行链路终端刷怪类型,通常官图都是type1,即在终端所在的区域内生成,而type 2/3 的用法,反正我是看不懂,原文放这了,官图也没有用type 2/3 刷怪的例子。
type 9 中央发电机组
和反应堆一样,需要在目标区域的 LevelLayoutDatablock
中指定特殊的地形来生成中央发电机组,自定义地形我就不写了,在介绍 Layout 的时候在说
此任务类型需要在目标区域的 LevelLayoutDatablock
中找到 GeneratorClustersInZone 并将其设置为 1
type 10 激活小型HSU
此类任务是将大物品放入指定地形的机器中的任务,包括打开cargo(R5B3 MAIN)
和反应堆一样,需要在目标区域的 LevelLayoutDatablock
中指定特殊的地形来生成目标交换机器,自定义地形我就不写了,在介绍 Layout 的时候在说
type 11 生存
此任务类型若为主线(MAIN),则在落地时触发倒计时。若为支线/附加(EX/OV)则在开启对应任务胶囊门后触发倒计时
任务目标在生存倒计时结束后完成
可以使用 WardenObjectiveEventData 中的type 12,强制完成任务目标来提前结束倒计时
type 12 收集终端
参考R6D2 MAIN,不解释
type 15 限时验证子母终端
没研究过,参考R7D1 MAIN 写法
关于任务的全部内容就介绍到这里了,以后关于警报和事件的嵌套类型我直接省略为GenericEnemyWaveData 和 WardenObjectiveEventData 了,忘了的话可以来这篇看,或者找官图的json自己参考
有什么问题都可以评论或者私信我

这里是黎明,我们下回再见
网页或app长按点赞即可一键三连
感谢各位的支持!