NScr2Lua解説

NScripter2が実行しているのは普通のLuaですが、C++で実装している関数が多くあります。ここではそれを解説します。
system.luaで実装されているものについては、ソースが公開されているので、解説しません。
C++で言うところのいわゆるメンバ関数(第一引数がそのクラスのインスタンスであるような関数)は、シンタックスシュガーで書いてあります。例えばtextureの項目のdrawはt:drawとありますが、これはtexture.createやtexture.load等で作成したテクスチャクラスのインスタンスから呼び出せるメンバ関数である、ということです。詳しくはLuaの入門書等を読んでください。

NScr2Luaマニュアル目次

全体の目次に戻る

basic

basic.loadscript(filename,src)
NScr2BASICにシナリオファイルを読み込みます。ファイル名filenameとシナリオファイルのテキストそのものsrcを渡します。この関数に渡す時には、エンコードはUTF-8にしてください。
basic.setlog(logmode)
trueにするとエラー時にBASICのログが出力されます。
basic.setsrcdump(dumpmode)
trueにするとエラー時のログにソースコードの中間言語表現によるダンプリストが出力されます。
basic.savedump(filename)
ソースコードの中間言語表現によるダンプリストを出力します。
basic.reset()
リセットを実行します。
basic.run()
読み込んだソースファイルを実行します。
basic.exec(line)
文字列lineをBASICソースとして解釈し、実行します。
ret=basic.eval(expr)
文字列exprを式として解釈し、値を返します。文字列か数値になります。
basic.registercom(comname,ptype)
BASIC命令comnameをパラメータタイプptypeでLuaにより実装された命令として登録します。パラメータについてはBASICのdefsubを参照してください。system.luaにたくさん例があるのでそちらも参照してください。
basic.registerfunc(funcname,ptype)
BASIC関数funcnameをパラメータタイプptypeでLuaにより実装された関数として登録します。system.luaにたくさん例があるのでそちらも参照してください。
basic.vset(vname,value)
BASIC変数vnameに値valueを代入します。
ret=basic.vget(vname)
BASIC変数vnameの値を返します。定義されていない場合はnilを返します。
tbl=basic.getvnametable(header)
名前がheaderから始まるBASIC変数名を全部取得してテーブルtblに返します。
basic.load(num)
ロードを実行します。numはセーブ番号です。
basic.save(num)
セーブを実行します。numはセーブ番号です。
basic.systemload()
システムロードを実行します。
basic.systemsave()
システムセーブを実行します。
basic.exec_goto(lb)
goto命令を実行します。lbはラベル名です。
basic.exec_gosub(lb)
gosub命令を実行します。lbはラベル名です。
basic.exec_textgosub()
spputtextから呼び出す特殊なgosub命令です。飛び先はtextb固定です。
basic.exec_call(lb,param1,param2,...)
パラメータをスタックに積んでgosub @lbを実行します。飛び先からgetparamで取得できます。型チェックは行いません。
basic.exec_return([lb])
return命令を実行します。lbを省略すると呼び出し元に、lbを指定するとそのラベルにリターンします。
basic.serialize(data)
データをシリアライズ(保存もしくは読み込み)します。onsaveloadもしくはonsystemsaveloadを、セーブで呼んでいるなら保存、ロードで呼んでいるなら読み込みを実行します。詳細はsystem.luaを参照してください。
flag=basic.lchk(lb)
ラベルlbを既に読み込んでいればtrue、いなければfalseを返します。
flag=basic.schk(num)
セーブファイルnum番が存在すればtrue、しなければfalseを返します。
flag=basic.tchk()
最後に読み込んだ表示文が既読であったならtrue、初めて読むものであったならfalseを返します。
color=basic.htmlcolor_to_number(htmlcolor)
HTML形式の色指定文字列("#AARRGGBB"もしくは"#RRGGBB")を32ビットの数値に変換します。内部的にはこの値を色を示すものとして扱っています。
tbl=basic.get1darray(vname)
BASICの0ベースの配列をLuaの1ベースの配列(テーブル)に変換します。
tbl=basic.decodetable(str)
BASICの「テーブル記法」で受け取った文字列をLuaテーブルに変換します。

console

