存储 / 读取
KAG 中、游戏的存储/读取、是通过(*)「栞(标签)」进行的。( 对无法使用此标记的用户,请修改 MainWindow.tjs )。
关于书签的说明,也请参考一下 游戏存档文件相关 的内容。
很遗憾的是、KAG 内建的存储・读取功能还无法做到随时存档。而是需要作者自行在剧本档中加入允许存储标签、也就是必须要设定存储・读取的「场所」。(译注:KAGeXpress内建了自动存档点,在每次使用[p]指令的时候即自动加入存储标签,因此可以做到一句一存,比较接近随时存档。)
・・・总之,虽然存储・读取本身、可以通过点击窗口菜单的「存储游戏」「读取游戏」随时进行,但存储的时候,实际上是记录了最近的一个“可存档「场所」”位置。
因此、玩家在距离「场所」较远的地方存档的话,读取的时候也只能从「场所」所在的位置开始。
至于要怎么设定这个所谓的「场所」、其实就是设定一个标签。差别只在于,允许存储标签和普通的标签,书写方式是不一样的。
请看以下的例子。
[waittime=20]
*start|开始
[cm]
游戏从这里开始[l][r]
*label2|存储场所2
[cm]
这里是存储场所2(在这里进行存储的话,读取的时候将从*label2开始的意思)[l][r]
*label3|存储场所3
[cm]
这里是存储场所3[l][r]
[jumptarget=*start]
像这样、在普通的标签后面插入 | ( 竖线符号 ) 的话,竖线之后还可以加入存储场所的名字,类似「提示语」这样的东西。各个竖线后面的提示语,重复也没有关系。提示语会在「存取游戏」的菜单内显示、可以方便用户查看档案。此外,如果是自由存档模式(存储的时候开WINDOWS窗口,要玩家自己指定档案文件名)的话,提示语会作为默认文件名。
在使用jump 之类的指令,想要跳跃到带 | 的标签、 | 后面的内容(包括竖线本身)都不要写上。像上面的例子[jump target=*start] 这样、 target 属性里指定标签名的情况、 | 后面的部分是绝对不能加的。
提示语是可以像下面这样省略不写的。
*label|
不写的情况下,会继承上一个标签后面带的提示语。
此外、| 后面加入符号“ &”的话,可以将变量的具体内容作为提示语使用。例如、
*label|&f.title
像这样、f.title 変数的具体内容将被作为提示语记录。
标签名 ( | 前面的部分 ) 、在同一剧本档中、是不能有重名的 ( 不同的剧本档中标签名重复则没有问题 )。至于提示语则只是类似注释一样的东西,方便剧本档创作者查看,因此重复也没关系。
此外、使用了像这样的标签之后,请一定要写上 [cm] 。(译注:其实不写根本没关系的……)
Note
不用[cm] 用 [ct] 也可以。这两个指令的差别在于、ct 会将当前操作的文字层改为表 page 的 message0 层,而 cm 则是清除所有的文字层,但是不会改变当前操作对象。(译注:所谓更改当前操作的文字层,使用current指令也可以做到)
为什么一定要这么加上的理由是因为在指定标签以后如果不在 message 层上输出一些东西的话,是不会保存的的缘故。(译注:不要理这些说明就对了……)
此外、像这种保存标签是不能加在类似 trans 和 wt 这样的指令之间的、也就是说,在「执行某项需要时间的操作」和「等待执行完毕」中间这种“不安定状态”是不能进行保存标签设定的。
此外、不加入| 的话、就只是普通标签,在保存的时候不会派上用场。
・・・总之需要注意的事情就是这些啦(^^)
像这样、在剧本里不断加入这样的标签,玩家可以进行存储的地点也就多了。标签并不会影响游戏流程,只是加入标签,不进行跳跃之类的操作也没关系。
只是、存储用的标签后请一定写上 [cm] 之类的代表文字的标记,切记(译注:我已经懒得吐槽了,凸)。
Note
内部的机制就是、KAG 在执行到附加有 | ( 可存储的 ) 标签的时候、会把当时的状态保存起来。玩家选择进行存储的时候,就是记录了当时的状态。
disablestore TAG的用法
disablestore TAG可以让「保存书签」的功能暂时无效。
游戏正式开始前、标题画面之类的地方,通常是无法保存的。
而KAG 从启动开始到通过可存储标签之前,「保存书签」的功能都是无效的。
但即使在正式开始游戏前的部分不加入存储标签,有可能会出现例外,例如游戏结束的时候又返回标题,通过存储标签的情况。
为了避免标题画面之类的地方可以存储、除了不加入存储标签以外,、想要禁止存储的部分请加入 [disablestore]
,使「保存书签」功能无效。
从执行[disablestore]
的地方开始 、和KAG启动时的情况相同,在遇到可存储标签之前,窗口菜单上的「保存书签」都将维持不可用状态。
startanchor TAG的用法
startanchor TAG使用后,窗口菜单上的「返回最初」选项将会有效。
KAG 的菜单上有「系统|返回最初...」的选项。
假如不进行任何操作的话,这个选项是一直无效的。
要预先指定玩家点下「返回最初」选项之后跳回的地方的话、就用[startanchor]
TAG标记那个地方。这个TAG请放在可存储标签的后面(译注:其实不用,这东西本身就是个临时存储标签)。在执行了 [startanchor]
之后、「返回最初」的选项将可用。
此外、想要让「返回最初」功能在某些地方不可用的话, 在加入[startanchor enabled=false]
就可以了。在这种情况下、再次执行到 [startanchor]
指令之前,「返回最初」功能将不可用。
「返回最初」是返回 startanchor TAG所在位置的状态记录,和可存储标签类似、返回最初的时候不会对系统变量(全局变量) ( → 变量的使用 ) 进行改变。
标签名的重复与省略
在同一剧本档里出现重复标签名的话 ( | 之前的部分 ) 、第一个标签名维持原样、接着的几个将自动附加 :2
或 :3
之类的编号。
例如、
*start|开始
*start|存储点2
*start|存储点3
像这样的话、第一个 *start 是 "*start
" 、想跳跃到第二个 *start 标签的情况下、target属性之类的地方要写成 "*start:2
" 。第三个当然就是 "*start:3
" 啦。
此外、省略标签名的话、视为名字和上一个标签名相同、也自动加入编号。
例如、
*start|开始
*|存储点2
*|存储点3
像这样、第二个标签会被当作 "*start:2
" 。第三个则是 "*start:3
" 。
标签和提示语都省略的话,就是以下的情况。
*start|开始
*|
*|
这种书写方式在懒得为每个标签指定名称的时候是相当方便的,但是标签是有内部编号管理的,假如在编辑剧本档的时候,增加或者减少了这种标签,旧存档的存储位置改变、return 的时候找不到返回位置的情况也是可能的。(译注:出错的时候把savedata删除重来就行了。)
Note
省略提示语的话、就继承执行时上一个通过的标签的提示语、省略标签名的话、继承的是同一剧本档中在该标签之前、并离得最进的标签名,和执行时实际通过顺序无关。