【解決済み】MPを消費する装備、MP0で装備効果無し

湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

【解決済み】MPを消費する装備、MP0で装備効果無し

投稿記事by 湯喜乃湯 » 2017年1月07日(土) 09:16

いつもお世話になっております。ペコリ。
装備品に関する質問なのですが、例えば「魔法のマント」といった防具があるとして、その設定が・・・

1 「防御力」が作品中の「普通のマント」より大きい(データベースの「能力値変化量」で予め大きめに数値を設定しておく)
2 ただし、装備している最中はMPを消費する。
3 MPが必要MP未満になると、装備している効果がなくなる(装備が外れている状態と同じなる」

といった事を実現したいのですが・・・
複雑なので恐らくはスクリプトになるかと思いますが、実現可能な既存スクリプト等をお教えいただければ幸いです。
宜しくお願い致します。
最後に編集したユーザー 湯喜乃湯 on 2017年1月09日(月) 01:11 [ 編集 1 回目 ]

奈々(なな)
記事: 103
登録日時: 2016年11月06日(日) 16:57

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by 奈々(なな) » 2017年1月08日(日) 01:08

そんなに複雑なものではないので、作ろうと思えばイベントとステートでも作れますよ。
もちろんスクリプトを作ってもらった方が簡単かとは思いますので、代案としてですが。


まず、「魔法のマント」を、能力値上昇0で制作します。
次に判定用コモンイベントで、MP0でない場合「補正ステート」を付与、MP0なら解除します。
http://heptanas.mamagoto.com/Entry/17/
補正ステートは、MPを減らす効果と、能力値上昇効果を付けます。
これで効果は再現できます。

上記をベースに、挙動の改良ですが
マップ画面に戻る前に反映させたい場合は、以下のスクリプトが利用可能です。
http://heptanas.mamagoto.com/Entry/152/

装備画面で能力上昇を反映させたい場合は
「魔法のマント」に能力値を設定した上で
MP0でない場合はMPを減らすだけのステートを
MP0なら能力値を、上昇値分マイナスするステートを付与します。
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by 湯喜乃湯 » 2017年1月08日(日) 04:19

>奈々さん
いつもご教授頂きありがとうございます。ペコリ。

いくつかお聞きしたいのですが・・・
1 戦闘中の挙動(必要MP以下になった場合効果失効)に関しては、バトルイベントを併用する事が前提でしょうか?
  (コモンイベントの並列処理は、戦闘中には起動しないという認識を元に質問させて頂いております)

2 装備効果に関しては、デフォルトステートで行えない「防御力+2、消費MP-3/毎ターン」といった数値の場合は別途スクリプト
  を利用するという事でしょうか?

お手数ですが、改めてご教授頂けると助かります。
宜しくお願い致します。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by TOMO » 2017年1月08日(日) 06:35

一応スクリプトとして作ってみました

ただし、まだマップ上でのみ確認済みなので、未完成品とします
(戦闘中での確認をお願いします)
【追記】
未完成としてますが、作り上多分大丈夫です

コード: 全て選択

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 装備品オブジェクトの配列取得
  #--------------------------------------------------------------------------
  def equips
    @equips.collect do |item|
      if item.dummy and item.dummy[0] > mp
        item.dummy[1]
      else
        item.object
      end
    end
  end
end

class Game_BaseItem
  def dummy
    if is_weapon? and object and
      object.note.match(/<MP条件装備:(\d+),(\d+)>/i) and
      return [$1.to_i, $data_weapons[$2.to_i]]
    elsif is_armor? and object and
      object.note.match(/<MP条件装備:(\d+),(\d+)>/i) and
      return [$1.to_i, $data_armors[$2.to_i]]
    else
      return nil
    end
  end
end

MPが足りない場合、
あらかじめ用意したダミーの装備データを読み込むタイプです


※使い方
まず装備のメモ欄に「<MP条件装備:n,m>」と入れてください
nはMPの値で、mはダミー用の装備IDです

あとはダミー用の装備データを設定すれば出来ます
(ダミーの方のメモ欄には書かないで下さい)

MPがn未満で発動し、n以上で元に戻ります
最後に編集したユーザー TOMO on 2017年1月08日(日) 16:29 [ 編集 1 回目 ]
奈々(なな)
記事: 103
登録日時: 2016年11月06日(日) 16:57

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by 奈々(なな) » 2017年1月08日(日) 10:12

スクリプトが提供されたので、お役御免だとは思いますが一応回答を。

>1の質問について
そうです。コモンイベントで作っておけばそれを呼び出しでいけるでしょうから
修正や追加を考えても思うほど手間ではないかと。
またバトルイベントだと起動のタイミングが微妙、という場合は以下のスクリプトもあります。
http://heptanas.mamagoto.com/Entry/242/

>2の質問について
%ではなく数値で指定したいということですよね。
例として簡易な書き方をしたかったのでステートを使いましたが、同じ考え方で
装備を、能力値上昇ありの「魔法のマント」と、能力値上昇なしの「ダミーのマント」で切り替える。
MPの減少は、MPチェックのイベントで、イベントコマンドによって行う。
というステートを使わない手法で再現することはできます。


以上です。
別にイベント至上主義ではないので、スクリプト使ってください(笑)
------------------------------------------------------------------------------------
へぷたなすくろーる
http://heptanas.mamagoto.com/

VXAceのスクリプト素材及びイベント講座などをやっています。
------------------------------------------------------------------------------------
湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by 湯喜乃湯 » 2017年1月08日(日) 18:16

>TOMOさん
お久しぶりです。以前、「スキルタイプを任意のスイッチON時に追加する」というスクリプトを教えて頂きました。
その節はお世話になりました。ペコリ。

教えて頂いたスクリプトのテストをしてみました!!
設定したMP未満で装備品がダミーに切り替わり、設定MP以上で元に戻るという動作は確認出来、自分の要望通りの挙動が実現出来ていたのですが・・・

MPが設定値未満でダミーに切り替わった状態で戦闘からフィールドマップに戻り、その状態でダミー装備を外して再装備した場合、装備者のMPを回復させても元の装備に戻りませんでした(装備を外さずにMPを回復した場合はダミーから元の装備に戻りました)。
装備時に装備者のMPをチェックして元に戻るような形だと最適だと思うのですが・・・
スクリプトの改変は可能でしょうか?
(ダミーを再装備する際の装備画面で、装備前・装備後の数値がダミーの数値であるのはアリだと思っています)

>奈々さん
デフォルトでの工夫の仕方次第では実現出来るもんなんですね・・・
毎回、奈々さんにはデフォルトの奥深さを教えていただいて、感謝&恐縮です。
もっと、頭を回転させんといかんですね・・・
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by TOMO » 2017年1月08日(日) 18:55

・・・そう言えばそんなスクリプトを作りましたね(忘れてた)

修正してみました

コード: 全て選択

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 特徴を保持する全オブジェクトの配列取得
  #--------------------------------------------------------------------------
  def feature_objects
    f_equips = @equips.collect do |item|
      if item.dummy and item.dummy[0] > self.mp
        item.dummy[1]
      else
        item.object
      end
    end
    super + [actor] + [self.class] + f_equips.compact
  end
  #--------------------------------------------------------------------------
  # ● 通常能力値の加算値取得
  #--------------------------------------------------------------------------
  def param_plus(param_id)
    p_equips = @equips.collect do |item|
      if item.dummy and item.dummy[0] > self.mp
        item.dummy[1]
      else
        item.object
      end
    end
    p_equips.compact.inject(super) {|r, item| r += item.params[param_id] }
  end
end

class Game_BaseItem
  def dummy
    if is_weapon? and object and
      object.note.match(/<MP条件装備:(\d+),(\d+)>/i) and
      return [$1.to_i, $data_weapons[$2.to_i]]
    elsif is_armor? and object and
      object.note.match(/<MP条件装備:(\d+),(\d+)>/i) and
      return [$1.to_i, $data_armors[$2.to_i]]
    else
      return nil
    end
  end
end

特徴装備能力値を読み込む時のみにしました
湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by 湯喜乃湯 » 2017年1月08日(日) 23:07

>TOMOさん
いやぁ、覚えてなくて当然でしょう。
お世話になってるTOMOさんや奈々さんやfaidaさんって、他にも多くの質問に答えてらっしゃいますからね。
質問をした自分が覚えてなかったら、それはただの人でなしとクズですけど(でも、最近おっさん化が激しいので記憶力が・・・)。

修正して頂いたスクリプト、完璧に動作しました。
いやぁ、大感謝です。
規約は、以前は特に制限無しという事だったんですが・・・同様でよろしいでしょうか?

>奈々さん
何回かのご指導を見てると、コモンの並列やダミーステート等を覚えておくと、かなりデフォルトの幅が広がるというのが理解出来ました。
もうちょっとこう、質問する前にその辺を試せておけるよう、精進しときます。おっさんの意地として。
今回もありがとうございました。大感謝!!
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by TOMO » 2017年1月08日(日) 23:50

編集中に消してしまってましたが、変わらず制限なしでOKです
湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

Re: MPを消費する装備、MP0で装備効果無し

投稿記事by 湯喜乃湯 » 2017年1月09日(月) 01:11

>TOMOさん
規約の件、了解致しました。

改めまして、TOMOさん、奈々さん、この度はご教授頂き感謝です!!
有難うございました!!

このトピックは、これにて解決済みとさせて頂きます。

“VX / Ace:質問” へ戻る