Jump to content
模组网
icedream

【Creation Kit 学习指南 19】任务目标

Recommended Posts

概述

本章将讲述如何创建目标及任务对象,从而使玩家更容易地找到目标。我们也将设置多重结局来使游戏体验更为丰富。

你将学到:

  • 如何创建别名和目标
  • 如何开启和关闭目标
  • 如何处理任务的完成及中止
  • 如何插入新增的任务阶段
目标

当玩家在天际中进行一个任务时,可以在任务列表中看到任务及当前的目标,并中哦到接下来该发生什么剧情。

首先制作一个目标并设定其目的地,这要求我们必须先掌握别名。

别名

别名对于任务就如游戏世界中定义角色的号码一样。每个别名都指向特殊引用或地方。在此案例中,这些角色包括Bendu、盗贼和护身符。这些物品的定义方法略微有所不同。

再次打开任务并进入任务别名标签。这里有一大片空白区域。右击并选择“新建引用别名”打开一个窗口。幸运的是现阶段我们可以忽略其中大多数内容(大多数功能将在别名教程中予以解释)。

在顶部的别名名称中填写"Bendu",然后点击"Unique Actor"按钮并从下拉目录中选择"GSQBenduOlo",如果一切完成,应如下图所示:

gallery_1_72_16780.png

如果你找不到 GSQBenduOlo,请返回到基本物件属性检查Unique是否勾选。Unique Actors列表只会显示Unique标志的角色。
部分电脑中,Reference Alias窗口会特别长,让你无法点击到底部的OK键。你可以在所有内容都设置好了之后,点击Alias Name后面的空白内容,然后敲回车,这样就可以保存所有内容。
点击确定关闭窗口。再次右击选择“新建引用别名”打开一个新的别名窗口。别名名称输入"Thief"。因为盗贼不是一个特殊的角色(他是根据模板创建),我们用特殊引用填写类型。点击“特殊引用”按钮,并点击巨大的“选择强制引用”按钮我们现在有2种方法选择引用:
  • 从下拉单元中选择"ReachwindEyrie01",然后从下拉引用中选择"GSQThief"。
  • 如果苍原之风堡垒已被加载并出现在渲染窗口中。你能点击“渲染窗口中选择引用”从而将鼠标锁定目的地。双击绿色的M并选择它。
点击确定然后完成第二个别名。

我们当然也可以通过使用特殊引用锁定Bendu而非从特殊角色列表中选择。然而由于一些复杂的原因,在运行时使用特殊角色列表相比特殊引用内存占用更少。
现在制作第三个别名(对于护身符),但是这更为复杂,只有人物可以独一无二,因此特殊任务类型不能使用。我们也不能使用特殊引用因为它存在于盗贼的物品清单中。因此我们只能对其别名特别设置一个引用。

多次创建一个新的引用别名。输入名称"Amulet"并点击名称下方的“目标创建引用”按钮,从左到右,你要做:

  • 从第一个下拉目录中选择"GSQAmulet"
  • 忽略等级/难度目录(由于我们不是创建一个人物,因此不必担心难度问题)
  • 点击按钮"创建 "
  • 从最后的下拉目录中选择盗贼
gallery_1_72_10198.png

如你所想,此举会在任务开始时对盗贼物品清单中的护身符创建一个引用。现在应该给盗贼2个护身符,因此打开GSQThief并从物品清单中移除一个。

创建目标

现在在任务窗口中点击任务目标标签。我们将在此设置目标。

每一个目标都有一个索引(一个数值供我们查找时使用),文本将显示给玩家,任务目标将出现在玩家地图及游戏界面上。

制作一个新的目标,右击窗口顶部的区域并从目录中选择“新建”,在下方的“目标数据”区域更改索引的数值为"10"并填写显示文本"Kill the thief"。

通常来说,目标索引数值往往适应这个目标出现的任务阶段数值。对于复杂的任务,我们可以模糊设定。但是对于简单的,我们可以很容易的设定。
最后,在索引和文本显示区域的下方,右击并选择“新建”创建一个新的任务目的地,在从“目标代码”下拉菜单选择之前,这将会创造出一个巨大的“无目标”。(“无目标”将保持直到点击其它东西)

现在创建其它目标:

  • 索引: 20
  • 文本显示: Retrieve Bendu Olo's amulet.
  • 目标别名: Amulet
以及:
  • 索引: 30
  • 文本显示: Return Bendu Olo's amulet.
  • 目标别名: Bendu
你的窗口应如下所示:

gallery_1_72_19732.png

现在我们已经制作好目标了,我们将要在游戏中测试。

目标设定

重新回到任务阶段标签。我们现在添加一些逻辑判断使之成为一个高级任务。

在列表左侧点击阶段10,从而对任务阶段添加脚本逻辑或日志条目,这至少需要一个任务阶段项目,因此右击顶部的“日志条目"并选择“新建”

日志条目是记录玩家游戏旅程的文本。只可见最近的日志条目,因此你能借此更新已被更改的任务剧情,在“日志条目”下方区域,输入:

I've met Bendu Olo, who had a precious amulet stolen. He offered twice its value as a reward, since he has a sentimental attachment to it.

点击文本区域右方(Papyrus片段标签)。将会出现拼写检查窗口,解释 "Bendu"和"Olo"并非特殊字符,忽略"错误"和添加脚本逻辑。

在Papyrus区域,输入:SetObjectiveDisplayed(10)。点击“编译”按钮。正如我们所料,设置当前任务目标为10,并给玩家适当的任务目标。因为这是首个对当前任务的目标显示,并将给玩家“开始”提示。

gallery_1_72_18434.png

你也许会对为什么额外步骤对于创建“阶段项目”很必要-在很多复杂的任务中,你有多重阶段项目,它们中间的一些或全部通过条件控制是否发生(例如,生成怎样的日志条目取决于玩家在任务前期做出的选择)。在这种情况下,我们的任务只需要简单地在每个阶段设置一个阶段项目。
现在选择列表左侧的阶段20,并对它创建一个新阶段目标。请记住,阶段20是在我们杀死盗贼后及取回护身符前。我们需要做2件事--告诉玩家先前的目标(杀死盗贼)已完成,并开始下一个目标。我们需要2行脚本:

SetObjectiveCompleted(10)
SetObjectiveDisplayed(20)
注意“完成”和“未完成”的用不同的标记--你可以完成一个从未见到的目标。
我们可以使旅程条目空白,因为总体任务剧情没有被改变。

对阶段30重复相同的步骤,你需要确定逻辑上在完成目标20但未完成30之间。

最后,完成目标30后。你也应该在日志条目检查区域下方的“完成任务”选项框,“完成”提示将出现在阶段40 发生后。(这将会把任务移至玩家旅程的完成位置)

最后的旅程条目将汇总任务中所有发生的事,在这之后,如下:

I met Bendu Olo and was rewarded handsomely for retrieving his stolen amulet.

测试阶段

现在当你进入这个任务,你的进程将出现在旅程中并出现目的地的标记。

gallery_1_72_227822.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...