Py専用機能を解説していこう!みたいなことができたらいいなっていうページです。
記念すべき第1回はコモン。
編集時点(2020/03/16)ではまだまだ使っているシナリオが少ないですが便利ですよーっていう紹介をば。
コモンはフラグ、ステップと同じ状態変数のことです。
ただし後者2つと違い、できることがとっても多い変数です。
ダイスを振ったりExcelのものと同じ関数を使えます。やったね!
コモンの新規作成では、コモンの初期値を入力します。
・数値
数字を入れられるコモンにします。文字列は入れられません。
・文字列値
アルファベットひらがなカタカナ漢字数字なんでも入れられますが、数値の計算には使えません。
・真偽値
フラグと同じようにTRUE/FALSEを入れます。
今回は「クーポンの文字列を抜き出す」方法を紹介していきます。
まず、コモンの新規作成で「文字列値」を選択します。名前はわかりやすければOK。
文字列抜き出しは、
・対象のメンバーを指定する
・文字列を抜き出したいクーポンの始め数文字を指定
・指定した文字列が頭についているクーポンを検索する
・クーポンの文字列を抜き出す
という流れになります。
試しに一人称を抜き出してみましょう。
まず、対象のメンバーを指定します。適当に「_1」で。
次に、目的のクーポンの最初数文字を指定します。
「_俺」「_私」のように、アンダーバーの次に直接一人称を入れたクーポンは抜き出しても一人称かどうか判別しづらいので使いません。
(判別自体はできますがこの方法の利点である「どんな一人称でも使用できる」が消えちゃうのではないでしょうか……)
なので一人称の抜き出しは「_一人称:〇〇」を使います。
コンテントパレット右下の演算にあるコモン設定を選択し、「式」に下画像のように"_一人称:"と入力します。設定対象のコモンが一人称を抜き出す用に作ったものにするのを忘れないようにしましょう。
次に、指定した文字列が頭についているクーポンを検索するために「コモン分岐」を使います。
ここから関数が出てきますが意味がしっかりわかれば問題ないです。
また、コモン分岐で使用する記号や文字は状態変数の名前を除き全て半角です。
クーポンを検索したいので、「FINDCOUPON」と入力します。
そして、どんなクーポンを見つけるかを指定するためにFINDCOUPONの後に半角括弧をつけます。
FINDCOUPON()
括弧の中身を書いていきましょう。
まずはキャラクターの指定。
今回は現在選択しているメンバ―のクーポンから検索するので「SELECTED()」と入力します。
(1~6のどれかを入力すると対応する「_1」~「_6」のメンバーを指定することができます。)
FINDCOUPON(SELECTED())
式を区切るためカンマを挟み、検索するクーポンの頭部分を入力します。
これは先程「一人称」のコモンに入れているので、そのコモンを参照します。
コモンを参照するには、@"フォルダ名¥コモン名"と入力します。
今回、一人称のコモンは設定フォルダに入れているので以下のようになります。
FINDCOUPON(SELECTED(),@"設定¥一人称")
このままでは「_一人称:」のクーポンにしか反応しないので、「俺」「私」などが入ったクーポンにも反応するように少し付け足します。
これは「_一人称:(任意文字列)」なので、「_一人称:」から「任意文字列」までのクーポンと言えます。
チルダ(~)と任意文字列という意味のアスタリスク(*)を入れましょう。
FINDCOUPON(SELECTED(),@"設定¥一人称"~"*")
この式(FINDCOUPON~)は「選択メンバのxmlファイルに該当するクーポンがあった場合、上から数えて何番目にあるか」という数字を返してきます。
クーポンがない場合は0が返ってきます。
この際、何番目にあるかは重要ではなく該当するクーポンの有無を判別したいだけなので、式の結果が0かそれ以上かで分岐させます。
FINDCOUPON(SELECTED(),@"設定¥一人称"~"*")>0
これまでのことをコンテントツリーで見るとこうなります。
最後に、クーポンの文字を抜き出します。
コモン設定で文字列抜き出しのための式を入れていきましょう。
文字列は「_一人称:」を入れたコモンに上書きして問題ありません。
まず、クーポンの名前を抜き出すための式を作ります。
COUPONTEXT()
ここに先程と同じように選択メンバを入れます。
COUPONTEXT(SELECTED())
選択メンバの後は抜き出したいクーポンの位置を入れますが、何番目と指定できないので上で使った式をまるごと入れてしまいます。
COUPONTEXT(SELECTED(),FINDCOUPON(SELECTED(),@"設定¥一人称"~"*"))
ここまででクーポンの文字列を丸ごと抜き出すことができました。
今回の場合、一人称クーポンを丸ごと抜き出すのではなく「俺」「私」に相当する一部分だけを抜き出したいので次はその一部を抜き出すために文字列の中間部分を返す「MID」を使います。
抜き出したいところはクーポンの右側にあるんだから「RIGHT」でもいいんじゃない?と思ったそこのあなた。
「RIGHT」は文字数(後述)を文字列の右側からカウントするので、何文字入るかわからないこの状況では使えません。(これ書いてる人も勘違いしてた)
MID(COUPONTEXT(SELECTED(),FINDCOUPON(SELECTED(),@"設定¥一人称"~"*")))
「MID」では抜き出す初めの文字数を指定しなければなりません。
なので、クーポンの位置を指定した後ろに文字数を入れます。
「_一人称:」を使う時は左から数えて6文字目から抜き出すので6を使ってしまいましょう。
MID(COUPONTEXT(SELECTED(),FINDCOUPON(SELECTED(),@"設定¥一人称"~"*")),6)
これで一人称を抜き出すことができました!
フラグ、ステップと同じようにメッセージコンテントにコモンを挿入し、プレイ画面で見てみましょう。
ツリーではこんな感じになります。
この方法だと「_一人称:○○」に好きな文字を入れて遊べます。
1人のPCに2つ以上「_一人称:○○」のクーポンがあると、プレイ画面の経歴欄で一番下にあるものが適用されます。
これを使えば親の名前や髪の色の文字列を抜き出すことで、PTにいないPCの名前を出せますし分岐の手間が省けますね!
ちなみに、今回はMIDの抜き出し始め文字列を直接6と入力しましたが「LEN」を使っても挙動は同じです。LENはその文字列の文字数を返す関数で、6の代わりに「LEN(@"設定¥一人称")+1」と入力すればOK。コモンに入っている文字数+1して6文字になります。
数字の直接入力ではなくLENを使えば使い回しができていいかもしれませんね。
ちょっと応用のような何か
クーポンでポイント機能をつけてみましょう。
コモンで文字列の抜き出しを行うと、クーポンでちょっと変わった数字の扱いもできます。
最初は一人称の抜き出しでやったように、数字を抜き出します。
まずは、数字を入れるための「数値」コモンとクーポンを見つけるための「文字列」コモンを新規作成します。
数字を入れるコモンで計算を行うので、これは新規作成時に数値を選びましょう。
そして、適当なPCに適当な名前のクーポンを付けます。
今回つけるクーポンの名前は「テストポイント:X」です。Xの部分に半角数字が入ります。
つけました。
次に、一人称を抜き出したときのようにポイントの数字部分を抜き出します。
一人称の抜き出しで使った式にある、コモンの名前や長さを変えるだけです。
こんな感じですね。
今、「ポイント」のコモンには「1」が入っています。
このポイントを増やしてクーポンを付けなおします。
ではポイント計算の前に、この「テストポイント:1」のクーポンを剥奪します。
この時点で、文字格納のコモンには「テストポイント:」が、ポイントのコモンには「1」が入っているので、文字格納のコモンにくっつけて入れてしまいましょう。
(ここで新しい文字列コモンを作って格納しても大丈夫です。)
コモン設定コンテントを選択し、式を入れます。
@"ポイント¥文字格納"~@"ポイント¥ポイント"
このようになりますね。
次に、クーポン剥奪のコンテントにこのコモン名を入れます。
ここで気を付けたいのは「クーポン名」としてコモンを入れる際は「メッセージコンテントでコモンを挿入するときと同じ名前にすること」。
コモン設定をするときのように@"コモン名"にしてしまうと思うように動きません。
@コモン名@にしておいてください。
右下の特殊文字を展開するのチェックボックスにチェックを入れるのも忘れず行いましょう。
これで、数字付きのクーポン剥奪ができます。
同じ手順を踏めば、どんな変数、文字列がついているクーポンでも剥奪できますね!
ではポイントを加算してクーポンを付けなおしましょう。
この下にコモン設定コンテントを増やし、「ポイント」の値に+10します。
関数のVALUEを付けて数字に変換してから+10してあげます。
数値のコモンに格納はしていますがVALUE外すとエラーが出ます。
@"ポイント~"は、式入力欄の下にあるコモンのマークをクリックして「コモン参照の挿入」を選択すればサクッと入れることができます。
これで「ポイント」コモンの中身は「11」になります。
次に先程と同じように、文字格納コモンに「テストポイント:」と「11」をくっつけて格納します。
クーポンを剥奪した際に新しいコモンを作っていなかった場合は、コモンを参照してしまうとおかしなことになるので直接文字を打ち込みます。
コモンの式に文字列を入れるときはダブルクォーテーション("")を忘れずに。
これをクーポン取得コンテントに入れてあげれば、新しい数字が入ったクーポンが付与できます。
数字が増えていますね。
同じ要領で、数字を二倍にしたり引き算をしたりができます。
今回はここまで!よきシナ作ライフを!