吉里吉里KAG入门 其五:文字链接与按钮
(2009-11-28 11:20:11)
标签:
krkr游戏 |
分类: 简单易懂教程 |
现在大家应该都心里有数了,吉里吉里是从上至下运行脚本first.ks中的内容来构建游戏画面的。在实际的脚本编写中,我们把游戏内容分割成几个互相关联的脚本,并将同脚本内的内容分割成多个块,通过在不同块之间跳跃组合,令游戏内容变得灵活多变。
一、游戏内容的分割与标注
1、在脚本中使用标签
脚本中以星号开头的地方是标签,标签单独占一行,格式如下:
*标签名|显示名
标签名使用半角英文开头,后面可加入数字。
竖线后的显示名可以使用中文,这个内容会在游戏存档位被显示出来(注:使用游戏窗口上面的保存和读取的时候,只有带显示名的标签才是保存位置)。
2、跳跃到某标签
需要跳跃到某个地方时用@jump命令,常用属性有指向目标脚本的storage和指向具体标签的target两项,根据具体需要可以省略地运用,比如同脚本内时就可以省略storage。
例1:
*ch01|第一章
跳跃到第三章。[l][r]
@jump target=*ch03
*ch02|第二章
这里的文字其实不会被运行。[l][r]
*ch03|第三章
你看到的是第三章的内容。[l][r]
在上例中脚本运行直接从ch01跳到ch03部分,不运行ch02的部分。
例2:
@jump storage=01.ks target=*ch01
运行到这一行时会直接跳向另一个脚本01.ks中的*ch01标签。
二、制作文字链接
1、基本命令@link和@endlink
利用@link和@endlink可以将其之间的文字设置成链接。
例:
@link storage=01.ks target=*ch01
第一章
@endlink
这段脚本是一个指向01.ks的*ch01的文字链接“第一章”
另外这个脚本也可以写成:
[link storage=01.ks target=*ch01]第一章[endlink]
因为只需要一行这样写多个放在一起时会比较整齐。
@link的常用属性:
storage=目标所在的脚本文件名
target=目标标签
exp=tjs式(填入tjs式,比如关闭游戏窗口之类)
color=0xRRGGBB鼠标指上去时候高亮块的颜色
hint=鼠标指向时出现的说明文字
clickse=点击时效果音
enterse=指向时效果音
以上属性根据需要选择性使用
2、文字菜单制法
单靠以上的链接命令,我们的链接是没法正常地显示在游戏画面中的。在定位并建立好与目标的联系之后,还必须使用一个等待命令@s来等待玩家选择。
每个链接组的所有项目共用其末尾的一个@s命令。
例:
;文字区扩到最大,无底色
@menul
;定位第一个链接的位置、内容
@locate x=300 y=180
[link storage=01.ks target=*ch01]第一章[endlink]
;定位第二个链接的位置、内容
@locate x=300 y=220
[link storage=01.ks target=*ch02]第二章[endlink]
;定位第三个链接的位置、内容
@locate x=300 y=260
[link storage=01.ks target=*ch03]第三章[endlink]
;等待玩家选择
@s
这段命令构筑了一个跳往1、2、3章的竖排列选单。
在我们下载的程序包中有个范例游戏《超分支》,它的菜单就是用此方法制作的,在开始处和结尾处使用了@nowait于@endnowait命令组来使菜单文字瞬间显示。
3、 游戏对话中的选择肢
在游戏中加入选择肢可以使玩家更具参与感,不同的选择肢使故事走向不同结局是文字ADV常见的方式。将对话文字直接设置为选择肢的例子如下:
*start|开始
请在下面的选项中选一个吧:[r]
[link target=*select1]选项1[endlink][r]
[link target=*select2]选项2[endlink][r]
[link target=*select3]选项3[endlink][r]
[s]
*select1
[cm]
你选择了选项1。[l][r]
@jump target=*end
*select2
[cm]
你选择了选项2。[l][r]
@jump target=*end
*select3
[cm]
你选择了选项3。[l][r]
@jump
target=*end
*end|结束
点击返回最开始处。[p]
@jump target=*start
这是一个非常基本的例子,在各分支的内容末尾合龙到一起后跳回开头形成一个循环,所以可以反复无限选择。如果想要强制玩家进行所有的分支项目才能从对话中脱出,可以加入变量判断(此部分内容请参考后面的章节六)。
这里要特别指出的是,把文字做成链接,其位置会受到其所在文字层画布属性的限制。例如在使用底部对话模式的文字层时无法将选项脱离对话框放置在画面中央,而如果狭窄的对话框区域内选项行过多,可能会妨碍显示效果的情况。
如果想要脱离对话框将选项放置在游戏画面的中间,应该将选项放置在另一个全屏的透明文字层上。
例:
*start|开始
@position layer=message0 page=fore visible=true opacity=180 left=70 top=450 width=660 height=140
@position layer=message1 page=fore visible=true opacity=0 left=0 top=0 width=800 height=600
请从画面选择一个项目:
@current layer=message1
@nowait
@locate x=300 y=200
[link target=*a01]选项1[endlink]
@locate x=300 y=300
[link target=*a02]选项2[endlink]
@endnowait
@s
*a01
@cm
@current layer=message0
你选择了选项1.[l][r]
点击返回。[p]
@jump target=*start
*a02
@cm
@current layer=message0
你选择了选项2.[l][r]
点击返回。[p]
@jump target=*start
三、制作按钮
按钮的基本原理和文字链接大致相同,只是需要用到按钮图像。
1、按钮图像的格式
按钮可以使用带透明度的PNG图像(jpg也没问题,但是就不能透明了),是“通常”“按下”“悬浮”三种状态水平并列的一张合并图像。
2、按钮命令
按钮使用@button命令,其常用属性有
graphic=图像名
storage=脚本文件名
target=标签
exp=tjs式
recthit=图片上透明的地方是否有点击效果(true或者false)
hint=鼠标悬浮时候的说明文字
clickse=点击音效
enterse=指向音效
以上属性根据需要选择性使用。
按钮虽然使用图片,但是其位置在文字层上,同样也受到文字层画布属性的限制。
准备好“开始游戏”和“结束游戏”的按钮图片以及背景图片,我们可以做出一个简单的开始菜单。
例:
;设置message0的属性
@menul
;导入背景图像
@bg storage=bg1 time=1000
@wait time=1000
;安排按钮的位置和目标
@locate x=300 y=380
@button graphic=start.png target=*ch01
@locate x=300 y=480
@button graphic=end.png exp= kag.close()
@s
*ch01|第一章
;在开始前,要清空菜单内容
@cm
;切换一张新的背景图像
@bg storage=bg2 time=1000
;重定义文字层0的属性
@position layer=message0 page=fore visible=true opacity=180 left=70 top=450 width=660 height=140 marginl=10 margint=10 marginb=10 marginr=10
游戏开始。[l][r]
注:这个例子中的结束按钮使用的即是关闭游戏窗口的tjs式,使用tjs式可以给予按钮各种复杂的功能。
按钮的使用和文字链接的使用原理基本相通,想要使用字体漂亮的游戏内选择肢,可以把选择肢内容做成按钮安排在新的文字层,即可安置在画面的任何位置。

加载中…