赞 | 0 |
VIP | 2 |
好人卡 | 0 |
积分 | 1 |
经验 | 3917 |
最后登录 | 2013-8-12 |
在线时间 | 16 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 16 小时
- 注册时间
- 2009-9-20
- 帖子
- 232
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 p7l8k90 于 2010-8-31 17:01 编辑
就这个,应该怎么解决?
汗……这就是默认脚本啊,game_battler2啊,随便新建一个工程都有的,我以为不用发……好吧,我发脚本……
#==============================================================================
# ■ Game_Battler (分割定义 2)
#------------------------------------------------------------------------------
# 处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 检查状态
# state_id : 状态 ID
#--------------------------------------------------------------------------
def state?(state_id)
# 如果符合被附加的状态的条件就返回 ture
return @states.include?(state_id)
end
#--------------------------------------------------------------------------
# ● 判断状态是否为 full
# state_id : 状态 ID
#--------------------------------------------------------------------------
def state_full?(state_id)
# 如果符合被附加的状态的条件就返回 false
unless self.state?(state_id)
return false
end
# 秩序回合数 -1 (自动状态) 然后返回 true
if @states_turn[state_id] == -1
return true
end
# 当持续回合数等于自然解除的最低回合数时返回 ture
return @states_turn[state_id] == $data_states[state_id].hold_turn
end
#--------------------------------------------------------------------------
# ● 附加状态
# state_id : 状态 ID
# force : 强制附加标志 (处理自动状态时使用)
#--------------------------------------------------------------------------
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.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)
add_state(i)
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
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
#--------------------------------------------------------------------------
# ● 解除状态
# state_id : 状态 ID
# force : 强制解除标志 (处理自动状态时使用)
#--------------------------------------------------------------------------
def remove_state(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
end
#--------------------------------------------------------------------------
# ● 获取状态的动画 ID
#--------------------------------------------------------------------------
def state_animation_id
# 一个状态也没被附加的情况下
if @states.size == 0
return 0
end
# 返回概率最大的状态动画 ID
return $data_states[@states[0]].animation_id
end
#--------------------------------------------------------------------------
# ● 获取限制
#--------------------------------------------------------------------------
def restriction
restriction_max = 0
# 从当前附加的状态中获取最大的 restriction
for i in @states
if $data_states.restriction >= restriction_max
restriction_max = $data_states.restriction
end
end
return restriction_max
end
#--------------------------------------------------------------------------
# ● 判断状态 [无法获得 EXP]
#--------------------------------------------------------------------------
def cant_get_exp?
for i in @states
if $data_states.cant_get_exp
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● 判断状态 [无法回避攻击]
#--------------------------------------------------------------------------
def cant_evade?
for i in @states
if $data_states.cant_evade
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● 判断状态 [连续伤害]
#--------------------------------------------------------------------------
def slip_damage?
for i in @states
if $data_states.slip_damage
return true
end
end
return false
end
#--------------------------------------------------------------------------
# ● 解除战斗用状态 (战斗结束时调用)
#--------------------------------------------------------------------------
def remove_states_battle
for i in @states.clone
if $data_states.battle_only
remove_state(i)
end
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_state(i)
end
end
end
#--------------------------------------------------------------------------
# ● 状态攻击解除 (受到物理伤害时调用)
#--------------------------------------------------------------------------
def remove_states_shock
for i in @states.clone
if rand(100) < $data_states.shock_release_prob
remove_state(i)
end
end
end
#--------------------------------------------------------------------------
# ● 状态变化 (+) 的适用
# plus_state_set : 状态变化 (+)
#--------------------------------------------------------------------------
def states_plus(plus_state_set)
# 清除有效标志
effective = false
# 循环 (附加状态)
for i in plus_state_set
# 无法防御本状态的情况下
unless self.state_guard?(i)
# 这个状态如果不是 full 的话就设置有效标志
effective |= self.state_full?(i) == false
# 状态为 [不能抵抗] 的情况下
if $data_states.nonresistance
# 设置状态变化标志
@state_changed = true
# 附加状态
add_state(i)
# 这个状态不是 full 的情况下
elsif self.state_full?(i) == false
# 将状态的有效度变换为概率、与随机数比较
if rand(100) < [0,100,80,60,40,20,0][self.state_ranks]
# 设置状态变化标志
@state_changed = true
# 附加状态
add_state(i)
end
end
end
end
# 过程结束
return effective
end
#--------------------------------------------------------------------------
# ● 状态变化 (-) 的使用
# minus_state_set : 状态变化 (-)
#--------------------------------------------------------------------------
def states_minus(minus_state_set)
# 清除有效标志
effective = false
# 循环 (解除状态)
for i in minus_state_set
# 如果这个状态被附加则设置有效标志
effective |= self.state?(i)
# 设置状态变化标志
@state_changed = true
# 解除状态
remove_state(i)
end
# 过程结束
return effective
end
end
那,就是这个了,系统说260行,也就是这句if rand(100) < [0,100,80,60,40,20,0][self.state_ranks],这回再次请问,该如何解决?
此问题暂时已经解决,大体原因是因为我添加了一个状态……结果就出了这种错误,把它一删掉就不出……太奇怪了……一年后估计还会提此问题…… |
|