Project1

标题: VA里 难道没 被动技能的吗 [打印本页]

作者: z2z4    时间: 2012-6-29 07:14
标题: VA里 难道没 被动技能的吗
本帖最后由 z2z4 于 2012-6-29 10:29 编辑

没被动技能  就没法 做 养成技能类的了   请高手指点
作者: 若阿蟬    时间: 2012-6-29 09:19
從日本的網站轉來的
原址:http://www002.upp.so-net.ne.jp/usagimask/top.htm

#==============================================================================
# ■ UMSSSS
#------------------------------------------------------------------------------
# ▼ウサギマスクが製作したゲームシステムの基本設定を扱うモジュールです。
#   ※ UMSSSS は UsagiMaskSystemScriptSynthesisSetting の略です(ぇ
#==============================================================================
class UMSSSS
  
  # 簡易パッシブスキルとして使用するスキルタイプの名称
  UseSimplePassiveName = "主動技能"
  
end
#==============================================================================
# ■ RPG::Skill
#------------------------------------------------------------------------------
#  スキルのデータクラス。
#==============================================================================
class RPG::Skill < RPG::UsableItem
  def real_note
    return @note.clone
  end
  def simple_passive?
    s_name = $data_system.skill_types[@stype_id]
    return s_name == UMSSSS::UseSimplePassiveName
  end
end
#==============================================================================
# ■ Game_BattlerBase
#------------------------------------------------------------------------------
#  バトラーを扱う基本のクラスです。主に能力値計算のメソッドを含んでいます。こ
# のクラスは Game_Battler クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_BattlerBase
  alias ums_simple_passive_skill_state_resist_set state_resist_set
  alias ums_simple_passive_skill_recover_all recover_all
  #--------------------------------------------------------------------------
  # ● 無効化するステートの配列を取得
  #--------------------------------------------------------------------------
  def state_resist_set
    result = ums_simple_passive_skill_state_resist_set
    if self.actor?
      result += @passive_m_states unless @passive_m_states.nil?
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ● 全回復
  #--------------------------------------------------------------------------
  def recover_all
    ums_simple_passive_skill_recover_all
    check_simple_passive if self.actor?
  end
  #--------------------------------------------------------------------------
  # ● 無効化する能力強化の配列を取得
  #--------------------------------------------------------------------------
  def buff_resist_set
    return []
  end
  #--------------------------------------------------------------------------
  # ● 無効化する能力弱体の配列を取得
  #--------------------------------------------------------------------------
  def debuff_resist_set
    return []
  end
end
#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
#  スプライトや行動に関するメソッドを追加したバトラーのクラスです。このクラス
# は Game_Actor クラスと Game_Enemy クラスのスーパークラスとして使用されます。
#==============================================================================
class Game_Battler < Game_BattlerBase
  alias ums_simple_passive_skill_remove_state remove_state
  alias ums_simple_passive_skill_add_buff add_buff
  alias ums_simple_passive_skill_add_debuff add_debuff
  alias ums_simple_passive_skill_item_effect_add_buff item_effect_add_buff
  alias ums_simple_passive_skill_item_effect_add_debuff item_effect_add_debuff
  #--------------------------------------------------------------------------
  # ● ステートの解除
  #--------------------------------------------------------------------------
  def remove_state(state_id)
    if self.actor?
      return if passive_plus_states.include?(state_id)
    end
    ums_simple_passive_skill_remove_state(state_id)
  end
  #--------------------------------------------------------------------------
  # ● 能力強化
  #--------------------------------------------------------------------------
  def add_buff(param_id, turns)
    if self.actor?
      return if buff_resist_set.include?(param_id)
    end
    ums_simple_passive_skill_add_buff(param_id, turns)
  end
  #--------------------------------------------------------------------------
  # ● 能力弱体
  #--------------------------------------------------------------------------
  def add_debuff(param_id, turns)
    if self.actor?
      return if debuff_resist_set.include?(param_id)
    end
    ums_simple_passive_skill_add_debuff(param_id, turns)
  end
  #--------------------------------------------------------------------------
  # ● 使用効果[能力強化]
  #--------------------------------------------------------------------------
  def item_effect_add_buff(user, item, effect)
    if self.actor?
      return if buff_resist_set.include?(effect.data_id)
    end
    ums_simple_passive_skill_item_effect_add_buff(user, item, effect)
  end
  #--------------------------------------------------------------------------
  # ● 使用効果[能力弱体]
  #--------------------------------------------------------------------------
  def item_effect_add_debuff(user, item, effect)
    if self.actor?
      return if debuff_resist_set.include?(effect.data_id)
    end
    ums_simple_passive_skill_item_effect_add_debuff(user, item, effect)
  end
