【解決済み】「特徴」にスキルタイプ追加をする方法

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

【解決済み】「特徴」にスキルタイプ追加をする方法

投稿記事by 湯喜乃湯 » 2016年1月13日(水) 23:10

イベントで、「魔法」というスキルタイプを追加しようとした時、以下の二通りのやり方を試してみたのですが・・・

1.イベントスクリプトにて、
actor = $data_actors[1]
feature = RPG::BaseItem::Feature.new(41,2,)
actor.features.push(feature)

2.ステートの変更にて、解除条件を全て無効にしてステートの特徴に「スキルタイプ追加」を選ぶ。

1の場合、ゲームをセーブして再開した時に追加したスキルタイプが解除されてしまい、
2の場合、イベントでのバトルで敗戦後も継続を選択していた場合の敗戦後、ステートが解除されてしまいました。

どちらの方法でも良いのですが、追加したスキルタイプが解除されないような方法はあるでしょうか?
もしくは、まったく違った方法でスキルタイプを追加する方法はありますか?

お分かりになる方がいましたら、ご教授下さい。
よろしくお願いします。
最後に編集したユーザー 湯喜乃湯 on 2016年8月24日(水) 01:55 [ 編集 1 回目 ]

アバター
子供戦車
記事: 47
登録日時: 2016年1月13日(水) 22:11
連絡を取る:

Re: 「特徴」にスキルタイプ追加をする方法

投稿記事by 子供戦車 » 2016年1月14日(木) 00:00

2の場合なのですが、「敗北可」の「負けたときの処理」に該当キャラのステートを変更させるようにしてみてはいかがでしょうか?
******************************
* い し の な か *
エターナること早数年、
MVで復帰し創作意欲を
燃やす挙動のおかしい
ザコキャラ。
* い し の な か *
******************************
ゆわか
記事: 294
登録日時: 2015年11月10日(火) 20:08
連絡を取る:

Re: 「特徴」にスキルタイプ追加をする方法

投稿記事by ゆわか » 2016年1月14日(木) 00:59

スクリプトの事はよくわからないので詳しい人にお任せしますが

2の場合、全回復しても多分ステートが消えるはずなので
ステートを付加するコモンイベントを一つ用意しておいて
全回復のイベントコマンド実行後や敗北イベント中などに
そのコモンイベントを呼び出すといいです。

また、スキルタイプの追加をデフォルトで行う場合は
初期のスキルタイプを設定した「職業」から
スキルタイプを変更した「職業」へ変更する方法があります。

イベントコマンド「職業の変更」を行うと、レベルが1 になってしまうので
直前に経験値を取得しておいて、職業変更後に経験値を戻してあげる必要があります。
また、HPやMPも現在の数値の変動が気になるようでしたら、全回復もしくは
事前に現在の値を取得しておいて、職業変更後に戻すといいです。
(どれも変数の操作で普通に取得できる情報です)

職業を変更するのは、少々面倒ですが
後々状態を監視する必要がないので
職業の変更とは別に行いたいということでないのであれば
2の方法よりオススメです。

また、スクリプト素材を使用する方法もあります。
「そのスキルタイプのスキルを1つも習得していない場合は自動的に隠す」というスクリプト素材が
「TOMOのスクリプト置き場」さんにあるようなので、試してみるのも一つかもしれません。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 「特徴」にスキルタイプ追加をする方法

投稿記事by TOMO » 2016年1月14日(木) 05:34

「ひきも記は閉鎖しました。」の「パッシブスキル」はどうですか?

こちらは武器データを利用してやっているので、
そちらの特徴で追加すれば出来るはずです


また、要望通りの動作だけをするスクリプトが必要な場合は、
以下のようなスクリプトを入れれば出来ます

コード: 全て選択

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 追加スキルタイプの取得
  #--------------------------------------------------------------------------
  alias ex_added_skill_types added_skill_types
  def added_skill_types
    if @actor_id == 1 and $game_switches[1]
      ex_added_skill_types + [2]
    else
      ex_added_skill_types
    end
  end
end

(スイッチID:1がONの時、アクターID:1のキャラにスキルタイプ2を追加)


あと、あまり関係ないけど、
ゆわかさんの言う私のスクリプトは、
正確には「スキルタイプを自動的に隠す」です
そっちは説明文です・・・
faida
記事: 272
登録日時: 2015年12月17日(木) 16:44

Re: 「特徴」にスキルタイプ追加をする方法

投稿記事by faida » 2016年1月14日(木) 12:13

手元に「全回復/戦闘不能で解除されないステート」のスクリプトがあったので添付しておきます。

