赞 | 0 |
VIP | 136 |
好人卡 | 4 |
积分 | 1 |
经验 | 2058 |
最后登录 | 2013-1-17 |
在线时间 | 142 小时 |
Lv1.梦旅人 辉瑞中国首席研究员<
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 142 小时
- 注册时间
- 2008-1-18
- 帖子
- 2129
|
本帖最后由 dbshy 于 2009-9-2 21:39 编辑
我现在越来越佩服这个RTAB的作者了 >_<
为什么会停下来,这个说来话长
因为窗口的at槽在refresh,所以会不断增长
具体请全局搜索at_refresh方法
先看下面这段- case @phase
- when 0 # ATゲージ更新フェーズ
- [color=Magenta]if anime_wait_return
- update_phase0[/color]
- end
- when 1 # プレバトルフェーズ
- update_phase1
- return
- when 2 # パーティコマンドフェーズ
- update_phase2
- return
- when 5 # アフターバトルフェーズ
- update_phase5
- return
- end
- if $scene != self
- return
- end
- if @phase == 0
- if @command.size != 0 # アクターコマンドフェーズ
- if @command_a == false
- start_phase3
- end
- update_phase3
- end
- # ウェイト中の場合
- if @wait_count > 0
- # ウェイトカウントを減らす
- @wait_count -= 1
- return
- end
- update_phase4
- end
复制代码 其中的update_phase0就是刷新每个队员和敌人的at值的
具体代码就是- battler.at += battler.agi
- if battler.guarding?
- battler.at += battler.agi
- end
- if battler.movable?
- battler.atp = 100 * battler.at / @max
- end
复制代码 不过在运行这段的时候,前面有个
if anime_wait_return
内容见下
def anime_wait_return
if (@action_battlers.empty? or @anime_wait == false) and
not $game_system.battle_interpreter.running?
# エネミーアローが有効の場合
if @enemy_arrow != nil
return [@active - 2, 0].min == 0
# アクターアローが有効の場合
elsif @actor_arrow != nil
return [@active - 2, 0].min == 0
# スキルウィンドウが有効の場合
elsif @skill_window != nil
return [@active - 3, 0].min == 0
# アイテムウィンドウが有効の場合
elsif @item_window != nil
return [@active - 3, 0].min == 0 # アクターコマンドウィンドウが有効の場合
elsif @actor_command_window.active
return [@active - 1, 0].min == 0
else
return true
end
else
return false
end
end
注意加色的那一段,全局搜索@active = 1
所以返回false,那么就不会刷新增加at的那一段
综上所述,就停下来了
说完了,好累.....
不知道偶讲清楚没有>_< |
|