KAGEX1指令文档

Title: 吉里吉里/KAGEX 相关文档
Author: 合資会社ワムソフト 渡邊剛
Translator: VariableD

●吉里吉里/KAGEX 概要

KAGEX 对吉里吉里/KAG 在 layer 方面进行了大量的机能扩张。

而 KAG 本体的基本功能完整保留。关于 KAG 的详细说明,

http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/

请参考以上页面。

●文件夹组成

krkr.exe 吉里吉里主程序
plugin/ 插件

※插件文件夹中,实际上需要的是以下两个文件
layerExImage.dll
wuvorbis.dll

savedata/ 存档文件夹

data/ 游戏资料夹
system/ 系统
bgimage/ 背景图片
bgm/ BGM档
fgimage/ 前景图片
image/ 其他图片
others/ 其他档案
rule/ 画面切换用规则图片
scenario/ 剧本档
sound/ 音效档
video/ 影片文件
startup.tjs 吉里吉里起动文件
envinit.tjs 系统定义文件(KAG技能扩张用)

※游戏资料夹部分,具体文件是如何放置的并没有关系。

●扩张技能说明

◇追加层

◆增加特殊层

加入了以下的2层全画面层。

stage (舞台层)深度位于背景层之上,前景层之下。
event (事件层)深度位于前景层之上,消息层之下。

※实际上,前景层由于“水平”这一概念的增加,也可能显示在事件层之上。

本来的 KAG 系统「背景」即是使用 base 层显示, base 层由于
吉里吉里本身的设定限制,无法自由移动。
因此,KAGEX 加入了为实现背景卷动效果的特殊层(舞台层)。

此外,为「事件画面」的显示方便,前景层之上,增加了专门的事件层。

相比原版的KAG,KAGEX 的层构造变为如下图所示

-- -- -- -- messages (KAG消息层)
-- -- -- -- layers (KAG前景层:level5~8)
----------- event
-- -- -- -- layers (KAG前景层:level0~4)
----------- stage
----------- base(KAG背景层)

◆前景层追加水平(level)概念

KAG 本来的前景层,是按照其编号决定显示顺位的。
KAGEX 则增加了「level」这一概念,由level单位来决定显示顺位。

・「level」的值越小,则层的显示顺位越低。
・在同一「level」值的层中,可以把层移动到「最前排」「最后排」。

◆layopt (扩张)

stage / event 和前景层一样,可以用 layopt 指令进行操作。
layopt 指令则增加了以下几个属性。

属性
rotate 角度
zoomx 横方向放大率
zoomy 纵方向放大率
zoom 放大率
afx 旋转・放大的原点X坐标 center/left/right
或使用该点距离图片左上点的相对坐标。
afy 旋转・放大的原点Y坐标 center/top/bottom
或使用该点距离图片左上点的相对坐标。
type 合成模式
※http://devdoc.kikyou.info/tvp/docs/kr2doc/contents/index.html
reset 层动作与层属性的初期化
※opacity 和 type 则重设为图象读入时的设定

◆laylevel (新增)

前景层显示水平设定。

属性
layer (指定设定的前景层等)
page (省略時默认为 fore)
level 表示 level
表示level:layfront/layback 的分组对象(level值相同的层视为同一组)。
表示level越大,显示顺位越靠前。

◆layfront (新增)

指定层移动到同一level值的所有层中的最前排

属性
layer (指定设定的前景层等)
page (省略時默认为 fore)

◆layback (新增)

指定层移动到同一level值的所有层中的最后排

属性
layer (指定设定的前景层等)
page (省略時默认为 fore)

◆clearlayers (新增)

清除所有层内容,停止执行。

属性
page 的表或里

◆action (新增)

针对 stage / event 及前景层增加的指令,
设定层的自动动作效果

属性
layer 指定需要操作的层(前景/stage/event)
page 指定操作的是层的表页或里页
module 动作效果指定