console.open()
コンソールウィンドウを開きます。
console.write(str)
コンソールに文字列を出力します。改行はしません。
console.print(str)
コンソールに文字列を出力します。行末は改行します。
str=console.readline()
コンソールから一行入力を受け取り文字列として返します。
console.locate(x,y)
文字の表示位置を移動します。
console.close()
コンソールウィンドウを閉じます。
console.caption(title)
コンソールウィンドウのタイトルを変更します。
w,h=console.getsize()
コンソールの幅と高さを取得します。単位は文字数です。
x,y=console.getcursor()
コンソールの表示位置を取得します。単位は文字数です。
console.setsize(w,h)
コンソールウィンドウの幅と高さを設定します。単位は文字数です。
console.settext(str,x,y,cr,cg,cb,br,bg,bb,fi,bi)
コンソールに色を指定して文字列を書き込みます。cr以降のパラメータは0か1です。cr,cg,cbは文字色です。br,bg,bbは背景色です。fiは文字色を濃くします、biは背景色を濃くします。
console.clear()
コンソールをクリアします。
c=console.inkey()
コンソールから一文字入力して返します。リターンキーを押さなくても、キーが押されていなくても処理が戻ります。何も押されていない場合はnilを返します。
ESCキーは"ESC"、カーソルキーはそれぞれ"UP""DOWN""LEFT""RIGHT"、CTRLキーは"CTRL"、ファンクションキーは"F1"~"F12"、リターンキーは"RETURN"、ページキーは"PAGEUP""PAGEDOWN"、シフトキーは"SHIFT"を返します。
console.beep(freq,mili)
ビープ音を発生させます。周波数はfreq、時間はmiliミリ秒です。これらは省略できます。省略すると800Hz、200ミリ秒になります。
console.color(cr,cg,cb,br,bg,bb,fi,bi)
文字色を変えます。色の指定はconsole.settextと同じです。

lock

lock.singleton()
多重起動を禁止します。root.luaの最初で呼び出してください。

draw

draw.beginscene()
スクリーンへの描画を開始します。
draw.endscene()
スクリーンへの描画を終了します。
draw.blend(mode)
ブレンドモードを指定します。mode=0で通常モード(乗算合成)、mode=1で加算ブレンドモード(加算合成)です。

gui

