【教程】【搬运】ONScripter完全教程,Lua篇

搬运自X‘moe Project


Lua?!
关于lua的介绍我不多提,你知道它是一种脚本语言就可以了。
本来我还想讲正则表达式的,我想了想,还是算了。那个一时半会儿是说不清的。
Lua的语法我不讲。
我们可以直接调用由lua定义的函数。
之前有人实现的用ONS自己解包nsa文件就是这样的。照这样下去,我们可以在ONS下用lua写控制台应用了。首先ONS的脚本是不能少的。

(之前提供的lua教程有问题,在此表示抱歉,Lua特性资料由面包工坊提供)

什么我要强调Lua?
因为lua可以勉强使ONS实现多线程的效果。
本来,ONS的事件和图像都是在一个线程里面的,根本无法模拟多线程的。
但是现在ONS事件有一个线程,Lua脚本也有一个线程。那么这样就可以模拟多线程的效果了。
最后通过的还是ONS线程进行统一的刷新。众所周知,只有事件和图像处理无冲突,那么做游戏就很愉悦了。

因为教程和参考信息很长,我再此写结束语。
为什么我在第一章说我要放弃ONS但是又在这里花这么多时间讲ONS的教程呢?
第一点,ONS很简单,这是它用户量很大的原因之一。
第二点,在目前(虽然我不愿意是这样的),ONS还有很大的活力。
一个开发者也没有必要花很多时间研究一个很复杂的脚本语言,无论静态的还是动态的。
最后就是,NS2发布了,那么ONS2还远么。从NS2中可以看见,作者在这十年里吸收了很多优良经验。对于脚本还有性能,都有不同程度的提升,这应该是很可喜的。对于老一辈的NS用户,NS2不难掌握(我还是讨厌那语法)。Lua是ONS和NS2最大的交集,对于游戏开发者来说,第一门该学的语言不应是C\C++,而应该是lua(in my view)。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
关于命令的背景色
特殊命令 未分类的命令
高水准命令 和NScripter的语法相似的命令
Callback命令 取代默认动作动物命令
低水准命令 和Lua函数相近的命令

基本功能
NL_dofile读取Lua脚本文件
NSCOM_NScripter中呼出Lua函数
NSCOM_main使system.lua成为启动用文件(无其它脚本时)
NSEnd结束Nscripter
参数操作
NSCheckComma检查下一个符号是否为逗号
NSPopComma读过一个逗号
NSPopID读入一个NScripter识别子形式的字符串
NSPopInt读入一个NScripter的数值
NSPopIntRef读入一个NScripter的数值变量的编号
NSPopLabel读入一个NScripter的标签名
NSPopStr读入一个NScripter的字符串
NSPopStrRef读入一个NScripter的字符串的编号
变量操作
NSGetIntValue获得NScripter中数值变量的值
NSGetStrValue获得NScripter中字符串变量的值
NSSetIntValue设定NScripter中数值变量的值
NSSetStrValue设定NScripter中字符串变量的值
NScripter执行
NSDoEvents跳出动画去处理Windows的信息
NSExec执行一个NScripter命令
NSExecAnimation执行NScripter动画
NSGosubgosub:跳转至标签
NSGotogoto:跳转至标签
NSReturnreturn:从子路线返回
NSSavePoint更新存档点
NSSleep指定时间内空出其他线程的动作(同wait)
NSSystemCall执行指定的Nscripter功能
Callback
NSCALL_animation插入动画的Callback
NSCALL_close点击窗口的「关闭」之后的动作
NSCALL_end结束程序之前的动作
NSCALL_load读档后的动作
NSCALL_reset执行节开始时、reset之后的动作
NSCALL_save存档之后的动作
NSCALL_savepoint到达存档点时的动作
NSCALL_tag遇到tag的Callback
NSCALL_text获得文字(变换后)的Callback
NSCALL_text0获得文字(变换前)的Callback
系统情报
NSGetFileInfo获得指定文件的属性信息
NSGetSkip是否在skip状态
NSGetWindowSize取得Nscripter的文字框大小
NSTimer取得毫秒计时器时间/span>
对话框
NSOkBox显示对话框
NSYesNoBox显示是/否对话框
动画
NSLuaAnimationInterval指定插入动画间隔
NSLuaAnimationMode指定插入动画的开始/停止
键盘・鼠标输入
NSClick等待左击
NSGetClick取得最后一次鼠标点击
NSGetKey判断是否正在按键
NSGetMouse取得鼠标指针位置
画面描画
NSInvalidate追加「无效领域」
NSUpdate更新「无效领域」
Sprite
NSSpCell设定Sprite的帧
NSSpClear消去Sprite
NSSpGetInfo取得Sprite的属性
NSSpGetPos取得Sprite的位置
NSSpLoad载入Sprite
NSSpMove移动Sprite
NSSpVisible切换Sprite是否隐藏
扩展Sprite
NSSp2Clear消去扩展Sprite
NSSp2GetInfo取得扩展Sprite的属性
NSSp2GetPos取得扩展Sprite的位置
NSSp2Load载入扩展Sprite
NSSp2Move移动扩展Sprite
NSSp2Visible切换扩展Sprite是否隐藏
OGG文件
NSOggClose结束指定channel的音乐
NSOggFade淡出指定channel的音乐
NSOggIsPlaying指定channel的音乐是否正在播放
NSOggLoad载入ogg文件
NSOggPlay播放载入的ogg文件
NSOggPlay2指定循环开始点并播放载入的ogg文件
NSOggVolume调整指定channel的音乐音量
Spline补完
NSDefSplineスプライン補間に必要な計算をして、指定したデータ编号に登録する
NSLinear求过点x0,y0和点x1,y1的一次函数f的y=f(x)的值
NSSplineスプライン補間の結果を求める
直接描画
NSDBlt将Texture直接复制在画面上
NSDCall使用外部DLL以字节为单位设定Texture
NSDClear清空画面使之变为全黑
NSDCopyToBg将目前的画面设为NScripter的背景
NSDDelete消除Texture
NSDDLL设定生成NSD系命令的Texture时调用的dll函数
NSDFill在画面指定区域填充指定颜色
NSDGetSize取得Texture的大小
NSDLoad将png文件载入为Texture
NSDOffModeNSD系命令の書きこみ先をオフスクリーンバッファに変更する
NSDPresent更新NSD系命令画出的画面
NSDPresentRect更新指定矩形区域内NSD系命令画出的画面
NSDSetSprite将NSD系命令用的Texture转换为NScripter的Sprite
NSDSpTextureをα値を考慮して重ね合わせで表示する
NSDSp2变换Texture
NSDSp2Add变换Texture
NSDSpAddTextureをα値を考慮して、加算合成で表示する
NSDTransitionオフスクリーンに描き込まれた画像を、実際に画面に反映する
NSDTransitionFオフスクリーンに描き込まれた画像を、実際に画面に反映するNL_dofile
NSCALL_animation
NSCALL_close
NSCALL_end
NSCALL_load
NSCALL_reset
NSCALL_save
NSCALL_savepoint
NSCALL_tag
NSCALL_text
NSCALL_text0
NSCheckComma
NSClick
NSCOM_
NSCOM_main
NSDBlt
NSDCall
NSDClear
NSDCopyToBg
NSDDelete
NSDDLL
NSDefSpline
NSDFill
NSDGetSize
NSDLoad
NSDoEvents
NSDOffMode
NSDPresent
NSDPresentRect
NSDSetSprite
NSDSp
NSDSp2
NSDSp2Add
NSDSpAdd
NSDTransition
NSDTransitionF
NSEnd
NSExec
NSExecAnimation
NSGetClick
NSGetFileInfo
NSGetIntValue
NSGetKey
NSGetMouse
NSGetSkip
NSGetStrValue
NSGetWindowSize
NSGosub
NSGoto
NSInvalidate
NSLinear
NSLuaAnimationInterval
NSLuaAnimationMode
NSOggClose
NSOggFade
NSOggIsPlaying
NSOggLoad
NSOggPlay
NSOggPlay2
NSOggVolume
NSOkBox
NSPopComma
NSPopID
NSPopInt
NSPopIntRef
NSPopLabel
NSPopStr
NSPopStrRef
NSReturn
NSSavePoint
NSSetIntValue
NSSetStrValue
NSSleep
NSSp2Clear
NSSp2GetInfo
NSSp2GetPos
NSSp2Load
NSSp2Move
NSSp2Visible
NSSpCell
NSSpClear
NSSpGetInfo
NSSpGetPos
NSSpline
NSSpLoad
NSSpMove
NSSpVisible
NSSystemCall
NSTimer
NSUpdate
NSYesNoBox
Ver.2.94【特殊】
ONScr支持
NL_dofile基本功能NL_dofile(Lua脚本文件名)●参数
字符串Lua脚本文件名

