【解決済み】文字色と文字列を変数に代入するスクリプト

アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

【解決済み】文字色と文字列を変数に代入するスクリプト

投稿記事by ドラムカン » 2021年3月01日(月) 12:58

いつもお世話になります。

以下ページに、「文字色と文字列を変数に入れる制御文字」のご質問があり、
viewtopic.php?t=2751

変数の操作:
#0001 = '\x1bC[18] 赤文字 \x1bC[0]'

上記の記述で、赤色の文字列を変数に入れられることを確認しました。

これを、スクリプト上で再現したいのですが、
制御文字が扱えないのか、反映されませんでした。

スクリプトコマンド:

コード: 全て選択

$gameVariables.setValue(1, '\x1bC[3] 緑文字 \x1bC[0]');


そこで、
以下のようにしました。

変数の操作:
#0002 = '\x1bC[3] 緑文字 \x1bC[0]'

スクリプトコマンド:

コード: 全て選択

$gameVariables.setValue(1, $gameVariables.value(2));


しかし、ワンクッションあるせいで、
文字色は反映されませんでした。

なぜ、スクリプトで代入しなければならないかと申しますと
Switch文で条件式を使用せざるを得ない場面がありまして
それが以下の処理になります。

コード: 全て選択

switch ($gameVariables.value(1)) {
case 1: $gameVariables.setValue(1, $gameVariables.value(2)); break;
case 2: $gameVariables.setValue(1, $gameVariables.value(3)); break;
case 3: $gameVariables.setValue(1, $gameVariables.value(4)); break;
case 4: $gameVariables.setValue(1, $gameVariables.value(5)); break;
case 5: $gameVariables.setValue(1, $gameVariables.value(6)); break;
case 6: $gameVariables.setValue(1, $gameVariables.value(7)); break;
case 7: $gameVariables.setValue(1, $gameVariables.value(8)); break;
case 8: $gameVariables.setValue(1, $gameVariables.value(9)); break;
case 9: $gameVariables.setValue(1, $gameVariables.value(10)); break;
default: $gameVariables.setValue(1, ' '); break;
}


$gameVariables.value(1)の値が1~9の場合でそれぞれ分岐させてから変数に代入しなければならず
しかも上記のスクリプトが9つ分、存在するため
条件分岐コマンドでの処理は避けたいと考えております。

文字列と色情報をセットで変数に入れるスクリプトは
どのように記述すればよいでしょうか?

どうかよろしくお願いいたします。
最後に編集したユーザー ドラムカン on 2021年3月02日(火) 00:17 [ 編集 1 回目 ]

アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 文字色と文字列を変数に代入するスクリプト

投稿記事by WTR » 2021年3月01日(月) 17:20

その変数をどう使おうとしているのでしょうか?
メッセージの表示であればそのままのスクリプトで動作すると思いますが…

気になるのは変数1の値によって分岐し、変数1に代入するのが妥当なのかというところ。
代入するのは文字列だと思うので2回目以降その switch 文は default項 しか通らなくなりそうです。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: 文字色と文字列を変数に代入するスクリプト

投稿記事by ドラムカン » 2021年3月01日(月) 17:33

WTR様

ありがとうございます。

二回目以降は、変数1が以下のように変わります。

コード: 全て選択

switch ($gameVariables.value(11)) {
case 1: $gameVariables.setValue(11, $gameVariables.value(2)); break;
case 2: $gameVariables.setValue(11, $gameVariables.value(3)); break;
case 3: $gameVariables.setValue(11, $gameVariables.value(4)); break;
case 4: $gameVariables.setValue(11, $gameVariables.value(5)); break;
case 5: $gameVariables.setValue(11, $gameVariables.value(6)); break;
case 6: $gameVariables.setValue(11, $gameVariables.value(7)); break;
case 7: $gameVariables.setValue(11, $gameVariables.value(8)); break;
case 8: $gameVariables.setValue(11, $gameVariables.value(9)); break;
case 9: $gameVariables.setValue(11, $gameVariables.value(10)); break;
default: $gameVariables.setValue(11, ' '); break;
}


実際参照している変数は、ここで指名している数字ではないのですが
分かり易いように1~11を割り当てています。