コード: 全て選択

=begin
◆概要
ステート解除に条件をつけます。

◆機能
・ステートのメモ欄に<MP0解除>と書くことによりMPが0の時このステートを解除します。
・ステートのメモ欄に<全回復解除無し>と書くことにより全回復してもこのステートを
解除しません。
・ステートのメモ欄に<戦闘不能解除無し>と書くことにより戦闘不能になっても
このステートを解除しません。

◆仕様
・特になし。

◆使用上の注意
・○……新規定義 ★……エイリアス
=end

#==============================================================================
# ■ RPG::State
#==============================================================================

class RPG::State < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ○ メモ欄の取得
  #--------------------------------------------------------------------------
  def memo_remove
    @remove_mp0 = false
    @notremove_recover_all = false
    @notremove_die = false
    self.note.each_line{ |line|
      case line
      when /<MP0解除>/; @remove_mp0 = "false"
      when /<全回復解除無し>/; @notremove_recover_all = "false"
      when /<戦闘不能解除無し>/; @notremove_die = "false"
      end
    }
  end
  def remove_mp0; memo_remove if @remove_mp0.nil?; @remove_mp0; end
  def notremove_recover_all
    memo_remove if @notremove_recover_all.nil?; @notremove_recover_all
  end
  def notremove_die; memo_remove if @notremove_die.nil?; @notremove_die; end
end

#==============================================================================
# ■ Game_BattlerBase
#==============================================================================

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ★ リフレッシュ
  #--------------------------------------------------------------------------
  alias mp0states_refresh refresh
  def refresh
    mp0states_refresh
    states.each{|state|erase_state(state.id) if state.remove_mp0} if @mp == 0
  end
  #--------------------------------------------------------------------------
  # ★ 全回復
  #--------------------------------------------------------------------------
  alias reallstates_recover_all recover_all
  def recover_all
    ss = states.select{|state|state.notremove_recover_all}
    reallstates_recover_all
    ss.each{|state|add_state(state.id)}
    sort_states
  end
end

#==============================================================================
# ■ Game_Battler
#==============================================================================

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ★ 戦闘不能になる
  #--------------------------------------------------------------------------
  alias diestates_die die
  def die
    ss = states.select{|state|state.notremove_die}.collect{|state|
      [state.id, @state_turns[state.id], @state_steps[state.id]]
    }
    diestates_die
    ss.each{|s|@states.push(s[0]); @state_turns[s[0]] = s[1]
      @state_steps[s[0]] = s[2]
    }
    sort_states
  end
end
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

Re: 「特徴」にスキルタイプ追加をする方法

投稿記事by 湯喜乃湯 » 2016年1月14日(木) 15:48

制作物のシステムやシナリオの展開上、TOMOさんのスクリプトが最適でしたので、そちらを使わせて頂きたいと思います。
子供戦車さん、ゆわかさん、TOMOさん、faidaさん、ご教授頂きありがとうございました。感謝です!!

>TOMOさん
教えて頂いたスクリプトの著作権表記関連や使用制限の指定などがありましたらお教え下さい。
使用させて頂く当方の制作物は、個人製作の有料同人ゲーム(年齢制限無し)の予定です。
よろしくお願いします。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 「特徴」にスキルタイプ追加をする方法

投稿記事by TOMO » 2016年1月14日(木) 21:04

こちらのか私のサイトのかは分かりませんが、
こちらに載せたのなら特に制限などはないです
画像
画像
画像
画像
画像
画像



サイトのなら、商用(営利目的)利用時に報告が必須なのと、
ゲームデータを暗号化せずに配布する事等による、
直接的・間接的な「二次配布」を禁止してます
画像
画像(営利目的時は報告必須)
画像(私へのサポート依頼は不可)
画像
画像(報告必須)
画像(報告必須)

が、報告はこれ自体がそれなのでOKですし、
暗号化さえすれば得に問題はないです
湯喜乃湯
記事: 35
登録日時: 2016年1月10日(日) 16:05
お住まい: Tokyo
連絡を取る:

Re: 「特徴」にスキルタイプ追加をする方法

投稿記事by 湯喜乃湯 » 2016年1月15日(金) 00:21

>TOMOさん
使用上の注意、了解致しました。
使用させて頂くのは、お答え頂いた中に記載されていたTOMOさんの「追加スキルタイプの取得」スクリプトになります。

これにて当質問は解決済みとさせて頂きます。
お答え頂いた皆さん、本当に有難うございました!!

“VX / Ace:質問” へ戻る