由于Lua标准函数dofile不能执行nsa或ns2压缩包中的文件、
NL_dofile就可以读取压缩包中的文件。
当然、也可以从压缩包中执行system.lua。
例)

读入”lib.lua”。
NL_dofile(“lib.lua”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
ONScr支持
NSCALL_animationCallbackfunction NSCALL_animation()●返回值
真伪値是否更新画面(true:更新、false:不更新)

 和cell animation相同,经过一段时间就调用此函数。
 没有参数。
 返回值是true就更新画面。false则不更新。
※另外,虽然说是插入动画,但这并不是多线程。
 通常进行Cell Animetion的点击等待时,也只是调用这个函数。(通常セル动画が発生するクリック待ちなどのところでこの函数も呼ばれるだけです。)
 调用此函数期间其他的动作会停止。
例)

插入动画。
function NSCALL_animation()

-——————————————————————————-
NSLuaAnimationInterval / NSLuaAnimationMode / NSTimer /
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_closeCallbackfunction NSCALL_close()●返回值
真伪值「关闭」按下后的动作(true:结束游戏、false:取消)

 指定点击窗口「关闭」后的动作。
 没有参数。返回值true是结束游戏、false是取消。
 返回值:之后的动作(true是结束游戏、false是取消)
※使用这个命令的话,默认的动作(对话框)就不会执行了。
例)

指定点击窗口「关闭」时的动作。
function NSCALL_close ()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_endCallbackfunction NSCALL_end()  指定结束程序之前的动作。
 没有参数和返回值。
例)

指定结束程序之前的动作。
function NSCALL_end ()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_loadCallbackfunction NSCALL_load(savenum)●参数
整数存档编号

 读档之后调用此函数。
 请读入并处理用saveCallback函数保存的数据。
 参数是存档编号,没有返回值。
例)

指定读档后的动作。
function NSCALL_load(savenum)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_resetCallbackfunction NSCALL_reset()  define节中到了game命令、或者reset后,跳转到start时调用此函数。
※另外,只是goto *start的话不会调用(因为那不是reset)。
例)

指定执行节开始时或reset之后的动作。
function NSCALL_reset()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_saveCallbackfunction NSCALL_save(savenum)●参数
整数save编号

 シナリオスクリプト側のデータが実際にsaveされる直前に呼び出されます。
 saveされるべきなのは、この函数が呼び出されたそのときのデータではなく、
 最後に到達したsaveポイント時点でのデータです。間違わないようご注意ください。
 参数はsave编号、返回值はありません。
※この命令を使っても、その後でデフォルトの処理はちゃんと行われます。
例)

saveされる直前の動作を指定する。
function NSCALL_save(savenum)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_savepointCallbackfunction NSCALL_savepoint()  saveポイントに到達したときに呼び出されます。
 Lua側でsaveしておきたいデータがある場合はこの段階でメモリ内のsaveデータを更新してください。
 参数も返回值もありません。
※この命令を使っても、その後でデフォルトの処理はちゃんと行われます。
例)

saveポイントに到達したときの動作を指定する。
function NSCALL_savepoint()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_tagCallbackfunction NSCALL_tag(tag)●参数
字符串タグテキスト

 デフォルトのpretextgosubのタイミングで呼び出されます。
 この命令を使うとデフォルトの処理は行われなくなります。pregextgosubも無効になります。
※NSCALL_tagからNSGotoやNSGosub等でジャンプしないでください。戻ってこれなくなります。
例)

タグテキストを取得する。
function NSCALL_tag(tag)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_textCallbackfunction NSCALL_text(printstr)●参数
字符串表示文(変換後)

 表示文の、変換が終わったものが送られます。実際に表示される字符串です。
 テキストを表示します。@や\を読み込んだら対応するクリック待ちも行ってください。
※この命令を使うと、デフォルトの処理は行われなくなります。textgosubも無効になります。
例)

表示文(変換後)を取得する。
function NSCALL_text(printstr)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【Callback】
▲ONScr暂不支持
NSCALL_text0Callbackfunction NSCALL_text0(plainstr)●参数
字符串表示文(変換前)

 表示文の、表示テキストが渡されたタイミングで呼び出されます。
 この段階では变量を展開したり半角数字を全角に直したりしていません。
 自動で変換をしたくない場合はこちらを設定します。
