幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2640|回复: 1

[原创]RMXP的战斗bug解决方案

[复制链接]

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2006-3-4 03:43:35 | 显示全部楼层 |阅读模式
最近考试结束,所以出来发点东西。本来呢RMXP的东西似乎有专版,不过我要发的和脚本有关系,但又不完全是脚本的东西。发在RMXP区怕违反版规,发在RMXP区里面的RGSS区,又觉得不爽,因为多了一层就意味着少了一票观众,所以发在这里。

废话完毕,斑竹觉得不合适可以随便转移:)


话说最近写战斗相关的新系统,发现了一些RGSS默认脚本设计不合理的地方,姑且称为bug,有两处:
1、人物如果带着循环动画进入战斗,那么在人物战斗图显示之前,循环动画的第一帧会先刷在屏幕上面。等到画面transition结束,循环动画第一帧消失,接下来才和人物战斗图一起渐渐出现。
可能描述的比较复杂,大家凑合理解吧。总之,从美观考虑,战斗进入时人物战斗图没有显示的时候,循环动画不应该先显示。

2、这个Bug有些人大概遇到过,进入战斗有几率人物僵直不动。必须在其身上强制播放动画才能解决这个问题。否则动画设置里面的人物消失项就无效了,并且这个状态会存入存档中。

具体分析过程有空再说,因为我这只是我一家之言。加入下面的脚本在我测试的范围内,可以解决上述bug,脚本放在mian之前。
  1. #==============================================================================
  2. # ☆★☆ 战斗场面修正 ☆★☆
  3. #------------------------------------------------------------------------------
  4. # - FantasyDR
  5. # - 2006.3.4
  6. #------------------------------------------------------------------------------
  7. # MSN: [email]FantasyDR_SJL@hotmail.com[/email]
  8. #------------------------------------------------------------------------------
  9. # Note:
  10. #   1、战斗场景多更新一帧,保证循环动画同人物一起appear
  11. #   2、进入和退出战斗场景,清除人物身上的动画id,防止僵死
  12. #==============================================================================
  13. #==============================================================================
  14. # ■ Spriteset_Battle
  15. #==============================================================================
  16. class Spriteset_Battle
  17.   alias :fdr_DEBUG_Spriteset_Battle_initialize :initialize
  18.   #--------------------------------------------------------------------------
  19.   # ● 初始化战斗场景,更新1帧以保证循环动画未显示
  20.   #--------------------------------------------------------------------------
  21.   def initialize
  22.     fdr_DEBUG_Spriteset_Battle_initialize
  23.     if Graphics.frame_count % 2 != 0
  24.       Graphics.update
  25.     end
  26.     update
  27.   end
  28. end
  29. #==============================================================================
  30. # ■ Scene_Battle
  31. #==============================================================================
  32. class Scene_Battle
  33.   alias :fdr_DEBUG_Scene_Battle_main :main
  34.   #--------------------------------------------------------------------------
  35.   # ● 进入和退出战斗场景时,调用清除方法
  36.   #--------------------------------------------------------------------------
  37.   def main   
  38.     remove_damage_error
  39.     fdr_DEBUG_Scene_Battle_main
  40.    
  41.     remove_damage_error
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 清除人物身上的动画id
  45.   #--------------------------------------------------------------------------
  46.   def remove_damage_error
  47.     $game_party.actors.each do |battler|
  48.       battler.damage = nil
  49.       battler.animation_id = 0
  50.     end
  51.   end
  52. end
复制代码

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复

使用道具 举报

91

主题

3188

帖子

83986万

积分

荣誉群

传说中的Bunny大神~!

积分
839861514
QQ
发表于 2006-3-5 16:39:44 | 显示全部楼层
好东西,顶一个。。。还有关于那个锥形视野系统的脚本。。。你解决问题了吗?  [s:3]
其他所有的Bunny神都素我的部下XD~ 小教程范例收集 Orz感谢邪恶萝卜联盟!!!(原因自己去猜)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-20 13:02 , Processed in 0.025650 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表