设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1807|回复: 3
打印 上一主题 下一主题

[已经过期] 战斗美化脚本出了问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
169 小时
注册时间
2010-11-29
帖子
172
跳转到指定楼层
1
发表于 2011-6-12 13:04:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #------------------------------------------------------------------------------
  4. #  バトル画面でパーティメンバーのステータスを表示するウィンドウです。
  5. #==============================================================================

  6. class Window_BattleStatus < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● オブジェクト初期化
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 240, 640, 240)
  12.    self.contents = Bitmap.new(width - 32, height - 32)
  13.     self.opacity = 0
  14.     @background_window = Window_Base.new(0, 320, 640, 160)
  15.     @background_window.opacity = 0
  16.     @menu = Sprite.new
  17.     @menu.y = 320
  18.     @menu.z += 1
  19.    @level_up_flags = [false, false, false, false]
  20.     refresh
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 解放
  24.   #--------------------------------------------------------------------------
  25.   def dispose
  26.     @background_window.dispose
  27.     @menu.bitmap.dispose
  28.     super
  29.   end
  30.   #--------------------------------------------------------------------------
  31.   # ● レベルアップフラグの設定
  32.   #     actor_index : アクターインデックス
  33.   #--------------------------------------------------------------------------
  34.   def level_up(actor_index)
  35.     @level_up_flags[actor_index] = true
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● レベルアップ表示
  39.   #--------------------------------------------------------------------------
  40.   def refresh_level_up
  41.     for i in 0...$game_party.actors.size
  42.       if @level_up_flags[i]
  43.         bitmap = RPG::Cache.picture("System/Battle-LevelUp")
  44.         src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  45.         self.contents.blt(i * 160, 0, bitmap, src_rect)
  46.       end
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● リフレッシュ
  51.   #--------------------------------------------------------------------------
  52.   def refresh
  53.     self.contents.clear
  54.     @item_max = $game_party.actors.size
  55.     for i in 0...$game_party.actors.size
  56.       actor = $game_party.actors[i]
  57.       actor_x = i * 160
  58.        y = height - 200
  59.       draw_actor_hp(actor, actor_x, y + 62, 14)
  60.       draw_actor_sp(actor, actor_x, y + 90, 14)
  61.       draw_actor_hpbar(actor, actor_x + 16, y + 86)
  62.       draw_actor_spbar(actor, actor_x + 16, y + 114)
  63.       draw_actor_state(actor, actor_x, y + 132)
  64.       draw_actor_name(actor, actor_x, y + 36)
  65.     end
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ★ HPバー の描画
  69.   #     actor : アクター
  70.   #     x     : 描画先 X 座標
  71.   #     y     : 描画先 Y 座標
  72.   #--------------------------------------------------------------------------
  73.   def draw_actor_hpbar(actor, x, y)
  74.     bitmap = RPG::Cache.picture("空槽")
  75.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  76.     self.contents.blt(x, y, bitmap, src_rect)
  77.     bitmap = RPG::Cache.picture("血槽")
  78.     cx = actor.hp * 100 / actor.maxhp
  79.     src_rect = Rect.new(0, 0, cx, bitmap.height)
  80.     self.contents.blt(x + 103 - cx, y + 2, bitmap, src_rect)
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ★ SPバー の描画
  84.   #     actor : アクター
  85.   #     x     : 描画先 X 座標
  86.   #     y     : 描画先 Y 座標
  87.   #--------------------------------------------------------------------------
  88.   def draw_actor_spbar(actor, x, y)
  89.     bitmap = RPG::Cache.picture("空槽")
  90.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  91.     self.contents.blt(x, y, bitmap, src_rect)
  92.     bitmap = RPG::Cache.picture("气槽")
  93.     cx = actor.sp * 100 / actor.maxsp
  94.     src_rect = Rect.new(0, 0, cx, bitmap.height)
  95.     self.contents.blt(x + 103 - cx, y + 2, bitmap, src_rect)
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● HP の描画
  99.   #     actor : アクター
  100.   #     x     : 描画先 X 座標
  101.   #     y     : 描画先 Y 座標
  102.   #--------------------------------------------------------------------------
  103.   def draw_actor_hp(actor, x, y, size = 16)
  104.     bitmap = RPG::Cache.picture("HP字样")
  105.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  106.     self.contents.blt(x, y + 4, bitmap, src_rect)
  107.     # HP を描画
  108.     x += 32
  109.     self.contents.font.size = size
  110.     self.contents.font.italic = true
  111.     color = actor.hp == 0 ? knockout_color :
  112.       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  113.     draw_text_custom(x, y, 42, 32, actor.hp.to_s, color, 2)
  114.     self.contents.font.italic = false
  115.     draw_text_normal(x + 42, y, 16, 32, "/", 1)
  116.     self.contents.font.italic = true
  117.     # MaxHP を描画
  118.     draw_text_normal(x + 54, y, 42, 32, actor.maxhp.to_s, 2)
  119.     self.contents.font.italic = false
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● SP の描画
  123.   #     actor : アクター
  124.   #     x     : 描画先 X 座標
  125.   #     y     : 描画先 Y 座標
  126.   #--------------------------------------------------------------------------
  127.   def draw_actor_sp(actor, x, y, size = 16)
  128.     bitmap = RPG::Cache.picture("MP字样")
  129.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  130.     self.contents.blt(x, y + 4, bitmap, src_rect)
  131.     # SP を描画
  132.     x += 32
  133.     self.contents.font.size = size
  134.     self.contents.font.italic = true
  135.     color = actor.sp == 0 ? knockout_color :
  136.       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  137.     draw_text_custom(x, y, 42, 32, actor.sp.to_s, color, 2)
  138.     self.contents.font.italic = false
  139.     draw_text_normal(x + 42, y, 16, 32, "/", 1)
  140.     self.contents.font.italic = true
  141.     # MaxSP を描画
  142.     draw_text_normal(x + 54, y, 42, 32, actor.maxsp.to_s, 2)
  143.     self.contents.font.italic = false
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ★ 文字列(影つき:通常色・無効色あり)の描画
  147.   #--------------------------------------------------------------------------
  148.   def draw_text_custom(x, y, width, height, str, color, align = 0)
  149.     self.contents.font.color = Color.new(36, 24, 16, 224)
  150.     self.contents.draw_text(x + 1, y + 1, width, height, str, align)
  151.     self.contents.font.color = color
  152.     self.contents.draw_text(x, y, width, height, str, align)
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ★ 文字列(影つき:通常色)の描画
  156.   #--------------------------------------------------------------------------
  157.   def draw_text_normal(x, y, width, height, str, align = 0)
  158.     self.contents.font.color = Color.new(36, 24, 16, 224)
  159.     self.contents.draw_text(x + 1, y + 1, width, height, str, align)
  160.     self.contents.font.color = normal_color
  161.     self.contents.draw_text(x, y, width, height, str, align)
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● フレーム更新
  165.   #--------------------------------------------------------------------------
  166.   def update
  167.     super
  168.     # メインフェーズのときは不透明度をやや下げる
  169.     if $game_temp.battle_main_phase
  170.       self.contents_opacity -= 4 if self.contents_opacity > 192
  171.       self.z = 50
  172.     else
  173.       self.contents_opacity += 4 if self.contents_opacity < 255
  174.       self.z = 200
  175.     end
  176.   end
  177. end
