回复谷绿:
神思兄的脚本代码刚刚看了一下,若残云猜得不错,以下这一段应该就是用于判断CP满时,各Actor应采取的行动:
if battler.cp == battler.maxcp
case battler
when Game_Actor
@ttbar[battler].bitmap = RPG::Cache.system("actor_active")
unless ActorBar[battler.id].nil?
bitmap = RPG::Cache.system(ActorBar[battler.id][1])
else
bitmap = RPG::Cache.system(CP_缺省的角色[1])
end
@ttbar[battler].bitmap.blt(0,2,bitmap,bitmap.rect)
when Game_Enemy
@ttbar[battler].bitmap = RPG::Cache.system("enemy_active")
unless EnemyBar[battler.id].nil?
bitmap = RPG::Cache.system(EnemyBar[battler.id][1])
else
bitmap = RPG::Cache.system(CP_缺省的敌人[1])
end
@ttbar[battler].bitmap.blt(12,0,bitmap,bitmap.rect)
end
个人感觉,神思兄的Code,从逻辑上讲似乎还有疏漏。所谓条件判断逻辑,最大的忌讳便是多个条件子集的累加并非全集。简单而言,针对于A、B两实体,严密的条件判断逻辑应该是:
如果A且非B
do something……
如果B且非A
do something……
如果A且B
do something……
而神思兄的逻辑为:
如果A
do something……
如果B
do something……
假如出现A且B的情况,则可能发生错乱。谷绿所说的bug,可能由此而来。
不过,说到底本人还是新人,以上纯属个人推测,如有不当之处,还望谷绿以及各位前辈见谅~