查看: 1715|回复: 2

[已经解决] 关于连续两回合不能附加同一状态

[复制链接]
梦石
0
星屑
50
在线时间
12 小时
注册时间
2015-7-25
回帖
3
发表于 2016-6-21 17:36:28 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
现在我有一个状态【刚体】,使用后该回合内减伤50%。设置为
自动解除的时机:回合结束时
持续回合数:1~1
现在问题来了,当主角使用后确实附加了该状态,并能在本回合结束时失去效果,但在下一回合使用时发现无法附加该状态,只有隔一回合后才能再次使用,求指教啊

点评

试着把回合结束,改成行动结束试试。  发表于 2016-6-27 09:52
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2016-6-22 10:34:38 | 显示全部楼层
状态消失后附加另一个状态
[pre lang="ruby"]
#==============================================================================
# ■ RGSS3 ステート解除時ステート Ver2.00 by 星潟
#------------------------------------------------------------------------------
# 特定のステート解除時に、自動的に付与されるステートを作成します。
#------------------------------------------------------------------------------
# ★設定例
#------------------------------------------------------------------------------
# <解除時ステート:2,3>
# このステートが解除された際、ステート2と3にかかる。
# この効果は有効度が0の場合とステート無効の場合は無効となる。
# (有効度が1以上99以下であっても、0以外の場合は無視する)
#------------------------------------------------------------------------------
# <強制解除時ステート:2,3>
# このステートが解除された際、ステート2と3にかかる。
# このステート付与は有効度の影響を受けない。
# (ステート無効の影響は受ける)
#------------------------------------------------------------------------------
# <自然解除時ステート:2,3>
# このステートがターン経過・歩数によって解除された際、ステート2と3にかかる。
# この効果は有効度が0の場合とステート無効の場合は無効となる。
# (有効度が1以上99以下であっても、0以外の場合は無視する)
#------------------------------------------------------------------------------
# <強制自然解除時ステート:2,3>
# このステートがターン経過・歩数によって解除された際、ステート2と3にかかる。
# このステート付与は有効度の影響を受けない。
# (ステート無効の影響は受ける)
#------------------------------------------------------------------------------
# <戦闘終了時解除付与有効>
# 通常、このスクリプトの効果は戦闘終了時の解除には効果がありませんが
# このキーワードが指定されたステートについては戦闘終了時の解除時も影響します。
# (ただし、処理が繰り返されないので、これによって付与されたステートも
#   戦闘終了時に解除されるステートだった場合は、そちらは解除されません)
#==============================================================================
# Ver1.01
# 該当ステートがかかっていない状態でも、そのステートを解除しようとした際に
# ステート解除時ステートの効果が発動してしまう不具合を修正しました。
# Ver1.02
# 複数ステート指定時、正常に機能しない不具合を修正しました。
# Ver1.03
# キャッシュ化等による処理高速化を行いました。
# Ver1.04
# 自然解除時用の処理を追加しました。
# 解除時の物と違い、ステートの効果時間が切れた際にのみ新規ステートが付与されます。
# Ver1.05
# 記述ミスを修正。
# Ver2.00
# 更に処理を効率化。
# 戦闘終了時のステート解除時には解除時ステート判定を行わないように変更。
# これに併せて、戦闘終了時のステート解除時にも解除時ステート判定を
# 行うようにするステートの設定機能を追加。
#==============================================================================
module RST_STATE
  
  Word = []
  
  #解除時ステート(有効度判定有り)設定用キーワードを指定します。
  
  Word[0] = "解除時ステート"
  
  #解除時ステート(有効度判定無し)設定用キーワードを指定します。
  
  Word[1] = "強制解除時ステート"
  
  #自然解除時ステート(有効度判定有り)設定用キーワードを指定します。
  
  Word[2] = "自然解除時ステート"
  
  #自然解除時ステート(有効度判定無し)設定用キーワードを指定します。
  
  Word[3] = "強制自然解除時ステート"
  
  #戦闘終了時のステート解除でも解除時ステート判定を行うようにするステートの
  #設定用キーワードを指定します。
  
  Word[4] = "戦闘終了時解除付与有効"
  
end

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ステート自動解除
  #--------------------------------------------------------------------------
  alias remove_states_rst_state remove_states_auto
  def remove_states_auto(timing)
    @auto_remove_time_flag = true
    remove_states_rst_state(timing)
    @auto_remove_time_flag = nil
  end
  #--------------------------------------------------------------------------
  # ステートの解除
  #--------------------------------------------------------------------------
  alias remove_state_rst_state remove_state
  def remove_state(state_id)
    return unless state?(state_id)
    state_add_state(state_id)
    remove_state_rst_state(state_id)
  end
  def state_add_state(state_id)
    s = $data_states[state_id]
    return if @bers_flag && !s.battle_end_rst_state
    s.rst_state(0).each {|i| add_state(i)  if state_rate(i) > 0}
    s.rst_state(1).each {|i| add_state(i)}
    return if @auto_remove_time_flag == nil
    s.rst_state(2).each {|i| add_state(i)  if state_rate(i) > 0}
    s.rst_state(3).each {|i| add_state(i)}
  end
  #--------------------------------------------------------------------------
  # 戦闘用ステートの解除
  #--------------------------------------------------------------------------
  alias remove_battle_states_rst_state remove_battle_states
  def remove_battle_states
    @bers_flag = true
    remove_battle_states_rst_state
    @bers_flag = false
  end
end
class RPG::State < RPG::BaseItem
  #--------------------------------------------------------------------------
  # 解除時ステートデータまとめ
  #--------------------------------------------------------------------------
  def rst_state(type)
    @rst_state ||= {}
    @rst_state[type] ||= rst_state_make(type)
  end
  #--------------------------------------------------------------------------
  # 解除時ステートデータ作成
  #--------------------------------------------------------------------------
  def rst_state_make(type)
    a = []
    b = /<#{RST_STATE::Word[type]}[::](\S+)>/ =~ note ? $1.to_s.split(/\s*,\s*/) : []
    b.each {|i| a.push(i.to_i)}
    a
  end
  #--------------------------------------------------------------------------
  # 戦闘終了時のステート解除でも解除判定を行うか?
  #--------------------------------------------------------------------------
  def battle_end_rst_state
    @battle_end_rst_state ||= note.include?("<" + RST_STATE::Word[4] + ">")
  end
end
[/pre]


用这个状态消失之后自动附加另一个状态的脚本,再做一个免疫刚体的状态,让刚体消失之后附加免疫效果

评分

参与人数 1梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
12 小时
注册时间
2015-7-25
回帖
3
 楼主| 发表于 2016-6-25 16:13:18 | 显示全部楼层
jianyulei 发表于 2016-6-22 10:34
[fold=状态消失后附加另一个状态]

#================================================================== ...

抱歉没有理解你的意思。
设置两个状态,刚体和免疫刚体,刚体结束后自动附加免疫,那下一回合不是无法附加刚体效果了吗

点评

是我弄错了不好意思,我以为你是要2回合不附加统一状态。 另外,你的情况我没遇见过,我1-1的状态每回合都能正常附加,看看是不是脚本重写了  发表于 2016-6-28 11:22
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部