重要的 ChoiceScript 命令与技巧
https://www.choiceofgames.com/make-your-own-games/important-choicescript-commands-and-techniques/
ChoiceScript 编程语言重要技巧指南。如果您对本文件有任何疑问,请在 ChoiceScript 论坛发帖。
初学者请不要直接从这里开始学习!
在阅读这份技巧之前,请确保您已经阅读过了我们基础的 ChoiceScript 介绍页面。
其他重要命令
*title
此命令用于设置游戏的标题。它必须与 *create 和 *scene_list 一起放在 startup.txt 文件的顶部。
*title 龙之抉择谷歌 Play 商店对 Android 游戏标题设置了 30 个字符的限制。虽然 ChoiceScript 允许任意长度的标题,但如果您计划通过我们发布游戏,您需要为游戏起一个不超过 30 个字符(包括空格)的名称。
*author
此命令用于设置游戏的作者署名行。它必须与 *create、*title 和 *scene_list 一起,在 startup.txt 文件顶部使用。
*author Dan Fabulich 和 Adam Strong-Morse*ifid
此命令在您的游戏中嵌入一个 IFID(互动小说标识符)。它就像是图书的 ISBN 号。您需要随机生成一个 IFID。幸运的是,您可以直接在这里生成一个:
(王洛木:这是一个官方的功能,我没有这个功能的代码所以无法构建,您必须访问这一页才能手动获取一个 IFID。)
https://www.choiceofgames.com/make-your-own-games/important-choicescript-commands-and-techniques/
将该行复制并粘贴到你的 startup.txt 文件顶部,靠近 `*title 的位置。(添加 IFID 是必需的,以便在导出为 HTML 时支持保存游戏进度。)
(王洛木:或者你在导出 HTML 的时候也会在编译页面找到一个。)
*temp
此命令与 *create 非常相似,但它创建的是一个仅存在于当前文件中的临时变量。与 *create 不同,您可以在任何地方使用 *temp,并且无需为 *temp 变量指定初始值。
注意:*temp 变量会在你执行 *finish 或 *goto_scene 时被清除。(如果你想跳转到另一个场景文件而不清除 *temp 变量,你可能需要使用 *gosub_scene。详见下文。)
*comment
此命令不执行任何操作;*comment 后的任何文本都会被忽略。它有助于在文本中添加仅作者应阅读的备注。
*page_break
插入一个没有单选按钮的“Next”按钮。游戏将在后续页面继续。
默认情况下,*finish 按钮显示 "Next Chapter",*page_break 按钮显示 "Next"。您可以让按钮显示其他文字:
我们建议按钮标题不超过五个字;超过这个字数在屏幕上(尤其是在移动设备屏幕上)会显得非常奇怪。
*input_text
提供一个文本框,供用户指定变量的值,例如用户的姓名。
ChoiceScript 不允许玩家将输入留空。如果您想允许留空,可以使用:
*fake_choice
此便捷命令的行为与 *choice 完全相同,但在选项正文中不允许使用任何命令;因此无需使用*goto 或 *finish。
*image
此命令用于插入图像。将图像放置在“mygame”文件夹中,并输入图像文件的名称,如下所示:
如果愿意,您可以在图像名称后指定对齐方式(“left”、“right”或“none”),如下所示:
默认情况下,图像会单独一行居中显示,但如果您将图像左对齐或右对齐,文本将环绕图像。(用 CSS 术语来说,图像将“浮动”到左侧或右侧。)如果您希望图像单独一行左对齐显示,请使用“none”。
如果你的图像对理解故事至关重要(例如,图像上含有玩家需要阅读的文字),那么你应该在图像对齐方式后输入替代描述。这段文字将供无法看到图像的用户(例如视力受损的用户)访问。
*save_checkpoint
您可以使用 *save_checkpoint 命令来保存一个检查点。之后,您可以为玩家提供使用 *restore_checkpoint 命令恢复到先前检查点的选项,如下所示:
当你执行 *restore_checkpoint 时,玩家将“穿越回”调用 *save_checkpoint 的那一刻。
百分比属性和公平数学
在属性屏幕上显示的属性通常范围在 0 到 100 之间。要确保玩家永远不会意外获得超过 100 点的领导力可能很困难。为了帮助解决这个问题,我们提供了特殊的命令,可以将属性保持在 0 到 100 之间。
“%+”和“%-”运算符被称为“公平数学”运算符。其设计理念是,当你的领导力分数越高时,提升变得越困难,而降低则越容易。根据公平数学规则:
公平加法:
(x %+ y) = (x + (100-x)*(y/100))高分难以提升:
(90 %+ 20) = (90 + 2) = 92低分易于提升:
(10 %+ 20) = (10 + 18) = 28
公平减法:
(x %- y) = (x - x*(y/100))高分易于降低:
(90 %- 20) = (90 - 18) = 72小数值难以降低:
(10 %- 20) = (10 - 2) = 8
50 这个数值增加或减少的难度是相等的。
(50 %+ 20) = (50 + 10) = 60(50 %- 20) = (50 - 10) = 40
我们建议您始终并且仅使用公平数学来更新百分比。如果您在决定使用公平数学分配多少点数时遇到困难,以下是一些指导原则:
平均而言,公平数学的效果仅为简单加法的一半。因此,例如,
%+20通常只给玩家增加大约 10 点。如果您想给予小幅提升,请设置为
%+10。如果您想要大幅提升,请设置为%+40。技能为 50% 的玩家具有平均水平。
60% 的技能属于良好;70% 则堪称优秀。
80% 的技能几乎不可能达到。
*if 语句的类型
除了 *if leadership > 15,你还可以用 *if语句做更多事情。以下是几个技巧:
相等与不等
等于:
leadership = 40(领导力等于四十吗?)不等于:
leadership != 40(领导力不等于四十吗?)大于:
leadership > 40(领导力大于四十吗?)小于:
leadership < 40(领导力是否小于四十?)大于或等于:
leadership ≥ 50(领导力是否大于或等于五十?)小于或等于:
leadership <=40(领导力是否小于或等于四十?)
和、或、非(必须使用括号)
和:
(leadership > 30) and (strength > 40)或:
(leadership > 60) or (strength > 70)非:
not(strength > 70)复杂括号:
((leadership > 60) and (agility > 20)) or (strength > 80)
比较文本:
lover_name = "Jamie""2" = 2(这是真的!)
将变量设为真或假:
*set finished false*set correct guess = "blue"
使用 @{} 进行多重替换
@{} 进行多重替换多重替换与 ${} 替换有些类似,但你需要提供一个变量和一个选项列表。该变量必须是数字或 true 或者 false (其中 true=1, false=2)。 @{}将插入与数字对应的选项。
第一个词应为变量名,后跟一个空格,然后是多个由竖线 | 分隔的选项。允许存在空选项。你也可以通过将更复杂的表达式包裹在括号中来使用它们。
请注意,第一个选项的编号是 #1。如果你希望第一个选项的编号为零,请在括号内为变量加 1,像这样:
你可以在 @{} 中嵌套 ${} 替换,但不能在另一个 @{} 内部嵌套 @{}。
条件选项
有时我们想向玩家表示某个选项此时对他们不可用。我们可以这样做:
如果你不是总统,你会看到 `Abuse my presidential powers to silence them`(滥用总统权力)的选项,但它会以灰色显示;点击时不会高亮。这给玩家一个提示:如果他们重新玩游戏,通过之前做出不同的选择,或许能够选择那个选项。
如果我们想完全隐藏选项,可以使用 *if 而非 *selectable_if,如下所示:
在这个例子中,如果你不是总统,你甚至不会看到滥用总统权力的选项。
有时我们只是想阻止某些选项被重复使用。我们可以通过 *hide_reuse 和 *disable_reuse 修饰符来实现,如下所示:
如果玩家选择 #One,该选项将被隐藏;如果玩家选择 #Two,该选项将变为不可选(呈灰色显示)。
(请注意,如果使用 *restore_checkpoint 回退时间,将会重新启用玩家在保存检查点后可能使用过的任何 *disable_reuse 或 *hide_reuse 选项。)
使用 *gosub 和 *gosub_scene 的子程序
*gosub 和 *gosub_scene 的子程序除了使用 *goto 命令外,您还可以使用 *gosub 命令跳转至标签,然后使用 *return 命令跳回调用 *gosub 的那一行。
如果选择“快乐。”,游戏将显示:
你很快乐!这一切也终将过去。希望你能快乐很长一段时间!
对于需要在多个地方复制粘贴的代码片段来说,这非常有用。
“子程序 (Subroutines)”是在程序运行过程中调用的微型子程序。*gosub 之所以如此命名,是因为它能激活一个子程序。通过在使用 *return 命令前两次或多次使用 *gosub,可以实现子程序的嵌套调用。
该代码将显示:
开始一,开始二,三。结束二。结束一。
你也可以使用 *gosub_scene 来访问另一个场景文件,然后使用 *return 返回到离开的位置。与 *goto_scene 类似,你也可以使用 *gosub_scene 访问另一个文件中的特定标签,并在完成后使用 *return 返回。
警告:一般来说,你的 ChoiceScript 越简单越好。滥用 *gosub 和 *gosub_scene 可能会创建极其复杂的程序。这通常不是个好主意;复杂的游戏并不一定比简单的游戏更有趣,但复杂的游戏制作起来要困难得多。如果你认为需要很多子程序,请考虑一下:如果你的游戏更简单,是否会更好。
有问题吗?
若对本文件有疑问,请在 ChoiceScript 论坛发帖咨询。
最后更新于