※この命令を使うと、デフォルトの変換処理やテキスト表示処理を呼び出しません。
例)

表示文(変換後)を取得する。
function NSCALL_text0(plainstr)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSCheckComma参数操作b=NSCheckComma()●返回值
真伪值接下来是逗号的话是true、否则false

检查下个符号是不是逗号。并不读入。希望改变参数数量时使用。
例)

下个符号是不是逗号的结果存入b。
b=NSCheckComma() – 是逗号的话b=true 不是则b=false。

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSClick键盘・鼠标输入NSClick()等价于click命令。
例)

等待左击。
NSClick()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSCOM_基本功能function NSCOM_func() endluasub func
执行这个命令的话,以后脚本中(00.txt~)执行func命令时、
会调用Lua函数 NSCOM_func() 。
luasub声明过的Lua函数无参数和返回值。
若想使用参数和返回值,请使用如下指出的函数(蓝色链接)。
另外,已有的命令也可以覆盖。
比如luasub bg的话,比起原先的bg命令会优先使用lua的NSCOM_bg函数。
想调用原本的bg命令时、请使用defsub的同样_bg。
例)

定义并调用NScrLua命令func。
— NScripter —
*define
luasub func
game
*start
func

end

— Lua —
function NSCOM_func(){
NSExec(“puttext "成功"“)
}

-——————————————————————————-
NSCheckComma / NSGetIntValue / NSGetStrValue / NSPopComma / NSPopID / NSPopInt / NSPopIntRef / NSPopLabel / NSPopStr / NSPopStrRef / NSSetIntValue / NSSetStrValue /
-——————————————————————————-
page top / list / main

Ver.2.95【高水准】
ONScr支持
NSCOM_main基本功能function NSCOM_main() end没有0.txt 00.txt nscript.dat、只有system.lua的时候、仅使用system.lua启动。
;mode800等的设定,在第一行使用–mode800 等(效果和0.txt中一样)
例)

仅用Lua,以800*600分辨率启动并输出一句话。
–mode800

function NSCOM_main(){
NSExec(“puttext "起動した!"“)
NSClick()
NSEnd()
}

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDBlt直接描画NSDBlt(num,dx,dy,w,h,sx,sy)●参数
整数Texture编号(0~15)
整数画面左上X坐标
整数画面左上Y坐标
整数宽
整数高
整数Texture左上X坐标
整数Texture左上Y坐标

将Texture(的一部分)直接显示到画面上。
num是Texture编号。
dx,dy是画面左上点的坐标。sx,sy是Texture左上点的坐标、w,h是宽和高。
不考虑矩形的完美嵌合,直接将Texture复制到画面上,这要比NSDSp~系命令更加快速。
αブレンディングも重ね合わせや変形の必要もない画像はなるべくこの函数で描画してください。
例)

Texture0番の坐标(64,0)サイズ32x32を画面坐标(0,64)にコピーします。
NSDBlt(0,0,64,32,32,64,0)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDCall直接描画NSDCall(texnum,filename,procnum(,param))●参数
整数Texture编号
字符串ファイル名

Texture作成時に、外部DLLを使ってTextureの中身をバイト単位で設定できます。
NSD系のTextureは作成時の内容を変更することが出来ません。
例えば、フォントを出力するような外部DLLを使って、文字フォントのTextureを作ることが出来ます。
なお、参数paramがない場合は省略できます(この場合、DLLにはNULLが送られます)。
呼び出されるDLL函数の型は次の通りにしてください。
void Func (unsigned char ptr,int w,int h,const char param);
paramは呼び出し元から渡された字符串参数です。指定されなかった場合はNULLが入ります。
wは画像の宽、hは画像の高です。
ptrはビットデータ配列です。
(x,y)ピクセルのデータはptr[x
4+y
w4]~ptr[x4+yw4+3]にあります。
x4+yw*4=posとおくと、p[pos]=青 p[pos+1]=緑 p[pos+2]=赤 p[pos+3]=α値です。
例)

10番Textureをまず画像ファイル”*200,60”(つまり200x60の完全透明画像)で初期化し、その後、编号fontprocに登録したDLL函数を”20,20,あいうえお”という参数で呼び出します
NSDCall(10,”*200,60”,fontproc,”20,20,あいうえお”)
例)

8番Textureをまずtest.pngで初期化し、编号filterprocに登録したDLL函数を”gauss”という参数で呼び出します。
NSDCall(8,”test.png”,filterproc,”gauss”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDClear直接描画NSDClear()画面を真っ黒でクリアします。
例)

画面を真っ黒でクリアします。
NSDClear()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDCopyToBg直接描画NSDCopyToBg()NSD~系の画像処理は、NScripterの描画処理とは独立しています。
したがって、Lua函数から抜けたり、Lua内部からNScripterの元々の機能を呼び出すと、描画している画像は全部上書きされてしまいます。
残す必要がある場合は、この函数を実行することで、今現在の画面をNScripter上の「背景画面」としてコピーすることが出来ます。
なお、この命令はNScripter側のBGロードと同じ処理をしていますので、立ち絵は全部消去されます。
例)

今現在の画面をNScripter上の「背景画面」としてコピーします。
NSDCopyToBg()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDDelete直接描画NSDDelete(num)●参数
整数Texture编号(0~15)

Textureを削除します。なお、明示的に削除しなくても、同じ编号にTextureをロードすると古いTextureは削除されます。
使わなくなったTextureは削除するとメモリが節約できます。
例)

0番のTextureを削除します。
NSDDelete(0)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDDLL直接描画procnum=NSDDLL(dllname,funcname)●参数
字符串DLLファイル名
字符串函数名

NSD系命令のTexture作成時に呼び出すDLL函数を設定します。
Luaファイル読み込み時に一度だけ実行してください。
返回值の编号はNSDCall函数にて参数に指定します。
例)

deffont.dll内のFont函数を読み込み、函数编号をfontprocに格納します。
fontproc=NSDDLL(“deffont.dll”,”Font”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSDefSplineSpline补完NSDefSpline(num,xarray,yarray)●参数
整数データ编号(0~99)
配列xの坐标を小さい順に格納した配列
配列xにそれぞれ対応するy的值を格納した配列

numにはスプライン補間のデータ编号(0~99)を指定します。
xarrayにxの坐标を小さい順に格納した配列、yarrayにそのxにそれぞれ対応するy的值を格納した配列を渡します。
スプライン補間に必要な計算をして、そのデータ编号に登録します。
※なお、スプライン補間のためには点のデータは最低でも三つ必要です。
20090419版以降で実装。
例)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDFill直接描画NSDFill(lx,ly,rx,ry,r,g,b)●参数
整数左上X坐标
整数左上Y坐标
整数右下X坐标
整数右下Y坐标
整数赤成分(0~255)
整数緑成分(0~255)
整数青成分(0~255)