処理部分はしっかりデータが取れているので
あとは色さえ変えられるとよいです。

よろしくお願いいたします。
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 文字色と文字列を変数に代入するスクリプト

投稿記事by WTR » 2021年3月01日(月) 17:36

問題は変数に入れるスクリプトではなく、どこに表示しようとしているかではないでしょうか。

コード: 全て選択

◆変数の操作:#0001 = 1
◆変数の操作:#0002 = '\x1bC[3] 緑文字 \x1bC[0]'
◆スクリプト:switch ($gameVariables.value(1)) {
:     :case 1: $gameVariables.setValue(1, $gameVariables.value(2)); break;
:     :case 2: $gameVariables.setValue(1, $gameVariables.value(3)); break;
:     :case 3: $gameVariables.setValue(1, $gameVariables.value(4)); break;
:     :case 4: $gameVariables.setValue(1, $gameVariables.value(5)); break;
:     :case 5: $gameVariables.setValue(1, $gameVariables.value(6)); break;
:     :case 6: $gameVariables.setValue(1, $gameVariables.value(7)); break;
:     :case 7: $gameVariables.setValue(1, $gameVariables.value(8)); break;
:     :case 8: $gameVariables.setValue(1, $gameVariables.value(9)); break;
:     :case 9: $gameVariables.setValue(1, $gameVariables.value(10)); break;
:     :default: $gameVariables.setValue(1, ' '); break;
:     :}
◆文章:なし, ウィンドウ, 下
:  :\V[1]


の結果、緑の文字が表示されますが…

ちなみに

コード: 全て選択

◆変数の操作:#0002 = '\x1bC[3] 緑文字 \x1bC[0]'


コード: 全て選択

$gameVariables.setValue(2, '\x1bC[3] 緑文字 \x1bC[0]');

としても変わりません。
スクリプトで書いたから、イベントコマンドで代入したから、ということではないと思います。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: 文字色と文字列を変数に代入するスクリプト

投稿記事by ドラムカン » 2021年3月01日(月) 21:19

WTR様

ありがとうございます。

>問題は変数に入れるスクリプトではなく、どこに表示しようとしているかではないでしょうか。
なるほど、確かに仰るとおりですね。
私はとんだ筋違いのご質問をしていたようです。
大変失礼いたしました。

最終的な出力先は、トリアコンタン様ご制作の「動的ピクチャ生成プラグイン」を使ったプラグインコマンド
D_TEXT \v[1]
となります。

この出力方法に問題があったのですね。
D_TEXTは\C[n]にも対応しているのですが、ifやSwitch文を使用できないため
やはり結局のところ、条件分岐コマンドで切り分けるしかないのでしょうか?
アバター
WTR
記事: 559
登録日時: 2015年12月22日(火) 19:14

Re: 文字色と文字列を変数に代入するスクリプト

投稿記事by WTR » 2021年3月01日(月) 22:25

むー
動的文字列ピクチャ生成プラグインでもできるようですが…

ごくシンプルに

◆スクリプト:$gameVariables.setValue(1, '\x1bC[3] 緑文字 \x1bC[0]');
◆プラグインコマンド:D_TEXT \V[1]
◆ピクチャの表示:#1, なし, 左上 (100,100), (100%,100%), 255, 通常

とかだけでテストしてもダメでしょうか。
新規PJでは出来ました。プラグインのrev. は 1.20.2
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
ドラムカン
記事: 178
登録日時: 2019年11月04日(月) 23:02

Re: 文字色と文字列を変数に代入するスクリプト

投稿記事by ドラムカン » 2021年3月02日(火) 00:17

WTR様

色々とご確認いただきまして、ありがとうございます。
こちらの環境ですと、なぜかその方法で色が変わりません。

どうやら他のプラグインに問題があるようですね。
こうもピンポイントで競合することもあるのかと驚いております。

こちらの環境のせいで色々と振り回してしまい、大変申し訳ございません。
今後、ご質問する前に関連プラグイン以外をすべて無効にするなど、しっかり確認しようと思います。
大変、お騒がせ様でした、

“MV:質問” へ戻る