商人キャラのスキル作成

金田一光彦
記事: 22
登録日時: 2016年7月21日(木) 23:19

商人キャラのスキル作成

投稿記事by 金田一光彦 » 2018年7月09日(月) 02:05

いつもお世話になっております。
今回はコモンイベントを使用したイベントの組み方について伺いたいと思います。
商人系のキャラの技で「かばん」と言うスキルを選択して、ターゲットを選択後
ランダムでアイテムを敵に投げると言うスキルを作りたく、コモンイベントから
変数を使ってランダムにアイテムがあれば一つだけ使うようにしたいのですが、
イベントコマンドの戦闘行動の強制にはアイテムがないため実行できません。
ツクールVXの仕様でこのような行動の強制はできないのでしょうか?
以下の添付したファイルの様に現在組み込んでいます。
添付ファイル
新規キャンバス.jpg

ゆわか
記事: 128
登録日時: 2015年11月10日(火) 20:08
連絡を取る:

Re: 商人キャラのスキル作成

投稿記事by ゆわか » 2018年7月09日(月) 10:22

アイテムの使用効果と同じスキルを作り
あたかもアイテムを使用している体を保ちながらスキルを使用させるとよいと思います。

かばんから取り出せるアイテムの種類だけスキルが必要になりますが、それっぽくは出来ると思います。
金田一光彦
記事: 22
登録日時: 2016年7月21日(木) 23:19

Re: 商人キャラのスキル作成

投稿記事by 金田一光彦 » 2018年7月09日(月) 13:18

ゆわか様

説明不足部分があってしまいすみません、その方法だと使用者の武器による攻撃力も反映されてしまい、アイテムの威力そのものが活かせないので悩んでいます。
できれば武器補正ではなくキャラの武器がない状態の威力が関わるアイテムが作りたいのです。
ショウ
記事: 109
登録日時: 2016年8月10日(水) 19:52

Re: 商人キャラのスキル作成

投稿記事by ショウ » 2018年7月09日(月) 15:57

ようするに装備無しでの攻撃力で攻撃するスキルが作れればOKそうですかね?
VXではデフォルトの状態では素の攻撃力を取得する事は出来ませんのでスクリプトを
使う必要があります。
昔作った物を配布用にちょっと整理してみました。
(割と直書きしたままにしてしまうのは自分の悪い癖だと思う)

コード: 全て選択

  #--------------------------------------------------------------------------
  # 固有ダメージ計算式 byショウ
  #--------------------------------------------------------------------------
#~   割と雑いスクリプトな気もするので説明
#~   二番目のnone_equip_atkという処理で装備無しでの攻撃力を取得しています。
#~   そして今回の場合それを使いスキルまたはアイテムのメモに商人アタックと書かれて
#~   いれば装備無しでの攻撃力でダメージ計算が行われるという処理にしています。
#~   なお同じ様にダメージ計算の処理で条件分岐で増やしていけばスキルやアイテム毎に
#~   固有のダメージ計算式を作る事が出来ます。
class Game_Battler
  #--------------------------------------------------------------------------
  # ● スキルまたはアイテムによるダメージ計算
  #     user : スキルまたはアイテムの使用者
  #     obj  : スキルまたはアイテム
  #    結果は @hp_damage または @mp_damage に代入する。
  #--------------------------------------------------------------------------
  def make_obj_damage_value(user, obj)
    #商人アタック用計算式ここから
    if obj.note.include?("商人アタック")
    damage = obj.base_damage                        # 基本ダメージを取得
    if damage > 0                                   # ダメージが正の数
      damage += user.none_equip_atk * 4 * obj.atk_f / 100      # 打撃関係度: 使用者
      damage += user.spi * 2 * obj.spi_f / 100      # 精神関係度: 使用者
      unless obj.ignore_defense                     # 防御力無視以外
        damage -= self.def * 2 * obj.atk_f / 100    # 打撃関係度: 対象者
        damage -= self.spi * 1 * obj.spi_f / 100    # 精神関係度: 対象者
      end
      damage = 0 if damage < 0                      # マイナスなら 0 に
    elsif damage < 0                                # ダメージが負の数
      damage -= user.none_equip_atk * 4 * obj.atk_f / 100      # 打撃関係度: 使用者
      damage -= user.spi * 2 * obj.spi_f / 100      # 精神関係度: 使用者
    end
    damage *= elements_max_rate(obj.element_set)    # 属性修正
    damage /= 100
    damage = apply_variance(damage, obj.variance)   # 分散
    damage = apply_guard(damage)                    # 防御修正
    if obj.damage_to_mp 
      @mp_damage = damage                           # MP にダメージ
    else
      @hp_damage = damage                           # HP にダメージ
    end
    #商人アタック用計算式ここまで
    #必要であればここに以下を追加
    #elsif obj.note.include?("ほにゃらら")
    #ここ自由に計算式を作ってね
    #更に必要なら同じ事を繰り返し
    #通常の計算式ここから
    else
    damage = obj.base_damage                        # 基本ダメージを取得
    if damage > 0                                   # ダメージが正の数
      damage += user.atk * 4 * obj.atk_f / 100      # 打撃関係度: 使用者
      damage += user.spi * 2 * obj.spi_f / 100      # 精神関係度: 使用者
      unless obj.ignore_defense                     # 防御力無視以外
        damage -= self.def * 2 * obj.atk_f / 100    # 打撃関係度: 対象者
        damage -= self.spi * 1 * obj.spi_f / 100    # 精神関係度: 対象者
      end
      damage = 0 if damage < 0                      # マイナスなら 0 に
    elsif damage < 0                                # ダメージが負の数
      damage -= user.atk * 4 * obj.atk_f / 100      # 打撃関係度: 使用者
      damage -= user.spi * 2 * obj.spi_f / 100      # 精神関係度: 使用者
    end
    damage *= elements_max_rate(obj.element_set)    # 属性修正
    damage /= 100
    damage = apply_variance(damage, obj.variance)   # 分散
    damage = apply_guard(damage)                    # 防御修正
    if obj.damage_to_mp 
      @mp_damage = damage                           # MP にダメージ
    else
      @hp_damage = damage                           # HP にダメージ
    end
    #通常の計算式ここまで
    end
  end
end

class Game_Actor
  #--------------------------------------------------------------------------
  # ● 装備なしでの攻撃力取得
  #--------------------------------------------------------------------------
  def none_equip_atk
    return actor.parameters[2, @level] + @atk_plus
  end
end

導入すれば多分希望のスキルが作れると思います。

素材単体での販売以外は自由
改変は自由というかこれは弄ってこそのスクリプトなので1~9行以外はガンガン弄っちゃってください。
金田一光彦
記事: 22
登録日時: 2016年7月21日(木) 23:19

【解決済】商人キャラのスキル作成

投稿記事by 金田一光彦 » 2018年7月09日(月) 22:02

ショウ様

スクリプトが必要になってしまうのですね。
添付して頂いたスクリプトを試してみました、一部修正して使用させていただきます。
ありがとうございました。

“VX / Ace:質問” へ戻る