画面の指定した領域を指定した色で塗りつぶします。
それぞれ、左上の坐标、右下の坐标、RGBの指定(0~255で)です。
例)

640x480時に画面の全体を白色で塗りつぶします。
NSDFill(0,0,639,479,255,255,255)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDGetSize直接描画width,height=NSDGetSize(num)●参数
整数Texture编号(0~15)

Textureのサイズを取得します。
例)

0番のTextureのサイズを取得します。
width,height=NSDGetSize(0)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDLoad直接描画NSDLoad(num,filename)●参数
整数Texture编号(0~15)
字符串PNGファイル名

PNGファイルをTextureとしてロードします。アーカイブからでも裸でも読めます(ただし最新版のnspng.dllが必要)
numはTexture编号です。0から15が指定できます。
この函数群は画像の一部を指定して転送することが出来ますので、一緒に使うチップは連結してまとめて置いてください。
(これは、将来的にグラフィックカードのTexture機能に置き換えるときに、Texture切り替えを少なくして高速化するためです)
例)

Texture2番にtest.pngを読み込みます。
NSDLoad(2,”test.png”)
例)

Texture3番に32x32ドットの完全透明画像を作成します。
NSDLoad(3,”*32,32”)
– 色指定を省略すると完全透明なTextureになります。
– これはNSDLoadでは使い道がありませんが、後で説明するNSDCallで使います
例)

Texture4番に48x24ドット、R=128 G=64 B=32 α=255で塗りつぶされた画像を作成します。
NSDLoad(4,”*48,24,128,64,32,255”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
▲ONScr暂不支持
NSDoEventsNScripter执行b=NSDoEvents()●返回值
真伪值trueのときは直ちにNScripterに処理を戻す

時間のかかる函数からは時々これを呼んでWindowsのメッセージを処理してください。
返回值は終了フラグです。trueのときは直ちに函数から抜けてNScripterに処理を戻してください。
例)

Windowsのメッセージを処理させる。
b=NSDoEvents() – b==trueのときは処理をやめてLua函数から抜けること

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDOffMode直接描画NSDOffMode(mode)●参数
真伪值trueでオフスクリーンバッファに変更

NSDOffMode(true)で、NSD系命令の書きこみ先をオフスクリーンバッファに変更します。
NSDOffMode(false)で、NSD系命令の書きこみ先は画面になります。デフォルトの書き込み先は画面です。
NSDOffMode(true)の時は、NSDPresent、NSDPresentRectは使えません(画面には書きこんでいないため)。
この命令は、次のNSDTransitionと組み合わせて、トランジションを実現するために使います。
例)

NSD系命令の書きこみ先をオフスクリーンバッファに変更します。
NSDOffMode(true)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDPresent直接描画NSDPresent()画面を実際に更新します。ウィンドウ内が再描画されます。
NSDPresent()は全画面、NSDPresetnRect(lx,ly,rx,ry)は指定した矩形領域が再描画されます(それぞれ左上坐标、右上坐标です)
例)

NSD系命令で描画した画面を実際に更新します。
NSDPresent()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDPresentRect直接描画NSDPresentRect(lx,ly,rx,ry)●参数
整数左上X坐标
整数左上Y坐标
整数右下X坐标
整数右下Y坐标

画面を実際に更新します。ウィンドウ内が再描画されます。
NSDPresent()は全画面、NSDPresetnRect(lx,ly,rx,ry)は指定した矩形領域が再描画されます(それぞれ左上坐标、右上坐标です)
例)

NSD系命令で描画した画面の左半分を実際に更新します。
NSDPresentRect(0,0,319,479)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
えぬえすでぃーせっとすぷらいと
NSDSetSprite直接描画NSDSetSprite(spnum,texnum(,tag))NSD系命令用のTextureを、NScripterのSpriteに変換します。
タグは省略すると”a;”になります。
NSD系命令のTextureは常にα付きなので、:a以外には変換できません。
NSD系命令のTextureにはセルやアニメ設定の概念がないので、設定が必要ならタグを指定する必要があります。
DLLで作ったフォント画像をNScripterのTextureにしたい時などに使えると思います。
例)

NScripterのSprite0番にTexture8番の画像を変換する。
NSDSetSprite(0,8)
例)

NScripterのSprite3番にTexture10番の画像をセル数2アニメ無しで変換する。
NSDSetSprite(3,10,”:a/2,0,3;”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDSp直接描画NSDSp(num,dx,dy,w,h,sx,sy,alpha)●参数
整数Texture编号(0~15)
整数転送先左上X坐标
整数転送先左上Y坐标
整数宽
整数高
整数転送元左上X坐标
整数転送元左上Y坐标
整数α値

Textureをα値を考慮して重ね合わせで表示します。拡大縮小回転などの変形処理は行われません。
numはTexture编号です。
dx,dyは転送先、画面上の左上の点の坐标。sx,syは転送元、Texture上の左上の点の坐标、w,hは宽と高、alphaは全体のα値です。
転送元のTexture画像のα値をそのまま使いたい場合は、alphaには255を指定して下さい。
例)

Texture0番の坐标(64,0)サイズ32x32を画面坐标(0,64)に半透過で表示します。
NSDSp(0,0,64,32,32,64,0,128)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDSp2直接描画NSDSp2(num,dcx,dcy,sx,sy,w,h,xs,ys,rot,alpha)●参数
整数Texture编号(0~15)
整数転送先中心X坐标
整数転送先中心Y坐标
整数転送元左上X坐标
整数転送元左上Y坐标
整数変形前宽
整数変形前高
実数横の倍率(1.0が元のサイズ)
実数縦の倍率(1.0が元のサイズ)
実数回転角(度単位、0.0が回転無し)
整数α値

Textureを回転拡大縮小などの変形処理を加えて画面に転送します。
numはTexture编号です。
dcx,dcyは転送先画面の「中心の」坐标、sx,syは転送元Textureの「左上の」坐标、w,hはTextureの「変形前の」宽と高です。
xs,ysは横・縦の倍率(少数で、1.0が元のサイズ),rotは回転角(度単位で、少数で、0.0が回転無し)です。alphaは全体のα値です。
例)

