AviUtl Wiki - スクリプトの作り方
AviUtlスクリプト Wikiに記載されていた情報+αをまとめました。
このページ(内容はAviUtlに同封されているlua.txtと同一) にさらに詳しい内容が書かれていますが、基本はこれを読めば大丈夫だと思います。

目次


スクリプトファイルの作成

スクリプトファイルの拡張子

スクリプトを記述したテキストファイルの拡張子を以下のいずれかに変更し、
下記スクリプトフォルダに配置することによってスクリプトを使用できます。
文字コードはシフトJIS、改行コードはCR+LFにしないとうまく読み込まれません。
.objカスタムオブジェクト
.anmアニメーション効果
.scnシーンチェンジ
.camカメラ効果
.traトラックバー効果

exedit.aufが存在するフォルダ内の「script」フォルダ、またはそのフォルダ内にあるサブフォルダ(名前は自由)がスクリプトフォルダとして認識されます。
サブフォルダにスクリプトを配置した場合、そのサブフォルダにあるスクリプトだけをまとめて表示できます。

1つのファイルにまとめて複数のスクリプトを登録する

ファイル名の先頭に「@(アットマーク)」をつけて保存した場合、複数のスクリプトをまとめて登録できるようになります。
そのファイル内の@から次の@またはファイルの終端までが1つのスクリプトとして扱われます。
@の後にはスクリプト名を記述します。

記述例(カスタムオブジェクト)
@SCR1
setfont("Meiryo UI",34)
obj.load("text","SCR1 Test")
@SCR2
setfont("Segoe UI",34)
obj.load("text","SCR2 Test")

このスクリプトを「@atmarktest.obj」として保存すると、「SCR1@atmarktest」と「SCR2@atmarktest」がカスタムオブジェクトに追加されます。

スクリプト用インターフェース

トラックバーや各種ダイアログを用いることで、スクリプトに汎用性や発展性を持たせることができます。
使用できるインターフェースは以下のとおりです。

トラックバー

--track0:名前,最小値,最大値,初期値,移動単位
トラックバーを使用可能にします。track0からtrack3までの4つ(シーンチェンジではtrack1までの2つ)が利用できます。
移動単位には「1」、「0.1」、「0.01」のいずれかを指定可能です。省略が可能で、その場合は0.1になります。
スクリプト内でトラックバーの値を参照するには「obj.track0」〜「obj.track3」を使用します。

記述例(アニメーション効果、AviUtlスクリプト Wikiより引用)
--track0:X速度,-100,100,0
--track1:Y速度,-100,100,0,1
--track2:Z速度,-100,100,0,0.1
--track3:拡大速度,-100,100,0,0.01
obj.ox = obj.ox + obj.track0 * obj.time
obj.oy = obj.oy + obj.track1 * obj.time
obj.oz = obj.oz + obj.track2 * obj.time
obj.zoom = obj.zoom + obj.track3 * obj.time / 100

チェックボックス

--check0:名前,初期値
チェックボックスを追加します。初期値は「0」または「1」を指定可能です。
スクリプト内でチェックボックスの値を参照するには「obj.check0」を使用します。
初期値は「0」または「1」ですが、参照した値は「false」(0に相当)または「true」(1に相当)となっているので注意。

記述例(アニメーション効果、AviUtlスクリプト Wikiより引用)
--track0:拡大率,0,800,100,0.01
--track1:X,0,800,100,0.01
--track2:Y,0,800,100,0.01
--check0:0:拡大率/1:リサイズ,0
obj.effect(obj.check0 and "リサイズ" or "拡大率",
"拡大率", obj.track0, "X", obj.track1, "Y", obj.track2)

色選択ダイアログ

--color:初期値
色選択ダイアログを追加します。ファイル選択、パラメータ設定、値入力ダイアログと併用することはできません。
初期値は「0xffffff」のように、先頭を#ではなく0xにしたHEXコードで設定します。
AviUtlスクリプト Wikiによると10進数での設定も可能…らしいのですが、どうやって設定するかはわかりません。
スクリプト内で色を参照するには「color」を使用します。

