| 赞 | 1  | 
 
| VIP | 0 | 
 
| 好人卡 | 0 | 
 
| 积分 | 92 | 
 
| 经验 | 0 | 
 
| 最后登录 | 2025-9-28 | 
 
| 在线时间 | 466 小时 | 
 
 
 
 
 
Lv4.逐梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 9155 
 
        - 在线时间
 - 466 小时
 
        - 注册时间
 - 2015-5-8
 
        - 帖子
 - 867
 
 
 
 | 
	
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员  
 
x
 
 本帖最后由 taeckle 于 2022-8-3 04:06 编辑  
 
大家好, 
 
我这问题首先有两个状态, 这两个状态一个是5号状态,一个是8号状态,  
5号状态在数据库里设置为经过20回合后100%自动解除, 8号状态一旦附加成功则直到战斗结束永远不会自动解除。 
 
现在我想把默认脚本中的class Game_Battler的那个def add_state(state_id, force = false)稍微改一改, 
从而达到若自身有5号状态且5号状态回合剩余数大于10的话则免疫8号状态的效果,  
下面代码里第34行至44行是我自己为此写的, 也不知道对不对, 还请大家过目, 指点一二, 多谢了: 
 
-   def add_state(state_id, force = false) 
 
 -     # 无效状态的情况下
 
 -     if $data_states[state_id] == nil
 
 -       # 过程结束
 
 -       return
 
 -     end
 
 -     # 无法强制附加的情况下
 
 -     unless force
 
 -       # 已存在的状态循环
 
 -       for i in @states
 
 -         # 新的状态和已经存在的状态 (-) 同时包含的情况下、
 
 -         # 本状态不包含变化为新状态的状态变化 (-) 
 
 -         # (ex : 战斗不能与附加中毒同时存在的场合)
 
 -         if $data_states[i].minus_state_set.include?(state_id) and
 
 -            not $data_states[state_id].minus_state_set.include?(i)
 
 -           # 过程结束
 
 -           return
 
 -         end
 
 -       end
 
 -     end
 
 -     # 无法附加本状态的情况下
 
 -     unless state?(state_id)
 
 -       # 状态 ID 追加到 @states 序列中
 
 -       @states.push(state_id)
 
  
-       # 选项 [当作 HP 0 的状态] 有效的情况下
 
 -       if $data_states[state_id].zero_hp
 
 -         # HP 更改为 0
 
 -         @hp = 0
 
 -       end
 
 -       # 所有状态的循环
 
 -       for i in 1...$data_states.size
 
 -         # 状态变化 (+) 处理
 
 -         if $data_states[state_id].plus_state_set.include?(i) #这是我自己改的
 
 -           if [8].include?(i) #这是我自己改的
 
 -             if self.state?(5) && self.states_turn[5]>=10  #这是我自己改的
 
 -           remove_state(i) #这是我自己改的
 
 -             else #这是我自己改的
 
 -           add_state(i) #这是我自己改的
 
 -             end   #这是我自己改的       
 
 -           else  #这是我自己改的
 
 -           add_state(i) #这是我自己改的
 
 -           end #这是我自己改的
 
 -         end #这是我自己改的
 
 -         # 状态变化 (-) 处理
 
 -         if $data_states[state_id].minus_state_set.include?(i)
 
 -           
 
 -           remove_state(i)
 
 -           
 
 -         end
 
 -       end
 
 -       # 按比例大的排序 (值相等的情况下按照强度排序)
 
 -       @states.sort! do |a, b|
 
 -         state_a = $data_states[a]
 
 -         state_b = $data_states[b]
 
 -         if state_a.rating > state_b.rating
 
 -           -1
 
 -         elsif state_a.rating < state_b.rating
 
 -           +1
 
 -         elsif state_a.restriction > state_b.restriction
 
 -           -1
 
 -         elsif state_a.restriction < state_b.restriction
 
 -           +1
 
 -         else
 
 -           a <=> b
 
 -         end
 
 -       end
 
 -     end
 
 -     # 强制附加的场合
 
 -     if force
 
 -       # 设置为自然解除的最低回数 -1 (无效)
 
 -       @states_turn[state_id] = -1
 
 -     end
 
 -     # 不能强制附加的场合
 
 -     unless  @states_turn[state_id] == -1
 
 -       # 设置为自然解除的最低回数
 
 -       @states_turn[state_id] = $data_states[state_id].hold_turn
 
 -     end
 
 -     # 无法行动的场合
 
 -     unless movable?
 
 -       # 清除行动
 
 -       @current_action.clear
 
 -     end
 
 -     # 检查 HP 及 SP 的最大值
 
 -     @hp = [@hp, self.maxhp].min
 
 -     @sp = [@sp, self.maxsp].min
 
 -   end
 
  复制代码 
 |   
 
 
 
 |