Texture0番の坐标(64,0)サイズ32x32を画面中心坐标(16,80)に、半サイズ・90度回転、半透過で表示します。
NSDSp2(0,16,80,64,0,32,32,0.5,0.5,90,128)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDSp2Add直接描画NSDSp2Add(num,dcx,dcy,sx,sy,w,h,xs,ys,rot,alpha)●参数
整数Texture编号(0~15)
整数転送先中心X坐标
整数転送先中心Y坐标
整数転送元左上X坐标
整数転送元左上Y坐标
整数変形前宽
整数変形前高
実数横の倍率(1.0が元のサイズ)
実数縦の倍率(1.0が元のサイズ)
実数回転角(度単位、0.0が回転無し)
整数α値

Textureを回転拡大縮小などの変形処理を加えて画面に転送します。
numはTexture编号です。
dcx,dcyは転送先画面の「中心の」坐标、sx,syは転送元Textureの「左上の」坐标、w,hはTextureの「変形前の」宽と高です。
xs,ysは横・縦の倍率(少数で、1.0が元のサイズ),rotは回転角(度単位で、少数で、0.0が回転無し)です。alphaは全体のα値です。
例)

Texture0番の坐标(64,0)サイズ32x32を画面中心坐标(16,80)に、半サイズ・90度回転、半透過で表示します。
NSDSp2Add(0,16,80,64,0,32,32,0.5,0.5,90,128)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDSpAdd直接描画NSDSpAdd(num,dx,dy,w,h,sx,sy,alpha)●参数
整数Texture编号(0~15)
整数転送先左上X坐标
整数転送先左上Y坐标
整数宽
整数高
整数転送元左上X坐标
整数転送元左上Y坐标
整数α値

Textureをα値を考慮して、加算合成で表示します。その他はNSDSpと同じです。
※現状では関係ありませんが、将来的にグラフィックカードの機能を使うときには、なるべくNSDSpAdd,NSDSp2AddとNSDSp,NSDSp2はまとめて実行したほうがいいです。
そのほうがグラフィックカードのモード切替が減らせて、高速化されるからです。
例)

Texture0番の坐标(64,0)サイズ32x32を画面坐标(0,64)に半加算合成で表示します。
NSDSpAdd(0,0,64,32,32,64,0,128)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDTransition直接描画NSDTransition(effectnum,effecttime,rulename)●参数
整数エフェクト编号
整数持続時間
字符串ルールファイル名

NSDOffMode(true)でオフスクリーンに描き込まれた画像を、実際に画面に反映します。
この函数は、一端画像をNScripterのデータに書き戻してNScripter側のエフェクト処理を呼んでいますので、NScripter側のエフェクトと同程度の重さの処理になります。
NSD~系の描画だけで実現できるエフェクトは、そちらで実装したほうが高速になります。
このとき、NScripterと同じエフェクトが使えます。また、この函数は参数を省略できます。
※ルール画像の指定にはbmpも使えますが、PNGに統一したほうがややこしくないと思います。
例)

オフスクリーンに描き込まれた画像を、実際に画面に反映します。
NSDTransition(1)
例)

print 10,500と同じエフェクトを使いたい場合
NSDTransition(10,500)
例)

print 18,1000,”rule.png”と同じエフェクトを使いたい場合
NSDTransition(18,1000,”rule.png”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
▲ONScr暂不支持
NSDTransitionF直接描画NSDTransitionF(effectnum,effecttime,rulename)●参数
整数エフェクト编号
整数持続時間
字符串ルールファイル名

NSDTransition函数は、CTRLキーで高速化したりスペースやクリックでキャンセルしたり出来ます。
NSDTransitionFは高速化やキャンセルが出来ないトランジションを実行します。
そのほかはNSDTransitionと同じです。
例)

オフスクリーンに描き込まれた画像を、実際に画面に反映します。
NSDTransitionF(1)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.95【低水准】
ONScr支持
NSEnd基本功能NSEnd()结束NScripter。
例)

结束NScripter。
NSEnd()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSExecNScripter执行NSExec(script)●参数
字符串脚本字符串

执行一个NScripter命令。
命令仅限一个,执行一次。不可使用「:」连接的多命令。
想执行多个命令的时候,请多次调用此函数。
goto gosub select等需要跳转的命令,以及for next命令也都不可使用。
命令要调用Lua的话没有关系,但从那里再次使用NSExec就不行了。
if命令可以使用,但不能使用多语句,所以Lua脚本中的if尽量要简单。
※想在define节时处理的命令,请在system.lua中直接写下就可以了(Lua中在函数之外的命令都会在define时处理)。
例)

执行”amsp 10,100,50”。
NSExec(“amsp 10,100,50”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSExecAnimationNScripter执行NSExecAnimation()执行NScripter的动画。
平常是定期就会调用的函数,但Lua中不能自动调用
在有必要执行动画的场合,请使用此命令。
(一般的使用方法是在等待时调用)
※另外,动画的话也可调用NSCALL_animation,
NSCALL_animation中是无限循环调用此函数。
而且仅有这个函数的话是不会显示的。需要调用NSUpdate()或者NSExec(“print 1”)。
例)

执行NScripter动画。
NSExecAnimation()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSGetClick键盘・鼠标输入l,r,w,ld,rd=NSGetClick()●返回值
真伪值左クリックアップ(true:入力あり、false:入力なし)
真伪值右クリックアップ(true:入力あり、false:入力なし)
整数ホイール入力(0:入力なし、1以上:上回転、-1以下:下回転)
真伪值左クリックダウン(true:入力あり、false:入力なし)
真伪值右クリックダウン(true:入力あり、false:入力なし)

最後に入力されたマウスクリックを取得します。
lは左クリックアップ(trueかfalse)、rは右クリックアップ(trueかfalse)、wはホイール入力(整数)
ldは左クリックダウン(trueかfalse)、rdは右クリックダウン(trueかfalse)です。
基本的にはlとrとwを見ておけばいいです。アクションゲーム等でldやrdを使うこともあるかもしれません。
Luaは返回值を省略できるので、後ろが必要ない場合は省けます。
※ホイールクリックは取得できません。(by senzogawa)
例)

最後に入力されたマウスクリックを取得する。
l=NSGetMouse() – 左クリックだけ取得
l,r,w=NSGetMouse() – 左右クリックとホイールを取得
l,r,w,ld,rd=NSGetMouse() – 全部取得

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSGetFileInfo系统信息arcname,offset,length=NSGetFileInfo(filename)●返回值
字符串アーカイブのファイル名(無い場合はnil)
整数スタート位置offset(ファイル先頭から)
整数サイズlength(単位バイト)