※一些动作效果拥有其独有的属性。
具体动作效果的详细说明,请参考 action.txt。

◆stopaction (新增)

停止指定层的动作。
不指定层的情况下,停止所有层的动作效果。

属性
layer 指定需要操作的层(前景/stage/event)
page 指定操作的是层的表页或里页

◆wact (新增)

等待指定层的动作效果结束。
不指定层的情况下,等待全部层动作结束。

属性
layer 指定需要操作的层(前景/stage/event)
page 指定操作的是层的表页或里页
canskip 値 true(默认) 或者 false
true 的情况下可以点击跳过动画效果。

◆button (扩张)

可以单独指定按钮各个点击状态的图片。

属性
normal 通常时的图片
over 鼠标移动到按钮上时的图片 省略则使用与 normal 同一张图片
on 点下鼠标时的图片 省略则使用与 over 同一张图片
focus focus时的图片 省略时则使用与 focus 同一张图片(译注:带focus的按钮俺没有用过,不清楚)

◆slider (新增)

在消息层上设置滑动槽(slider bar)。

属性
exp commit 时执行的 TJS 式
bgcolor 背景色
opacity 背景透明度
value 连动变数名。指定后的情况
(1)指定的变数的值,作为滑动槽的初期值
(2)滑动槽移动时,变数相应改变
position 初期值
※onchange (经实验似乎未实装)当滑动槽被拖动时执行的TJS式
※min 指定允许设定的最小值,默认为0
※max 指定允许设定的最大值,默认为100

base 背景画像名。
指定了背景图片的情况下, width 和 height 用于设定背景图片的大小
width 背景宽
height 背景高
tab 滑动按钮图片(一起设定) normal / on / over 以此顺序排列(译注:类似普通按钮的graphic……吧?)
normal 滑动按钮通常时的图片(分离)
over 滑动按钮鼠标移动到按钮上时的图片(分离)
on 滑动按钮点下鼠标时的图片(分离)

◆sysbutton (新增)

在消息层上( message0 )设置系统按钮。

属性
normal 通常时的图片
over 鼠标移动到按钮上时的图片 省略则使用与 normal 同一张图片
on 点下鼠标时的图片 省略则使用与 over 同一张图片
focus focus时的图片 省略时则使用与 focus 同一张图片

graphic 按钮图片(一起设定)
graphickey 按钮图片透明色
x 表示位置
y 表示位置
hint 对按钮的注释(移动到按钮上后显示浮动小说明框)
exp 按钮按下时执行的 TJS 式
clickse 按钮按下时的SE(音效)
clicksebuf 按钮按下时的SE 使用声道
onenter 鼠标移到按钮上时(enter时) 执行的 TJS 式
enterse enter时的 SE
entersebuf enter时的 SE 使用声道
onleave 鼠标从按钮上移开时(leave时) 执行的 TJS 式
leavese leave时的 SE
leavesebuf leave时的 SE 使用声道
recthit 同一般按钮的属性
enabled 系统按钮有效
disabled 系统按钮无效
译注:以下两个属性非常有用,然而文档里没有提到,于是自行加上了
※name 每个系统按钮必须指定的属性,用于区别系统按钮(没有这个属性的话根本就会一直出错……|||)
※noStable 为真时,在“行走中”(例如切换效果中,自动前进中时),按钮也有效,为假时,和普通按钮相同

◆csysbutton (新增)

清除已定义的系统按钮

◆timeout (新增)

当前操作的消息层,增加timeout处理。(制作限时选项等时使用,用在[s]之前)

属性
time 等待玩家选择的限制时间
storage 超时的情况下跳转到的剧本档
target 超时的情况下跳转到的标签

◆click (新功能)

增加在当前消息层点击鼠标左键(click)的处理。可以设定在没有按钮/选项的地方点下左键时,将执行的操作。

属性
storage click时跳转到的文件名
target click时跳转到的标签名
exp click实行时执行的TJS式
cickse click实行时播放的SE
clicksebuf click实行时播放的SE编号

