tyranoフォルダ下のファイルには手を付けずにティラノスクリプト本体をいじりたい
ペニーワイズはやってるよ やりまくりだよ
というわけでタイトル通り、ティラノスクリプトはカスタマイズしたいけど本体ファイルはいじりたくないワガママボーイズ&ガールズのための記事です。このテンションなんだろうな やめるわ なんでそんなことをするのか
ここでいうカスタマイズとは、タグ操作だけでは変更できないティラノスクリプト本体の動きの変更を指します。
例えるとタグの中身を書き換えるとかそういうのです。
ティラノスクリプトの本体は、だいたいtyranoフォルダ内のファイルによって記述されていますが、ティラノスクリプトをカスタマイズするときにtyranoフォルダ内のファイルを直接書き換えてしまうと、ゲーム製作中にどうしてもティラノスクリプトのバージョンを変えたい!というときにまたバージョン変更後のtyranoフォルダ内の該当ファイルの該当箇所を探して変更して…という手間が発生します。
製作中にバージョンを変更しない場合でも、ある程度ティラノスクリプトでのゲーム製作に慣れると自分仕様にカスタマイズしたティラノスクリプトを使いたくなりませんか? なりますよね なるんだよ
そんなわけで、カスタマイズした箇所をわかりやすく別のファイルに分けておきたい。
1.オブジェクトの書き換え
ティラノスクリプトはだいたいjavascriptのオブジェクトで構成されています。
tyrano.plugin.kagとかですね。
なのでこのオブジェクトを書き換えてやれば、ティラノスクリプトの動きも変更することができます。
たとえばこんな感じ
code:custum.js
tyrano.plugin.kag.key_mouse.showmenu = function() {
//処理を書き換え
console.log("書き換えました")
}
tyrano.plugin.kag.key_mouse.showmenuというのは、メニュー画面(ティラノスクリプトのデフォルトだと画面右下の歯車ボタンクリックで表示される画面)を表示させる関数が格納されているオブジェクトです。
実際にはこれを書き換えちゃうとあっちこっちに影響が出てしまうんですが、まあ例なので よい子は真似しちゃだめだぞ
単純な関数であればこんなかんじで直接書き換えてやればおkです。たぶん
2.タグの書き換え
ティラノスクリプトのタグも、他の処理と同じくオブジェクトに格納された関数として構成されています。
じゃあタグを書き換えるときも同じようにタグのオブジェクトを上書きしてやればいいのかというと、ひと手間必要となります。
具体的にはこんな感じの書き方になります。
code:custum.js
//waitタグをクリックでウェイトキャンセル有効に var _wait = tyrano.plugin.kag.tag.wait
var _kag = tyrano.plugin.kag.ftag.master_tag.wait.kag
tyrano.plugin.kag.tag.wait = $.extend(true, {} , _wait, {
pm: {
click: "true"
},
start: function (pm) {
var that = TYRANO;
…
// 処理の内容
…
}, pm.time)
}.bind(TYRANO)
})
tyrano.plugin.kag.ftag.master_tag.wait = tyrano.plugin.kag.tag.wait
tyrano.plugin.kag.ftag.master_tag.wait.kag = _kag
tyrano.plugin.kag.tag.wait ~は実際のタグのオブジェクトですね。まずはこいつを書き換えます。
で、$.extend(true, ~という部分と、最後の2行がポイントです。
extendっていうのは、大雑把に言うと複数のオブジェクトを結合する処理です。これはものすごい大雑把な言い方なので詳しく知りたい人は「jquery extend」とかでGoogle先生に聞いてください。
で、最後の2行のうち、tyrano.plugin.kag.ftag.master_tag ~っていうのは、ティラノスクリプトのゲーム実行中に、.ksファイル内のタグの記述を解釈するとき最初に参照するタグの一覧みたいなものです。自分で言っていてよくわからないぞ
この方法の問題点
上のコード例を見て察しのいい方は気づいたと思うのですが、この方法、タグの中身をまるっと書き換えているので、たとえば「このタグの○行目に1行だけ処理を追加したい」みたいなことができません。
waitタグくらいならコード量も少ないのでまあ全部書き換えでもいいんですが、buttonタグあたりになると結構な分量になるのでちょっとこのやり方で処理を追加ないし変更するのは現実的ではないです。
じゃあどうするのか。どうしたらいいんだろう。
なんかいいやり方をご存知の方がいたら教えてほしいですまじで
とりあえずこんなやり方もあるよという紹介でした。
ティラノスクリプトカスタマイズのプロに師事を仰ぎてぇ~