ページ 1 / 1
変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月19日(火) 15:02
by toretore
こんにちは。
いつも大変お世話になっております。
ペンギンの寝床様で、選択肢の拡張プラグインを使用させていただいているのですが、変数に応じて、選択肢を消すことは出来るのですが、変数が例えば、2以上になった時に、任意の選択肢を表示させるようにしたいのですが…。
普段変数の値が満たさない時には、例えば、「ロック中!」などと表示されて、変数がある一定の値になった時に、ロックが外れて、選択肢をチェンジ出来るようにしたいんです。
言葉だけでは、わかりづらいと思いましたので、画像を添付させていただきました。
一番上の選択肢が、ロックが外れた時の選択肢で、通常というか変数が満たされない時には、ロック中!の選択肢になるようにしたいのですが。
わかりにくい説明で申し訳ありません。
どなたか作っていただけないでしょうか?
どうぞよろしくお願いいたします。
Re: 変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月19日(火) 16:22
by yamachan
こんにちは!
MPP_ChoiceEX.js は初めて拝見しましたが、機能豊富で使い易そうなプラグインですね。
コードもきれいなので、簡単に拡張できそうです。
コード: 全て選択
var regIf = /\s*if\(([^\)]+)\)/;
var regEn = /\s*en\(([^\)]+)\)/;
の直後に以下の1行を
コード: 全て選択
var regLk = /\s*lk\(([^\)]+)\)/;
そして
コード: 全て選択
var enable = true;
if (regEn.test(str)) {
str = str.replace(regEn, '');
enable = this.evalChoice(RegExp.$1);
}
の直後に以下の6行を追加してみてください。
コード: 全て選択
if (regLk.test(str)) {
if (this.evalChoice(RegExp.$1)) {
str = "ロック中!";
enable = false;
}
}
選択肢のテキストに en(条件式) と似たコマンドで、lk(条件式) が使えるようになります。
この条件式が成立するとき、選択肢は半透明で「ロック中!」となり選択できなくなります。
如何でしょうか。
ではでは。
Re: 変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月19日(火) 18:59
by toretore
yamachan さん。
早速のご回答ありがとうございました。
無事挙動を確認しました。
新しくプラグインを入れることなく、改造が出来たので、とてもうれしいです。
これで、ゲームが作りやすくなりました。
本当にありがとうございました!
Re: 変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月20日(水) 17:16
by toretore
こんにちは。
お世話になっております。
先日変数に応じて、ロックが外れる選択肢を作っていただいたのですが、半透明だと、画面が見えづらくなってしまうので、「ロック中!」の選択肢が半透明にならないものを、お願いしたいのですが…。
今さらと思われるかも知れませんが、半透明にならず、ロック中!と表示出来るように、お願いしたいのですが…
何度も申し訳ありません。
どうぞよろしくお願いします。
Re: 変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月20日(水) 21:15
by yamachan
こんばんは!
ちょっと強引ですが、とりあえず「ロック中!」の不透明表示を外してみました。
コード: 全て選択
//110
Alias.WiChLi_drawItem = Window_ChoiceList.prototype.drawItem;
Window_ChoiceList.prototype.drawItem = function(index) {
this.changePaintOpacity(this.isCommandEnabled(index));
Alias.WiChLi_drawItem.call(this, index);
};
となっている部分を、以下のように書き換えちゃいます。
コード: 全て選択
//110
Alias.WiChLi_drawItem = Window_ChoiceList.prototype.drawItem;
Window_ChoiceList.prototype.drawItem = function(index) {
this.changePaintOpacity(this.isCommandEnabled(index)||this._list[index].name=="ロック中!");
Alias.WiChLi_drawItem.call(this, index);
};
前回の修正で「ロック中!」の文字列を変更した場合は、こちらもあわせて変更してください。
見てわかる通り 「ロック中!」の文字列をみて半透明を解除、という手抜き対応してます。
他の選択肢で偶然同じ文字列にen()式を使った場合、そちらも影響されてしまうので、注意してください。
ではでは。
Re: 変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月21日(木) 12:12
by toretore
こんにちは。
大変お世話になっております。
度々申し訳ないのですが、実装した所、不具合みたいなのが出たので、直し方を教えていただけないでしょうか?
画像のように、ロック中!のボタンは半透明なままで、変数に使った文字列が、そのまま選択肢に出てしまいます。
ちなみに、プラグインは、最新の物を使っています。
初心者的な質問を、何度もすみません。
ご教授よろしくお願いいたします。
Re: 変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月21日(木) 21:55
by yamachan
こんばんは!
テスト不足ですみません。
6行足してください、のところですが、lk()の条件が成立しない時の処理を忘れていました。
以下の8行を代わりに足してください。
コード: 全て選択
if (regLk.test(str)) {
if (this.evalChoice(RegExp.$1)) {
str = "ロック中!";
enable = false;
} else {
str = str.replace(regLk, '');
}
}
「ロック中!」の半透明の件ですが、こちらでは半透明 -> 普通の文字表示になっていて、かつ選択できなくなっています。
でも全然、見た目が違いますね…

- twitter2.png (12.87 KiB) 閲覧された回数 5734 回
こちらは MPP_ChoiceEX.js の ver.3.2 をベースに動作を確認しています。
が、実際のゲームでは他に選択肢の表示を拡張するプラグインか何かを導入していませんか?
であればそちらの問題かとおもいます。
ではでは。
Re: 変数に応じて、ロックが外れる選択肢を作っていただきたいのですが…
Posted: 2016年7月22日(金) 17:31
by toretore
yamachan様
何度もありがとうございます。
お陰さまで、挙動が改善されました。
仰る通り、違うプラグインを使っていたのが原因でした。
今は、それもクリアしました。
これで、どんどん
クエストもどきを作ることが出来そうです。
本当にありがとうございました!