返回函数列表
返回函数功能
函数列表部分

ASC获得字符的ASCII码。

BBEGIN开始位图绘制。

BCREATE生成指定名称指定大小的空白位图。

BDELETE删除指定名称的位图。

BDUP从指定的位图复制生成一个新的位图。

BEEP发出指定频率的声音。(译注:频率取值范围为37~32767)

BEND结束对位图的操作。

BFILL用指定的颜色填充位图。

BFORMAT向位图中写入字符串。

BFRECT向位图中插入一个矩形。

BFROMT用指定的纹理创建位图。

BGETSIZE获得位图的宽和高。

BGMFADEOUT指定BGM停止或者切换的时候淡出的时间。

BGMPLAY循环播放BGM。

BGMPLAYONCE播放一遍BGM。

BGMSTOP停止播放BGM。

BGMVOLUME调节BGM的音量。

BGRADATION用渐变颜色填充位图。

BGVFADEOUT指定BGV的淡出时间。

BGVPLAY播放BGV。

BGVVOLUME指定BGV的音量。

BJOINX在第一张位图右边接上第二张位图生成新的位图。

BJOINY在第一张位图下边接上第二张位图生成新的位图。

BLOAD读取指定的对象到位图中。

BMONOTONE根据指定的颜色单色化位图。

BNEGA反转位图的颜色。

BRESIZE扩大或缩小位图。

BREVERSE在x或y或两个方向上翻转位图。

BSAVE将位图保存为PNG。

BTN将指定的精灵定义为按钮。

BTNCLEAR清楚按钮定义。

BTNEXEC执行按钮处理。

BTRIM截取位图指定坐标区域。

CALL调用由defsub预先定义好的命令。

CAPTION设定窗口标题的文字。

CCAPTION设定控制台的窗口标题。

CCLEAR清空控制台。(清除所有画面上的文字)

CCLOSE关闭控制台窗口。

CCOLOR设置控制台的颜色。

CGETCURSOR获得控制台中光标的坐标。

CGETSIZE获得控制台横向和纵向容纳的字符数。

CHR由ASCII码获得字符。

CINKEY从控制台获取一个字符。

CLEARMOUSE清空窗口所有的鼠标消息。

CLICK等待一次鼠标左键点击。

CLOCATE设置控制台光标位置。

COPEN打开控制台窗口。

CPRINT向控制台输出字符串。

CREAD从控制台读入一个字符串。

CSETSIZE设定控制台窗口横向和总想容纳的字符数。

CSETTEXT在指定的位置输出指定的字符串。

CWRITE不换行输出字符串。

DEFSUB自定义命令。命令名同时也是子程序的名字。

DOEVENTS处理消息,在循环的时候需要适时调用。

ERROR显示错误信息并退出。

EXEC执行字符串中的命令。

FCHK检查文件是否读入内存。

FDELETE删除特定字体。

FILECHK检查此文件或者压缩包中是否存在该文件。

FILETIME获得此文件的修改日期。

FINSERT将此命令中的文件当作实际读取的文件记录到记录(log)中。

FONT生成特定字体。

GBEGIN开始对画面进行绘制。

GBEZIER绘制贝塞尔曲线。

GBLEND切换渲染绘制模式。

GCIRCLE绘制圆。

GELLIPSE绘制椭圆。

GEND停止对画面的绘制。

GETBGMVOLUME获得现在播放的BGM的音量。

GETBGVVOLUME获得当前BGV的音量。

GETCLICK获得鼠标输入。

GETLOGTEXT获得回想记录中的数据。

GETMOUSE获得鼠标的坐标。

GETSCREENSHOT生成屏幕截图。

GETSEVOLUME获得SE的音量。

GETSKIP获取当前的Skip模式。

GETSPCELL获得指定精灵组的编号。

GETSPINFO获取精灵的信息。

GETVOICEVOLUME获得语音的音量。

GFCIRCLE绘制填充圆。

GFELLIPSE绘制填充椭圆。

GFRECT绘制填充矩形。

GLINE绘制直线。

GLINEL绘制直线列。

GLINES绘制折线。

GPOINT绘制点。

GPOINTL绘制点列表。

GRECT绘制矩形。

GTRIANGLE绘制填充三角形。

GTRIANGLEF绘制三角形构成的扇形。

GTRIANGLEL绘制填充三角形列表。

GTRIANGLES绘制连续三角形。

INPUT接受用户输入。

ISDEF检查变量是否被定义。

JOIN将字符串用指定字符连接。

JOINA将数组用指定字符连接。

LCASE返回小写字母。

LCHK检查标签是否存在。

LEFT从左边截取字符串。

LEN返回字符串长度。

LINSERT将此命令中的标签(label)当作实际通过的标签记录到记录(log)中。

LOAD从存档文件读取游戏存档。

LOGCHK检查指定编号的log。

LRCLICK等待点击。

LTRIM删除字符串左边的空格,不删除右边的空格。

LUA执行lua脚本。

LUAF执行Lua函数。

LUAFILE读取Lua文件并执行。

MID从指定位置开始截取指定数目的字符。

MOVIE播放影片。

MRESET重置动画纹理。

MWRITE将现在播放的动画保存为图像文件。

MWRITEBEGIN打开一个电影文件供写入。

MWRITEEND停止对电影文件的写入。

NUM将字符串转换为数值。

OKBOX显示一个有OK按钮的对话框,在按下OK按钮之后脚本才会继续执行。

PARAM调用子程序的时候规定接受参数的变量。

PRINT将精灵的状态反应到屏幕上。

PI返回圆周率。

QUAKE摇晃画面。

QUIT终止程序。

RANDOM生成随机数。

RANDOMSEED初始化随机数种子。

REGEX_REPLACE根据正则表达式替换字符串。

REPLACE替换字符串。

RESETTIMER重置内部的计时器。

RIGHT从字符串右端截取指定数目的字符。

RTRIM删除字符串右边的空格。

SAVE将最后一个保存点的数据保存至文件。

SAVEMODE打开/关闭更新保存点的功能。

SAVEPOINT强制地更新保存点。

SAVETIME获得存档的保存时间。

SCHK检查存档是否存在。

SDELETE删除声道。

SEARCH在字符串中搜索指定的字符串。

SECHVOLUME单独设置某个声道的音量。

SEFADEOUT设置SE的淡出时间。

SELECT选择支命令。

SELOOP循环播放SE。

SEPLAY播放SE。

SESTOP停止SE。

SESTOPALL停止所有SE。

SETCLIPBOARD设置剪切板中的文字。

SETMOUSE将鼠标移动到指定的位置。

SEVOLUME设置SE的音量。

SFADEOUT经过指定的时间之后对声音进行淡出处理。

SGN判断正负。

SISPLAYING确认该声道是否在播放声音。

SKIP变更Skip模式。

SLEEP停止指定的时间。

SOUND新增一个声道。

SP生成精灵。

SPAN对指定的声道进行偏移处理。

SPANIMATIONRESET重置所有精灵的动画

SPAUSE暂停指定的声道。

SPBEZIER对精灵进行贝塞尔变换。

SPCELL切换精灵的分格编号。

SPDRAW绘制所有的精灵。

SPDELETE删除精灵。

SPDELETES删除以该字符串开始的精灵。

SPFILL绘制单色的精灵。

SPFORMAT向精灵中写入字符串。

SPHITCHECK判断精灵是否覆盖了指定的坐标。

SPLAY在指定声道播放声音。

SPLIT根据指定的字符将字符串分割至若干个变量中。

SPLITA根据指定的字符将字符串分割至一个数组中。

SPMOVE移动精灵。

SPMOVELT移动精灵。(附带旋转和缩放)

SPPUTTEXT向精灵里写入文字,然后依次显示它们。

SPSET生成一个空的精灵组。

SPSETCLEAR删除精灵组里的所有精灵,但保留精灵组。

SPSETDELETE删除一个精灵组。

SPSETVISIBLE切换精灵组的显示与隐藏。

SPSETZ变更精灵组的Z值。

SPVISIBLE显示/隐藏精灵。

SPZ设定精灵的Z值。

SRESUME继续播放由SPAUSE停止的声道。

SSTOP停止声道上的声音播放。

STR将参数转换为字符串。

STRF将数值格式化输出。

STRLOAD读取文本文件,返回对应的字符串。

STRSAVE将指定的字符串保存到指定的文本文件中。

SVOLUME变更指定声道的音量。

SYSTEM在命令提示符下执行指定的命令。