复制代码
就是这个,说是第28行发生了NoMethodError,脚本盲表示不懂...






不知为啥,3MB的工程文件上传不上来...

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

2
发表于 2011-6-12 15:06:03 | 只看该作者
错误截图。

点评

错误截图?什么东西?  发表于 2011-6-13 13:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
169 小时
注册时间
2010-11-29
帖子
172
3
 楼主| 发表于 2011-6-17 23:17:53 | 只看该作者
自顶帖子
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
255
在线时间
227 小时
注册时间
2009-7-26
帖子
216
4
发表于 2011-6-17 23:31:43 | 只看该作者
2L 的意思是让你在出错的时候截图然后发上来,这样大家才知道你的错误具体是什么

我看28行是 @menu.bitmap.dispose
这个出错一般是位图没有初始化或者是初始化了后来又释放了⋯⋯

我猜你的错误是这个dispose方法被多次调用了,发生了释放已经释放过了的位图的问题

如果你改成
  1. @menu.bitmap.dispose if @menu != nil and @menu.bitmap != nil
复制代码
也许能解决问题
(抱歉,手边没有工具测试代码是否正确)

评分

参与人数 1星屑 +300 梦石 +2 收起 理由
「旅」 + 300 + 2

查看全部评分

不要吐槽我⋯⋯
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-26 05:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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