查看: 2961|回复: 2

[已经解决] 状态结束后触发脚本

[复制链接]
梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
回帖
125
发表于 2016-4-16 19:52:07 | 显示全部楼层 |阅读模式

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

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

×
今天凌晨开了请教贴,但没有自己想要的效果于是再来伸手(其实这就是伸手嘛)
我想做到4号状态自然结束后,当前结束的那位角色(或者敌人),HP等于1
于是我把脚本改成这样
  # ● 状态自然解除 (回合改变时调用)
  #--------------------------------------------------------------------------
  def remove_states_auto
    for i in @states_turn.keys.clone
      if @states_turn[i] > 0
        @states_turn[i] -= 1
      elsif rand(100) < $data_states[i].auto_release_prob
       if state?(4)
         @hp = 1
       end
      remove_state(i)
      end
    end
  end
虽然能做到预想的效果。可是也有bug。bug就是有4号状态时,自然结束任何状态,都会让hp等于1。
通过凌晨的那张贴把这个情况分析出来了,真心求帮忙!
梦石
0
星屑
80
在线时间
216 小时
注册时间
2011-9-17
回帖
125
 楼主| 发表于 2016-4-16 20:01:18 | 显示全部楼层
是不是这样写就可以了
        if i == 142
          @hp = 1
        end
回复

使用道具 举报

梦石
0
星屑
1788
在线时间
1313 小时
注册时间
2012-8-4
回帖
724
发表于 2016-4-16 20:46:57 | 显示全部楼层
状态解除
[pre lang="ruby"]class Game_Battler
  #插到Main之前
   #--------------------------------------------------------------------------
  # ● 解除状态
  #     state_id : 状态 ID
  #     force    : 强制解除标志 (处理自动状态时使用)
  #--------------------------------------------------------------------------
  def remove_state1(state_id, force = false)
    # 无法附加本状态的情况下
    if state?(state_id)
      # 被强制附加的状态、并不是强制解除的情况下
      if @states_turn[state_id] == -1 and not force
        # 过程结束
        return
      end
      # 现在的 HP 为 0 当作选项 [当作 HP 0 的状态]有效的场合
      if @hp == 0 and $data_states[state_id].zero_hp
        # 判断是否有另外的 [当作 HP 0 的状态]状态
        zero_hp = false
        for i in @states
          if i != state_id and $data_states.zero_hp
            zero_hp = true
          end
        end
        # 如果可以解除战斗不能、将 HP 更改为 1
        if zero_hp == false
          @hp = 1
        end
      end
      # 将状态 ID 从 @states 队列和 @states_turn hash 中删除
      @states.delete(state_id)
      @states_turn.delete(state_id)
    end
    # 检查 HP 及 SP 的最大值
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
    if state_id==4 #如果状态4解除
          @hp = 1
       end
  end

#--------------------------------------------------------------------------
  # ● 状态自然解除 (回合改变时调用)
  #--------------------------------------------------------------------------
  def remove_states_auto
    for i in @states_turn.keys.clone
      if @states_turn > 0
        @states_turn -= 1
      elsif rand(100) < $data_states.auto_release_prob
        remove_state1(i)#只有自然解除才执行脚本,攻击解除和使用物品类状态-不执行
      end
    end
  end
  end[/pre]



结束状态有几种情况
● 解除战斗用状态 (战斗结束时调用)
● 状态自然解除 (回合改变时调用) 上面的脚本只在这个执行A脚本
● 状态攻击解除 (受到物理伤害时调用)
● 状态变化 (-) 的使用

点评

谢啦  发表于 2016-4-16 21:00

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部