TBEGIN开始对纹理的绘制。

TBEZIER对纹理进行贝塞尔变换。

TCHK获得当前文本是否已读。

TDELETE删除纹理。

TDRAW将纹理绘制在画面指定位置。

TDRAWLT对纹理进行旋转扩大缩小。

TDRAWTR指定三角形的三个顶点,对相应的多边形绘制纹理。

TEND结束对纹理的绘制。

TFILL向指定的纹理填充指定颜色。

TFORMAT向纹理上写入字符串。

TFRECT向纹理的指定区域中填充颜色。

TFROMB由位图生成纹理。

TGETSIZE获得纹理的大小。

TISPLAYING判断是否在播放纹理动画。

TLOAD载入文件作为纹理。

TRANSITION由两张位图生成变换中图像。

TRAP执行陷入。

TRIM删除字符串两端的空格。

TSAVE将纹理保存为文件。

TYPE返回参数的值类型。

UCASE转换为大写字母。

VCLEAR清除指定的变量,数组,或者结构体。

VCOPY复制指定的变量,数组,或者结构体。

VGET获得PARAM传递的变量。

VLBOUND获得数组最小非空元素的下标。

VLEN获得数组的长度。

VSET对param传递的变量赋值。

VOICEPLAY播放语音。

VOICEFADEOUT指定语音淡出的时间。

VOICEVOLUME设定语音的音量。

VUBOUND获得数组最大非空元素的下标。

WAIT等待指定的时间。

WAITTIMER等待从RESETTIMER命令开始执行算起的时间。

ZENKAKU将字符串转换为全角字符。

函数功能部份
错误显示功能

ERROR

参数:ERROR str

例:

ERROR "文件不存在"

功能:

显示错误信息并退出。

选择支功能

SELECT

参数:SELECT text1,lb1,text2,lb2,...

例:

SELECT "选项1",@lb1,"选项2",@lb2

功能:

选择支命令。会调用基本的@selectb标签。

精灵功能

制作ADV游戏的时候主要使用的就是精灵功能。

纹理命令和绘图命令在内部使用的时候,是不能同时执行的。

此外,无论立绘,背景,日期还是对话文字,文字窗口等等,都是“精灵”。

并没有打算将他们写成固定的命令,而是由基本的功能组合起来的(请参考例子程序)。

至于为什么要这么做,是因为对于不同的游戏来说,每一个大功能实现方式和功能差别太多。


而且,精灵的显示状态更改之后并不会马上反映到屏幕上。

需要用PRINT命令指定显示效果,才能显示出来。

这个显示模式和旧Nscripter是一样的。


精灵的名称定义如下

"setname:spname"

setname为精灵组(sprite set)的名称,spname为精灵的名称

精灵组(sprite set)好比一个文件夹,精灵就像文件一样放在里面。

精灵组是在对按钮处理时的操作对象,其Z值用于在显示与隐藏之间切换。

省略精灵组名称的时候,精灵组的名称为"",此精灵组的Z值默认为10000.

SPSET

参数:SPSET name,z

例:

SPSET "setname",10

功能:

生成一个空的精灵组。有同名的精灵组存在的时候不会生成。

请注意:Z值为精灵组的Z值。精灵的Z值需要另外指定。

精灵首先会根据精灵组的Z值排序,再在精灵组中根据每个的Z值排序。

SPSETVISIBLE

参数:SPSETVISIBLE name,v

例:

SPSET "setname",1

功能:

切换精灵组的显示与隐藏。1为显示,0为隐藏。

即使精灵处于显示状态,如果其所属的精灵组切换为隐藏状态的话精灵也会隐藏。

精灵处于隐藏状态的话,即使所属的精灵组处于显示状态也不会显示。

SPSETCLEAR

参数:SPSETCLEAR name

例:

功能:

删除精灵组里的所有精灵,但保留精灵组。

SPSETDELETE

参数:SPSETDELETE name

例:

功能:

删除一个精灵组。

SPSETZ

参数:SPSETZ name,z

例:

功能:

变更精灵组的Z值。

SP

参数:SP nameopt

例:

SP "sp1"{name="test.png",x=100,y=100,z=100}

SP "set:sp2"{name={"cell1.png","cell2.png"},x=200,y=200,z=100,cell=0,blend=1} ; 渲染方式(blend)默认为0,可省略,1为叠加渲染

SP "set:sp2"{name={"cell1.png","cell2.png"},cx=300,cy=300,xs=1.2,ys=1.2,rot=45,z=100,cell=0} ; 角度以度(deg)为单位,而不是弧度(rad)。

SP "set:sp3"{name={"cell1.png","cell2.png","cell3.png"},x=200,y=200,z=100,animtime=100,animtype="normal"}

※参数在不必要的时候可以省略。

※和NScripter不同的是,多个分格的图像需要分别指定。这个指定不是作用于整个图像的。

※动画的模式(animation type)如下:

"normal"或者未指定的""为0→1→2→3→0→1→2→3→0→1...

"stop"则是0→1→2→3(停止)

"round"为0→1→2→3→2→1→0→1→2→3→...

"lua"会调用animfunc预先指定的Lua函数。是为懂Lua的用户准备的。详细请参照basic.sprite_animation_check。

功能:

生成精灵。在同名精灵存在的时候删除该精灵。

SPDELETE

参数:SPDELETE name

例:

SPDELETE "set:sp1"

功能:

删除精灵。

SPDELETES

参数:SPDELETES head

例:

SPDELETES "set:btn"

功能:

删除以该字符串开始的精灵。

例子的代码中,如果存在"set:btn0""set:btn1"..."set:btn99"等精灵,都会被删除。

请注意:很容易误删不想删掉的精灵。

GETSPINFO

参数:GETSPINFO name,info

例:

GETSPINFO "sp1",%info

功能:

获得精灵的信息。例子中获得了“sp1”精灵的信息。

(常规定义)

%info.x ; X坐标

%info.y ; Y坐标

(旋转放缩定义)

%info.cx ; CX坐标

%info.cy ; CY坐标

%info.xs ; X扩大率

%info.ys ; Y扩大率

%info.rot ; 旋转角


%info.z ; Z值

%info.a ; α值

%info.cell ; 分格编号

%info.cellnum ; 分格数

%info.w ; 宽

%info.h ; 高


%info.animtype ; 动画的模式(animation type)

%info.animtime ; 动画时间

SPANIMATIONRESET

参数:SPANIMATIONRESET

例:

功能:

重置(reset)所有精灵的动画。

SPBEZIER

参数:SPBEZIER name,x0,y0,x1,y1,x2,y2,x3,y3,sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4,sx5,sy5,sx6,sy6,sx7,sy7

例:

SPBEZIER "sp",0,0, 1,0, 1,1, 0,1, 0.2,-0.2, 0.8,-0.2, 1.2,0.2, 1.2,0.8, 0.8,1.2, 0.2,1.2, -0.2,0.8, -0.2,0.2

功能:

对精灵进行贝塞尔(Bezier)变换。指定的坐标不存在的话则不会进行变换。

坐标首先是按顺时针顺序的左上、右上、右下、左下,然后是按上右下左的顺时针顺序的上边左,上边右,右边上,右边下,下边右,下边左,左边下,左边上。坐标值都是按左上0,0,右下1,1来指定的。

SPCELL

参数:SPCELL name,cell

例:

SPCELL "sp1",2

功能:

切换精灵的分格编号。

SPFILL

参数:SPFILL name,cell,color

例:

SPFILL "sp1",0,#00000000

功能:

绘制单色的精灵。对于文字窗口,可以用这个命令涂抹掉绘制之前的文字。

SPMOVE

参数:SPMOVE name,x,y,a

例:

SPMOVE "sp1",100,100,255

功能:

移动精灵。坐标为精灵左上角的位置。α值省略的时候为255。

SPMOVELT

参数:SPMOVELT name,cx,cy,xs,ys,rot,a

例:

SPMOVELT "sp1",300,300,1.2,1.2,RAD(45),255

功能:

移动精灵,指定的坐标为精灵中心的坐标和旋转放缩值。α省略的时候为255。

角度的单位为弧度(rad),度(deg)需要使用RAD()进行转换。

SPVISIBLE

参数:SPVISIBLE name,v

例:

SPVISIBLE "sp1",0

功能:

显示/隐藏精灵。1为显示,0为隐藏。

SPZ

参数:SPZ name,z

例:

SPZ "sp1",3

功能:

