このブログに来られる方は、RGSS3・VXAceユーザーが大半のはずで
今や既存の素材を組み合わせて(或いは改造して)使うことが主になるかと思います。
なのでブログの更新を兼ねて、詳しくない人がスクリプトを弄れるような
あくまで簡単かつ不定期の記事を書いてみることにしました。
需要があるかは分かりませんが、宜しくお願いします。
1. スクリプトの構造まずRGSS3のスクリプトは、1行で1つのことを行います。
これを機能毎にまとめて、一連の処理として使いやすくしたのが「メソッド」です。
def aaa と end で挟まれているものが、aaaメソッドという指定になります。
複数のメソッドを入れる箱が、「クラス」または「モジュール」です。
class xxx と endで挟まれているものが、xxxクラス
module yyy と endで挟まれているものが、yyyモジュールになります。
外側から見ると、クラスの中にメソッドがあり、その中に具体的な処理が入っているわけです。
実際には以下のように、インデントを入れる人が多いので、言葉よりは分かりやすいはずです。
class xxx
def aaa
◯◯◯◯◯
◯◯◯◯◯
end
def bbb
◯◯◯◯◯
◯◯◯◯◯
end
end
入れ子構造になるため、どのendと対応しているかに要注意です。
改造の過程で「endの数が合わないよエラー」が出た場合は
落ち着いてインデントや1行スペースを入れて整理していくと良いです。
なおxxxクラスのaaaメソッドと、zzzクラスのaaaメソッドは別物です。
改造する際には取り違えないよう、どのクラスのメソッドなのか確認しましょう。
2. メソッドの上書き(パッチ)スクリプトは上から順に読み込まれていきます。
もし「xxxクラスのaaaメソッド」が複数あると、後から読み込まれた方で上書きされます。
そこで、下の方に新しいスクリプトを作り
あるメソッドを(クラス指定と一緒に)コピーしてから改造すると
元のスクリプトに手を加えることなく改造することができます。
↓これでxxxクラスのaaaメソッドだけを上書きできる。
class xxx
def aaa
◯◯◯◯◯
△△△△△
end
end
元の素材を更新したり、自分が手を入れた場所が分かりやすかったりと
可能な限りパッチ形式で改造したほうが良いです。
言うまでもなくスクリプト素材自体が、この仕様を使って
ベーススクリプトを改造したパッチになっています。
そしてこの仕様で予期せぬ上書きが起きてしまうのが
いわゆるスクリプト素材同士の競合ということになります。
(過去の
マージについての記事も参照)
3. aliasに注意alias という命令は、上書き前のメソッドを利用できる機能があり
非常に便利なためスクリプト素材の方で多用されていますが
これをコピーしてしまうと無限ループに入るという欠点を抱えています。
基本的にはメソッドの上に書いてあることが多いですが
パッチを作る際にまとめてコピーしないように注意しましょう。
まとめこれで安全にスクリプトを改造する準備が整いました。心置きなくトライアンドエラーして下さい。
次回はメソッドの中身について、具体的に見ていきます。
気付いたかもしれませんが、スクリプト素材の改造と、スクリプトの作成はほぼ同じです。
ただ新規作成や、大型素材の改造は、改造箇所の特定が難しいため、まずは小規模素材の改造から入るのがオススメです。
ところで簡単とは
[5回]
PR