まず、ブラシスクリプトで踏まえることは、Luaという小型の言語で書くということです。 ブラシスクリプトの仕様は、FireAlpacaのページに記載されていますが、Luaの基本事項を先に理解している前提のようです。 ひとまず、Luaの基本事項をいくつか挙げてみます。
%
。^
。end
がつくことで、スクリプト処理の区切りになる。i++
、i--
という書き方が不可能のため、i=i+1
、i=i-1
とする。コメントは、以下のように書きます。コメントは、スクリプト処理で無視されます。
--あとは、好きなようにしてください。一行コメントですが。
comment=1
--[[あとは、好きなようにしてください。
複数行コメントだから、少しは余裕があります。]]
comment="maltiple"
一行ならば、頭に半角ハイフン2つを付けます。複数行ならば、頭に--[[
、後ろに]]
を付けます。
文字列は、アルファベット以外にも日本語でもOKなはずです。以下のように、シングルか、ダブルのクオーテーションで囲みます。
しかし、このままではシングルとダブルのクオーテーションは、文字列内で使えないので、バックスラッシュを前につけます。 バックスラッシュ自体も使えないので、同じようにします。
また、文字列同士を連結したい場合は、プラス記号を使いたくなるところですが、ピリオドを2つで繋げます。
ブラシスクリプトでは、主にパラメータの名前に使われるだけなので、最低限のことで十分だと思われます。
基本形は、function 関数名(変数,...)~end
という関数を定義する形のようです。 必然的に、mainという関数名は使います。こんなコードでも、エラー自体は出ないはず。
ただし、何も起きません。中身がない状態だからです。 とはいえ、関数自体はカーソルの座標が動くたびに実行されています。 とりあえず、 以下のように、return 1
を追加すると、関数の結果を返せるようになります。
しかし、このコードでも目に見える変化はありません。 それでも、変数に入っている値を利用して計算、結果を返す、これらの処理をするための下地はできます。
また、関数や変数は、幾らでも定義するので、名前をつけて管理しますが、ルールがあります。 まずは、命名に使用できる文字は半角英数字とアンダーバーであること。 次に、最初の文字を数字にしないこと。 最後に、以下のリストのキーワード以外を使用しないことです。
そういえば、(x, y, p)
は何なのかというと、変数の一種です。 初めから、何かしら値が入っています。xとyは、横と縦のカーソル座標で、pは筆圧です。
さて、以下のブラシスクリプトのコードを例に、これから各項目を述べていきます。
function param1()
return "interval", 0, 100, 0
end
function param2()
return "p_alpha", 0, 1, 0
end
firstDraw=true
lastX=0
lastY=0
function main(x, y, p)
local w=bs_width()
local distance=bs_distance(lastX-x, lastY-y)
local interval=0
if w < 10 then
interval=w+w*bs_param1()/100
elseif w < 20 then
interval=w/1.5+w*bs_param1()/100
else
interval=w/2+w*bs_param1()/100
end
if not firstDraw then
if distance < interval then
return 0
end
end
local r, g, b=bs_fore()
local a=bs_opaque()*255
if bs_param2() == 1 then
a=a*p
end
local array={
{w, 0},
{w/1.5, 0.5},
{w/3, 1}
}
for i=1, #array do
local w=array[i][1]
local c=array[i][2]
bs_ellipse(x, y, w, w, 0, r*c, g*c, b*c, a)
end
firstDraw=false
lastX=x
lastY=y
return 1
end
上のコード自体は、以下の画像のような線を描画するものです。 基本的な処理としては、描画するのに必要なパラメータを先に設定してから、描画しています。 当たり前なことですが、確実にこなすことで、エラーが減るように思えます。 そして、カーソルを動かす限り、これらの処理は繰り返されます。
Luaのバージョンは、5.1です。_VERSION
(データは文字列型)で、確認できます。 手軽な確認方法は、一時的にパラメータの名前に_VERSION
を宛がうことです。
スクリプトファイルは、拡張子が.bs
で、文字コードがUTF-8(BOMなし)です。 Notepad.exeは使わないで、BOMなしで保存できるエディタを使うことが基本です。 既にLuaの設定があるNotepad++、VSCode、Atom辺りを使うと楽です。 キーワードを追加したい場合は、Notepad++を選ぶと簡単でしょう。
しかし、現在は上記のエディタ類を使わなくても、 FireAlpacaとMedibangPaintProに追加されたエディタでほぼ事足ります。 試作するにおいては、すぐに動作のチェックが可能な為、こちらのほうが良いかと思います。
ただし、このエディタには、文字の検索や置き換えなどの機能がありません。 じっくり編集する際は、他のエディタを使いましょう。
このチュートリアルもどきでは、Luaの詳細まで触れずに、必要な部分を切り出して記載しています。