给新新手的说明
偶素刚接触KR的小白一名,相信也有N多和我一样对KR依旧不顺手的同志们。毕竟写说明的大人是高手,所以和我一样无语法基础第一次接触它的新人们来说,理解毕竟还是有些困难。而且有些问题太过白痴自己都不好意思到论坛问~~~~所以偶发一点点自己作为小白的角度知道的东东,希望可以给大家参考以下。如果我有新发现也会继续提出,另外~~~小白们,表再潜水了,勇敢的站出来吧~~~~~大家互相交流总是可以学到很多的~~~~~毕竟是新人,难免有错误,希望大人们可以纠正我在说明中的不足和错误。
1,准备工作:
有语法的大人们入手要容易些,而和我一样语法空白的新人们,在开始使用KR之前一定要做2件事。
第一,看米菲的入门教程
http://nw.keyfc.net/bbs/index.php?showtopic=96(个人认为这个稍微比kr里的汉化教程容易理解些)另外,可以下载和此教程相关的文件对比看效果和语法,可惜似乎这个版本不能调出控制台来看语法,或者是我不知道。。。。。如果可以调的话,哪位大人好心告诉我一下。不过和kr3的版本不大一样,但是最基本的差别不大,还是建议看看。
第二,看
http://kcddp.keyfc.net/下载包里的doc帮助说明,如果看了上面的教程,或者看这个的时候会更容易一些。
很多问题大家也可以到
http://kcddp.keyfc.net/去请教高人。
然后,我们就开始吧。
2,制作包里的文件说明。(
http://kcddp.keyfc.net/下载的那个)
我只说目前我们会用到的,其他的等高手去说明吧。
krkr——游戏的运行程序,将文件夹拖到此窗口即可执行游戏,或者把krkr放在游戏的制作目录下,点击则运行该文件夹下的游戏
Wizard——制作游戏文件夹,说明里说最好使用此工具制作,虽然我也不知道为什么。。。。。。不过打开就可以开始你制作游戏的第一步了。所以新人们还是先靠它吧。
Sample——游戏范例,很短。可以参考一下部分语法。把它拖到krkr上可以打开运行。最重要的是,如果不小心修改错了system里的内容,就照此复制过去吧~~~
tools——游戏相关工具。
该目录下文件:
(KAGConfig——修改游戏的主要设置的必须工具。最最最重要。
CaptainsKnife——据说改文字,字符卡和动画图片等。。。。我不晓得。。。。因为我怎么也打不开。。。。。。。
krkrfont——渲染字体,我没用,还是先老实的学基本吧。。。这种高技术东西我无奈。
krkrtpc——修改图片格式为游戏可用格式,恩,还是很需要的好东西。
krkrrel——游戏发布的打包文件。
krkrlt——吉里吉里的Loop Tuner,可以实现音乐的无间断回环。(没用过,这几天有时间我试试看咋用)
tools-org——一样是工具,不过都是日文的。。。。。我素日文小白,用不起。
基本上要用的就是这些了。下面说说游戏目录下的文件。
当创建游戏目录后,会生成一个date文件夹,里面就是文件的素材和你的程序。把kr放到和date同级目录下,可用kr打开你的游戏,或者测试。
date下的素材文件夹:
bgimage——背景层图片
bgm——背景音乐
fgimage——前景层图片(类似对话框,人物图,图标等等吧)
sound——音效文件
voice——配音对白之类的吧
rule——转换类型,如渐变等
系统文件夹:
system——基本上最基本的都在里面了,比如退出,返回窗口等等,里面的YesNoDialog和MainWindow常被高人用来修改,不过我就不奢求了,我单知道它是用记事本打开就已经很满足了。
Config.tjs——拖到KAGConfig修改游戏基本设置。用明白了省下不少功夫,比如设对话框透明可以直接在里面做好,哪里像我还不知道,于是傻傻的用ps把图片做透明了放过来。。。。
程序文件夹
scenario——这就是我们制作游戏的时候最最最最重要的文件夹了,制作过程中你的大部分时间都会在里面,因为这里就是你制作的游戏程序放置的地方。
记住——这里的文件都要加上后缀名.ks
打开记事本,然后创建一个名字,在后缀加上.ks默认以记事本名字打开。你的一个程序事件的文件就做出来了。
最初我们需要first.ks和script.ks其他的可以自制。
打开first.ks,开始制作游戏开头,这样你的游戏设计才算正式开始了。
3,语法。
其实我上面所说的都可以在教程里找到,不过我以小白的角度重复一下而已,要打好基础,还是要好好研究教程。
kr以简单(如果你熟悉)的语法,和好用的操作(前提依旧是你要熟悉),便可以做出华丽的效果。基本上我在学习过程中越来越喜欢它,但是让偶觉得郁闷的就是关于事件的测试,如果可以像lm2那样支持单事件测试就好了,我每次都是load来测试,结果改了前面的话后面就老是出问题。。。。。(根据Miliardo 大人的说明,配合KKDE的某个功能是可以实现的。
此外可以手动在初始化之后插入一个jump来实现,这几天我实验一下。哈哈太好了,感谢之极)
大家都是新人,先来学习第一步。
先来认识一下现在还陌生但是即将很你成为好朋友的2个东西。
[ ]
@
这是kr代码的基本形式。执行的时候必须用到,比如
[代码1]
@代码1
我不晓得到底有多大的区别,就我所用过的基本语法来说,好像可以通用。在米菲的教程里,大部分都是用[代码1]的形式,在KCDDP ADV综合创作站的教程似乎用@代码1的比较多。
我基本上都是用@代码,只有在选项链接的时候才用[代码]。另外,如果你2个都混着用,在你对语法尚未熟悉之前请小心一点。因为一个不小心就会出现工具自动换行错误。
比如我曾用
[代码]
@代码
[链接代码][链接代码结束]
结果系统把从[代码1]到[链接代码1结束]都算进了我的链接内容里。。。。。高手自然不会出现我这种白痴错误,不过大家还是注意一下。
补充一下,[代码1]可以连着,比如[代码1][代码2][代码3]可以这么写,但是@代码一般一个都是一行
如
@代码1
@代码2
@代码3
另外;表示注释,放在[代码1]后会被显示在游戏中,但是放在@代码1后不会被显示出来
(谢谢希德船长的提醒,这点我差点忘记了,不过注释的那点是刚才才知道。。。。汗)
然后我们来认识一下层。
层是kr里必须知道的一个概念,如果清楚了可以走不少弯路,而且可以利用多个层完成某些复杂语法才能达到的效果。
就我所知道的,kr层分为3种,文字层和前景层,背景层。
背景层只有1层,多用来放背景图片。在最底下。
文字层和前景层的数目均可通过将Config.tjs——拖到KAGConfig来修改。(不晓得有没有最高限制)
其图层顺序类似于:
前面——文字层1——文字层0——前景层2——前景层1——背景层——最下面
文字层和前景层的数字越高,就在越上面的位置。文字层在前景层其面。
在语法里。
文字层的名称为message,如message0、message1.等等。默认的message是文字层0,不过在执行消除文字的语法时,message的消除则代表消除所有文字层内容。
前景层可以用layer来表示。layer3,layer4等
不过layer不仅可以表示前景层,也可以表示文字层(话说我之前一直不知道文字层也包含在layer里,犯了好久的错误)
小白第一课:文字简单显示
一,接着来接触最基本的文字层语法:
[l][r]这2个老是连在一起用的是最常用的语法
但是实际上是2个意思
[l]代表点击鼠标,然后才显示下面的内容
[r]代表换行
然后是[p]代表翻页,前面的文字内容被翻过去。(推荐用@p翻页)
同样含义的还有[cm]和[er]
不过[cm]对所有的文字层都起作用,会消除全部文字层。
[locate x=250 y=300]设定文字(或按钮)出现的坐标,类似于数标轴(大概也许就是)。
关于定位坐标轴,在下是测试的时候先看看方位,然后不关掉kr,也不点鼠标,改掉数字坐标,然后点“重新读取剧本”,于是就重新看了新位置,大家也可以这样调到你需要的方位。(不过结束的时候记得表点鼠标,否则重新读取也不会在那里了)
还有个对于文字层常用的语法
[style align=center]:文字或按钮水平居中显示。不过要注意的是,让你设定此代码后,那么x的起点就不再是窗口左下角了,而是中央。所以之前的[locate x=250 y=300]所表示的位置要变为[locate x=0 y=300](假设250是正中间坐标)
那么你现在就可以测试一下了。打几个字用上面的语法看看吧。不过首先。你必须在前面加上*start表示开始。
如
*start
[style align=center]
大家好[l][r]
我是小白[p]
希望大家多多指教[p]
提醒一下,如果你不用[p],而用[cm]
*start
[style align=center]
大家好[l][r]
我是小白[cm]
希望大家多多指教[p]
用了[cm]后,后面的文字也会被消除,也就是说“希望大家多多指教”不会被显示出来。那么我们必须在其中再加一个语法。[backlay]表示语法不影响下面的层和内容。
*start
[style align=center]
大家好[l][r]
我是小白[cm]
[backlay]
希望大家多多指教[p]
就可以正常显示了。
然后字体的大小设置可为@font size=60
字体的颜色设置可为@font color=0xRRGGBB(参考色码表,做地图也要用上的)
另外font:文字属性
参数:size:值为整数/default,文字大小,default为默认
face:值为字体名称/default/user,default为默认,user为现用的字体
color:值为0xRRGGBB,文字颜色
italic:值为true/false/default,文字斜体设定
顺便说明一下,初次打开kr,文字层会以不透明的形式显示在背景层前(好像一个巨大的阴影)。可以用*menu将其全屏透明化(或在Config.tjs——拖到KAGConfig,将x,y边距改为0,将文字层设透明)。虽然也可以直接取消文字层的显示,不过总觉得这样的话后面用就不方便了,所以不推荐。
下面是补充的参数说明引自米菲教程
current:指定操作文字层
参数:layer:值为message0/message1,指定1个为操作文字层
page:值为fore/back,设定为表或者里
withback:true/false,表page为对象的场合,对里page进行同样文字描画的设定。
position:文字层属性
参数:layer:值为message/message0/message1
page:值为fore/back,设定为表或者里
left:值为整数,表示层的左端位置
top:值为整数,表示层的顶端位置
opacity:值为0(完全透明)~255(不透明)的整数,指定层的透明度
width:值为整数,层的宽度
height:值为整数,层的高度
frame:文件名,如果使用自己设计的框架的话,则需要指定
framekey:值为0xRRGGBB/adapt,指定框架的透明色
color:值为0xRRGGBB,文字层颜色
marginl:值为整数,文字层左方空白处
margint:值为整数,文字层上方空白处
marginr:值为整数,文字层右方空白处
marginb:值为整数,文字层下方空白处
vertical:值为true/false,true为竖行文字显示,false为横行文字显示
shadow:值为true/false/default,文字阴影设定
shadowcolor:值为0xRRGGBB/default,文字阴影颜色
edge:值为true/false/default,文字边缘设定
edgecolor:值为0xRRGGBB/default,文字边缘颜色
bold:值为true/false/default,文字粗体设定
二,简单的背景,声音转换
先说一下格式,基本上转换的样式如下
@A(转换内容)+B(类型)=C(素材) D(附加补充内容)
比如背景的转换
@bg storage=背景图名称 time=1000
bg代表背景,storage渐变的一种,背景图既我们想要选的素材,最好为png和jpeg,,当然也可以运用工具里的转换工具转换为可用格式)time=1000表示用1000毫秒(1秒)来完成这个背景的转换。
这个图会显示在背景层,而你需要把用于表现在背景图上的素材存到bgimage文件夹里,文件夹下不要有子目录。否则可能找不到。
同样,音乐,音效,配音的语法分别如下
@bgm storage=音1 time=1000(时间的部分也可以省略)(存在bgm文件夹)
@se storage=07 (不指定time则立即开始播放)
@vo wait storage=配音(这条指令将播放配音,并等待其播放完成后才继续执行,另外配音的可以语音回放)
想要立即停止音乐等的播放,可以
用[stopbgm]
kr的音乐可以用WAV, CD-DA ,MID。用Config.tjs——拖到KAGConfig来修改播放类型(但是怎么同时用多种格式呢,有没有高手告诉我一下)
说完了声音还是来说说背景。
除了上面的方法,还可以用image和trans这2个放图的方法来换背景。另外kr默认的2种大小是800X600和640X480请选择符合大小的图片。
另外可以采用不同渐变的方法换背景,比如
@bg storage=ex01 time=1200 method=universal rule=r01这个指令可以从当前背景开始,按照规则图像r01的规则在1200秒内把背景渐变到ex01。
或者
[trans method=universal rule="trans1" vague=1 time=1200]使用遮片效果进行转换,需要指定所采用的遮片文件和vague参数。vague为0以上整数,表示领域值。
还有就是,给背景取名字的时候最好不要用0到30的数字,有时候会和渐变的rule搞混,处理渐变的遮片。不过英文有时候也会出现,用中文才是万无一失的,所以这时候才发现中文是多么可亲啊(当然,看日文教程的时候感触更深)
另外希望各位大人,以后放例子的时候能够把素材的名称以不同颜色标注出来,或者用中文表示。话说我最初的时候,看见某大人写的
@bgm storage=bgm
@bg storage=bg
当时彻底的迷糊了。
特别是遇见较复杂的一大堆语法的时候,完全看不出来哪个是素材,只要代入测试,出错的时候提示缺少什么。什么就是素材名。不过要是碰到上面的类似语法。。。好像这种方法也没用。。。。
三,前景层的表示
前景层的表示比背景层要多和复杂,所以我特别拿出来说。而且前景层可以有多个
前景层当然可以要用来放图。图片放在fgimage文件夹
@fg torage=。。。是最基本的。此外还有最常用的image
如[freeimage layer=0 page=back]
显示前景可以使用fg命令,消除前景可以使用cl命令。,cl all清除所有层。如果在定义属性keep=back,则背景层不会被清除。如果定义属性keep=msg,则只清除前景层
如@cl layer=4
前景层的大小不定,故而可以在背景层上面移动。
pos表(引自kr教程)
fg命令的位置
全名 缩略名 默认横向位置[像素](640x480) 默认横向位置[像素](800x600)
left l 160 200
left_center lc 240 300
center c 320 400
right_center rc 400 500
right r 480 600
比如
@fg layer=1 storage=图片1 l=400 t=0 time=500 ;在前景层1,以(400,0)为左上角显示图片1
附加说明(引自米菲教程)
image:图片显示代码
layer(不可省略):层次参数。基本输入为0以上的整数。一般输入为0/1/2,默认设置中前景最大为2(3个)。
storage(不可省略):图片路径,用来表示图片的名称,前后要用引号。
page(可省略,如省略则默认为fore):标准输入为:fore/back。表示表层或者里层,如果不加场景转换特效的话,一定要fore,否则图片是不会显示出来的。
visible(可省略):基本输出为:true/false。true表示显示次图层,flase则相反。
key(可省略,如省略则不进行透明处理):透明色制定,基本输入为:0x000000/adapt。如果已经决定好透明色,请指定为更换000000为透明色。adapt则是让程序自己寻找图片中使用最多的颜色作为透明色。
left(可省略):图片的左方位置指定,所有图片都是以左上方(坐标:0,0)为基础点。
top(可省略):图片的上方位置指定。
因为前景层可以有多个,所以用处很多
不过要先看看下面的说明
layopt:层属性
参数:layer(必须):值为0以上整数/message0/message1,指定前景层或文字层
page:值为fore/back,设定为表或者里
visible:值为ture/false,层是否显示
left:值为整数,表示层的左端位置
top;值为整数,表示层的顶端位置
opacity:值为0(完全透明)~255(不透明)的整数,指定层的透明度
比如显示前景层4可以表示为
@layopt layer=4 page=fore autohide=true
前景层的作用多多。比如当你2个常用的图片不停交替转换时,可以考虑用2个前景层,然后分别用fore/back让她们分别显示。(不过这方法不见的比直接换图方便,不过对我来说都一样是ctrl+C和ctrl+V)
总之运用你的智慧,可以运用这些图层做不同的作用。显示人物的角色,对话,按钮等等等等。同样,文字层也一样,这就要靠大家的想像力了。
论坛上天娜大人制作对话框的办法就是。
将小头像放在前景层1,制作个对话框放在前景层2,把对话框的对话放在文字层1,人物名字放在文字层2.同时你可以吧其他话放在文字层0.
自己制作的时候也可以加上人物或者按钮,不过如果你想要所有层都显示的时候请注意调整透明度,还有就是注意图层的前后位置,数字越大图层越前。而人物一般都放在对话框后面
四,事情发生
事情之间的相互跳转可以使用
jump
call
macro
为了区别事件,可以给事件标上标签,比如
*sel01
或者一个事件单独为一个文件,比如
事件1.ks
jump storage=文件(如事件1.ks)
jump target=标签(如*sel01)
两者中至少需要指定一个。
call跳转事件后如返回,需要在后面加return
如果用选项跳转则需用link,endlink
[link target=*sel01]选项1[endlink]
[link storage=事件1.ks]选项2[endlink]
[s]
[s]表示段落结束,等待执行,否则事件会继续。
macro应该是kr里很高级的东东而且也是kr的优势之一。其可以用在事件发生的条件,还有指令的转换,文字层的操作等等。
这个是一个比较复杂的东西。我就讲一下格式吧,正要学它还是要仔细去研究下。
如@macro name="指令名字"
@current layer=message1(指定实行任务的层)
@fg layer=4 storage=%head page=fore l=45 t=375
@layopt layer=4 page=fore autohide=true
@nowait(中间写上执行的动作)
@endmacro
当你写上
*start
@指令名字
就等于执行
@fg layer=4 storage=%head page=fore l=45 t=375
@layopt layer=4 page=fore autohide=true
简单的说就是
@macro name=任务名字
@执行的任务
@endmacro
在开始后写@任务名字就会自动执行@macro 和@endmacro只见所写的任务
还有个让事件实行的办法就是根据变量条件。
KAG中总共有三类的变量可以使用。
以 f. 开头的变量,为游戏变量。该类变量将随着进度存档被保存。这类变量用于和游戏进度相关的数据。
以 sf. 开头的是系统变量。该类变量将在系统存档中被自动保存,在正常且没有改动的情况下将一直保持。这类变量用于与系统设置及游戏全局变量相关的数据。
以 tf. 开头的是全局变量。该类变量不会被保存,一旦程序退出就将丢失,用于临时使用的数据。
事情放在if与endif代码间,符合条件时才发生
比如
[eval exp="f.test=0"]test的变量是0
[if exp="f.test>=5"]
转到事件1。[l][r]
jump target=sel01
[endif]
[if exp="f.test<5"]
转到事件2[l][r]
jump target=*sel02
[endif]
以上代表当f.test大于或者小于5的时候事件的发展。
因为变量目前小于5,所以事件2发生
先说到这吧~~~~~~大家加油,另,层和事件,变量等我说的比较简单,因为就新人来说,目前还是先熟悉最基本的用法,此外关于它们,以后我还会继续说明~~~~~~先就这样吧~~~~还有就是,多看事例,多看语法,不明白语法就把内容代入测试看效果,可惜只能放一个first,要是可以多放几个测试该多好~~~~
[
本帖最后由 kakax 于 2007-4-17 22:49 编辑 ]