Jump to content
模组网
icedream

【Creation Kit 学习指南 28】变量与条件语句

Recommended Posts

概述

请你在学习本章前确保已完成Hello World教程的学习。

你将学习到:

  • 如何建立及使用变量
  • 如何在脚本中加入注释从而方便日后维护
  • 如何对变量赋值并在游戏中应用它
  • 如何使用if-then-else条件语句添加逻辑判断
变量

打个比方,变量就如同装载信息或物体的容器,你可以添加它,你也可以向它添加数值,或把它清空。你也可以稍后检索它们的目录。

现在,我们将在Hello World教程中的那个脚本内添加一个保存玩家激活石柱次数的变量。

打开石柱的Reference窗口,然后在Script标签下右击HelloWorldScript,选择"Edit Source",然后将打开脚本编辑窗口。

你的脚本内容将会如下所示:

Scriptname HelloWorldScript extends ObjectReference
{This is my very first script!}
 
Event OnActivate(ObjectReference akActionRef)
	Debug.MessageBox("Hello, World!")
endEvent
一切就绪,我们添加一个变量。在含有"Event OnActivate"一行的上方,添加:

int count ;stores the number of times this object has been activated
  • int count ;stores the number... - int 定义变量的类型是整型,意味着变量是一个整数。
  • int count ;stores the number... - count 是我们给变量起的名称,具有惟一性和排他性。
  • int count ;stores the number... - 分号(;)后面的段落是“注释”。注释在脚本运行过程中并不起作用,只是为了让人们在日后软件维护过程中更为方便。
现在让我们添加计算玩家激活石柱次数的语句。在"Event OnActivate..."和"Debug.MessageBox..."两行之间添加:

count = count + 1
在这里我们要说,count变量的数值在每次运行该段语句后就会增加1,然后运算后的数值重新存入变量count。换句话说,等号左边的变量被等号右边的计算结果赋值。

观察变量在运行中的状态

确信在游戏关闭的状态下保存脚本,点击"OK"关闭reference,然后点击工具栏上的save按钮保存插件。

开始游戏并进入运行阶段,打开控制台(按~键)输入:

COC MolagBalVoiceCell
首先我们必须检查变量"count"的值,在我们未做任何事之前它应为0。

打开控制台,点击石柱,你将看到"'WETempActivator'",以及石柱上的一个十六进制数值。

现在在控制台中输入:

ShowVars
现在你将在控制台中看到:

--- Papyrus ---------------------
HelloWorldScript:
Script state = ""
count = 0
你将看到"count"的数值是0。

点击~关闭控制台,激活石柱3次,换句话说,你看3次显示"Hello World!"的对话框。

现在打开控制台输入"ShowVars",你将看到"count = 3"

这是为什么?你在每次激活石柱时,count变量就会按照脚本代码增加1,关闭游戏,然后重新打开脚本。

条件语句 (if-then-else)

现在我们添加一个"条件语句",它将在脚本中起到逻辑控制作用,将以下一行

"Debug.MessageBox("Hello, World!")" with the following

替换为:

if count == 1
	Debug.MessageBox("Hello, World!")
elseif count == 2
	Debug.MessageBox("Hello, World. Again!")
else
	Debug.MessageBox("Hello, World. Enough already!")
endif
现在我们可以使用变量count来控制脚本的行为。如今对话框将依据石碑激活次数显示不同的信息 。记住逻辑判断中的相等逻辑是用两个等号(==)。然后用相同方法测试。

特别提醒:

  • 单等号(=):只表示赋值,将等号右边的值赋给左边的变量
  • 双等号 (==) :逻辑判断,判断双等号两边的值是否相等
如果因逻辑判断产生错误,系统提示丢失逻辑判断符号,请优先在此处找原因。

现在你的脚本应如下所示:

Scriptname HelloWorldScript extends ObjectReference
{This is my very first script!}
 
int count ;stores the number of times this object has been activated
 
Event OnActivate(ObjectReference akActionRef)
	count = count + 1
	
	if count == 1
		Debug.MessageBox("Hello, World!")
	elseif count == 2
		Debug.MessageBox("Hello, World. Again!")
	else
		Debug.MessageBox("Hello, World. Enough already!")
	endif
endEvent
再次打开游戏,进入控制台,然后 coc to the cell, 激活石碑。你将在每次都看到不同的对话框!

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...