end
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================
class Game_Actor < Game_Battler
  alias ums_simple_passive_skill_setup setup
  alias ums_simple_passive_skill_learn_skill learn_skill
  alias ums_simple_passive_skill_forget_skill forget_skill
  #--------------------------------------------------------------------------
  # ● セットアップ
  #--------------------------------------------------------------------------
  def setup(actor_id)
    ums_simple_passive_skill_setup(actor_id)
    check_simple_passive
  end
  #--------------------------------------------------------------------------
  # ● スキルを覚える
  #--------------------------------------------------------------------------
  def learn_skill(skill_id)
    ums_simple_passive_skill_learn_skill(skill_id)
    skill = $data_skills[skill_id]
    unless skill.nil?
      check_simple_passive if skill.simple_passive?
    end
  end
  #--------------------------------------------------------------------------
  # ● スキルを忘れる
  #--------------------------------------------------------------------------
  def forget_skill(skill_id)
    ums_simple_passive_skill_forget_skill(skill_id)
    skill = $data_skills[skill_id]
    unless skill.nil?
      remove_simple_passive(skill) if skill.simple_passive?
    end
  end
  #--------------------------------------------------------------------------
  # ● 簡易パッシブスキルの取得
  #--------------------------------------------------------------------------
  def simple_passive_skills
    return skills.select {|v| v.simple_passive?}
  end
  #--------------------------------------------------------------------------
  # ● 簡易パッシブスキルのチェック
  #--------------------------------------------------------------------------
  def check_simple_passive
    # 変数初期化
    @passive_p_states = []
    @passive_m_states = []
    @passive_i_buff = []
    @passive_i_debuff = []
    # データ取得
    p_states = []
    m_states = []
    i_buff = []
    i_debuff = []
    for skill in simple_passive_skills
      for effect in skill.effects
        p_states << effect.data_id if effect.code == 21
        m_states << effect.data_id if effect.code == 22
        i_buff << effect.data_id if effect.code == 33
        i_debuff << effect.data_id if effect.code == 34
      end
    end
    # データ整理
    del_states = p_states & m_states
    p_states -= del_states
    m_states -= del_states
    del_buff = i_buff & i_debuff
    i_buff -= del_buff
    i_debuff -= del_buff
    # データ反映
    @passive_p_states = p_states
    @passive_m_states = m_states
    @passive_i_buff = i_buff
    @passive_i_debuff = i_debuff
    @result.clear
    for s in p_states
      add_state(s)
    end
    for s in m_states
      remove_state(s)
    end
    for b in i_buff
      erase_buff(b) if buff?(b)
    end
    for d in i_debuff
      erase_buff(d) if debuff?(d)
    end
  end
  #--------------------------------------------------------------------------
  # ● 簡易パッシブスキルを無効化
  #--------------------------------------------------------------------------
  def remove_simple_passive(skill)
    check_simple_passive
    for effect in skill.effects
      if effect.code == 21
        remove_state(effect.data_id)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 簡易パッシブスキルで常時付加するステート
  #--------------------------------------------------------------------------
  def passive_plus_states
    return @passive_p_states
  end
  #--------------------------------------------------------------------------
  # ● 無効化する能力強化の配列を取得
  #--------------------------------------------------------------------------
  def buff_resist_set
    return @passive_i_buff
  end
  #--------------------------------------------------------------------------
  # ● 無効化する能力弱体の配列を取得
  #--------------------------------------------------------------------------
  def debuff_resist_set
    return @passive_i_debuff
  end