gui.bgcolor(color)
ウィンドウの背景色を設定します。colorは32ビットARGBです。以後、Luaにおける色指定はすべて32ビットARGBです。
gui.setscreenmode(mode)
スクリーンモードを設定します。1でフルスクリーン、0でウィンドウモードです。
mode=gui.getscreenmode()
スクリーンモードを取得します。1でフルスクリーン、0でウィンドウモードです。
gui.create(w,h)
DirectXウィンドウを作成します。幅と高さを指定してください。破棄は出来ません。一度だけ実行してください。
gui.caption(title)
DirectXウィンドウのタイトルを設定します。
gui.doevents()
ウィンドウメッセージを処理します。
gui.okbox(text,caption)
「OK」ボタンのみのダイアログボックスを表示します。
ret=gui.yesnobox(text,caption)
「はい」「いいえ」のダイアログボックスを表示し、true falseで結果を返します。
x,y=gui.getmouse()
マウスの座標を取得します。画面外である場合はnil,nilを戻します。
gui.setmouse(x,y)
マウスの座標を設定します。
lx,ly,rx,ry,dx,dy,a,b,x,y,start,back,l1,r1,l2,r2,l3,r3=gui.getpad(num)
num番のXBOXパッドの入力を取得します。順に、左スティックX,Y 右スティックX,Y デジタル方向X,Y A B X Y START BACK L1 R2ボタン L2 R2トリガー L3 R3ボタン、です。ボタンはすべてtrueまたはfalse、lx ly rx ryは-32768~32767、dx,dyは-1~1、l2 r2は0~255です。※なお、パッド系命令を使う場合はnscr2pad.dllがnscr2.exeと同じフォルダにある必要があります。
gui.setpad(num,lmotor,rmotor)
num番のパッドを振動させます。左モーター(低周波)と右モーター(高周波)のスピードを0~65535で指定します。※なお、パッド系命令を使う場合はnscr2pad.dllがnscr2.exeと同じフォルダにある必要があります。
lu,ru,w,ld,rd=gui.getclick()
マウスの左クリック、右クリック、ホイール上下、左押し下げ、右押し下げのメッセージを取得します。
gui.clearbuffer()
マウス関連のメッセージをクリアします。
tbl=gui.getdropfilelist()
最後にウィンドウにドラッグ&ドロップされたファイル名(複数可)をテーブルで取得します。
ret=gui.getkey(code)
キーを押し下げられているかどうかをtrueかfalseで取得します。codeにはBASICのgetkey命令と同じものが指定できます。
gui.sleep(mili)
指定時間エンジンの動作をスリープします。単位はミリ秒です。
tm=gui.gettimer()
Windows起動後経過した時間を得ます。単位はミリ秒です。
nm=gui.getexename()
実行ファイル自身の名前を得ます。この関数はファイル名だけを得ます。
path=gui.getexedir()
実行ファイルのあるディレクトリ名を得ます。
path=gui.gettempdir()
テンポラリ用のディレクトリ名を得ます。
path=gui.getdocdir()
ドキュメント用のディレクトリ名を得ます。
hwnd=gui.gethwnd()
DirectXウィンドウのHWNDの値をライトユーザーデータとして得ます。
hinst=gui.gethinstance()
HINSTANCEの値をライトユーザーデータとして得ます。
line=gui.getcommandline()
起動時のコマンドライン文字列を得ます。
gui.setclipboard(str)
クリップボードにテキストを設定します。
name=gui.savedialog(ext,defname)
セーブファイル名を選ぶダイアログを表示します。extは拡張子(ドット抜きで)、defnameはデフォルトのファイル名(ドット拡張子抜きで)です。デフォルトでは"txt" "out"です。取得したセーブファイル名を返します。
name=gui.loaddialog(ext)
ロードファイル名を選ぶダイアログを表示します。extは拡張子(ドット抜き)です。デフォルトでは"txt"です。取得したロードファイル名を返します。
name=gui.dirdialog()
ディレクトリを選択するダイアログを表示します。取得したディレクトリ名を返します。
tbl=gui.getfilelist(dir,ext,subflag)
指定したディレクトリから指定した拡張子のファイル名のリストを得ます。拡張子にnilを指定すると全拡張子が列挙されます。subflag=trueでサブディレクトリも検索されます。
str=gui.input(text)
文字列を入力するダイアログを表示します。textは文字列の説明文です。
gui.shell(path)
シェルでpathを実行します。pathにはファイル名もしくはURLが指定できます。
gui.setwindowtop()
ウィンドウを最前面に移動します。
gui.mkdir(dir)
ディレクトリを作ります。既にある場合は何もしません。
year,month,day,hour,min,sec=gui.getfiletime(filename)
ファイルの更新年月日を得ます。
size=gui.getfilesize(filename)
ファイルサイズを得ます。
flag=gui.isenable()
DirectXウィンドウが作成されていればtrue、されていなければfalseを戻します。
dirname,filename=gui.splitpath(fullpath)
フルパス名をディレクトリ名とファイル名に分離します。
value=gui.getconfig(key)
config.iniからセクションNSCR2CONFIG,キーkeyの値を得ます。値は数値だけに対応しています。config.exeの出力するconfig.iniに対応しています。
str=gui.getini(filename,section,key)
指定したiniファイルからセクションsection,キーkeyの値を得ます。戻り値は文字列です。
w,h=gui.getsize()
ゲーム画面のサイズを返します。
lx,ly,w,h=gui.getviewport2d()
ウィンドウの実際の描画開始座標とサイズを返します。フルスクリーンモードによる拡縮にも対応します。テクスチャの描画命令は自動で拡縮に対応していますが、直接描画(shape系)や外部プラグインでの利用の際に必要な場合のための関数です。
w,h=gui.getscreensize()
DirectXウィンドウのクライアント領域の「実際の」サイズを返します。拡大フルスクリーン化されている場合、Windows側の生のサイズを返します。
flag=gui.getlclick()
左クリックのメッセージだけを取得してtrueもしくはfalseで戻します。
gui.exit()
プログラムを終了します。os.exitではウィンドウ周りの終了処理が正しく行えませんので注意してください。
pid=gui.execute(line)
コマンドラインを指定してプログラムを実行します。プロセスIDを数値として戻します。
gui.stop(pid)
プロセスIDを指定して、プログラムを終了します。