设定精灵的Z值。

SPFORMAT

参数:SPFORMAT name,cell,str,opt,rubyopt

例:

SPFORMAT "sp1",0,"あいうえおかきくけこ{漢字/ルビ}さしすせそ",{font="text",x=2,y=2,w=25,h=4},{font="ruby"}

功能:

在不需要注音(ruby)功能(比如英语文字)的时候可以省略rubyopt参数。

向精灵中写入字符串。这是一个精灵替换命令,而不是绘制命令。

在例如回想模式的时候使用此命令写入字符串。文字中的%p等字符会被忽略。

SPPUTTEXT

参数:SPPUTTEXT name,cell,str,opt,rubyopt

例:

SPPUTTEXT "sp1",0,"あいうえおかきくけこ{漢字/ルビ}さしすせそ",{font="text",x=2,y=2,w=25,h=4,wait=50},{font="ruby"}

功能:

在不需要注音(ruby)功能(比如英语文字)的时候可以省略rubyopt参数。

向精灵里写入文字,然后依次显示它们。wait可以调整速度。速度指定为0的时候是立即全部显示。

文字里出现%p以及到达整段末尾时,会调用基本的@textb来进行文字窗口的界面的处理。

但是末尾为_的时候不会进行处理。屏幕会保持完毕的样子继续执行下面的命令。

(此函数和旧Nscripter的linepage函数类似)

GETSPCELL

参数:GETSPCELL(name)

例:

%cell=GETSPCELL("sp1")

功能:

获得指定精灵组的编号。

SPHITCHECK

参数:SPHITCHECK(name,x,y)

例:

if SPHITCHECK("sp1",100,100)==1 then goto @hit

功能:

判断精灵是否覆盖了指定的坐标,是则返回1,否则返回0。

现在所有的坐标都是左上坐标的形式。

高级绘制命令/等待输入命令

PRINT

参数:PRINT effectsymbol,time,param

例:

PRINT #C

PRINT #RD,500

PRINT #SL,500

PRINT #F,500

PRINT #U,500,"rule.png"

功能:

精灵在改变状态之后,并不会反应在屏幕上。

而PRINT命令能将改变反映到实际屏幕上。这一点和旧Nscripter是一样的。

第一个参数用于指定变化的类型。


#C 或者"" 瞬时显示 不指定时间。

#F 交叉淡入淡出

#RU #RD #RL #RR 从上下左右方向进入

#SU #SD #SL #SR 从上下左右方向卷动进入

#U 全局变换(Universal Transition) 第三个参数为掩模图像(原文为ルール画像)。和旧Nscripter的18号效果是一样的。

QUAKE

参数:QUAKE time,num,size

例:

功能:

摇晃画面。三个参数依次为持续时间(单位毫秒),摇动次数,摇动幅度(1为画面的1/20)。

为了不露出画面之后的黑色会对图像进行扩大,摇动幅度越大扩大率就越大。

对此命令的功能不满的话可以在system.lua的QUAKE命令中编写自己中意的命令。

CLICK

参数:CLICK

例:

功能:

等待一次鼠标左键点击。精灵动画等并不会暂停。

LRCLICK

参数:LRCLICK retval

例:LRCLICK %ret

功能:

等待点击,会判断按下的是鼠标左键还是右键。精灵动画等并不会暂停。

点击左键变量会被赋值#L,单击右键变量会被赋值#R。

在CG模式里使用很方便。

按钮功能

※关于精灵操作字符串

和旧Nscripter的扩展按钮功能相近的功能。在打算进行默认的按钮变化以外的功能的时候使用。

"S(test.ogg)" 播放指定的声音。

"P(spname,N)" 变更指定的精灵的分格编号。N只能使用直接的整数,不能使用变量。

"C(spname)" 清除指定的精灵。

"M(spname,x,y)" 移动指定的精灵。

上面的效果可以组合使用。

BTNCLEAR

参数:BTNCLEAR setname,defstr

例:

功能:

※setname和defstr在不必要的时候可以省略。

※setname省略的时候,精灵组的名字相当于""。

※在指定了defstr的时候不能省略setname。

清除按钮定义。按钮定义和精灵组是不同的。

defstr是鼠标和任何按钮都不重叠的时候执行的“精灵操作字符串”。

BTN

参数:BTN name,opt

例:

BTN "sp1"

BTN "sp2",{style="push"}

BTN "sp3",{style="toggle"}

BTN "sp4",{on="P(sp1,0)P(sp2,1)"}

BTN "bar0",{style="bar"}

功能:

将指定的精灵定义为按钮。

opt为以下指定的值。

on="精灵操作字符串"

  当鼠标移动到按钮上时执行的处理。

off="精灵操作字符串"

  当鼠标从按钮上移开时执行的处理。

style="指定的样式"

  用于指定按钮的样式。省略的话为"push"。以下为可能的种类。

  "push" 以及"" 为push按钮,鼠标重叠切换为分格1,离开为分格0,返回值为精灵名。

  "toggle" toggle按钮,按下的时候由分格0切换到分格1。返回值为"精灵名:0"或者"精灵名:1"。

  "bar" bar 将分格像条一样的使用,点击精灵的某处就会移动条的位置。稍微有一些费解请参考例子的用法。

align="left"或者align="right"

  bar类型的按钮,规定精灵的那个方向是0。省略的话是默认left。

noreset=1

  对于push按钮,按下之后会回复到分格0的状态,noreset设置为1的话则不会回复。

BTNEXEC

参数:BTNEXEC val,setname,opt

例:

BTNEXEC %ret,"setname",{wheel=1}

功能:

※setname和opt在不必要的时候都可以省略。

※省略setname的时候,精灵组默认为""。

※在指定了opt的时候不能省略setname。


执行按钮处理。返回值为符号或者精灵名,其中精灵名不含其所在的精灵组名。

也就是说在点击"set:sp"的精灵的时候返回的值为"sp"。因为命令中已经包含了精灵组的名字。


返回值如下:

push按钮……"精灵名"

toggle按钮……"精灵名:0"或者"精灵名:1"

bar……"精灵名:分格编号"

""……点击按钮之外的地方

#R……单击右键时


opt为以下指定的值

wheel=1

  获得滚轮的输入。返回值为#WU(滚轮上滚),#WD滚轮下滚。

ctrl=1

  获得Ctrl键的输入。返回值为#CTRL。

spcret=1

  获得Space和Enter键的输入。返回值为" "或者#RETURN。

automode=1

  执行自动模式。使用语音的时候在语音结束时,未使用语音时在time所规定的时间之后继续执行。

  超时(time out)(或者语音结束)的时候返回#TIMEOUT。

time=1000

  指定超时的时间。在自动模式之下,未使用语音的时候以及未开启自动模式的时候,超时所需的时间。

ldown=1

  判断鼠标左键按下。返回值#LD。

rdown=1

  判断鼠标右键按下。返回值#RD。

func=1

  获得功能键的输入。返回值为#F1~#F12。

cursor=1

  获得方向键的输入。返回值为#UP #DOWN #LEFT #RIGHT。

alphabet=1

  获得字母按键的输入。返回值为#KEY_A~#KEY_Z。

字体功能

FONT

参数:FONT name,opt

例:

FONT "text1",{}

