アイテム、、スキルをメニュー画面で使用した時も戦闘時と同様のメッセージをメニューで出したいです。
考えたのがバトルログをそのままメニュー画面に持ってくることでしたが、バトルログがメッセージを出す動作がどこにあるか解らずに断念しました。
次にフトコロ様のメニュー内コモンイベントプラグインを活用してみましたが、スキルを使った効果量の取得に難航したのど、メッセージにアクター名の%1がそのまま文字で出る。それを避けるにはスキルのメモ欄の記述が必要なので、この手段は避けたいです)
自分自身でプラグインも探してみましたが見つからなかったので、もしそう言うプラグインを知っているかもしくは、バトルログのメッセージを出す場所のスクリプトが書いてある場所を知っていたら教えて下さい。
スキル・アイテム使用時にメニュー画面でもメッセージ
Re: スキル・アイテム使用時にメニュー画面でもメッセージ
Window_BattleLog.prototype.displayActionResultsを見て見てください。
ダメージポップアップなど今回のご要望と関係のない部分もありますが、displayDamage等が実際にメッセージを構築している部分にはなります。
プログラムが書ける方だと見受けられますので、他はヒントだけ置いていきます。
・該当Sceneのuser()が使用した(subject)、itemTargetActors()が使用された(target。単体ではなく配列)キャラクターたちです。(Scene_ItemBase.prototype.useItem/Scene_ItemBase.prototype.applyItem参照)
・applyによる効果量結果などはtargetとなったキャラクターの.result()に入ってます。
ざっくりチェックなのでミスがあったら申し訳ございません。
ダメージポップアップなど今回のご要望と関係のない部分もありますが、displayDamage等が実際にメッセージを構築している部分にはなります。
プログラムが書ける方だと見受けられますので、他はヒントだけ置いていきます。
・該当Sceneのuser()が使用した(subject)、itemTargetActors()が使用された(target。単体ではなく配列)キャラクターたちです。(Scene_ItemBase.prototype.useItem/Scene_ItemBase.prototype.applyItem参照)
・applyによる効果量結果などはtargetとなったキャラクターの.result()に入ってます。
ざっくりチェックなのでミスがあったら申し訳ございません。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Re: スキル・アイテム使用時にメニュー画面でもメッセージ
>剣崎 宗二さん
回答ありがとうございます。
色々助言を基にスクリプト書いてみました。現状ではアイテム効果の数値以外は取ることが出来ました。
ですが、アイテムの数値は文字化けして[object obeject]で出ます。何故でしょうか?
HPかMPかを指示しないと出ないとかですか、ここだけ助言をもう一ついただけたら助かります。
現状のスクリプトはこんな感じです。
Scene_ItemBase.prototype.applyItem = function() {
var action = new Game_Action(this.user());
action.setItemObject(this.item());
var act1 = this.user().actorId();
var ItemActor = $gameActors.actor(act1).name();
//アイテムはメッセージがないためメモ欄m0に逃げる
var ItemMes0 = this.item().meta['m0']
if (ItemMes0 != "" ) {
$gameMessage.add(ItemActor + ItemMes0 );
} else {
var ItemMes1 = this.item().message1.format();
var ItemMes2 = this.item().message2.format();
$gameMessage.add(ItemActor + ItemMes0 );
if (ItemMes2 != "" ){
$gameMessage.add(ItemMes2);
}
}
//直接効果を記述すると文字化けするので、メモ欄m1,m2に逃げる
var ItemMes3 = this.item().meta['m1']
var ItemMes4 = this.item().meta['m2']
if (action.isForAll()) {
for (var i = 0; i < $gameParty.size(); i++) {
var alnam = $gameParty.members()[i].name();
$gameMessage.add(alnam + ItemMes4 );
}
} else {
var TrgActor = $gameParty.targetActor().name();
if(ItemMes4 != "" ) {
//数値効果があるものに数値を代入する。
var ItemRes = $gameParty.targetActor().result();
$gameMessage.add(TrgActor + ItemMes3 + ItemRes + ItemMes4 );
} else {
$gameMessage.add(TrgActor + ItemMes3 );
}
}
this.itemTargetActors().forEach(function(target) {
for (var i = 0; i < action.numRepeats(); i++) {
action.apply(target);
}
}, this);
回答ありがとうございます。
色々助言を基にスクリプト書いてみました。現状ではアイテム効果の数値以外は取ることが出来ました。
ですが、アイテムの数値は文字化けして[object obeject]で出ます。何故でしょうか?
HPかMPかを指示しないと出ないとかですか、ここだけ助言をもう一ついただけたら助かります。
現状のスクリプトはこんな感じです。
Scene_ItemBase.prototype.applyItem = function() {
var action = new Game_Action(this.user());
action.setItemObject(this.item());
var act1 = this.user().actorId();
var ItemActor = $gameActors.actor(act1).name();
//アイテムはメッセージがないためメモ欄m0に逃げる
var ItemMes0 = this.item().meta['m0']
if (ItemMes0 != "" ) {
$gameMessage.add(ItemActor + ItemMes0 );
} else {
var ItemMes1 = this.item().message1.format();
var ItemMes2 = this.item().message2.format();
$gameMessage.add(ItemActor + ItemMes0 );
if (ItemMes2 != "" ){
$gameMessage.add(ItemMes2);
}
}
//直接効果を記述すると文字化けするので、メモ欄m1,m2に逃げる
var ItemMes3 = this.item().meta['m1']
var ItemMes4 = this.item().meta['m2']
if (action.isForAll()) {
for (var i = 0; i < $gameParty.size(); i++) {
var alnam = $gameParty.members()[i].name();
$gameMessage.add(alnam + ItemMes4 );
}
} else {
var TrgActor = $gameParty.targetActor().name();
if(ItemMes4 != "" ) {
//数値効果があるものに数値を代入する。
var ItemRes = $gameParty.targetActor().result();
$gameMessage.add(TrgActor + ItemMes3 + ItemRes + ItemMes4 );
} else {
$gameMessage.add(TrgActor + ItemMes3 );
}
}
this.itemTargetActors().forEach(function(target) {
for (var i = 0; i < action.numRepeats(); i++) {
action.apply(target);
}
}, this);
ゲーム作成用Twitterアカウント作りました https://twitter.com/RPGVV1
Re: スキル・アイテム使用時にメニュー画面でもメッセージ
.result()の返却型は数値や文字列ではなくGame_ActionResultです。
該当型の詳細をご覧になった上で再度必要なデータを引き出して試してみてください。
該当型の詳細をご覧になった上で再度必要なデータを引き出して試してみてください。
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Re: スキル・アイテム使用時にメニュー画面でもメッセージ
剣崎 宗二 さん
回答ありがとうございます。Game_ActionResult の場所は見つける事が出来ました。
Hpdamageのパラメーターを入れれば行けるかな?と思いましたが上手く行きませんでした。
Game__ActionResultはバトル専用なのかな?と推察してますがもう少し自力で解読してみます。
最悪、バトル用とコモン用にアイテムを分けてバトルとマップの切り替え時にアイテムを差し替えて
マップ用はコモンイベントで対応するという強引なやり方も考えられますが、今回のRPG作りは
自分のプログラミングスキル(ついでにイラストと文章構成技術も。このアイコンは自分で描きましたw)
向上を目的とした勉強でもあるのでもう少し頑張ってみます。
また解らなくなったら御指南お願いします。ありがとうございます。
(ちなみにjavascriptは今回初めて触ります。python c++ vbの経験を頼りにやってます)
回答ありがとうございます。Game_ActionResult の場所は見つける事が出来ました。
Hpdamageのパラメーターを入れれば行けるかな?と思いましたが上手く行きませんでした。
Game__ActionResultはバトル専用なのかな?と推察してますがもう少し自力で解読してみます。
最悪、バトル用とコモン用にアイテムを分けてバトルとマップの切り替え時にアイテムを差し替えて
マップ用はコモンイベントで対応するという強引なやり方も考えられますが、今回のRPG作りは
自分のプログラミングスキル(ついでにイラストと文章構成技術も。このアイコンは自分で描きましたw)
向上を目的とした勉強でもあるのでもう少し頑張ってみます。
また解らなくなったら御指南お願いします。ありがとうございます。
(ちなみにjavascriptは今回初めて触ります。python c++ vbの経験を頼りにやってます)
ゲーム作成用Twitterアカウント作りました https://twitter.com/RPGVV1
Re: スキル・アイテム使用時にメニュー画面でもメッセージ
私も元はC#側のエンジニアであり、javascriptはツクールに入るに際して自分でコアスクリプトを読んで解析し学んだので、お気持ちは分かります。
一応以下に「実現できた」物を作っておきましたので、答え合わせ用としてでもお使いください。
(ステート関連まで詰め込みましたが、バフデバフ関係は面倒になって省略してます)
一応以下に「実現できた」物を作っておきましたので、答え合わせ用としてでもお使いください。
(ステート関連まで詰め込みましたが、バフデバフ関係は面倒になって省略してます)
----
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
-出先に居る場合回答が未テスト状態である事が多い為、テストは重々にお願いいたします。
-基本自分や友人の問題解決は自分で1からプラグインを書いているので、「こういうプラグインはありますか」に対しては助けになれません。ご了承ください。
Re: スキル・アイテム使用時にメニュー画面でもメッセージ
剣崎様
ありがとうございます!昨日答えを見ました。
変数の代入の仕方が良くわかる解りやすいコードで大変助かりました。
自分はitemtypeに書き込んでるのでそのままでは使えませんが参考にさせていただきます!
ありがとうございます!昨日答えを見ました。
変数の代入の仕方が良くわかる解りやすいコードで大変助かりました。
自分はitemtypeに書き込んでるのでそのままでは使えませんが参考にさせていただきます!
ゲーム作成用Twitterアカウント作りました https://twitter.com/RPGVV1