指定したファイルfilenameをnsaもしくはns2アーカイブから探し、
アーカイブのファイル名arcnameと、スタート位置offset(ファイル先頭から)と、
サイズlength(単位バイト)を返します。
ただし、アーカイブでなく生でそのファイルがある場合は、
arcnameにはfilenameそのまま、位置とサイズにはともに0を返します。
(生ファイルのサイズを代入するわけではないので注意)
ファイルがなかったときはarcnameにnilを返します。
例)

“test.dat”の情報を取得する。
arcname,offset,length=NSGetFileInfo(“test.dat”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSGetIntValue变量操作num=NSGetIntValue(var)●参数
整数数值变量编号
●返回值
整数数值变量编号的值

获取NScripter中数值变量的值。
例)

%10的值を取得する。
num=NSGetIntValue(10) – %10的值が返る。

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSGetKey键盘・鼠标输入b=NSGetKey(keycode)●参数
字符串按键的名称
●返回值
真伪值是否点击(true:按下、false:没有)

判断某个按键是否按下并返回true或false。
大致等同NScripter命令「checkkey」。
keycode可以是下面的字符串。
・英文字母、数字、空格等直接指定即可。
・”ESC” esc键
・”SPACE” 空格键。
・”RETURN” “ENTER” 回车键
・”CTRL” コントロールキー
・”UP” “DOWN” “LEFT” “RIGHT” 方向键
・”F1”~”F12” 功能键
・”PAGEUP” “PAGEDOWN”
・”SHIFT”

例)

判断是否按着Ctrl键。
b=checkkey(“CTRL”) – 按着Ctrl的话true

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSGetMouse键盘・鼠标输入x,y=NSGetMouse()●返回值
整数マウスのX坐标(画面外の場合は-1)
整数マウスのY坐标(画面外の場合は-1)

マウスの位置を取得します。画面外の場合は-1,-1が返ります。
例)

マウスの位置を变量x,yに取得する。
x,y=NSGetMouse()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSGetSkip系统信息skipmode=NSGetSkip()●返回值
整数skip模式(0:通常、1:跳过模式、2:自动模式)

取得当前skip模式。0=正常模式 1=跳过 2=自动 。
例)

取得当前skip状态。
skipmode=NSGetSkip()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSGetStrValue变量操作str=NSGetStrValue(var)●参数
整数字符串变量编号
●返回值
字符串字符串变量编号的值

取得NScripter的字符串变量的值。
例)

取得$12的值。
str=NSGetStrValue(12) – $12的值が返る。

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSGetWindowSize系统信息width,height=NSGetWindowSize()●返回值
整数窗口的宽
整数窗口的高

取得NScripter的窗口大小。
例)

取得NScripter的窗口大小。
width,height=NSGetWindowSize()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSGosubNScripter执行NSGosub(label)●参数
字符串标签

等同于gosub命令。
例)

跳到”*sub”。
NSGosub (“*sub”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSGotoNScripter执行NSGoto(label)●参数
字符串标签

等同于goto。
注意在这里跳转终归的是脚本(00.txt等)的执行位置、
Lua仍将原样继续执行。
例)

跳转至”*loop”。
NSGoto (“*loop”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSInvalidate画面描画NSInvalidate(lx,uy,rx,dy)●参数
整数左上X坐标
整数左上Y坐标
整数右下X坐标
整数右下Y坐标

無効領域を追加します。この後NSUpdateで再描画します。
※ver.2.95にて利用可能となりました。
例)

無効領域を追加する。
NSInvalidate(10,10,100,100) – (10,10)-(100,100) 宽と高ではなく、「坐标」です。

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSLinearSpline补完y=NSLinear(x0,y0,x1,y1,x)●参数
整数直線上の点X0
整数直線上の点Y0
整数直線上の点X1
整数直線上の点Y1
整数y=f(x)のx的值
●返回值
整数y=f(x)のy的值

点x0,y0と点x1,y1を通るような函数fの、y=f(x)的值を求めます。
※20090419版以降で実装。
例)

(1,5)と(3,15)を通る直線はy=5xですので、x=4の時的值20がyに代入されます。
y=NSLinear(1,5,3,15,4)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSLuaAnimationInterval动画NSLuaAnimationInterval(intervalms)●参数
整数插入动画的间隔(毫秒)

指定动画发生间隔。
虽然指定的是毫秒,但不一定精确。
由于设备的限制可能会延迟。
若想要在某个实际时间调用,请使用NSTimer()。
例)

指定动画发生间隔。
NSLuaAnimationInterval(20) – 20毫秒调用一次

-——————————————————————————-
NSCALL_animation / NSLuaAnimationMode / NSTimer /
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSLuaAnimationMode动画NSLuaAnimationMode(boolswitch)●参数
整数是否开始动画(true:開始、false:停止)

控制NSLua动画的开始和停止。
默认为false,指定为true的话
就开始动画。Lua中没有任何操作对象时,
false也是停止插入动画。true也会执行插入动画。
例)

开始NSLua动画。
NSLuaAnimationMode(true)

-——————————————————————————-
NSCALL_animation / NSLuaAnimationInterval / NSTimer /
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOggCloseOGGファイルNSOggClose(ch)●参数
整数チャンネル编号

指定したチャンネルの演奏を終了します。
例)

ストリーミング再生チャンネル4の演奏を終了する。
NSOggClose(4)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOggFadeOGGファイルNSOggFade(ch,startvol,endvol,time,closeflag)●参数
整数チャンネル编号
整数フェード開始音量
整数フェード終了音量
整数フェード時間(ミリ秒)
整数フェード後終了フラグ(true:終了、false:続行)

指定したチャンネルをフェード操作します。startvolからendvolまで変化します。timeの単位はミリ秒です。
closeflag=trueでフェード終了後ファイルをクローズします。falseの時は演奏続行です。
例)

ストリーミング再生チャンネル10の演奏状態をispに取得する。
NSOggFade(4,-10000,0,1000,false)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOggIsPlayingOGGファイルisplaying=NSOggIsPlaying(ch)●参数
整数チャンネル编号
●返回值
整数演奏状態(true:演奏中、false:停止中)

指定したチャンネルが演奏していればtrue していなければfalseが返ります。
※20090419版以降で返回值が整数となるバグ修正。
例)

ストリーミング再生チャンネル10の演奏状態をispに取得する。
isp=NSOggIsPlaying(10)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOggLoadOGGファイルNSOggLoad(ch,filename)●参数
整数チャンネル编号
字符串ファイル名