archive

archive.dofile(luafilename)
Luaスクリプトをアーカイブ、もしくは生ファイルからロードして実行します。
flag=archive.seek(filename)
アーカイブから、もしくは生ファイルからfilenameを検索します。あればtrue、なければfalseを返します。あった場合、次のread関数で読み込むことが出来ます。
data=archive.read()
アーカイブから、もしくは生ファイルからseekで検索したファイルを最後まで読み込んで返します。

encoding

utf8=encoding.ansi_to_utf8(ansi)
ANSI文字列(SJIS文字列だと思っても大丈夫です)をUTF-8に変換します。
ansi=encoding.utf8_to_ansi(utf8)
UTF-8文字列をANSIに変換します。
tbl=encoding.utf8_to_utf16(utf8)
UTF-8文字列をUTF-16の値が入ったテーブルに変換します。これをフォント系の関数に渡します。
zenstr=encoding.zenkaku(hanstr)
半角文字列を全角文字列に変換します。
data=encoding.encryption(src)
データsrcを暗号化します。すぐに解ける程度の暗号化ですので、テキストエディタでは読めない、という程度のものだと思ってください。
src=encoding.decryption(data)
encryptionで暗号化したデータを元のデータに戻します。
num=encofing.b_to_float(data)
4バイト分のデータを、それが表すfloatの値に変換します。Windowsですのでリトルエンディアンです。
num=encoding.b_to_word(data)
2バイト分のデータを、それが表すWORD(unsigned short)の値に変換します。
num=encoding.b_to_dword(data)
4バイト分のデータを、それが表すDWORD(unsigned long)の値に変換します。
encoding.createarchive(filename,dir,printflag)
ns2アーカイブを作成します。ファイル名はfilenameです。アーカイブのルートディレクトリはdirです。printflag=trueで途中経過をコンソールに出力します。

transition

transition.fade(fromtex,totex,rate)
クロスフェードトランジションを描画します。fromtexからtotexに変化するトランジションの割合rateの画像を描画します。rateは0~1です。以下transitionのすべての関数でfromtex totex rateは同じ仕様です。
transition.universal(fromtex,totex,rate,rulebmp)
ユニバーサルトランジションを描画します。rulebmpはルール画像のbitmapオブジェクトです。
transition.rollup(fromtex,totex,rate)
スクロールアップのトランジションを描画します。
transition.rolldown(fromtex,totex,rate)
スクロールダウンのトランジションを描画します。
transition.rollleft(fromtex,totex,rate)
スクロールレフトのトランジションを描画します。
transition.rollright(fromtex,totex,rate)
スクロールライトのトランジションを描画します。
transition.slideup(fromtex,totex,rate)
スライドアップのトランジションを描画します。
transition.slidedown(fromtex,totex,rate)
スライドダウンのトランジションを描画します。
transition.slideleft(fromtex,totex,rate)
スライドレフトのトランジションを描画します。
transition.slideright(fromtex,totex,rate)
スライドライトのトランジションを描画します。

movie

movie.play(filename,clickskip,volume)
全画面に拡大してムービーを再生します。clickskip=trueでクリックでスキップできるようになります。volumeは音声ボリューム(0~-10000)です。
movie.reset()
ムービーテクスチャの再生をリセットします。全部一フレーム目から再生されます。
movie.render()
ムービーテクスチャを描画します。これを呼び出さないとムービーがテクスチャに反映されません。
writebegin,writeend,write,readbegin,readend,read,readframeinfo,create,delete,get
無圧縮動画を扱う関数・仕様整理中です。ドキュメントから省きます。
movie.pause()
ムービーテクスチャの再生を一時停止します(nmv動画には機能しません)
movie.resume()
ムービーテクスチャの再生を再開します(nmv動画には機能しません)

nmv