◆beginskip (新功能)

鼠标点击的情况下,到 endskip 标志为止的脚本,将会进行強制略过处理。
beginskip 到 endskip 为止的部分,请不要加入skip相关的操作,因为可能会造成错误。
※假如使用jump或其他指令跳到了别的剧本档,skip将自动解除。

beginskip 不能进行嵌套。
嵌套的话会出现错误。

◆endskip (新功能)

表示特殊略过模式的停止标记。

◇Sound Rack 扩张

◆声音控制全部

音量控制方法

 直接指定
KAG 的 [bgmopt] [seopt] 指令,可以直接控制音量大小。

渐变指定
KAG 的 [fadebgm] [fadese] 指令,可以平滑地调整播放中音乐的音量大小。

循环(loop)的控制
请使用吉里吉里的LoopTuner工具。
http://devdoc.kikyou.info/tvp/docs/kr2doc/contents/LoopTuner.html

使用该工具,例如
在 bgm01.ogg 对应的 bgm01.ogg.sli 内,设定循环效果。
制作这样的循环控制文件。吉里吉里将根据sli文件执行循环效果。

从任意位置开始播放(扩张机能)
(1) 使用LoopTuner在音乐档中设定标签
(2) playbgm / playse / fadeinbgm / fadeinse 中,用 start 属性指定开始播放的标签

◆playbgm/playse/fadeinbgm/fadeinse (扩张)

从任意位置开始播放

属性
start 指定开始播放的标签。使用在LoopTuner中设定的标签名。

◆fadepausebgm (新命令)

BGM 音量渐小,直到暂停

属性
time 時間(ms単位)
fadeout 用时,以 ms (毫秒)为单位指定。
例如 time 设为 3000 ,则音乐在 3 秒内淡出。

◆setbgmstop (新命令)

指定BGM 播放完时执行的动作。
BGM 改变时,这个设定自动无效。

属性
storage BGM 播放完后跳转到的剧本档
target BGM 播放完后跳转到的标签
exp BGM 播放完后执行的tjs式

◆clearbgmstop (新命令)

清除 setbgmstop 的设定。

◆setbgmlabel (新命令)

BGM 播放时,播放到BGM内建标记时进行的动作,可登陆多个标签。
BGM 改变时,这个设定自动无效。

属性
name 标记名
storage 通过标记时跳转到的剧本档
target 通过标记时跳转到的标签
exp 通过标记时执行的tjs式

◆clearbgmlabel (新命令)

清除 setbgmlabel 的设定。

◇表示系扩张

◆linemode (扩张)

KAG 换行模式的切换。
使用本指令的话,在消息窗口样式的作品中,
[l]或[cm]之类的指令,可以省略。

属性
mode line 或者 page
未指定时,按照 KAG 默认设定。

换行: 在输入文本时直接使用Enter换行。
空行: 在文本段落间空一行。
可以实现用Enter换行的效果和使用了[r]一样。

line 的情况:
换行:相当于执行[l](等待)
空行:無視
[p] :通常机能

page 的情况:
换行:[p] +自动消去文字
空行:無視

vn 的情况:
换行:相当于执行[l](等待)
空行:[p] +自动消去文字

tex 的情况:
换行:無視
空行:[p] +自动消去文字

free 的情况:
换行:换行
空行:[p] +自动消去文字

自动消去文字指的是「下一行文本开始显示时」执行类似 [er] 的效果。
想要实现 [p] 之后即自动消除文字的效果的话、请把 erafterpage 设为true。

此外、linemode为有效的情况下,行头有

【名字/表示名】

这种形式的记述文字的话,
将自动呼叫显示名字命令 namedisp(名字,表示名) 。
默认情况下, namedisp 对表示的文字不做任何处理,按原样显示。

使用「world扩张插件」的情况,请参考 kag3plugin/world/world.txt 。

