【原创纯技术】恋2高手Nscripter速成讲座☆含NSCR版\"LM2
警告:本帖仅面向LM2或RM系列有基础的中老鸟.不属于此类型请速回避.和我不熟的人请勿问问题,因为问了我也不一定愿意回答或者会回答.><【盗贴者全家死光光】
第一篇:比较文学:LM2与NScripter
熟悉LM2的各位自然知道LM2的令人不能忍的缺点.
1速度慢.(RM系列通病)
2显示图片质量低,遮片大小受限制
3大小和功能受到限制的系统按钮.
4各种莫名其妙的BUG,如栏框显示经常自动消失.
5存储系统.跳出一个WINDOWS框.破坏游戏的沉浸感,乃是游戏设计的大败笔.
6不支持同一段对话里双色文字显示.
7无法进行存挡以外的设定记录.
…不说了,再说ENTERBRAIN会告我诽谤的…XDD
但是,没有LM2的存在,没有图形界面的亲切和对恋爱冒险游戏流程的详细阐述,某D现在就不会在幻森.不会认识某几个我现在很珍惜的人,也不会有机会在这里废话…(果然是废话)
LM2教给我很多基础,是我买到的最值的正版.在此向LM2和开发LM2的伟大策划美工程序…致意.向汉化并骗走我钱然后丢下我不管的光谱致意.
三鞠躬之后,公平起见.列举NScripter的问题.
1程序本身.目前的汉化版在网络上非常少见.繁体和日文版有提供下载,而简体版…实在是很难找.
2资料.大陆基本空白.台湾都不多,如果去日本找,懂日文的稍微好点,我这般本地货要学,真是难啊.
3非图形界面.纯脚本.想想RMXP去掉图形界面剩下的那个叫脚本编辑器的东西,就可以知道那是怎样的让人头大.
4不支持单事件测试,没有除错窗口(后来发现有,虽然很不完整,是乱按出来的...但是我忘了快捷键...).出问题的时候,只指出大致的出错位置.
5没有事件管理系统.相对的,LM2的事件管理几乎已经做到极致了.
6原代码容易被解密(因为只是文字脚本)素材加密因此也不保险.(虽然LM2也好不到哪里去)
7不提供素材,依照RM系列使用规约,LM2的纸娃娃系统做出来的东西用在NScripter制作的游戏里是要侵犯版权的.
…其他的,还米发现,因为这个引擎我也接触才不久.再说下去轮到NScripter的开发者高桥直树杀来找我了…
如果自认为能忍受以上缺点,并且想换引擎的,请和我一起,向着NScr奔跑吧…
第一篇最后,感谢MOE小胜君的入门教程和回答过我问题的Advance君和小渡JJ表示深切感谢.
看完本篇的,恭喜耐心合格.下面进入正题.
V2.45下载地址....
http://bbs.emu-zone.org/showthread.php?t=276629&highlight=Nscripter
附件是对照表一张...
更正:sub命令为减/mul为乘
按照LM2事件命令一览做的东西.基本上了解这些就可以了.
如果了解基本格式,有日文的指令手册(我这算汉化么..算么...不算么...),除了自制超BT系统以外的部分差不多就无敌了.
更详细的讲在下面.
不包括:卷动背景.可以用lsph命令做成动画.但是比较麻烦
画面闪烁:因为N种效果可以做到
操作开关型参数:因为没开关
天气效果:要插件
登陆约会等等系列命令:依靠操作变数和按钮.自制系统才是王道.
[此贴子已经被作者于2005-6-28 21:21:22编辑过] 第二篇 最基本的东西
1需要:一个NScripter的EXE文件,一个记事本用来写TXT.完毕.NS是没有所谓汉化程序的!因为它只是一个靠脚本起动的EXE文件而已.大小只有几百K.
2执行流程:
*define
;中间是定义部分,相当于LM2里的游戏设定部分
game
*start
*e1
;开始游戏的第一个事件;事件的命名只支持半角,不能和NSCR的指令同名.
*e2
*aaa
*bs
...
end
执行EXE文件的时候,会自动读取放在同一文件夹里的TXT脚本,如果不使用事件跳跃命令,会沿着单线一直往下走,非常简单的设计.
一共可以写0.TXT到99.TXT那么长.
;一行里引号后面的部分为注释.不会被执行,多用分割线之类的可以把事件分开方便管理
3支持的格式
分辨率:640X480或者800X600
音乐:支持WAV,MP3,MIDI.
动画:支持AVI(ms是无声AVI).MPEG(需要DirectX8.0)
图片:支持 JPG.BMP.不支持PNG.支持把图片放在几层文件夹里.
透明色指定:
相比LM2的默认黑色,NSCR支持的透明色指定就多了.
包括完全不透明.以图片左上点指定透明色.以图片右上点指定透明色,直接以 #rrggbb的格式指定透明色,还有最后.NS自定的格式.看图很容易就明白.
左右两张图片组成的画面,右边的图片以256级灰度(0,0,0 到255,255,255)来表示左边图片每个象素点的透明度.黑色代表全不透明,白色代表全透明,50%灰色就代表半透明,类推.
如果是按钮或者动画,则做成以下格式.一格彩色一格灰度,横着排上一排...
奇怪的概念:
立方绘(d):就是角色图片,奇怪的名字....
精灵(sp):相当于LM2里的显示图片/文字(注意和文章不一样).也是一次显示的上限50个.
%1,%2....变数,数字型变数...NSCR是没有开关的,一切都靠变数解决
$1,$2....文字型变数.
以上两种,都可以在文章显示里当作控制码使用.
if [条件] [命令:命令:命令...]不用说了,条件分歧.
for %1=0 to 100
命令
命令
next
循环...这个LM2里少见...因为大部分都被简单的命令覆盖了.
goto *XXX 事件跳跃
gosub *YYY 并行处理或者叫出公共事件,公共事件的结尾用return标记.
[此贴子已经被作者于2005-4-30 16:58:01编辑过] 三 正题的正题:一个电子小说的制作(上)
下面就是所谓的事件命令一览的过程...
(一)游戏设定.*define 和game 之间的部分
------------------------------------------------------------------------------------
1背景/图片等切换效果的设定.
就是LM2切换支持的:快门,百叶窗之类的东西
无遮片的效果定义命令:
effect 3,10,700
3表示给本效果的命名.10表示NSCR内置的效果\"透明状态显示/消失\",700,代表切换时间700毫秒.
效果命名从2开始,1代表瞬间切换.
内置的效果:
1瞬间切换
2~5左右上下快门
6~9左右上下窗帘
10由透明状态显示
11~14卷动
15,18遮片/ALPHA遮片
16,17马塞克效果
(实际上,16,17偶还米测试过...)
15和18是需要遮片的命令....NCSR支持的可不只是那种32X32的小东西...640X480的遮片才是王道!
effect 6,18,1500,\"mask\\1.jpg\"
编号,效果,时间,\"遮片名称\"
---------------------------------------------------------------------------------------------------
2 NS内置的右键菜单设定.和NS窗口上面的那个系统菜单一样是只提供基础功能的东西.包括存取系统等.大致相当于LM2的系统按钮等.
rmenu \"略过对话\",skip,\"储存游戏\",save,\"读取游戏\",load,\"消除栏框\",windowerase,\"重新开始\",reset,\"对话记录\",lookback
引号内是一个选项名.后面是这个选项的功能, rmenu命令可以拉很长,也可以就写一两个选项.
savename \"储存游戏\",读取游戏\"\",\"档案\"
后面跟的三个\"\"里面是S/L菜单的标题和存档名,写些什么旧的回忆之类的也随便...
savenumber 20
存档的个数,1-20个都可以,默认是9个.
[此贴子已经被作者于2005-3-5 23:58:18编辑过] (二)制作标题 *start之后的部分
制作标题:
播放音乐.显示背景.显示按钮并等待.事件跳跃.基本的读取.退出.
-----------------------------------------------------------------------------------------------------------------
音乐...LM2就一个播放音乐一个播放因音效.对应的在NSCR里面...好长一串啊...
play \"aa.mid\" 用来播放MIDI
play \"*1\" 播放CD上的音轨
playonce \"\" 和上面两个一样,不过不是循环而是放一次就停止
playstop 停止MIDI或者CD
wave \"XX.wav\"当然是放WAV文件的命令
waveloop \"XX.wav\" 循环播放wav文件
wavestop 停止wav播放.很烦吧...><
还有
mp3 \"XX.mp3\"
mp3loop \"XX.mp3\"
bgm \"\"则是支持这以上所有音乐格式(BT不BT啊...)
最后是重要的dwave命令,因为想要同时播放音乐和音效的话,除了把这些七七八八的命令合起来乱用,最好的办法就是用dwave
dwave 0,\"XX.wav\"
dwaveloop 0,\"XX.wav\"
0为编号, 后面为文件名.声音的编号在LM2里也有出现,比如要停止的时候只要使用dwavestop 0停止音乐就行.
如果播放背景音乐编号为0.而音效编号为1,就可以同时播放.
chvol 0,100
调节音量的命令,把0号音乐音量调节为100 如果配合for next循环,就可以达到音乐淡入淡出效果.虽然比LM2麻烦,但也只是两三条命令的事.
NSCR本身当然也有自带的音乐淡入淡出命令:
cdfadeout 1000
mp3fadeout 1000
这两条是用在*define里的定义,问题是在循环播放的时候即使是同一首曲子也会进行淡入淡出变化从而造成空白,不推荐使用
---------------------------------------------------------------------------------------------------------------------------------
背景...阿门.终于有条简单点的.
bg \"aaa.bmp\",10
\"\"里面是背景图片文件名,10就是刚刚在define里定义的某个效果.
bg \"aaa.bmp\",15,1000,\"mask1.jpg\"
如果写成这样,在define里就不需要定义.效果是时间为1000毫秒的遮片显示.
如果是
bg \"bbb.bmp\",10,1000
就成了淡入1000毫秒的切换.
除此之外,
bg black,10
几个基本颜色.黑白,直接用英文单词
bg #ffffff,10
用rgb指定的纯色背景
以上,如果这算简单的话.
------------------------------------------------------------------------------------------------------------------------
是高手,自然不甘心用LM2自带的标题画面做那么逊的东西.SO,普通事件的点选分歧,或者指令输入画面做的标题纷纷出炉.原理,自然是按钮的制作
地图式制作.
btndef \"XXX.jpg\" 相当于.map中的高亮层,不过是全部由按钮拼成的,不需要背景部分.
btn 1,320,320,100,200,0,0
btn 2,320,330,100,200,100,0
btn 按钮编号1,图片左上坐标X,图片左上坐标Y,图片长,图片宽,图片截取位置X,图片截取位置Y
btn 按钮编号2,图片左上坐标X,图片左上坐标Y,图片长,图片宽,图片截取位置X,图片截取位置Y
相当于信息层,规定了按钮的大小,按钮在背景上的位置,从高亮层的哪一点开始截下这个按钮(由左上点坐标和按钮长宽定下一个方形按钮).这里对每个按钮进行单独定义.
背景层就是显示的背景了.
btnwait %0
相当于叫出地图画面,等待点击,并且把地图编号存在变数%0里...
--------------------------------------------------------------------------------------------------
指令输入画面式制作
lsp 0,\"abc.jpg\",100,100,255 相当于一个图示嵌板的命令.图片编号,图片名,图片显示位置,(255为图片透明度,可省略)
lsp 1,...
lsp 2,...
spbtn 1,1 定义点下图片1以后存到变数里的数字为1
spbtn 2,3 点下图片2以后存到变数里的数字为3
btnwait2 %0 叫出指令画面,等待指令输入,并把点下的图示嵌板编号存到变数%0里.
(btnwait和btnwait2命令的区别在于btnwait命令执行后会清空内存里的按钮定义部分.标签设定方面,btnwait2的标签直接设在本条命令前一行就行.)
作为玩家的反应,她/她可能点按钮,可能点按钮以外的地方,还可能点右键...还可能什么都不点....汗...
如果点了按钮,那么%0里的数字就是1234....
如果点按钮以外的地方,%0将会被代入0
点右键,%0被代入-1
什么都不干...继续等...但是如果用btntime 1000之类的设定了限时按钮.那么时间过了以后变数%0会被带入-2
接下来,当然是根据玩家的反应做出不同的事件跳跃了.
if %0<=0 goto *titlewait
依照点选分歧的自制标题画面,如果点了右键或其他地方,设定一个标签跳回到等待状态.
if %0=1 goto *newgame
if %0=2 goto *titleload
如果变数等于几,跳跃到哪个事件...和当年不知道地图移动命令一样辛辛苦苦勤勤恳恳的定义吧...
在地图式制作按钮里,鼠标移动上去会有悬停效果.
而指令输入画面的按钮,应该是有动画或者移动上去会变化或者有声音...这是起码的吧?
这个,牵扯到sp的一系列命令.
lsp 1,\":a/2,200,2;aaa.jpg\",100,100
spbtn 1,1
这两个命令配合起来形成了一个动画按钮.
/2 表示把这张联排图片分成两格,200表示动画间隔时间,2表示把图片做成动画.
:a 冒号加上字母,这个,就是传说中的透明色指定效果.如果是:c就代表不透明,:l图片左上点颜色为透明色...:r不用多说吧...
前面这些对图片的设定和后面的图片名用;分号隔开.
lsp 1,\":c/2,0,3;aaa.jpg\",100,100
spbtn 1,1
/2,图片分割成两格,0表示无间隔时间,3表示把图片做成悬停按钮
然后,让鼠标指上图片的时候发出声音...
lsp 1,\":c/2,0,3;aaa.jpg\",100,100
exbtn 1,1,\"S1,(se\\btnmove.wav)\"
exbtn命令前面的部分和spbtn一样,最后一个部分\"\"内,设定了一些效果.以上是发声效果.其他...下次介绍....^ ^
----------------------------------------------------------------------------------------------------------
基本的读取
systemcall load 相当于游戏控制:读取
同样
systemcallsave 游戏控制,储存
systemcall skip
systemcall windowerase
等等
右键菜单里的所有功能都可以用systemcall叫出来.
-----------------------------------------------------------------------
退出游戏
脚本执行遇到end命令的时候退出游戏
如果是reset命令就是从头开始.
废话最后的一个范例,初版伪圣书
*define
caption \"Apocripha/0 -Fairy Tale\";窗口上的标题名
mp3fadeout 100;mp3淡入淡出效果
;------------------------------
;●效果定义
effect 2,10,500
effect 3,10,700
effect 4,10,1000
effect 5,18,3500,\":c;mask\\9.jpg\"
effect 6,18,1500,\":c;mask\\1.jpg\"
;---------------------------------------------
lookbackcolor #ffffff;回想时使用的文字颜色
savename \"储存游戏\",\"读取档案\",\"档案\"
savenumber 17;刚刚说过了
transmode alpha;指定整体的透明色方式,不需要每个图片都用\":a;XXX.bmp\"定义.
game
*start
bg \"bgd\\title_base.bmp\",5;变更背景
*title;设定一个标签
mp3loop \"wood.mp3\";播放音乐
bg \"bgd\\title_base.bmp\",0;按钮的背景层
btndef \"btn\\titlebtn.bmp\";按钮的高亮层
;-----------------------------------------
;按钮定义
btn 1,302,256,190,43,302,256;开始
btn 2,302,310,190,43,302,310;读取
btn 3,302,373,190,43,302,373;CG
btn 4,302,431,190,43,302,431;退出
;-----------------------------------------
;等待指令输入
btnwait %1
if %1<=0 goto *title;点其他地方时返回标签
if %1==1 goto *newgame;开始新游戏事件
if %1==2 goto *titleload;读取事件
if %1==4 goto *endgame;离开游戏事件
*titleload
systemcall load;叫出读取菜单
goto*title;假如玩家不读取而是按右键,返回标题继续等待指令
*newgame
goto *game_start ;开始新游戏,进入其它事件
*endgame;结束游戏
end
[此贴子已经被作者于2005-3-5 12:36:49编辑过] 嗯嗯,强烈要求加精……
只看了一点……不明白再来问你……
抱下青青.
顺便占楼更新.
四 正题的正题:一个电子小说的制作(下)
制作事件:图片的显示详解,对话框的设定,文章的显示,(字体,颜色,大小),选项的制作,换行图示。
回想按钮设定.
-----------------------------------------------------------------------------------
对应LM2的显示人物,NSCR也有一个类似的比较简单的命令.
ld l,\":l;XXX.jpg\",10,1000
复习考试!...上面这条代表的是什么?
ld {l,c,r},图片名,显示效果
LM2设定了九个可以直接指定的显示位置,而NSCR是三个,左中右,也就是ld(显示人物图片)命令所带的第一个参数.
也就是在窗口的左边显示一张名叫\"XXX.JPG\"的图片,透明色是以左上点颜色指定的,显示方式为淡入,显示时间为1秒.
l,c,r可以视做是图片编号,所以如果再使用一条 ld l,\"AAA,jpg\",1 原来的XXX.JPG就会被消除掉.
而让人物消失的时候,使用的指令是
cl {l,c,r},消失效果
如果要制造幽灵效果半透明的人物,指令是
tal {l,c,r},透明度(从0到255)
-----------------------------------------------------------------------------------
而对应更加自由的显示图片命令.NSCR是使用组合方式来进行的.
lsp 0,\"XXX.jpg\",100,100
lsph 2,\"XXX.jpg\",100,100
实际是对一张图片的预载.
并且,这两条命令里没有指定显示效果,因此需要另外一条命令\"刷新\"
print 2 ;以自定义的效果2刷新画面
print 10,1000 ;以淡入1000秒的效果刷新画面
只有在print 命令使用后,图片才会被显示.
-----------------------------------------------------------------------------------
lsph和lsp命令的不同在于由lsph预载的图片仅仅依靠print 命令配合也是不会显示出来的.
要让lsph定义的图片显示,要在刷新前使用另外一条命令 vsp 2,1
2代表图片编号,1代表将图片显示出来.
如果需要将这张图片的状态设为不显示,就是用vsp 2,0配合刷新了.(0代表将图片变为不显示状态)
vsp 命令对于lsp和lsph定义的图片有效.
-----------------------------------------------------------------------------------
卸载图片,则是使用.
csp 图片编号 命令.
如果csp -1 代表消除全部图片.
-----------------------------------------------------------------------------------
移动图片,使用
msp 0,10,-5,-2
msp 图片编号,相对目前位置的X位移,相对目前位置的Y位移,相对透明度的加减
amsp 0,100,200,255
amsp 图片编号,移动到的绝对位置X,绝对位置Y,透明度
-----------------------------------------------------------------------------------
说了这么多,终于该到让人物说话的时候了.下面见识下NSCR最长的命令之一,对话框的设定.
LM2里提供了不同版面的设定,每换一个版面,实际上就是换对话框什么的.在NSCR里对话框是可以随时设定的(不过应该不会有人那么无聊说一句换一次吧...XDDD)
设定对话框的命令
setwindow 195,345,17,4,21,21,0,2,%205,1,1,\":a;pic\\frame1.jpg\",0,289
或者
setwindow 195,345,17,4,21,21,0,2,%205,1,1,#0000ff,0,289,630,470
setwindow 文字显示坐标X,文字显示坐标Y,每行文字数,每列文字数,单个文字长,单个文字宽,列间距,行间距,文字表示速度,粗体字开关,阴影字开关,半透明视窗颜色或图片名(含透空形式),对话框左上角X,...Y,...右下角X,...Y(最后两个对对话框图片无效)另外,正如出现的那个%205,基本上所有的牵涉到数字的命令都可以用变数代替数字,假如不能使用参数的命令都会在指令手册里特别指明.
NSCR是可以自动换行的,所以请大家欢呼吧...
不过,假如一句里显示的文章字数超过了对话框规定的字数,NS会直接报错的.另外,所有的文章都需要用全角(包括字母和数字),因为NSCR所有的命令都是半角的.
-----------------------------------------------------------------------------------
文章的显示
要显示一句话的话.就是这样.
今天我狠拍了一个小白。\\
所以心情很好。\\
这样的效果,是会先显示句子 \"今天我狠拍了一个小白。\"然后这句话消失.显示下一句\"所以心情很好。\\\"
如果使用
今天我狠拍了一个小白。@
所以心情很好。\\
在显示第一句话以后,会接在第一句话后面显示第二句.这两句的总长度同样不能超过对话框的字数规定.
在电子小说里,这两种效果就是段落和翻页.
-----------------------------------------------------------------------------------
改变文字的颜色.
#0000ff今天我拍了一个#ffffff小白#0000ff。\\
这句用在NSCRL里,表现的效果就是小白两个字为白色,而其他文字为蓝色。
#ffffaa【青青】#ffffff
今天我狠拍了一个小白。\\
#ffffaa【小D】#A4F0A4
我也要加入白拍子联盟。\\
这样就是标准的AVG式,以一个颜色显示名字,并用不同文字颜色表示不同人说话。
虽然第二句的两行文字之间差很远,显示出来也不会有空行。
如果需要空行,在空行那里加br这条指令。
-----------------------------------------------------------------------------------
defaultfont 字体名称
用于*define中文字字体的改变。
PS:似乎还有一个用于游戏中改变字体的命令,好像是
;font 长,宽,间距,间距,\"字体\"
未测试,不知道是否正确。
-----------------------------------------------------------------------------------
改变文字显示速度有两个命令
textspeed 数字或者数字变量
!s数字
后一条可以在对话中插入,但是不支持用变量表示文字速度.0代表瞬间显示,数字越大显示越慢.
当然,速度在对话框的设定里也有.
-----------------------------------------------------------------------------------
选项的制作
select \"我知道了。\",*goon,\"没听明白。\",*back
可以写N个,显示时是每行显示一个选项。当然也不要超过对话框可以显示的行数。
选择后跳跃到不同的事件。
跳跃后继续顺序执行,不会和LM2一样,选项分歧后再汇合。
如果需要汇合的话,最好是用
selectgosub\"选项\",*1,\"选项\",*2,\"选项\",*3
这条指令.更加方便管理.不过跳跃到的事件 *1,*2,*3的末尾,需要加上return指令返回.
*1
;事件内容
return
就相当于LM2的跳跃后返回和RM的公共事件.
显示选项的文字颜色和被选择后改变的文字颜色,在define里用selectcolor #rrggbb,#rrggbb定义
实际上没什么可说的,按钮都会用了,为什么不用按钮自制选择呢?
------------------------------------------------------------------------------------
换行图示,就是一句对话显示完以后在句子后面摇晃的那个小小图标。实际上是个动画,所以设定方式和动画差不多。
只要直接把两张三格图片命名为cursor0.bmp和cursor1.bmp(换行和换页)放在文件夹下就可以自己读取作为图示了。如果要自行设定的话。
setcursor 0,\":l/3,160,2;cursor0.bmp\"\":l/3,160,2;cursor1.bmp\",0,0
setcursor 图片编号,图片名,相对文字坐标X,相对文字坐标Y。
图片名有两个,分别代表换行和翻页的图示。
absetcursor 用法大致相同,就是相对坐标改为绝对坐标。
------------------------------------------------------------------------------------
回想按钮设定
在define内
lookbackbutton 文字列1,文字列2,文字列3,文字列4
设定四张图片名称,分别为向上一句,向下一句的一般效果和悬停效果.
如果把图片起名为\"uoncur.bmp\",\"uoffcur.bmp\",\"doncur.bmp\",\"doffcur.bmp\"放在文件夹里会自动读取.
按钮的位置定死了是对话框的右上角和右下角.所以不是很方便.
当然,自定的这个回想系统是靠右键菜单或systemcall lookback 来调出的.
回想文字的颜色,在define里用lookbackcolor #rrggbb定义
[此贴子已经被作者于2005-6-16 12:33:28编辑过] 唔,我这样算不算灌水……再次看到那个APO栏框出现的时候我猛然发现五分的新栏框似乎真的大了。
NS内带透明色是我最心的功能了,虽然为此有可能要重新处理上百张LM2时期遗留下的人物图片- -bbb
小D辛苦了,抱下^^~一起向NS时代的到来欢呼吧!!
[此贴子已经被作者于2005-3-5 2:20:13编辑过] 继续占.
NScripter不是某个制作组自家的,从一开始就是为同人游戏开发而开放下载的.
同人的精神就是....(把耽美两个字吞下去)分享爱好才是王道.^^
SO,我会把我所弄懂的东西不保留的分享出来DI.
我不懂的就靠各位继续了...
牢骚:在接触NSCR的很短时间里,一边在自己基本不懂的日文里抓头,一边下定决心要把这些公布出来让大家和我一起郁闷,啊,不是,让大家不要和我一样郁闷.
看懂了50%
(心:真索浅显易懂啊…………8索反语,看懂20%以上都算浅显易懂……)