Project1
标题:
战斗美化脚本出了问题
[打印本页]
作者:
j12345678905022
时间:
2011-6-12 13:04
标题:
战斗美化脚本出了问题
#==============================================================================
# ■ Window_BattleStatus
#------------------------------------------------------------------------------
# バトル画面でパーティメンバーのステータスを表示するウィンドウです。
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 240, 640, 240)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
@background_window = Window_Base.new(0, 320, 640, 160)
@background_window.opacity = 0
@menu = Sprite.new
@menu.y = 320
@menu.z += 1
@level_up_flags = [false, false, false, false]
refresh
end
#--------------------------------------------------------------------------
# ● 解放
#--------------------------------------------------------------------------
def dispose
@background_window.dispose
@menu.bitmap.dispose
super
end
#--------------------------------------------------------------------------
# ● レベルアップフラグの設定
# actor_index : アクターインデックス
#--------------------------------------------------------------------------
def level_up(actor_index)
@level_up_flags[actor_index] = true
end
#--------------------------------------------------------------------------
# ● レベルアップ表示
#--------------------------------------------------------------------------
def refresh_level_up
for i in 0...$game_party.actors.size
if @level_up_flags[i]
bitmap = RPG::Cache.picture("System/Battle-LevelUp")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(i * 160, 0, bitmap, src_rect)
end
end
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160
y = height - 200
draw_actor_hp(actor, actor_x, y + 62, 14)
draw_actor_sp(actor, actor_x, y + 90, 14)
draw_actor_hpbar(actor, actor_x + 16, y + 86)
draw_actor_spbar(actor, actor_x + 16, y + 114)
draw_actor_state(actor, actor_x, y + 132)
draw_actor_name(actor, actor_x, y + 36)
end
end
#--------------------------------------------------------------------------
# ★ HPバー の描画
# actor : アクター
# x : 描画先 X 座標
# y : 描画先 Y 座標
#--------------------------------------------------------------------------
def draw_actor_hpbar(actor, x, y)
bitmap = RPG::Cache.picture("空槽")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(x, y, bitmap, src_rect)
bitmap = RPG::Cache.picture("血槽")
cx = actor.hp * 100 / actor.maxhp
src_rect = Rect.new(0, 0, cx, bitmap.height)
self.contents.blt(x + 103 - cx, y + 2, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# ★ SPバー の描画
# actor : アクター
# x : 描画先 X 座標
# y : 描画先 Y 座標
#--------------------------------------------------------------------------
def draw_actor_spbar(actor, x, y)
bitmap = RPG::Cache.picture("空槽")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(x, y, bitmap, src_rect)
bitmap = RPG::Cache.picture("气槽")
cx = actor.sp * 100 / actor.maxsp
src_rect = Rect.new(0, 0, cx, bitmap.height)
self.contents.blt(x + 103 - cx, y + 2, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# ● HP の描画
# actor : アクター
# x : 描画先 X 座標
# y : 描画先 Y 座標
#--------------------------------------------------------------------------
def draw_actor_hp(actor, x, y, size = 16)
bitmap = RPG::Cache.picture("HP字样")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(x, y + 4, bitmap, src_rect)
# HP を描画
x += 32
self.contents.font.size = size
self.contents.font.italic = true
color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
draw_text_custom(x, y, 42, 32, actor.hp.to_s, color, 2)
self.contents.font.italic = false
draw_text_normal(x + 42, y, 16, 32, "/", 1)
self.contents.font.italic = true
# MaxHP を描画
draw_text_normal(x + 54, y, 42, 32, actor.maxhp.to_s, 2)
self.contents.font.italic = false
end
#--------------------------------------------------------------------------
# ● SP の描画
# actor : アクター
# x : 描画先 X 座標
# y : 描画先 Y 座標
#--------------------------------------------------------------------------
def draw_actor_sp(actor, x, y, size = 16)
bitmap = RPG::Cache.picture("MP字样")
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(x, y + 4, bitmap, src_rect)
# SP を描画
x += 32
self.contents.font.size = size
self.contents.font.italic = true
color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
draw_text_custom(x, y, 42, 32, actor.sp.to_s, color, 2)
self.contents.font.italic = false
draw_text_normal(x + 42, y, 16, 32, "/", 1)
self.contents.font.italic = true
# MaxSP を描画
draw_text_normal(x + 54, y, 42, 32, actor.maxsp.to_s, 2)
self.contents.font.italic = false
end
#--------------------------------------------------------------------------
# ★ 文字列(影つき:通常色・無効色あり)の描画
#--------------------------------------------------------------------------
def draw_text_custom(x, y, width, height, str, color, align = 0)
self.contents.font.color = Color.new(36, 24, 16, 224)
self.contents.draw_text(x + 1, y + 1, width, height, str, align)
self.contents.font.color = color
self.contents.draw_text(x, y, width, height, str, align)
end
#--------------------------------------------------------------------------
# ★ 文字列(影つき:通常色)の描画
#--------------------------------------------------------------------------
def draw_text_normal(x, y, width, height, str, align = 0)
self.contents.font.color = Color.new(36, 24, 16, 224)
self.contents.draw_text(x + 1, y + 1, width, height, str, align)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width, height, str, align)
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
# メインフェーズのときは不透明度をやや下げる
if $game_temp.battle_main_phase
self.contents_opacity -= 4 if self.contents_opacity > 192
self.z = 50
else
self.contents_opacity += 4 if self.contents_opacity < 255
self.z = 200
end
end
end
复制代码
就是这个,说是第28行发生了NoMethodError,脚本盲表示不懂...
不知为啥,3MB的工程文件上传不上来...
作者:
忧雪の伤
时间:
2011-6-12 15:06
错误截图。
作者:
j12345678905022
时间:
2011-6-17 23:17
自顶帖子
作者:
darkscout3000
时间:
2011-6-17 23:31
2L 的意思是让你在出错的时候截图然后发上来,这样大家才知道你的错误具体是什么
我看28行是 @menu.bitmap.dispose
这个出错一般是位图没有初始化或者是初始化了后来又释放了⋯⋯
我猜你的错误是这个dispose方法被多次调用了,发生了释放已经释放过了的位图的问题
如果你改成
@menu.bitmap.dispose if @menu != nil and @menu.bitmap != nil
复制代码
也许能解决问题
(抱歉,手边没有工具测试代码是否正确)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1