◆craftername(新功能)

line mode情况下,名字标记【名字/表示名】之后是否换行的效果

属性
mode true 的话,名字标记后的换行无效。false 的话,则会自动换行。

--------------------------------------
【瑠璃子】くすくす

【瑠璃子】
くすくす
--------------------------------------

craftername mode=true 的情况下,以上两个句子的执行效果是一样的。

◆erafterpage(新功能)

[p] 之后自动执行 [er] 指令。

属性
mode true 的话 [p] 执行之后自动执行 [er] 指令。

注意点
erafterpage为true的话、line mode的自動消去
(下一段文字表示前自动执行[er])将无效。

◆autoindent (新功能)

有效的场合、名字之后有 “「” 或者 “『”的文字段,
自动加入indent(缩进)效果。

属性
mode true 或者 false

◆autolabelmode (新功能)

设为true的话,执行到 [p] 即自动设定可保存标签。
※linemode为有效的情况下,linemode自动加入的 [p] 也有同样效果。

这种情况下,由[p]加入的自动标签,已读管理时,并不是单纯记录标签名,
而是以“标签名+距离标签的行数”来记录。(可以理解,因为自动标签的名字只有“autolabel”一个,如果只记录标签名就全乱了……)

属性
mode true 或 false

注意点:
mode之间最好不要进行切换。在first.ks 设定以后
最好就不要再改动了。

 autolabelmode的情况下,记录的档案读取时依赖“行数”的设定,因此
假如存档之后,剧本档有改写,即使原来的标签保留着,也未必能保证正确读取。
请注意这一点。

◇选择支功能扩张(新功能)

和 Link 不同的专用选择按钮功能。

◆selopt

选择支用条件初期化

属性
normal button normal图象
over button over图象
left button配置领域左上点x
top button配置领域左上点y
width button配置领域宽
height button配置领域高

◆seladd

添加选择支

属性
text 选择支按钮上显示的文字
storage 选择后跳转到的剧本档
target 选择后跳转到的标签
exp 点下时执行的TJS式

依靠变数分歧的情况下请用exp、直接跳转的情况下请用
storage/target

◆select

选择处理执行(估计就是等待玩家选择的指令,相当于[s])

storage/target 指定的情况下、選択処理之后、
跳跃到相应的目标。exp 的情况下, [select] 之后(玩家点选之后)执行 TJS 式。

◆mselinit

地图选择按钮的初期化,将已经登陆的可选地点信息消除。

◆mselbutton

用于地图选择的按钮设定。

属性
image 图片指定。
width 图片横幅指定(省略可能)
height 图片縦幅指定(省略可能)
count 图片动画样式指定(height已经指定的话可以省略这个)

地图选择的按钮图片 
縦方向:动画样式 
横方向:normal over 的顺序联排
这样的形式。动画样式的数量(帧数?)使用 count 进行指定。

◆mselpos

用于地图选择的按钮位置设定

属性
name 位置的名字
left X方向座標
top Y方向座標

多个按钮都指定在同一位置的话、
以座標位置为中心,向左右方向延伸并排显示。

◆mseladd

添加地图用选择按钮。

属性
text 选择按钮上显示的文字 (mselopt 里记录的东西)
pos 显示的位置 (mse 里记录的东西|估计是说的mselops的name属性,指定时候就用pos=name的形式)
storage 选择后跳转到的剧本档
target 选择后跳转到的标签
exp 点下时执行的TJS式

◆mselopt

地图用选择按钮的option指定

属性
interval 地图用选择按钮动画样式播放每帧间隔时间
buttonWidth 同个位置指定了多个button时,button的间距
enterse enter 時 SE 指定
leavese leave 時 SE 指定
clickse click 時 SE 指定
frame 背景画像指定(估计是地图图象?)
frameKey
frameColor
frameOpacity

◆mselect

选择处理执行(等待玩家点击)

◇scene回想機能(新功能)