end
#==============================================================================
# ■ Window_Command
#------------------------------------------------------------------------------
#  一般的なコマンド選択を行うウィンドウです。
#==============================================================================
class Window_Command < Window_Selectable
  alias ums_simple_passive_skill_add_command add_command
  #--------------------------------------------------------------------------
  # ● コマンドの追加
  #     name    : コマンド名
  #     symbol  : 対応するシンボル
  #     enabled : 有効状態フラグ
  #     ext     : 任意の拡張データ
  #--------------------------------------------------------------------------
  def add_command(name, symbol, enabled = true, ext = nil)
    if self.is_a?(Window_ActorCommand)
      return if name == UMSSSS::UseSimplePassiveName
    end
    ums_simple_passive_skill_add_command(name, symbol, enabled, ext)
  end
end
#==============================================================================
# ■ Window_Selectable
#------------------------------------------------------------------------------
#  カーソルの移動やスクロールの機能を持つウィンドウクラスです。
#==============================================================================
class Window_Selectable < Window_Base
  alias ums_simple_passive_skill_process_ok process_ok
  #--------------------------------------------------------------------------
  # ● 決定ボタンが押されたときの処理
  #--------------------------------------------------------------------------
  def process_ok
    if self.is_a?(Window_SkillList)
      if item.is_a?(RPG::Skill)
        return if item.simple_passive?
      end
    end
    ums_simple_passive_skill_process_ok
  end
end
#==============================================================================
# ■ Window_SkillList
#------------------------------------------------------------------------------
#  スキル画面で、使用できるスキルの一覧を表示するウィンドウです。
#==============================================================================
class Window_SkillList < Window_Selectable
  alias ums_simple_passive_skill_enable? enable?
  #--------------------------------------------------------------------------
  # ● スキルを許可状態で表示するかどうか
  #--------------------------------------------------------------------------
  def enable?(item)
    if item.is_a?(RPG::Skill)
      return true if item.simple_passive?
    end
    return ums_simple_passive_skill_enable?(item)
  end
end


使用方法不難,就是添加一個技能類型叫做"主動技能"
這可以在UseSimplePassiveName = "主動技能" 這邊調整成你想要的字串
然後添加一個狀態,在狀態增加你想要的功能(如最大生命+50%之類的)
在技能那邊新增技能,類型主動技能,使用對象使用者,無法使用,然後附加狀態100%(怕附加不上去的可以加到1000%)
然後讓角色學會就會有效果了
只是這個的能力局限於狀態能夠得到的效果
作者: 凛若霜晨    时间: 2012-6-29 09:44
可以在职业的特性里加一个【体力上限*120%】,然后在技能页加一个技能【体力上限(被动)】,附加一段说明并把这个技能设置成【不能使用】,玩家看起来就是一个被动技能
作者: z2z4    时间: 2012-6-29 10:12
恩 我先试下
作者: z2z4    时间: 2012-6-29 10:23
已经可以了 不过 这个 脚本 没法 配合
http://temp.66rpg.com/forum.php? ... D368%26typeid%3D368
这个里的 养成技能类的  我刚刚把基恩那个卸掉 状态还在
作者: 若阿蟬    时间: 2012-6-29 17:33
有沒有出錯的狀況
這樣也比較好看哪裡的問題

作者: z2z4    时间: 2012-6-29 20:10
本来说 技能可以养成 被动类的  我把这个状态装备在武器上  武器拿下来了 状态还在   问题好像没什么问题
作者: 若阿蟬    时间: 2012-6-29 23:25
不太懂意思,如果是要給主動技能用的狀態讓技能附帶狀態就好了
不太明白為什麼要弄到武器上
作者: lirn    时间: 2012-6-30 09:50
不是太多的话,可以交由公共事件处理。
作者: z2z4    时间: 2012-6-30 13:26
我5楼 不是发了个 网址吗  是配合那个 脚本的   是用来 做 技能 养成类的    不管是武器还是装备  我肯定 附带 被动技能当 养成  经验满了 装备卸掉了  技能一样 还在     问题是 我技能还没学成 把装备 卸掉  那个 状态技能还在




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1