記述例(カスタムオブジェクト)
--track0:サイズ,0,1000,34,1
--color:0x010111
obj.load("figure","四角形",color,obj.track0)

ファイル選択ダイアログ

--file:
ファイル選択ダイアログを追加します。色選択、パラメータ設定、値入力ダイアログと併用することはできません。
スクリプト内でファイルパスを参照するには「file」を使用します。

記述例(カスタムオブジェクト、lua.txtより引用)
--file:
obj.load(file)

パラメータ設定ダイアログ

--param:初期値
パラメータ設定ダイアログを追加します。色選択、ファイル選択、値入力ダイアログと併用することはできません。
入力した内容がそのままファイルの先頭に追加されるような形になります。初期値には「a=1;b=2;」のように入力します。
拡張子を「.tra」にした場合、「設定」欄の初期値として動作します。

記述例(アニメーション効果、lua.txtより引用)
--param:dx=10;dy=20;
obj.ox = obj.ox + dx*obj.time
obj.oy = obj.oy + dy*obj.time
記述例2(トラックバー効果)
>--param:0
return obj.time*obj.getpoint("param")

値入力ダイアログ

--dialog:表示名,変数名=初期値;表示名,変数名=初期値;…
値入力ダイアログを追加します。色選択、ファイル選択、パラメータ設定ダイアログと併用することはできません。
実質的に色選択、パラメータ設定ダイアログ、チェックボックスの上位互換です。
項目は16つまで追加できます。スクリプト内でそれぞれの値を参照するには設定した変数名を使用します。
項目をチェックボックスにする
表示名の最後に「/chk」を追加すると、項目がチェックボックスになります。
基本的にはチェックボックスと同じような挙動ですが、こちらは参照した値も「0」または「1」になります。
最大4つの項目をチェックボックスにできます。
色選択ボタンを追加する
表示名の最後に「/col」を追加すると、項目に色選択ボタンが追加されます。
基本的に色選択ダイアログと同じような挙動です。
最大4つの項目に色選択ボタンを追加できます。
図形選択ボタンを追加する
表示名の最後に「/fig」を追加すると、項目に図形選択ボタンが追加されます。
リストが表示され、そこから選択した図形名が文字列として代入されます。
初期値は「"円"」のように設定します。
最大4つの項目に図形選択ボタンを追加できます。

記述例(カスタムオブジェクト、lua.txtより引用)
>--dialog:Xオフセット,x=100;Yオフセット,y=100;
obj.ox = obj.ox + x
obj.oy = obj.oy + y
--dialog:サイズ,size=100;色/col,col=0xffffff;図形/fig,fig="四角形"
obj.load("figure",fig,col,size)

シーンチェンジについて

シーンチェンジは少々他の形式とは記述方法が異なります。
lua.txtに記述されている内容を参考にまとめてみます。

基本

まずシーンチェンジで重要なのはこいつ。
obj.getvalue("scenechange")
こいつは戻り値として0から1までの値を返します。この値がどこまでシーンチェンジするかの割合となっています。
で、どうやって描画するかということなんですが、
obj.draw(0,0,0,1,1,0,0,0)
を入力するとシーンチェンジした後の画面が描画されます。
(ちなみにパラメーターは順に相対X,相対Y,相対Z,拡大率,不透明度(0〜1),X軸回転,Y軸回転,Z軸回転となっています)

記述例
a = 1-obj.getvalue("scenechange")
obj.draw(0,0,0,1,a)
仕様上何も描画していない状態ではシーンチェンジ前の画面が描画されている状態となるみたいです。
これで…わかりますかね…?

トラックバー効果について

トラックバー効果も少々他の形式とは記述方法が異なります。
一応lua.txtを参考にまとめてみます。

基本

とりあえず
>return 値
でフレームごとのトラックバーの動く量を返します。なんか関数っぽい感じです。
値の単位はおそらく中間点(開始点)から次の中間点(終了点)までの移動割合です。

疲れたので一旦ここまでで終わります。誰か続き書いてください