ストリーミング再生チャンネルchにファイルをロードします。再生はしません。
nsogg2.dllが必要です。
例)

ストリーミング再生チャンネル3に”se.ogg”をロードする。
NSOggLoad(3,”se.ogg”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOggPlayOGGファイルNSOggPlay(ch,isloop)●参数
整数チャンネル编号
真伪值ループフラグ(true:ループ、false:一回だけ)

ロードしたファイルを再生します。isloop=trueでループ、falseで一回だけです。
nsogg2.dllが必要です。
例)

ストリーミング再生チャンネル3を一回だけ再生する。
NSOggPlay(3,false)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOggPlay2OGGファイルNSOggPlay2(ch,point)●参数
整数チャンネル编号
実数ループ開始点(秒)

ロードしたファイルを再生します。ループ開始点を指定できます。
単位は秒で、double型(実数型)で指定できます。
例)

ループ開始点を1.4142秒後としてストリーミング再生チャンネル4を再生する。
NSOggPlay2(4,1.4142)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOggVolumeOGGファイルNSOggVolume(ch,vol)●参数
整数チャンネル编号
整数音量(0:最大、-10000:最小)

指定したチャンネルの音量を変更します。
0~-10000が指定できます。0が最大、-10000が最小です。
例)

ストリーミング再生チャンネル3の音量を最大にする。
NSOggVolume(3,0)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSOkBox对话框NSOkBox(text,title)●参数
字符串本文
字符串タイトル字符串

对话框ボックスを表示します。
NScripterでいうmesbox命令ですが、本文とタイトルの指定順が逆になっていますのでご注意ください。
(こちらのほうがWindowsでは標準のようなので、標準に従うことにしました。)
例)

对话框ボックスを表示する。
NSOkBox(“本文です”,”タイトルです。”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSPopComma参数操作NSPopComma()读入并跳过参数列中的一个逗号(参数之间用逗号隔开)。
例)

读入并跳过参数列中的一个逗号。
NSPopComma()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSPopID参数操作id=NSPopID()●返回值
字符串识别子形式的字符串参数(小写)

读入一个NScripter识别子形式的字符串的参数。含有大写字母则变换为小写字母。
所谓识别子形式,比如bg命令的black或white等、ld命令的l r c等,不用「””」括起的字符串。
例)

读入识别子形式的字符串,保存进id。
id=NSPopID()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSPopInt参数操作number=NSPopInt()●返回值
整数数值参数

读入一个NScripter的数值参数。
例)

读入一个NScripter的数值参数,存至number。
number=NSPopInt()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSPopIntRef参数操作ivalindex=NSPopIntRef()●返回值
整数数值变量参数的编号

读入一个NScripter的数值变量参数的编号。比如%5的话就是5。
例)

读入一个NScripter的数值变量参数的编号,存至ivalindex。
ivalindex=NSPopIntRef()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSPopLabel参数操作label=NSPopLabel()●返回值
字符串标签名(小写)

读入一个NScripter标签名。含有大写字母则转换为小写。
例)

读入一个NScripter标签名。
label=NSPopLabel()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSPopStr参数操作str=NSPopStr()●返回值
字符串字符串参数

读入一个NScripter的字符串参数。
例)

读入一个NScripter的字符串参数,存至str。
str=NSPopStr()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSPopStrRef参数操作svalindex=NSPopStrRef()●返回值
整数字符串变量参数的编号

读入一个NScripter的字符串的编号。比如$10的话就是10。
例)

读入一个NScripter的字符串编号,存入svalindex。
svalindex=NSPopStrRef()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSReturnNScripter执行NSReturn() 等同于return。
例)

从子路线返回。
NSReturn()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSavePointNScripter执行NSSavePoint()NSExec(“savepoint”)は駄目です。NSSavePoint()という専用の函数を使ってください。
例)

saveポイントを更新する。
NSSavePoint()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSSetIntValue变量操作NSSetIntValue(var, num)●参数
整数数值变量编号
整数整数

设定NScripterの数值变量的值。
例)

%3赋值为10。
NSSetIntValue(3,10) – %3=10

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【高水准】
ONScr支持
NSSetStrValue变量操作NSSetStrValue(var, str)●参数
整数字符串变量编号
整数整数

设定NScripterの字符串变量的值。
例)

$10赋值为”test”。
NSSetStrValue(10,”test”) – $10=”test”

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSleepNScripter执行NSSleep(sleepms)●参数
整数動作を明け渡す時間(ミリ秒)

指定した時間(ミリ秒単位)ほかのスレッドに動作を明け渡します。
NScripter命令の「wait」とだいたい同じです。
動作をすぐにNScripterに戻すスクリプトでは必要ありませんが、
長時間Luaスクリプトを走らせっぱなしにするとCPU使用率が上がるので、
適度にNSSleep(1)とかNSSleep(2)とかを呼んでCPU使用率を下げてください。
例)

1ミリ秒間ほかのスレッドに動作を明け渡する。
NSSleep(1)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSp2Clear扩展SpriteNSSp2Clear(num)●参数
整数扩展Sprite编号

扩展Spriteを消去します。
この命令だけでは画面に反映されませんのでNSUpdate()を呼んでください。
例)

扩展Sprite编号2を消去する。
NSSp2Clear(2)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSp2GetInfo扩展Spritewidth,height,cellnum=NSSp2GetInfo(num)●参数
整数扩展Sprite编号
●返回值
整数宽
整数高
整数セル数

扩展Spriteの情報を得ます。宽、高、セル数が得られます。
※Luaは返回值を全部使わなくてもかまいません。
例)

扩展Sprite编号2の宽と高を取得する。
w,h=NSSp2GetInfo(2)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSp2GetPos扩展Spritecx,cy,xs,ys,rot,alpha,ope=NSSp2GetPos(num)●参数
整数扩展Sprite编号
●返回值
整数中心X坐标
整数中心Y坐标
整数横倍率
整数縦倍率
整数回転角
整数α値(0:透過、255:不透過)
整数出力オプション(0:普通、1:加算合成、2:減算合成)

扩展Spriteの位置を得ます。中心坐标X,Y,横倍率,縦倍率,回転角,α値,出力オプションが得られます。
例)

扩展Sprite编号7の中心坐标をcx,cyに取得する。
cx,cy=NSSp2GetPos(7)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSp2Load扩展SpriteNSSp2Load(num,filename)●参数
整数扩展Sprite编号
字符串ファイル名

扩展Sprite(lsp2系)をロードします。
画面外にロードしますので、移動しないと見えません。
例)