nmv.writebegin(filename,w,h,fps,framenum,quality)
NMVファイルの書き込みを開始します。一度に一つのNMVファイルにしか書き込めません。幅、高さ、一秒あたりのフレーム数(小数可)、フレーム数、JPEG品質(0-100、ただしwritejpegの際には無視されます)を指定します。
nmv.writeend()
NMVファイルの書き込みを終了し、ファイルに保存します。
nmv.write(framebmp)
NMVファイルにフレームを一枚書き込みます。引数はbitmapオブジェクトです。
nmv.writejpeg(filename)
NMVファイルにJPEGファイルを一枚フレームとして書き込みます。動作は高速です。JPEGをそのまま使いますのでwritebeginで指定した品質は無視されます。再圧縮はされないので、元のJPEGは劣化しません。
w,h,fps,framenum=nmv.getinfo(filename)
指定したNMVムービーファイルの情報を得ます。アーカイブから情報を得ることも出来ます。

shape

直接描画のための関数ライブラリなのですが、ほとんど使っていないためドキュメントから省きます。将来的に削除されるかもしれません。

calc

計算関連の処理の関数ライブラリなのですが、未使用機能なのでドキュメントから省きます。将来的に削除されるかもしれません。

font

fnt=font.create{width=16,height=16,name=""}
フォントオブジェクトを作成します。テーブルを渡します。それぞれデフォルト設定があります。
fnt:put(target,utf16code,x,y,col)
フォントを一文字、x,y座標に描画します。targetにはbitmapもしくはtextureオブジェクトを指定できます。文字コードはutf16で指定します。colは省略すると0xFFFFFFFF(白)になります。
fnt:putgradation(target,utf16code,x,y,col1,col2,fx,fy)
フォントをグラデーションで描画します。
w,h=fnt:getinfo(name)
フォント情報を返します。現在の仕様では、幅と高さを返しています。将来的に追加するかもしれません。
fnt:delete()
フォントオブジェクトを削除します。

sharedmemory

sm=sharedmemory.create(name,size)
名前name、サイズsizeの共有メモリを作成して共有メモリオブジェクトを返します。ここでいう共有メモリとは、CreateFileMappingのことです。
sm=sharedmemory.open(name)
既にどこかで作成されている共有メモリnameを開いて共有メモリオブジェクトを返します。失敗するとnilを返します。
data=sm:read()
共有メモリからデータを取得します。
result=sm:write(data)
共有メモリにデータを書き込みます。成功すればtrue、失敗すればfalseを返します。

sound

s=sound.create()
サウンドオブジェクトを作成します。
s:delete()
サウンドオブジェクトを削除します。
s:play{name=filename,loop=loopflag,loopoint=loopsec,volume=vol,speed=speedflag,pan=panval,fadein=mili}
サウンドオブジェクトを再生します。loopflag=trueでループします。looppointは省略できます、ループ時の再開位置を秒単位(小数可)で指定します。volumeはボリューム(0~-10000)、speedは再生速度(1か2)、panはパン設定(-10000~10000)、fadeintimeはフェードイン時間(単位ミリ秒)です。なお、NScripter2のOggファイルはツクール形式のループOggにも対応しています。そちらを使う場合はlooppointの指定は必要ありません。
s:stop()
サウンドの再生を終了します。オブジェクト自体はなくなりません。
s:volume(vol)
サウンドのボリュームを変更します。
s:pan(panval)
サウンドのパン設定を変更します。
s:fadeout(mili)
サウンドをフェードアウトし、終了します。
flag=s:isplaying()
サウンドが再生中ならtrue、そうでなければfalseを返します。
s:pause()
サウンドの再生を一時停止します。
s:resume()
サウンドの再生を再開します。

bitset

bs=bitset.load(filename)
ビットセットファイルをロードしてビットセットオブジェクトを返します。
bs=bitset.create(size)
空のビットセットオブジェクトを作成します。sizeはバイト単位です。
flag=bs:get(pos)
posビット目の値を取得します。true=1 false=0です。
bs:set(pos)
posビット目の値を1にします。
bs:reset(pos)
posビット目の値を0にします。
bs:save(filename)
ビットセットをファイルに保存します。
bs:delete()
ビットセットオブジェクトを削除します。

texture

