
里々のちょっとしたロジックを提供するコーナー。
全て、里々wikiとukadocの情報の組み合わせで作ります。
里々のサンプルゴースト「Rポストと狛犬」を書き換えて自ゴーストを作るくらいの知識が必要です。
処理の理解にはミニゲームを作れるくらいの知識が必要です。
今回は、「コマンド入力の処理」を作ります。
Rポストと狛犬では、キー入力1個のコマンドなら簡単に作れます。(「tが押された」など)
しかし、複数のキー入力で出来たコマンドを作るのは大変です。(「abcが押された」など)
そこで、これを簡単に作れるようになるスクリプトを紹介します。
全て、里々wikiとukadocの情報の組み合わせで作ります。
里々のサンプルゴースト「Rポストと狛犬」を書き換えて自ゴーストを作るくらいの知識が必要です。
処理の理解にはミニゲームを作れるくらいの知識が必要です。
今回は、「コマンド入力の処理」を作ります。
Rポストと狛犬では、キー入力1個のコマンドなら簡単に作れます。(「tが押された」など)
しかし、複数のキー入力で出来たコマンドを作るのは大変です。(「abcが押された」など)
そこで、これを簡単に作れるようになるスクリプトを紹介します。
「Rポストと狛犬」の辞書を基準としています。
dic02_Event.txtの該当箇所を書き換えてください。
里々を使ったゴーストなら、下記を辞書に書き込めば動きますが、SAORI設定などを行う必要があるかもしれません。
dic02_Event.txtの該当箇所を書き換えてください。
里々を使ったゴーストなら、下記を辞書に書き込めば動きますが、SAORI設定などを行う必要があるかもしれません。
#----
#ここから
#----*OnKeyPress#削除>(R0)が押された#削除
@OnKeyPress
(when,!(変数「一時・キー入力2」の存在),
(set,一時・キー入力2,0)
(set,単語群「入力コマンド」の重複回避,降順、トーク中)
)φ
(set,一時・キー入力2,(一時・キー入力2) + (length(sprintf,%c,1)(R0)) + 1)φ
(set(sprintf,%c,1)一時・キー入力1(sprintf,%c,1)
(substr(sprintf,%c,1)(一時・キー入力1)|(R0)(sprintf,%c,1)-(一時・キー入力2)(sprintf,%c,1)(一時・キー入力2))
)φ
(set,一時・キー入力3,1)φ
(for,1,(単語群「入力コマンド」の数),1,
(set(sprintf,%c,1)一時・キー入力4(sprintf,%c,1)(入力コマンド))
(when,
(compare(sprintf,%c,1)
(substr(sprintf,%c,1)(一時・キー入力4)(sprintf,%c,1)0(sprintf,%c,1)(length(sprintf,%c,1)(一時・キー入力1)))(sprintf,%c,1)
(一時・キー入力1)
),
(set,一時・キー入力3,0)
(when,(compare(sprintf,%c,1)(一時・キー入力1)(sprintf,%c,1)(一時・キー入力4)),
((erase(sprintf,%c,1)(一時・キー入力4)(sprintf,%c,1)|)が押された)
(set,一時・キー入力1,)(set,一時・キー入力2,)(set,一時・キー入力3,)(set,一時・キー入力4,)
)
)
)φ
(when,(一時・キー入力3),
(when,(文「(R0)が押された」の存在) || (単語群「(R0)が押された」の存在),((R0)が押された))
(set,一時・キー入力1,)(set,一時・キー入力2,)(set,一時・キー入力3,)(set,一時・キー入力4,)
)
#今までの記述と干渉しません。
#キー1個で出来た以下の記述も、ちゃんと呼び出されます。
#ただし、この例(rが押された)では、下記にある入力コマンドrandomとかぶるため、
#最初のrを押した時点ではコマンド成立中とみなし、呼び出されません
#rrと入力するなどしてコマンドが不成立になり、かつrが押された時に呼び出されます
*rが押された
$辞書リロード 実行
:リロードしました。
#ここに半角でコマンドを書きます。キー入力ごとに|で区切ってください。
#理由は、「↑」が「up」と通知されるため、「u」+「p」の入力と区別できないためです。
#Fキーは「f1」~「f12」、Shiftキーは「shift」です。Ctrlキーは今回の処理では取得できません。
#重くなるので、いっぱい書き過ぎないでください。
#20個とか超えると多分重くなってきます。
@入力コマンド
|up|up|down|down|left|right|left|right|b|a
|r|a|n|d|o|m
|k|a|k|u|s|i|m|e|n|u
#上の「入力コマンド」が成立したとき、「(|抜きコマンド名)が押された」が呼び出されます。
*upupdowndownleftrightleftrightbaが押された
:そ、それは!
:自爆コマンド!
*randomが押された
\_sランダムチェンジ!\_s\w9\+
*kakusimenuが押された
>何もしない (好感度)<100
よくぞ隠しメニューを見つけたな。
さあ選ぶといい。
_好感度アップ
*好感度アップ
もう十分に高いと思うぞ
:なんの話?
*何もしない
そんなものはない。
#----
#ここまで
#----