为实现「scene回想」的辅助指令。

A: 剧本档中进行指定

1. 希望进行scene回想的部分使用
-------------------
*kaisouBegin数字编号
......
*kaisouEnd数字编号
-------------------
这样的标签括起来。

2. recollection 指令指定no(编号)的话就可以进行「scene回想」 。

这种方式、利用了savedata进行回想的保存。
所以、savedata有矛盾的话这个功能也会受影响。

B: 回想用的剧本档是另外设定的情况下

1. 回想用剧本档和原本执行的文本不同
在该剧本档的末尾用 endrecollection 指令
2. recoillection 指令中指定 storage/target 呼叫回想用剧本档

◆recollection

呼叫回想处理。 (效果和 kag.startRecollection(elm) 等价)
呼叫成功的话就无法返回,请注意。(估计是说效果等于是跳转,而不是call)

no 呼叫回想的情况下,必须通过 *kaisouBegin番号 
才能有效果。以确认 system flag(系统变量)的
trail_剧本档名_*kaisouBegin数字编号是否为真为标准。
这种情况下,执行到 *kaisouEnd数字编号 的标签则回想结束。

不指定 no 的情况下,指定 storage/target 也可以。这种情况下、
endrecollection 命令标记回想结束。

属性
no 回想番号
storage 回想用剧本档
target 回想用标签
doneStorage 回想終了後跳转到的剧本档
doneTarget 回想終了後跳转到的标签

回想処理中は…
・kag.isRecollection 为 true
・禁止存储相关的动作
・照常进行已读记录等

◆endrecollection

回想処理结束。
recollection 结束,转到结束处理。

◆stoprecollection

回想処理强制停止。
回想状態解除。

◇ askYesNo 函数样式变更

askYesNo 相关大量更改。
这是为了能在 KAG 里进行调用而做的修改,请注意。

过去的askYesNo函数:

askYesNo(message, title)

 在对话框关闭前禁止一切TJS式执行,并且返回选择结果YES/NO。

新的askYesNo函数:

askYesNo(message, title, yesFunc, noFunc, param, doneFunc);

yesFunc : YES 的情况下执行的函数
noFunc : NO 的情况下执行的函数
param : 传递给各种function的param(参数)
doneFunc : 无论 yes 的情况或 no 的情况均执行的函数

返回值:无

注意点:
执行后正常返回应该是「可能」的、这只是假想,
需要实际测试验证。

◇layer dialogue 扩张

样式未确定,因此详细情况不公开(估计这就是传说中的图片对话框!!!)

◇MessageWindow 扩张

对于

「名字层」

「表情层」

进行的扩展。

◇系统变数的扩张

增加了以下这些特殊用的系统变数

◆动作控制用変数

allskip false: 进行skip时只跳已读 true: 进行skip时全部跳过
afterauto false: 进行选择之后auto状态解除 true: 进行选择之后auto状态继续
afterskip false: 进行选择之后skip状态解除 true: 进行选择之后skip状态继续

◆系统设定用变数

textspeed 文字速度指定 0~10 (10为瞬间显示)
autospeed 对话自动前进等待速度 0~10
drawspeed 描绘系列描绘速度的调整 1.0:通常 0:瞬間
noeffect drawspeed 对应的描绘速度效果 true/false 指定
bgmenable BGM 有效/无效
bgmvolume BGM 的音量 0~100
seenable SE 有效/无效
sevolume SE 的音量 0~100

◆voice 关联的变数・方法

※这些在只使用 KAGEX 单体的情况下没有意义,只是有这些变数值而已。
必须配合 WORLD 插件的 voice 功能使用。

voiceenable voice有効
voicevolume voice 的音量 0~100
getVoiceOn(name) 指定名字的角色 voice 有効
getVoiceVolume(name) 指定名字的角色 voice 音量取得
setVoiceVolkume(name,vol) 指定名字的角色 voice 音量设定