Project1
标题:
战斗中的状态显示“混乱”了!
[打印本页]
作者:
失去的记忆
时间:
2009-6-2 01:32
标题:
战斗中的状态显示“混乱”了!
刚刚发现我的工程出现了一点小小的问题!
就是当敌方使用法术【混乱】的时候,我方的状态就显示混乱了,然后
敌方施法动画和我发击中动画才开始显示!这是怎么回事呢??
说白了就是先显示状态然后动画才开始显示!!!{/gg}{/gg}这要怎么改才能
回复呢?知道的告诉下,别让我发工程了,因为工程太大,我只想知道哪个地方
是管这个程序的{/wx}{/wx} [LINE]1,#dddddd[/LINE]
版务信息:版主帮忙结贴~
作者:
霜冻之狼
时间:
2009-6-2 02:00
默认工程没有这种BUG.
没有工程的话,最好说明一下自己使用过哪一些脚本.
作者:
失去的记忆
时间:
2009-6-2 06:27
#============================================================================================
# 本脚本来自www.66RPG.com,由sdxsdx转载。使用请保留此信息
#============================================================================================
#============================================
# 自定义
#============================================
class Window_BattleStatus < Window_Base
STATE_DRAW_FRAME = 20 # 状态框的间隔
STATE_DRAW_X = 160 # X 坐标
STATE_DRAW_Y = 10 # Y 坐标
STATE_DRAW_COLOR_USE = true # 文字颜色是否有效
#--------------------------------------------------------------------------
# ● ステートの文字色設定
# actor : アクター
# text : 描画文字列
#--------------------------------------------------------------------------
def state_font_color(actor, text)
if STATE_DRAW_COLOR_USE
color = normal_color
case text
when "[正常]"
color = normal_color
when "[重伤]"
color = knockout_color
when "[眩晕]"
color = Color.new(0, 255, 0, 255)
when "[毒]"
color = Color.new(128, 255, 128, 255)
when "[幻惑]"
color = Color.new(255, 255, 128, 255)
when "[沉默]"
color = Color.new(160, 160, 160, 255)
when "[混乱]"
color = Color.new(200, 255, 140, 255)
when "[睡眠]"
color = Color.new(64, 64, 200, 255)
when "[冰封]"
color = Color.new(128, 255, 255, 255)
when "[浴火]","[疯狂]","[魔神]"
color = Color.new(255, 0, 0, 255)
when "[蓄力]","[屏障]","[结界]"
color = Color.new(0, 0, 255, 255)
end
else
# STATE_DRAW_COLOR_USEがfalseの場合はデフォの処理(戦闘不能のみ赤で描画)
color = actor.hp == 0 ? knockout_color : normal_color
end
@state_sprite.bitmap.font.color = color
end
attr_accessor :state_count
alias window_battlestatus_state_draw_initialize initialize
def initialize
window_battlestatus_state_draw_initialize
# ステート表示用のカウンタを作成
@state_count = 0
# ステート表示用のスプライトを作成
@state_sprite = Sprite.new(self.viewport)
@state_sprite.bitmap = Bitmap.new(self.width - 32, self.height - 32)
@state_sprite.x = self.x + 86
@state_sprite.y = self.y + 16
@state_sprite.z = self.z + 2
# ステート表示用スプライトをリフレッシュ
state_draw_refresh
end
alias window_battlestatus_state_draw_dispose dispose
def dispose
window_battlestatus_state_draw_dispose
# ステート表示用スプライトを開放
@state_sprite.dispose
end
#--------------------------------------------------------------------------
# ● 描画用のステート文字列作成
# actor : アクター
# width : 描画先の幅
# need_normal : [正常] が必要かどうか (true / false)
#--------------------------------------------------------------------------
def make_battler_state_text(battler, width, need_normal)
# 括弧の幅を取得
brackets_width = self.contents.text_size("[]").width
# ステート名の文字列を作成
text = ""
# 実際表示するステートの配列作成
show_state = []
for i in battler.states
if $data_states[i].rating >= 1
show_state.push($data_states[i].name)
end
end
# 表示ステートの配列が空の場合は "[正常]" にする
if show_state.size == 0
if need_normal
text = "[正常]"
else
text = ""
end
else
# カウントに見合ったステートを文字列に設定
text = show_state[(@state_count / STATE_DRAW_FRAME) % show_state.size]
# 括弧をつける
text = "[" + text + "]"
end
# 完成した文字列を返す
return text
end
def state_draw_refresh
# ステート表示用のカウントを増加
@state_count += 1
# ステート更新間隔でなく、最初の更新時でなければ更新しない
return if @state_count % STATE_DRAW_FRAME != 0 and @state_count != 1
@state_sprite.bitmap.clear
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * STATE_DRAW_X + 4
if @level_up_flags[i]
@state_sprite.bitmap.font.color = normal_color
@state_sprite.bitmap.draw_text(actor_x+7, STATE_DRAW_Y, 120, 32, "升级")
else
text = make_battler_state_text(actor, 120, true)
state_font_color(actor, text)
@state_sprite.bitmap.draw_text(actor_x, STATE_DRAW_Y, 120, 32, text)
end
end
end
def draw_actor_state(actor, x, y, width = 120)
# 通常のdraw_actor_stateを実行させない為のダミー
end
end
class Scene_Battle
alias scene_battle_state_draw_update update
def update
# update毎にステート表示を更新
@status_window.state_draw_refresh
scene_battle_state_draw_update
end
end
复制代码
这是我用的脚本!就这一个,把它放在默认工程里就出现这种情况了!怎么改呢?{/gg}{/gg}
作者:
失去的记忆
时间:
2009-6-2 19:00
没人懂吗? 自顶一下!{/fn}
作者:
失去的记忆
时间:
2009-6-2 20:51
再顶一次。。。。{/wx}
作者:
紫苏
时间:
2009-6-3 18:11
这个脚本让角色的状态每隔 N 帧就自动显示下一个,并且是放在 Scene_Battle 的 update 中随时刷新,所以在开始攻击后过了 N 帧就自动刷新显示状态了
简单点可以在这句末尾加上红色部分:
@status_window.state_draw_refresh
unless @phase == 4 && @phase4_step < 6
这样如果战斗进行到 phase4(角色、敌人正在行动的时候),就让动画显示完之后才开始刷新 [LINE]1,#dddddd[/LINE]
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1