FONT "text2",{name="MS ゴシック",color=#FFFFFFFF,width=16,height=16}

FONT "text3",{name="MS ゴシック",style="outline",outlinecolor=#FF000000,color=#FFFFFFFF,width=24,height=24}

FONT "text4",{name="MS ゴシック",style="shadow",color=#FFFFFFFF,shadowcolor=#FF000000,width=24,height=24}

FONT "text5",{name="MS ゴシック",style="fancy",outlinecolor=#FF000000,color1=#FFFFEEAA,color2=#FFFFFFFF,shadowcolor=#FF000000,fx=1,fy=1,width=24,height=24}

功能:

生成特定字体。特定字体不会被保存,所以一定要在脚本初始声明。

FDELETE

参数:FDELETE name

例:

FDELETE "text1"

功能:

删除特定字体。

各种声音功能

※程序内部使用的是初级声音功能。需要同时也使用初级声音功能的时候,请调用内部相关函数。

BGMPLAY

参数:BGMPLAY name

例:

BGMPLAY "test.ogg"

功能:

循环播放BGM。

BGMPLAYONCE

参数:BGMPLAYONCE name

例:

BGMPLAYONCE "test.ogg"

功能:

播放一遍BGM。

BGMSTOP

参数:BGMSTOP

例:

BGMSTOP

功能:

停止播放BGM。

BGMVOLUME

参数:BGMVOLUME vol

例:

BGMVOLUME -10000

功能:

调节BGM的音量。范围为0~-10000,0最大,-10000为静音。

一般来说-2000左右是差不多能听清的范围。实际情况听起来舒服的范围下需要尝试。

和音量相关的命令均是这个范围。

BGMFADEOUT

参数:BGMFADEOUT time

例:

BGMFADEOUT 1000

功能:

指定BGM停止或者切换的时候淡出的时间。单位为毫秒。

开始淡出后无法停止执行。

在切换为其他音乐的时候,会在淡出原曲的同时,平行开始播放新曲。

GETBGMVOLUME

参数:GETBGMVOLUME()

例:

bgmvol=GETBGMVOLUME()

功能:

获得现在播放的BGM的音量。

BGVPLAY

参数:BGVPLAY ch,name

例:

BGVPLAY 0,"bgvoice.ogg"

BGVPLAY 0,""

功能:

BGV(Back Ground Voice,未播放语音(VOICEPLAY命令)时循环的声音)播放命令。

ch为0~15,文件名为""的时候停止播放BGV。

BGVFADEOUT

参数:BGVFADEOUT time

例:

BGVFADEOUT 1000

功能:

指定BGV淡出的时间(毫秒)。

BGVVOLUME

参数:BGVVOLUME vol

例:

功能:

指定BGV的音量。

GETBGVVOLUME

参数:GETBGVVOLUME()

例:

bgvvol=GETBGVVOLUME()

功能:

获得当前BGV的音量。

SEPLAY

参数:SEPLAY ch,name

例:

SEPLAY 0,"test.ogg"

功能:

播放SE,ch为声道0~15。

SELOOP

参数:SELOOP ch,name

例:

SELOOP 1,"loopse.ogg"

功能:

循环播放SE。

SESTOP

参数:SESTOP ch

例:

SESTOP 1

功能:

停止SE。

SESTOPALL

参数:SESTOPALL

例:

SESTOPALL

功能:

停止所有的SE。

SEVOLUME

参数:SEVOLUME vol

例:

SEVOLUME -1000

功能:

设置SE的音量。

SECHVOLUME

参数:SECHVOLUME ch,vol

例:

SECHVOLUME 4,-10000

功能:

单独设置某个声道的音量。

SEFADEOUT

参数:SEFADEOUT time

例:

SEFADEOUT 1000

功能:

设置SE的淡出时间(毫秒)。

GETSEVOLUME

参数:GETSEVOLUME()

例:

sevol=GETSEVOLUME()

功能:

获得SE的音量。

VOICEPLAY

参数:VOICEPLAY name,spd

例:

VOICEPLAY "voice0000.ogg"

VOICEPLAY "voice0000.ogg",2

功能:

播放语音。spd参数可以省略。例子中的2表示2倍速播放。

文件名为""的时候停止当前播放的语音。

VOICEFADEOUT

参数:VOICEFADEOUT time

例:

VOICEFADEOUT 1000

功能:

指定语音淡出的时间(毫秒)。

VOICEVOLUME

参数:VOICEVOLUME vol

例:

VOICEVOLUME -10000

功能:

设定语音的音量。

GETVOICEVOLUME

参数:GETVOICEVOLUME()

例:

voicevol=GETVOICEVOLUME()

功能:

获得语音的音量。

电影功能

MOVIE

参数:MOVIE name,clickskip,volume

例:

MOVIE "test.mpg",1,0

※clickskip省略的话为0,volume省略的话和BGM的音量相同。

功能:

以充满整个窗口,在所有元素最前播放影片,会停止其他所有动作的处理。

用于游戏的OP、ED或者不需要实现交互操作的短电影。

clickskip指定为1的话点击可跳过影片。

MRESET

参数:MRESET

例:

MRESET

功能:

重置所有的动画纹理,使之从头开始播放。

MWRITEBEGIN

参数:MWRITEBEGIN filename,width,height,fps,framenum

例:

MWRITEBEGIN "test.avi",800,600,30,60 ;30fps,共60帧,也就是说2秒的动画

功能:

打开一个电影文件供写入。格式为无压缩的AVI。

同时只能写入一个文件。

MWRITE

参数:MWRITE frame,bmpname

例:

MWRITE 10,"bmp"

功能:

将现在播放的动画保存为图像文件。

图像的部分请参照后面的位图类命令中的“位图名”来指定。

MWRITEEND

参数:MWRITEEND

例:

MWRITEEND

功能:

停止从图片到电影文件的生成。将改变写入到文件中。

其他基本功能

QUIT

参数:QUIT

例:

QUIT

功能:

终止程序。和基本的END功能实现方式不同。

END命令还有END IF,END LOOP等用法(此外,Lua只有end能够终止程序。)、为了容易理解使用此命令。

LOAD

参数:LOAD num

例:

LOAD 2

功能:

从存档文件读取游戏存档。num为存档编号。

SAVE

参数:SAVE num

例:

SAVE 2

功能:

将最后一个保存点的数据保存至文件。num为存档编号。

保存点会在一段文字开始的时候自动更新。

SAVEMODE

参数:SAVEMODE num

例:

SAVEMODE 1

功能:

打开/关闭更新保存点的功能。

为0的话在保存点处不更新。

SAVEPOINT

参数:SAVEPOINT

例:

SAVEPOINT

功能:

强制地更新保存点。

会耗费一定的时间,在不必要的地方不要轻易使用。

SAVETIME

参数:SAVETIME num,yearval,monthval,dayval,hourval,minval,secval

例:

SAVETIME 3,%year,%month,%day,%hour,%min,%sec

功能:

获得存档的保存时间。

SCHK

参数:SCHK(num)

例:

%saveexist=SCHK(2)

功能:

存档存在的话返回1,否则返回0。num为存档编号。

WAIT

参数:WAIT time,clickskip

例:

WAIT 1000

WAIT 2000,1

功能:

等待指定的时间。用于执行动画。

clickskip可以省略。指定1的话,允许单击跳过等待。

GETSKIP

参数:GETSKIP()

例:

%skipmode=GETSKIP()

功能:

获取当前的Skip模式。

TCHK

参数:TCHK()

例:

%alreadyread=TCHK()

功能:

获得当前文本的属性,已经阅读过的部分返回1,未读的部分返回0。

用于实现跳过已读文本功能。在@textb中判断这个值然后选择是否关闭Skip模式。

LUA

参数:LUA str

例:

LUA 'os.execute("pause")'

功能:

执行Lua脚本。

LUAFILE

参数:LUAFILE filename

例:

LUAFILE "system.lua"

功能:

读取Lua文件并执行。

LUAF

参数:LUAF str

例:

%a=LUAF("foo(1)")

功能:

执行Lua函数,将函数的返回值作为此命令的返回值。

DEFSUB

参数:DEFSUB commandname,prototypestr

例:

DEFSUB chr,"SN"

功能:

自定义命令。命令名同时也是子程序的名字。

例子中代码,第一个字符串变量chr定义了一个chr命令。

@chr

param %name,%pos

命令的参数的获得如上例中在命令内部实现。


原型(prototype)的定义如下:

S 接受字符串

N 接受数值

R 接受变量名()

A 接受数值或者字符串

.

?N ?S 参数存在的时候为N和S,没有的时候接受为#NIL。

* 之后的参数都不进行类型检查,全部接受。

O 接受可选参数。在系统内部只是一个字符串(值传给了basic.decode_table)

PARAM

参数:PARAM param1,param2,...

例:

PARAM %name,%pos

功能:

调用子程序的时候规定接受参数的变量。

VSET

参数:VSET varname,value

例:

defsub

test,"R"

test name

CPRINT %name

quit


@test

PARAM %v

VSET %v,"名前"

return

功能:

对param传递的变量赋值。

VGET

参数:VGET(varname)

例:

defsub test,"R"

%name="てすと"

test %name

quit


@test

PARAM %v

CPRINT VGET(%v)

return

功能:

获得PARAM传递的变量

CALL

参数:CALL label,prototypestr,param1,param2,...

例:

CALL @test,"SS","paramstr1","paramstr2"

功能:

调用预先由defsub定义好的命令,label为子程序名。

必须要使用这种方法处理的DEFSUB的适用范围并不广。

执行部分的语句和DEFSUB的内容完全相同。

INPUT

参数:INPUT val,text,caption

例:

INPUT %ret,"这是测试文本","对话框标题"

功能:

显示一个接受字符串的对话框,传递给val处的变量。

GETSCREENSHOT

参数:GETSCREENSHOT bmpname

例:

GETSCREENSHOT "test"

功能:

生成一个位图对象,用于保存屏幕截图。

GETLOGTEXT

参数:GETLOGTEXT num,tag,text

例:

GETLOGTEXT 0,%tag,%text

功能:

获得回想记录中的数据。

0表示是当前的文字,1~某个数则是表示相对多少页前的文字。

LOGCHK

参数:LOGCHK(num)

例:

%logexist=LOGCHK(1)

功能:

存在指定编号的log的话返回1,否则返回0.

如果这个函数返回1的话,就可以使用GETLOGTEXT命令来获得log。

LCHK

参数:LCHK(label)

例:

%labelflag=LCHK("@test")

功能:

如果标签存在的话返回1,否则返回0。

用于实现场景回想功能。

FCHK

参数:FCHK(filename)

例:

%fileflag=FCHK("ev\test.png")

功能:

如果已经将图像作为纹理读入内存则返回1,否则返回0。

用于实现CG鉴赏等功能。

FILECHK

参数:FILECHK(filename)

例:

%appendflag=FILECHK("06.ns2")

功能:

检查此文件或者压缩包中是否存在该文件。

FCHK是检查是否已读入该文件,如果存在但是未读入的话也会返回0。

而此命令则是存在的话会返回1。请注意这一点。

此功能用于检查是否有更新包。

LINSERT

参数:LINSERT label

例:

LINSERT "@test"

功能:

将此命令中的标签(label)当作实际通过的标签记录到记录(log)中。

比如回想模式中的标签(label)和实际的剧本中的是不一样的。(用于进行回想模式中的特殊处理等)

FINSERT

参数:FINSERT filename

例:

FINSERT "test.png"

功能:

将此命令中的文件当作实际读取的文件记录到记录(log)中。

在CG鉴赏模式中,实际剧本中的图像和CG鉴赏模式中显示的图像时使用。

FILETIME

参数:FILETIME name,year,month,day,hour,min,sec

例:

FILETIME "test.txt",%year,%month,%day,%hour,%min,%sec

功能:

获得此文件的修改日期。

系统功能

CAPTION

参数:CAPTION name

例:

CAPTION "ウィンドウタイトル"

功能:

设定窗口标题的文字。

※请注意窗口标题在全屏模式下不可见。

这里显示的文字并不限于对所有的玩家来说都可见。

CLEARMOUSE

参数:CLEARMOUSE

例:

CLEARMOUSE

功能:

清空窗口所有的鼠标消息。

在此命令之前的所有的鼠标点击记录都会被抛弃。

DOEVENTS

参数:DOEVENTS

例:

DOEVENTS

功能:

处理消息,在循环的时候需要适时调用。

在书写GETCLICK或者GETMOUSE的消息处理循环的时候,如果不使用此命令的话则无法取得消息。

EXEC

参数:EXEC str

例:

EXEC 'CAPTION "変更"'

功能:

执行字符串中的命令。

GETCLICK

参数:GETCLICK l,r,w,ld,rd

例:

GETCLICK %l

GETCLICK %l,%r,%w

功能:

获得鼠标的输入。不必指定所有的变量。

从左到右为,松开左键,松开右键,滚轮,按下左键,按下右键。

※松开的基准是根据Windows的接口的一般调用来实现的。

※滚轮向上返回-1,向下返回1。

GETMOUSE

参数:GETMOUSE x,y

例:

GETMOUSE %x,%y

功能:

获得鼠标的坐标。在窗口外则返回-1,-1。

SETCLIPBOARD

参数:SETCLIPBOARD str

例:

SETCLIPBOARD "cliptext"

功能:

设置剪切板中的文字。

例如,程序需要实现在选择图像的时候,将显示图像的指令复制到剪切板中的功能。

SETMOUSE

参数:SETMOUSE x,y

例:

SETMOUSE 400,300

功能:

将鼠标移动到指定的位置。

OKBOX

参数:OKBOX text,caption

例:

OKBOX "对话框内容","对话框标题"

功能:

显示一个有OK按钮的对话框,在按下OK按钮之后脚本才会继续执行。

RESETTIMER

参数:RESETTIMER

例:

RESETTIMER

功能:

重置内部的计时器。GETTIMER()和WAITTIMER()都是以此为起点计算时间的。

WAITTIMER

参数:WAITTIMER milisecond

例:

WAITTIMER 1000

功能:

等待从RESETTIMER命令开始执行算起的时间。用于实现动画。

SETSCREEN

参数:SETSCREEN screenflag

例:

SETSCREEN 1

功能:

设置显示的模式。0为窗口模式。

1为全屏模式(分辨率变化)

2为全屏模式(保持纵横比扩大)

SHELL

参数:SHELL str

例:

SHELL "readme.txt"

SHELL "http://www.nscripter.com/"

功能:

在Shell中打开指定的文件或者访问指定的网页。

YESNOBOX

参数:YESNOBOX ret,text,caption

例:

YESNOBOX %ret,"要覆盖该存档吗?","存档覆盖确认"

功能:

显示一个YES或者NO的对话框。是的话变量返回1,否的话返回0.

GETCONFIG

参数:GETCONFIG(key)

例:

%value=GETCONFIG("configkey")

功能:

从ini文件中读取设定。返回指定的键值(key)对应的字符串。

GETKEY

参数:GETKEY(keystr)

例:

%ret=GETKEY("C")

>%ret=GETKEY("CTRL")

%ret=GETKEY(" ")

功能:

对应按键被按下则返回1,松开则返回0。

按键对应的字符串是英文大写字母,列表如下。

" "或者"SPACE" 空格键

”ESC“ Esc键

"CTRL" 控制键

"UP""DOWN""LEFT""RIGHT" 光标键

"F1"~"F12" 功能键

"RETURN" "ENTER" 回车键

"PAGEUP" "PAGEDOWN" 上翻/下翻键

"SHIFT" 上档键

"SCROLLLOCK" 锁屏滚动键(关闭状态返回0,打开状态返回1)

"NUMLOCK" 数字键盘锁定键(关闭状态返回0,打开状态返回1)

"CAPSLOCK" 大小写锁定键(关闭状态返回0,打开状态返回1)

"LBUTTON" 鼠标左键

"RBUTTON" 鼠标右键

"MBUTTON" 鼠标中键

GETSCREEN

参数:GETSCREEN()

例:

%screenmode=GETSCREEN()

功能:

获得当前的屏幕模式。0为窗口,1位全屏。

GETTIMER

参数:GETTIMER()

例:

%tm=GETTIMER()

功能:

获得自RESETTIMER开始经过的时间(毫秒)。

LCLICKED

参数:LCLICKED()

例:

%clicked=LCLICKED()

功能:

存在还未处理的左键点击则返回1,否则就返回0。

TIME

参数:TIME year,month,day,hour,min,sec

例:

TIME %year,%month,%day,%hour,%min,%sec

功能:

获得当前的时间。

MOVIE

参数:MOVIE filename,clickskipflag,volume

例:

MOVIE "op.mpg",1

功能:

用整个窗口播放影片。点击跳过标志开启的话可以点击左键跳过。

点击跳过标志和音量都可以省略。省略音量的话则音量和BGM相同。

※对于透明的影片会无视透明设定保持原样播放,请注意。

透明的影片并不会让纹理(精灵的)透过而显示出来。

控制台命令

BEEP

参数:BEEP freq,mili

例:

BEEP

功能:

频率(freq)和毫秒数(mili)都可以省略。freq为频率,mili为持续的毫秒数。

CCAPTION

参数:CCAPTION titlestr

例:

CCAPTION "NScripter2 控制台"

功能:

设定控制台的窗口标题。

CCLEAR

参数:CCLEAR

例:

CCLEAR

功能:

清空控制台。(清除所有画面上的文字)

CCLOSE

参数:CCLOSE

例:

CCLOSE

功能:

关闭控制台窗口。

CCOLOR

参数:CCOLOR cr,cg,cb,br,bg,bb,ci,bi

例:

CCOLOR 1,0,1,0,0,1

功能:

参数可以从任何地方开始省略。

设置控制台的颜色。cr,cg,cb,ci是文字颜色,br,bg,bb,bi是背景颜色。

rgb为红绿蓝,i为颜色浓度。0为最稀,1位最浓。

CGETCURSOR

参数:CGETCURSOR x,y

例:

CGETCURSOR %x,%y

功能:

获得控制台中光标的坐标。

CGETSIZE

参数:CGETSIZE w,h

例:

CGETSIZE %w,%h

功能:

获得控制台横向和纵向容纳的字符数。

CLOCATE

参数:CLOCATE x,y

例:

CLOCATE 10,2

功能:

设置控制台光标的位置。

COPEN

参数:COPEN

例:

COPEN

功能:

打开控制台窗口。

即使不使用此命令,在执行控制台输入和输出命令的时候也会自动打开控制台。

CPRINT

参数:CPRINT a,b,c,...

例:

CPRINT "要显示的字符串。"

功能:

向控制台输出字符串。最后会加上换行符。

可以传入多个参数。如果指定多个参数,会将它们连续输出。

CSETSIZE

参数:CSETSIZE w,h

例:

CSETSIZE 80,25

功能:

设定控制台窗口横向和纵向容纳的字符数。

CSETTEXT

参数:CSETTEXT str,x,y,cr,cg,cb,br,bg,bb,ci,bi

例:

CSETTEXT "あいうえお",3,3,1,1,1,0,0,0,1,1

功能:

在指定的位置输出指定的字符串。

参数的意义请参考CLOCATE和CCOLOR命令。

CWRITE

参数:CWRITE a,b,c,...

例:

CWRITE "不换行输出字符串。"

功能:

和CPRINT命令相同,唯一的区别是不换行。

SLEEP

参数:SLEEP miliwait

例:

SLEEP 1000

功能:

停止指定的时间(毫秒)。

因为停止的时候不会进行精灵动画和消息的处理,所以请不要长时间的停止。

SYSTEM

参数:SYSTEM str

例:

SYSTEM "pause"

功能:

在命令提示符下执行指定的命令。

CINKEY

参数:CINKEY()

例:

%key=CINKEY()

功能:

从控制台获取一个字符。

F1 CTRL DOWN ESC RETURN PAGEUP PAGEDOWN

等特殊按键也会返回对应的字符串。

没有读取到输入的时候返回#NIL。

CREAD

参数:CREAD()

例:

%str=CREAD()

功能:

从控制台读入一个字符串。

变量功能

ISDEF

参数:ISDEF(val)

例:

%isfirst=ISDEF(_first)

功能:

如果该变量已被定义则返回1,没有则返回0。

一般来说,访问没有定义的变量会导致错误,而这个函数不会。

例子中的代码用于检查系统变量_first是否定义。

在程序第一次启动的时候(即任何变量都没有定义)返回值都是0,在进行设定(configure)的时候,用于预先设定。

(这个时候请不要忘记对_first进行定义。)

SPLIT

参数:SPLIT str,delchr,val1,val2,...

例:

SPLIT "あいうえお/かきくけこ/さしすせそ","/",%v1,%v2,%v3>

功能:

根据指定的字符将字符串分割至若干个变量中,对应的字符串不存在的话会代入""。

例子的情况中,%v1="あいうえお",%v2="かきくけこ",%v3="さしすせそ"。

SPLITA

参数:SPLITA str,delchr,val

例:

SPLITA "あいうえお/かきくけこ/さしすせそ","/",%v

功能:

根据指定的字符将字符串分割至一个数组中。数组最后一个元素会被赋值#NIL。

例子的情况中,%v[0]="あいうえお",%v[1]="かきくけこ",%v[2]="さしすせそ",%v[3]=#NIL。

STRSAVE

参数:STRSAVE filename,str

例:

STRSAVE "savefile.txt","Hello World!"

功能:

将指定的字符串保存到指定的文本文件中。

STRLOAD

参数:STRLOAD(filename)

例:

%str=STRLOAD(filename)

功能:

读取文本文件,返回对应的字符串。

VCLEAR

参数:VCLEAR val

例:

VCLEAR v

功能:

清除指定的变量,数组,或者结构体。

例子中的代码会清除诸如数组(v[0] v[1] 或者v[0][1])或者结构体(v.param1,v.name)等等。

VCOPY

参数:VCOPY dest,src

例:

VCOPY %dest,%src

功能:

将src指定的变量,数组,或者结构体复制到dest指定的对应结构去。

例子中的代码会将%src[0],%src[1]...%src.param1 %src.name等复制到%dest[0],%dest[1]...%dest.param1 %dest.name中去。

RANDOMSEED

参数:RANDOMSEED num

例:

RANDOMSEED 0

功能:

初始化随机数种子。指定0的话则每次的种子都不一样。

两次都指定0以外的数话,都会生成同样的随机数列。

函数

※以下的数学函数在C语言和Lua中都是同名的,功能也类似。看到名字就知道其作用,由此不再赘述。

ABS(x) ACOS(x) ASIN(x) ATAN(x) ATAN2(y,x) CEIL(x) COS(x)

COSH(x) DEG(rad) EXP(x) FLOOR(x) LOG(x) LOG10(x)

RAD(deg) SIN(x) SINH(x) SQRT(x) TAN(x) TANH(x)


※下面解释来自BASIC以及不容易理解的函数。

PI

参数:PI()

例:

功能:

返回圆周率。

ASC

参数:

例:ASC(chr)

ASC(" ")

功能:

获得该字符的ASCII码。

CHR

参数:CHR(chrcode)

例:

CHR(13)

功能:

由ASCII码获得字符。

JOIN

参数:JOIN(delchr,a,b,...)

例:

%str=JOIN("/","あいうえお","かきくけこ","さしすせそ")

功能:

和SPLIT相反,将字符串用指定字符连接。

上例中,返回"あいうえお/かきくけこ/さしすせそ"。

JOINA

参数:JOINA(delchr,val)

例:

%str=JOINA("/",%v)

功能:

和SPLIT相反,将数组用指定字符连接。

其中%v[0]="あいうえお" %v[1]="かきくけこ" %v[2]="さしすせそ" %v[3]=#NIL(可以是未定义或者数值)。

上例中,返回"あいうえお/かきくけこ/さしすせそ"。

LCASE

参数:LCASE(chr)

例:

%c=LCASE("ABC")

功能:

返回小写字母。上例中返回"abc"。

LEFT

参数:LEFT(str,num)

例:

%str=LEFT("string",3)

功能:

将字符串从左截取指定的字符数。

上例中%str="str"。

LEN

参数:LEN(str)

例:

%l=LEN("abcde")

功能:

返回字符串的长度,上例中%l=5。

LTRIM

参数:LTRIM(str)

例:

%str=LTRIM(" string ")

功能:

删除字符串左边的空格,不删除右边的空格。

例子中%str="string "。

MID

参数:MID(str,start,num)

例:

%str=MID("abcdefg",2,3)

功能:

从指定位置开始截取指定数目的字符。

第一个字符从0开始。例子中%str="cde"。

NUM

参数:NUM(str)

例:

%n=NUM("100")

功能:

将字符串转换为数值。上例中%n=100。

RANDOM

参数:RANDOM()

例:

%r=RANDOM()

功能:

用于生成随机数。返回0~2的32次-1的整数。

比如要生成0~99的整数,%r=RANDOM() mod 100。

比如要生成1~6的整数,%r=RANDOM() mod 6 + 1。

REPLACE

参数:REPLACE(str,from,to)

例:

%str=REPLACE("abcdefghi","def","ZZZ")

功能:

替换字符串。例子中%str为"abcZZZghi"。

REGEX_REPLACE

参数:REGEX_REPLACE(str,regex,repstr)

例:

%str=REGEX_REPLACE("abc123def","[0123456789]","Z")

功能:

根据正则表达式替换字符串。例子中%str为"abcZZZdef"。

RTRIM

参数:RTRIM(str)

例:

%str=RTRIM(" string ")

功能:

删除字符串右边的空格。不会删除左边的空格。

上例中的%str=" string"。

SGN

参数:SGN(n)

例:

%s=SGN(-100)

功能:

参数为负数返回-1,正数返回1。0则返回0。例子中返回-1。

STR

参数:STR(n)

例:

%str=STR(12345)

功能:

将参数转换为字符串。上例中%str="12345"。

STRF

参数:STRF(formatstr,n)

例:

%str=STRF("%3d",12)

功能:

将数值格式化输出。

整数和小数的输出和C语言的printf的格式化字符串相同。

例子中,%str=" 12"。(用空白补齐为三个空位并右对齐)

TRIM

参数:TRIM(str)

例:

%str=TRIM(" string ")

功能:

删除字符串两端的空格。上例中%str="string"。

TYPE

参数:TYPE(val)

例:

%t=TYPE(123)

功能:

返回参数的值类型。上例中%t=#NUMBER。

字符串返回%t=#STRING。#NIL返回#NIL。

UCASE

参数:UCASE(str)

例:

%s=UCASE("abc")

功能:

转换为大写字母。例子中%s="ABC"。

VLBOUND

参数:VLBOUND(val)

例:

%start=VLBOUND(%v)

功能:

获得数组最小非空元素的下标。也能正确作用于稀疏构造的数组。

例子中,%v的最小非空元素为3。例如,%v[3]="abc",%v[12]="def"....。则%start=3。

因为要搜索所有的数组元素,所有没有比较快的函数。

VLEN

参数:VLEN(val)

例:

%vlen=VLEN(%v)

功能:

获得数组的长度。不能正确地作用于稀疏构造的数组。

下标从0开始,最后一个找到的下标+1则是数组长度。

VUBOUND

参数:VUBOUND(val)

例:

%end=VUBOUND(%v)

功能:

获得数组最大非空元素的下标。也能正确作用于稀疏构造的数组。

因为要搜索所有的数组元素,所有没有比较快的函数。

ZENKAKU

参数:ZENKAKU(str)

例:

%str=ZENKAKU("abc")

功能:

将字符串转换为全角字符。上例中返回"abc"。

这里,BASIC内部使用的是UTF-8编码,请注意。

当字符串是从外部工具获取的时候,有必要对其进行转码。

位图功能

位图是“储存在内存中”的图像数据。

其中包含了对位图进行渲染处理,以及从位图转换到纹理的命令。

总之,位图功能是用来对内存中的图像进行加工和保存的命令(以及函数)的集合。

BBEGIN

参数:BBEGIN bmpname

例:

BBEGIN "scrbmp"

功能:

开始对指定的位图进行描画操作。初始位图为黑色透明的区域。

位图的尺寸大小需要事先制作好。

BCREATE

参数:BCREATE bmpname,w,h

例:

BCREATE "scrbmp",800,600

功能:

生成指定名称,指定大小的空白位图。

BDELETE

参数:BDELETE bmpname

例:

BDELETE "scrbmp"

功能:

删除指定名称的位图。

BDUP

参数:BDUP new,old

例:

BDUP "copybmp","sourcebmp"

功能:

从指定的位图复制生成一个新的位图。

BEND

参数:BEND bmpname

例:

BEND "scrbmp"

功能:

停止对位图的操作。执行此命令后会将数据生成为BMP文件。

只有执行这个命令之后,位图的改变才会被显示出来。

BFILL

参数:BFILL bmpname,color

例:

BFILL "bmp",#FFFFFFFF

功能:

用指定的颜色填充位图。

BFORMAT

参数:BFORMAT bmpname,str,opt,rubyopt

例:

BFORMAT "scrbmp","あいうえおかきくけこ{漢字/ルビ}さしすせそ",{font="text",x=2,y=2,w=25,h=4},{font="ruby"}

功能:

在使用英语等不需要注音功能的时候可以省略rubyopt参数。

此命令用于向位图中写入字符串。opt和rubyopt参数类似SOFORMAT命令。

BFRECT

参数:BFRECT bmpname,x1,y1,x2,y2,color

例:

BFRECT "scrbmp",100,100,200,200,#FFFFFFFF

功能:

向位图中插入一个左上(x1,y1)到右下(x2,y2)的矩形。

BFROMT

参数:BFROMT bmpname,texname

例:

BFROMT "bmp","tex"

功能:

从指定的纹理创建一个位图。

BGETSIZE

参数:BGETSIZE bmpname,w,h

例:

BGETSIZE "scrbmp",%w,%h

功能:

获得位图的宽和高。

BGRADATION

参数:BGRADATION bmpname,color1,color2,flagx,flagy

例:

功能:

用渐变颜色填充位图。

flagx和flagy是用于确定在x方向还是y方向上进行渐变。

在某个方向上设置为true就会在该方向上渐变,两个都true或者两个都false会生成斜向的渐变。(true和false方向不同)

BJOINX

参数:BJOINX bmpname,bmpname2

例:

BJOINX "bmp","bmp2"

功能:

在bmpname的右边接上bmpname2生成新的bmpname。

BJOINY

参数:BJOINY bmpname,bmpname2

例:

BJOINY "bmp","bmp2"

功能:

在bmpname的下面接上bmpname2生成新的bmpname。

BLOAD

参数:BLOAD bmpname,filename

例:

BLOAD "scrbmp","testbg.png"

功能:

读取指定的对象中到位图中。

BMONOTONE

参数:BMONOTONE bmpname,color

例:

BMONOTONE "scrbmp",#FFFF0000

功能:

根据指定的颜色单色化位图。(译注:褐色照片效果。)

BNEGA

参数:BNEGA bmpname

例:

BNEGA "scrbmp"

功能:

反转位图的颜色。(译注:底片效果。)

BRESIZE

参数:BRESIZE bmpname,w,h

例:

BRESIZE "scrbmp",100,100

功能:

扩大或者缩小位图。

用于调整屏幕截图的大小。

BREVERSE

参数:BREVERSE bmpname,flagx,flagy

例:

BREVERSE "scrbmp",1,0

功能:

根据参数x方向上或者y方向上翻转位图。

BSAVE

参数:BSAVE bmpname,savefilename

例:

BSAVE "scrbmp","save.png"

功能:

将位图保存为PNG文件。

用于保存屏幕截图等功能。

BTRIM

参数:BTRIM bmpname,x1,y1,x2,y2

例:

BTRIM "scrbmp",100,100,200,200

功能:

截取位图指定坐标区域的部分。

初级功能

初级声音功能

SOUND

参数:SOUND sndname

例:

SOUND "bgsound"

功能:

新增一个声道。

SPLAY

参数:SPLAY sndname,playtable

例:

SPLAY "bgsound",{name="test.ogg"}

SPLAY "bgsound",{name="test.ogg",loop=1}

SPLAY "bgsound",{name="test.ogg",volume=-100,loop=1}

SPLAY "bgsound",{name="test.ogg",volume=-100,pan=-10000}

功能:

在指定声道播放声音。

SDELETE

参数:SDELETE sndname

例:

SDEKETE "bgsound"

功能:

删除声道。删除声道的时候并不会停止在当前声道播放的声音。

(此功能只用于再次创建一个声道。)

SFADEOUT

参数:SFADEOUT sndname,time

例:

SFADEOUT "bgsound",1000

功能:

经过指定的时间之后对声音进行淡出处理。

高级功能中的淡出是“指定淡出的时间”,而此处是指定淡出开始的时间。

SPAN

参数:SPAN sndname,pan

例:

SPAN "bgsound",-10000

功能:

对指定的声道进行偏移(pan)(偏向左声道或者右声道)处理。pan值-10000为最左,10000为最右。

SPAUSE

参数:SPAUSE sndname

例:

SPAUSE "bgsound"

功能:

暂停指定的声道。使用SREMUSE命令可以继续播放。

SRESUME

参数:SRESUME sndname

例:

SRESUME "bgsound"

功能:

继续播放由SPAUSE停止的声道。

SSTOP

参数:SSTOP sndname

例:

SSTOP "bgsound"

功能:

停止声道上的声音播放。关闭声音文件,但是声道本身会保留下来。

SVOLUME

参数:SVOLUME sndname,vol

例:

SVOLUME "bgsound",-10000

功能:

变更指定声道的音量。-10000为静音,0为最大。

实际情况中-1000就听不到声音也是有的,所以要在实际中尝试。

SISPLAYING

参数:SISPLAYING(sndname)

例:

%p=SISPLAYING("bgsound")

功能:

确定该声道是否在播放声音,是则返回1,否则返回0。

注意:循环播放声音的声道总是会返回1。

图像绘制功能

GBEGIN

参数:

例:

GBEGIN

功能:

开始对画面进行绘制。只有在此命令和GEND命令之间的命令才会被反映在画面上。

高级绘制功能(精灵功能)是在内部调用此命令。

SPDRAW

参数:

例:

SPDRAW

功能:

绘制所有的精灵。此命令是初级命令请在打算同时显示所有精灵的时候使用。

GEND

参数:

例:

GEND

功能:

停止绘制过程。执行此命令后绘制结果会反映在画面上。

纹理功能

TBEGIN

参数:TBEGIN texname

例:

TBEGIN "scrtex"

功能:

开始对纹理的绘制。

TEND

参数:

例:

TEND

功能:

结束对纹理的绘制。

TBEZIER

参数:TBEZIER texname,cx,cy,xs,ys,rot,a,x0,y0,x1,y1,x2,y2,x3,y3,sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4,sx5,sy5,sx6,sy6,sx7,sy7

例:

功能:

对纹理进行贝塞尔变换。参数的顺序和SPBEZIER相同。

先是指定旋转扩大缩小,剩下的部分0~1和SPBEZIER相同。

TDELETE

参数:TDELETE texname

例:

TDELETE "scrtex"

功能:

删除纹理。

TDRAW

参数:TDRAW texname,x,y,a

例:

TDRAW "spaceship",100,100,255

功能:

将纹理绘制在画面指定位置。

TDRAWLT

参数:TDRAWLT texname,cx,cy,xs,ys,rot,alpha

例:

TDRAWLT "spaceship",200,200,1.0,1.0,RAD(45),255

功能:

对纹理进行旋转扩大缩小。

TDRAWTR

参数:TDRAWTR name,v

例:

%v[0]=100

%v[1]=100

%v[2]=0

%v[3]=0

%v[4]=0xFFFFFFFF


%v[5]=200

%v[6]=200

%v[7]=1

%v[8]=1

%v[9]=0xFFFF00FF


%v[10]=100

%v[11]=200

%v[12]=0

%v[13]=1

%v[14]=0xFFFFFF00


TDRAWTR "testtex",%v

功能:

指定三角形的三个顶点,对相应的多边形绘制纹理。

数组的每元素对应一个顶点。(x, y, u, v, col)。顶点数必须是三的倍数。(因为每三个顶点绘制一个三角形。)

TFILL

参数:TFILL texname,color

例:

TFILL "scrtex",0xFFFFFFFF

功能:

向指定的纹理填充指定颜色。

TFORMAT

参数:TFORMAT name,str,opt,rubyopt

例:

TFORMAT "tex","あいうえおかきくけこ{漢字/ルビ}さしすせそ",{font="text",x=2,y=2,w=25,h=4},{font="ruby"}

功能:

在处理如英文文字用不到注音功能的时候可以省略rubyopt参数。

向纹理上写入字符串。opt和rubyopt参数和SPFORMAT相同。

TFRECT

参数:TFRECT name,lx,ly,rx,ry,color

例:

TFRECT "tex",100,100,200,200,0xFFFFFFFF

功能:

向纹理的指定区域中填充颜色。

TFROMB

参数:TFROMB texname,bmpname

例:

TFROMB "tex","bmp"

功能:

由位图生成纹理。

TGETSIZE

参数:TGETSIZE texname,w,h

例:

TGETSIZE "tex",%w,%h

功能:

获得纹理的大小。

TLOAD

参数:TLOAD texname,filename

例:

TLOAD "tex","test.jpg"

功能:

载入文件作为纹理。

TSAVE

参数:TSAVE texname,filename

例:

TSAVE "tex","savefile.png"

功能:

将纹理保存为文件。文件格式只能是PNG。

TISPLAYING

参数:TISPLAYING(texname)

例:

%p=TISPLAYING("movtex")

功能:

播放动画纹理的时候,动画在播放则返回1,否则返回0。

形状绘制功能

GBEZIER

参数:GBEZIER x1,y1,x2,y2,x3,y3,x4,y4,col

例:

GBEZIER 0,100,10,80,90,80,100,100,#FFFFFFFF

功能:

绘制贝赛尔曲线。x1,y1为起点,x4,y4为终点,x2,y2为点1的控制点,x3,y3为点2的控制点。

GBLEND

参数:GBLEND num

例:

GBLEND 0

功能:

切换渲染绘制模式。0表示通常α渲染,1为叠加渲染。

以后会考虑增加功能。

GCIRCLE

参数:GCIRCLE x,y,r,col

例:

GCIRCLE 100,100,35,#FFFFFFFF

功能:

绘制圆。

GELLIPSE

参数:GELLIPSE x1,y1,x2,y2,col

例:

GELLIPSE 100,100,200,200,#FFFFFFFF

功能:

绘制以x1,y1为左上,x2,y2为右下的长方形的内接椭圆。

GFCIRCLE

参数:GFCIRCLE x,y,r,col

例:

GFCIRCLE 100,100,35,#FFFFFFFF

功能:

绘制填充圆。

GFELLIPSE

参数:GFELLIPSE x1,y1,x2,y2,col

例:

GFELLIPSE 100,100,200,200,#FFFFFFFF

功能:

绘制以x1,y1为左上,x2,y2为右下的长方形的内接填充椭圆。

GRECT

参数:GRECT x1,y1,x2,y2,col

例:

GRECT 100,100,200,200,#FFFFFFFF

功能:

绘制左上为x1,y1,右上为x2,y2的长方形。

GFRECT

参数:GFRECT x1,y1,x2,y2,col

例:

GFRECT 100,100,200,200,#FFFFFFFF

功能:

绘制左上为x1,y1,右上为x2,y2的填充长方形。

GLINE

参数:GLINE x1,y1,x2,y2,col

例:

GLINE 100,100,200,200,#FFFFFFFF

功能:

绘制连接x1,y1和x2,y2的直线。

GLINES

参数:GLINES array,col

例:

a[0]=100

a[1]=100

a[2]=200

a[3]=200

a[4]=300

a[5]=300

GLINES a,#FFFFFFFF

功能:

绘制折线,坐标由数组指定。

GLINEL

参数:GLINEL array,col

例:

a[0]=100

a[1]=100

a[2]=200

a[3]=200

a[4]=300

a[5]=300

a[6]=300

a[7]=300

GLINEL a,#FFFFFFFF

功能:

绘制直线列。坐标由数组指定。由于是起点终点构成一条直线,所以数组元素个数必须是4的倍数。

GPOINT

参数:GPOINT x,y,col

例:

GPOINT 125,125,#FFFFFFFF

功能:

绘制点。

GPOINTL

参数:GPOINTL array,col

例:

a[0]=100

a[1]=100

a[2]=200

a[3]=200

GPOINTL a,#FFFFFFFF

功能:

绘制点列表。坐标由数组指定。

GTRIANGLE

参数:GTRIANGLE x1,y1,x2,y2,x3,y3,col

例:

GTRIANGLE 100,100,200,200,300,100,#FFFFFFFF

功能:

绘制填充的三角形。

GTRIANGLEL

参数:GTRIANGLEL array,col

例:

a[0]=100

a[1]=100

a[2]=200

a[3]=200

a[4]=300

a[5]=100

a[6]=400

a[7]=100

a[8]=500

a[9]=200

a[10]=600

a[11]=100

GTRIANGLEL a,#FFFFFFFF

功能:

绘制填充三角形列表。

数组每6个元素构成一个三角形的三个顶点。

GTRIANGLEF

参数:GTRIANGLEF array,col

例:

a[0]=100

a[1]=100

a[2]=200

a[3]=200

a[4]=300

a[5]=100

a[6]=0

a[7]=0

GTRIANGLEF a,#FFFFFFFF

功能:

绘制三角形构成的扇形。

最初点为中心点,之后的点为扇形顶点。

GTRIANGLES

参数:GTRIANGLES array,col

例:

GTRIANGLES a,#FFFFFFFF

功能:

绘制连续三角形(strip)。

变换功能

TRANSITION

参数:TRANSITION frombmpname,tobmpname,rate,type,opt,...

例:

TRANSITON "from","to",0.7,#F

功能:

由两张位图生成变换中图像。rate为变换率(0为from,1为to)。

陷入处理

TRAP

参数:TRAP label,trigger

例:

TRAP @logo_end

TRAP @logo_end,"L"

TRAP @logo_end,"LR"

TRAP @logo_end,"LRS"

TRAP @logo_end,"LRSE"

TRAP #NIL

功能:

执行TRAP处理的时候等待鼠标点击或者按键后陷入,然后类似GOTO跳转到指定的标签。

想在任何时候都能够通过点击跳过商标的时候使用此功能。

指定标签为#NIL会解除指定的陷入。如果不解除该陷入会一直有效,所以请记得解除。

第二个参数为陷入条件。省略默认为"LRSE"。

L=左键点击,R=右键点击,S=空格,E=回车键。