tex=texture.create(w,h)
無色透明のテクスチャオブジェクトを作成します。幅と高さを指定します。
tex=texture.load(filename)
ファイルからテクスチャオブジェクトを作成します。ムービーテクスチャも指定できます。
tex=texture.frombitmap(bmp)
ビットマップオブジェクトからテクスチャオブジェクトを作成します。
tex=texture.frombitmaprect(bmp,x,y,w,h)
ビットマップオブジェクトの指定した範囲(左上座標x,y、幅w高さh)を切り取ってそこからテクスチャを作成します。
tex:delete()
テクスチャオブジェクトを削除します。
tex:draw(dx,dy,alpha)
テクスチャを座標dx,dy、α値alphaで描画します。alphaは省略できないので注意してください。
tex:drawlt(dcx,dcy,xs,ys,rot,alpha)
テクスチャを中心座標dcx,dcy、拡大率xs,ys、回転角rot(単位はラジアン)、α値alphaで描画します。
tbl=tex:calclt({x0,y0,x1,y1,x2,y2,...},dcx,dcy,xs,ys,rot)
テーブルで渡した座標を、中心座標dcx,dcy、拡大率xs,ys、回転角rot(単位はラジアン)で回転した結果をテーブルにして返します。
tex:drawrect(dx,dy,w,h,sx,sy,alpha)
テクスチャを座標dx,dy、幅w,h、転送元座標sx,sy、α値alphaで描画します。
tex:drawrectlt(dcx,dcy,slx,sly,w,h,xs,ys,rot,alpha)
テクスチャを、転送元座標slx,sly、転送元のサイズw,hから、中心座標dcx,dcy、拡大率xs,ys、回転角rot(単位はラジアン)、α値alphaで描画します。
tex:drawtriangle{ {dx0,dy0,sx0,sy0,col0},{dx1,dy1,sx1,sy1,col1},....}
ポリゴン描画用の関数です。
tex:drawbezierwarp(cx,cy,xs,ys,rot,tbl,a,N,editlineflag)
tbl={x0,y0,x1,y1,x2,y2,x3,y3,sx0,sy0,sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4,sx5,sy5,sx6,sy6,sx7,sy7}、テクスチャをベジエ変形して表示します。Nは分割数、editlineflagは編集線を書くかどうかです。座標はまず頂点座標を時計回りに左上、右上、右下、左下、次に上右下左の辺の制御点を時計回りに上辺左、上辺右、右辺上、右辺下、下辺右、下辺左、左辺下、左辺上、で指定します。制御点指定の値は左上頂点を0,0、右下頂点を1,1とします。
tex:fill(col)
テクスチャを指定色で塗りつぶします。
tex:fillrect(lx,ly,rx,ry,col)
テクスチャの指定領域を塗りつぶします。左上座標と右下座標を指定します。
w,h=tex:getsize()
テクスチャの幅と高さを取得します。
tex:save(filename,cutalpha)
テクスチャ内容をpngファイルとして保存します。cutalpha=trueでα値をカットします。
lr=tex:lock()又はlr=tex:lock(lx,ly,rx,ry)
テクスチャをロックしてD3DLOCKED_RECT構造体をライトユーザーデータとして返します。範囲を指定しなければテクスチャ全体になります。
tex:unlock()
テクスチャロックを解除します。
tex:copybitmaprect(bmp,dx,dy,w,h,sx,sy,ope)
ビットマップオブジェクトから、転送先座標dx,dyに、幅w,h、転送元座標sx,syから画像をコピーします。
tex:beginscene()
テクスチャへの描画を開始します。
tex:endscene()
テクスチャへの描画を終了します。
flag=tex:isplaying()
ムービーテクスチャが再生中ならtrue、再生中でなければfalseを返します。
tex:nega()
テクスチャ内容をネガポジ反転します。
tex:monotone(color)
指定色でテクスチャ内容をモノトーン化します。

bitmap