扩展Sprite编号0に”:a/2,0,3;test.bmp”をロードする。
NSSp2Load(0,”:a/2,0,3;test.bmp”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSp2Move扩展SpriteNSSp2Move(num,cx,cy,xs,ys,rot,alpha,ope)●参数
整数扩展Sprite编号
整数移動先中心X坐标
整数移動先中心Y坐标
整数横倍率
整数縦倍率
整数回転角
整数α値(0:透過、255:不透過)
整数出力オプション(0:普通、1:加算合成、2:減算合成)

扩展Spriteを移動します。
この命令だけでは画面に反映されませんのでNSUpdate()を呼んでください。
ope=0で普通、ope=1で加算ブレンディング、ope=2で減算ブレンディングです。
例)

扩展Sprite编号3を100,100に移動し、不透過値を255にする。
NSSp2Move(0,100,100,100,100,45,255,0)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSp2Visible扩展SpriteNSSp2Visible(num,isvisible)●参数
整数扩展Sprite编号
真伪值表示フラグ(true:表示、false:非表示)

扩展Spriteを表示したり消したりします。trueで表示、falseで非表示です。
この命令だけでは画面に反映されませんのでNSUpdate()を呼んでください。
例)

扩展Sprite编号1を表示する。
NSSp2Visible(1,true)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSpCellSpriteNSSpCell(num,c)●参数
整数Sprite编号
整数セル编号

Spriteのセルを設定します。
例)

Sprite编号4のセルを0に設定する。
NSSpCell(4,0)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSSpClearSpriteNSSpClear(num)●参数
整数Sprite编号

消去Sprite。
仅有这个命令画面不会刷新,需配合NSUpdate()。
例)

消去2号Sprite。
NSSpClear(2)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSSpGetInfoSpritewidth,height,cellnum=NSSpGetInfo(num)●参数
整数Sprite编号
●返回值
整数宽
整数高
整数cell数

获取Sprite的属性。包括宽、高、cell数。
※Lua中不使用所有返回值也没关系。
例)

取得2号Sprite的宽和高。
w,h=NSSpGetInfo(2)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSSpGetPosSpritelx,ly,alpha=NSSpGetPos(num)●参数
整数Sprite编号
●返回值
整数左上X坐标
整数左上Y坐标
整数透明度(0:透明、255:不透明)

获取Sprite的位置。包括左上坐标X,Y,透明度。
例)

获取2号Sprite的左上坐标。
lx,ly=NSSpGetPos(2)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSplineSpline补完y=NSSpline(num,x)●参数
整数データ编号(0~99)
整数求めたいx的值
●返回值
整数スプライン補間によるy的值

NSDefSplineで定義したデータ编号を指定し、求めたいx的值を指定すると、スプライン補間によってy的值が返ります。
ここで、xはxarrayに指定した最小値と最大値の間になくてはなりません。
※20090419版以降で実装。
例)

y=6が返ります。
xa={1,2,4} ya={2,4,8}
NSDefSpline(0,xa,ya)
y=NSSpline(0,3)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSSpLoadSpriteNSSpLoad(num,filename)●参数
整数Sprite编号
字符串文件名

载入Sprite。
文件名可以使用lsp的控制字符串。
在画面外载入的话需要移动才能进入画面。
例)

将0号Sprite以”:a/2,0,3;test.bmp”载入。
NSSpLoad(0,”:a/2,0,3;test.bmp”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSSpMoveSpriteNSSpMove(num,lx,ly,alpha)●参数
整数Sprite编号
整数目的地X坐标
整数目的地Y坐标
整数透明度(0:透明、255:不透明)

移动Sprite。
和msp同样,只有这个命令是无法显示到画面上的。
请在合适的时间调用NSUpdate()。
(变换完所有Sprite之后一起显示出来的话效率高一些)
例)

将3号Sprite向100,100移动,且设为不透明。
NSSpMove(3,100,100,255)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSSpVisibleSpriteNSSpVisible(num,isvisible)●参数
整数Sprite编号
真伪值是否显示(true:表示、false:非表示)

显示和隐藏Sprite。true是显示,false是隐藏。
只有这个命令无法显示到画面上,故请调用NSUpdate()。
例)

显示1号Sprite。
NSSpVisible(1,true)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSSystemCallNScripter执行NSSystemCall(callstr)●参数
字符串機能名

指定したNScripterの機能を呼び出します。
NScripter命令で言うmenu_???命令やsystemcall命令等をまとめたものです。
メッセージを送るだけなので、即時実行されないこともあります。
(その場合、NScripterが次にメッセージを処理したときに実行されます)
次の字符串が指定できます。
★close  「閉じる」ボタンを押したのと同じ動作をします。
★end  NScripterを終了します。何も聞いてこないので注意してください。end命令と同じです。
★reset  NScripterをリセットします。何も聞いてこないので注意してください。reset命令と同じです。
★full  フルスクリーン化します。
★window  ウィンドウ化します。
★automode オートモード状態にします。
★skip  スキップ状態にします。
★skipoff  スキップ状態を解除します。
例)

NScripterの「閉じる」ボタン機能を呼び出す。
NSSystemCall(“close”)

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSTimer系统信息count=NSTimer()●返回值
整数启动后经过的时间(毫秒)

取得毫秒计时器的时间。和resettimer gettimer同精度。
计时器仅仅从启动开始不断计时。
这个函数不是只能用于取得时间值。再次调用后算出之间的差,
也就能获得中间经过的时间了。
例)

取得计时器的时间。
count=NSTimer()

-——————————————————————————-
NSCALL_animation / NSLuaAnimationInterval / NSLuaAnimationMode /
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
ONScr支持
NSUpdate刷新画面NSUpdate()刷新「无效领域」(NSInvalidate所定的区域)。同print 1。
例)

刷新画面。
NSUpdate()

-——————————————————————————-
/
-——————————————————————————-
page top / list / main

Ver.2.94【低水准】
▲ONScr暂不支持
NSYesNoBox对话框result=NSYesNoBox(text,title)●参数
字符串本文
字符串タイトル字符串
●返回值
真伪值はいを押せばtrue、いいえならfalse

はい/いいえをたずねる对话框ボックスを表示します。返回值はbooleanです。
NScripterでいうyesnobox命令ですが、本文とタイトルが逆になっていますのでご注意ください。
例)

はい/いいえをたずねる对话框ボックスを表示する。
result=NSYesNoBox(“質問です”,”タイトルです”) – はいを押せばresult=true、いいえならresult=false