bm=bitmap.create(w,h)
無色透明のビットマップオブジェクトを作成します。幅と高さを指定します。
bm=bitmap.load(filename)
画像ファイルからビットマップオブジェクトを作成します。
bm=bitmap.fromtexture(tex)
テクスチャからビットマップオブジェクトを作成します。
bm:save(filename,cutalpha)
PNGファイルとして画像を保存します。cutalpha=trueでα値をカットします。
bm:savejpeg(filename)
JPEGファイルとして画像を保存します。
bm:beginscene()
ビットマップへの描画を開始します。
bm:endscene()
ビットマップへの描画を終了します。
bm:fill(col)
指定色でビットマップを塗りつぶします。
bm:fillrect(col,lx,ly,rx,ry)
指定色でビットマップの指定領域を塗りつぶします。
bm:delete()
ビットマップを削除する。
bm:reverse(fx,fy)
ビットマップを反転します。fx=trueでX方向、fy=trueでY方向を反転します。
bm:resize(w,h)
ビットマップを拡大縮小してサイズを変更します。幅と高さを指定します。
bm:trim(lx,ly,rx,ry)
ビットマップの指定領域を切り出します。
bm:joinx(bmp1,bmp2)
ビットマップ1の右にビットマップ2を連結します。
bm:joiny(bmp1,bmp2)
ビットマップ1の下にビットマップ2を連結します。
dibdata=bm:getdata()
構造体DIBDATAをライトユーザーデータで返します。

struct DIBDATA{
	unsigned char *bits
	int width;
	int height;
};
hdc=bm:getdc()
ビットマップオブジェクト(DIBセクション)を選択したHDCをライトユーザーデータで返します。
w,h=bm:getsize()
ビットマップのサイズを返します。
bmp2=bm:dup()
ビットマップを複製した新しいビットマップオブジェクトを返します。
bm:gradation(col1,col2,fx,fy)
ビットマップをグラデーションで塗りつぶします。
bm:gradationrect(lx,ly,rx,ry,col1,col2,fx,fy)
ビットマップの指定領域をグラデーションで塗りつぶします。
bm:nega()
ビットマップをネガポジ反転します。
bm:monotone(col)
ビットマップを指定色でモノトーン化します。
bm:expandalpha()
α値を展開して右にくっつけます。透過動画を作るのに使っています。

string

str0,str1,...=string.split(src,sep)
文字列srcを区切り文字sepで区切って返します。
tbl=string.splita(src.sep)
文字列srcを区切り文字sepで区切って返します。こちらはテーブルで返します。
retstr=string.replace(str,fstr,rstr)
文字列str中の文字列fstrをrstrに置換した文字列を返します。
retstr=string.regex_replace(str,fstr,rstr)
文字列str中の文字列fstrをrstrに置換した文字列を返します。fstrにはC++ boost::regex仕様の正規表現を使えます。

dll

ret=dll.call(dllname,funcname,param1,param2,param3,...)
DLLファイルdllnameから関数funcnameを検索し(一度見つけた関数はキャッシュされ、終了時に解放されます)、param1~paramNを渡して戻り値文字列retを得ます。戻り値retは1024文字までで、呼び出すDLL関数は次のような型でなければなりません。

void func(char *ret,struct PARAM param);
ただしparamは、次のような型の構造体。
struct PARAM {
	param1type param1;
	param2type param2;
	param3type param3;
.
.
.
.
};
パッキングはVC++のデフォルトに合わせておいてください。
paramtypeとして許可されるのは、double(Luaのnumber相当)、const char *(Luaのstring相当)、
int(Luaのbool相当、0か1)、void *(Luaのライトユーザーデータ相当),NULL(ライトユーザーデータの代わりにnilを渡した時)です。

callback

callback.licencetext=licencetext
ライセンス情報に追加したい文字列を指定します。HTMLで記述してください。
callback.finalize()=finalize_func
プログラム終了時に追加で呼び出したい関数を指定します。
callback.onclose()=onclose_func
閉じるボタンを押した時にデフォルトと違う処理をしたい場合はその関数を指定します。

basic_func

basic_func.COMNAME()
BASICの命令を実装しています。命令名を全部大文字に変換したものを使ってください。basic.registercomとセットで使います。system.luaに例がありますので参照してください。
basic_func.FUNCNAME()
BASICの関数を実装しています。関数名を全部大文字に変換したものを使ってください。basic.registerfuncとセットで使います。returnで戻り値を返すことが出来ます。system.luaに例がありますので参照してください。

目次に戻る