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

Project1

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

[已经解决] 关于战斗血条

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2011-4-23
帖子
54
跳转到指定楼层
1
发表于 2011-5-31 17:04:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 a6363635 于 2011-5-31 17:09 编辑

我用的是RTAB战斗系统。我想在战斗时显示血条。应该在哪个类里修改?
如果说用什么1.8血条脚本,我用不了,说54行有错。所以我想找个简单的方式
显示血条就可以了,哪位大哥会?
  1. #===============================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #===============================================================


  4. # ——————————————————————————————

  5. # HP/SP/EXPゲージ表示スクリプト Ver 1.00
  6. # 配布元・サポートURL
  7. # http://members.jcom.home.ne.jp/cogwheel/

  8. #===============================================================
  9. # ■ Game_Actor
  10. #--------------------------------------------------------
  11. #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors)
  12. # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。
  13. #==============================================================

  14. class Game_Actor < Game_Battler
  15.   def now_exp
  16.     return @exp - @exp_list[@level]
  17.   end
  18.   def next_exp
  19.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  20.   end
  21. end

  22. #==========================================================
  23. # ■ Window_Base
  24. #------------------------------------------------------------
  25. #  ゲーム中のすべてのウィンドウのスーパークラスです。
  26. #============================================================

  27. class Window_Base < Window
  28.   #--------------------------------------------------------
  29.   # ● HP ゲージの描画
  30.   #--------------------------------------------------
  31.   # オリジナルのHP描画を draw_actor_hp_original と名前変更
  32.   alias :draw_actor_hp_original :draw_actor_hp
  33.   def draw_actor_hp(actor, x, y, width = 144)
  34.     # 変数rateに 現在のHP/MHPを代入
  35.     if actor.maxhp != 0
  36.       rate = actor.hp.to_f / actor.maxhp
  37.     else
  38.       rate = 0
  39.     end
  40.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  41.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  42.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  43.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  44.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  45.     plus_x = 0
  46.     rate_x = 0
  47.     plus_y = 25
  48.     plus_width = 0
  49.     rate_width = 100
  50.     height = 10
  51.     align1 = 1
  52.     align2 = 2
  53.     align3 = 0
  54.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  55.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  56.     grade1 = 1
  57.     grade2 = 0
  58.     # 色設定。color1:外枠,color2:中枠
  59.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  60.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  61.     color1 = Color.new(0, 0, 0, 192)
  62.     color2 = Color.new(255, 255, 192, 192)
  63.     color3 = Color.new(0, 0, 0, 192)
  64.     color4 = Color.new(64, 0, 0, 192)
  65.     color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
  66.     color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
  67.     # 変数spに描画するゲージの幅を代入
  68.     if actor.maxhp != 0
  69.       hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
  70.     else
  71.       hp = 0
  72.     end
  73.     # ゲージの描画
  74.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  75.                 width, plus_width + width * rate_width / 100,
  76.                 height, hp, align1, align2, align3,
  77.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  78.     # オリジナルのHP描画処理を呼び出し
  79.     draw_actor_hp_original(actor, x, y, width)
  80.   end
  81.   #--------------------------------------------------------------
  82.   # ● SP ゲージの描画
  83.   #------------------------------------------------------------
  84.   # オリジナルのSP描画を draw_actor_sp_original と名前変更
  85.   alias :draw_actor_sp_original :draw_actor_sp
  86.   def draw_actor_sp(actor, x, y, width = 144)
  87.     # 変数rateに 現在のSP/MSPを代入
  88.     if actor.maxsp != 0
  89.       rate = actor.sp.to_f / actor.maxsp
  90.     else
  91.       rate = 1
  92.     end
  93.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  94.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  95.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  96.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  97.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  98.     plus_x = 0
  99.     rate_x = 0
  100.     plus_y = 25
  101.     plus_width = 0
  102.     rate_width = 100
  103.     height = 10
  104.     align1 = 1
  105.     align2 = 2
  106.     align3 = 0
  107.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  108.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  109.     grade1 = 1
  110.     grade2 = 0
  111.     # 色設定。color1:外枠,color2:中枠
  112.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  113.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  114.     color1 = Color.new(0, 0, 0, 192)
  115.     color2 = Color.new(255, 255, 192, 192)
  116.     color3 = Color.new(0, 0, 0, 192)
  117.     color4 = Color.new(0, 64, 0, 192)
  118.     color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
  119.     color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
  120.     # 変数spに描画するゲージの幅を代入
  121.     if actor.maxsp != 0
  122.       sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
  123.     else
  124.       sp = (width + plus_width) * rate_width / 100
  125.     end
  126.     # ゲージの描画
  127.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  128.                 width, plus_width + width * rate_width / 100,
  129.                 height, sp, align1, align2, align3,
  130.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  131.     # オリジナルのSP描画処理を呼び出し
  132.     draw_actor_sp_original(actor, x, y, width)
  133.   end
  134.   #--------------------------------------------------------
  135.   # ● EXP ゲージの描画
  136.   #----------------------------------------------------------
  137.   # オリジナルのEXP描画を draw_actor_sp_original と名前変更
  138.   alias :draw_actor_exp_original :draw_actor_exp
  139.   def draw_actor_exp(actor, x, y, width = 204)
  140.     # 変数rateに 現在のexp/nextexpを代入
  141.     if actor.next_exp != 0
  142.       rate = actor.now_exp.to_f / actor.next_exp
  143.     else
  144.       rate = 1
  145.     end
  146.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  147.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  148.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  149.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  150.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  151.     plus_x = 0
  152.     rate_x = 0
  153.     plus_y = 25
  154.     plus_width = 0
  155.     rate_width = 100
  156.     height = 10
  157.     align1 = 1
  158.     align2 = 2
  159.     align3 = 0
  160.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  161.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  162.     grade1 = 1
  163.     grade2 = 0
  164.     # 色設定。color1:外枠,color2:中枠
  165.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  166.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  167.     color1 = Color.new(0, 0, 0, 192)
  168.     color2 = Color.new(255, 255, 192, 192)
  169.     color3 = Color.new(0, 0, 0, 192)
  170.     color4 = Color.new(64, 0, 0, 192)
  171.     color5 = Color.new(80 * rate, 80 - 80 * rate ** 2, 80 - 80 * rate, 192)
  172.     color6 = Color.new(240 * rate, 240 - 240 * rate ** 2, 240 - 240 * rate, 192)
  173.     # 変数expに描画するゲージの幅を代入
  174.     if actor.next_exp != 0
  175.       exp = (width + plus_width) * actor.now_exp * rate_width /
  176.                                                           100 / actor.next_exp
  177.     else
  178.       exp = (width + plus_width) * rate_width / 100
  179.     end
  180.     # ゲージの描画
  181.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  182.                 width, plus_width + width * rate_width / 100,
  183.                 height, exp, align1, align2, align3,
  184.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  185.     # オリジナルのEXP描画処理を呼び出し
  186.     draw_actor_exp_original(actor, x, y)
  187.   end
  188.   #---------------------------------------------------------
  189.   # ● ゲージの描画
  190.   #-----------------------------------------------------
  191.   def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
  192.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  193.     case align1
  194.     when 1
  195.       x += (rect_width - width) / 2
  196.     when 2
  197.       x += rect_width - width
  198.     end
  199.     case align2
  200.     when 1
  201.       y -= height / 2
  202.     when 2
  203.       y -= height
  204.     end
  205.     # 枠描画
  206.     self.contents.fill_rect(x, y, width, height, color1)
  207.     self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
  208.     if align3 == 0
  209.       if grade1 == 2
  210.         grade1 = 3
  211.       end
  212.       if grade2 == 2
  213.         grade2 = 3
  214.       end
  215.     end
  216.     if (align3 == 1 and grade1 == 0) or grade1 > 0
  217.       color = color3
  218.       color3 = color4
  219.       color4 = color
  220.     end
  221.     if (align3 == 1 and grade2 == 0) or grade2 > 0
  222.       color = color5
  223.       color5 = color6
  224.       color6 = color
  225.     end
  226.     # 空ゲージの描画
  227.     self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
  228.                                   color3, color4, grade1)
  229.     if align3 == 1
  230.       x += width - gauge
  231.     end
  232.     # 実ゲージの描画
  233.     self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
  234.                                   color5, color6, grade2)
  235.   end
  236. end

  237. #--------------------------------------------------------------
  238. #  Bitmapクラスに新たな機能を追加します。
  239. #===================================================================

  240. class Bitmap
  241.   #------------------------------------------------------------
  242.   # ● 矩形をグラデーション表示
  243.   #     color1 : スタートカラー
  244.   #     color2 : エンドカラー
  245.   #     align  :  0:横にグラデーション
  246.   #               1:縦にグラデーション
  247.   #               2:斜めにグラデーション(激重につき注意)
  248.   #--------------------------------------------------------
  249.   def gradation_rect(x, y, width, height, color1, color2, align = 0)
  250.     if align == 0
  251.       for i in x...x + width
  252.         red   = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
  253.         green = color1.green +
  254.                 (color2.green - color1.green) * (i - x) / (width - 1)
  255.         blue  = color1.blue +
  256.                 (color2.blue - color1.blue) * (i - x) / (width - 1)
  257.         alpha = color1.alpha +
  258.                 (color2.alpha - color1.alpha) * (i - x) / (width - 1)
  259.         color = Color.new(red, green, blue, alpha)
  260.         fill_rect(i, y, 1, height, color)
  261.       end
  262.     elsif align == 1
  263.       for i in y...y + height
  264.         red   = color1.red +
  265.                 (color2.red - color1.red) * (i - y) / (height - 1)
  266.         green = color1.green +
  267.                 (color2.green - color1.green) * (i - y) / (height - 1)
  268.         blue  = color1.blue +
  269.                 (color2.blue - color1.blue) * (i - y) / (height - 1)
  270.         alpha = color1.alpha +
  271.                 (color2.alpha - color1.alpha) * (i - y) / (height - 1)
  272.         color = Color.new(red, green, blue, alpha)
  273.         fill_rect(x, i, width, 1, color)
  274.       end
  275.     elsif align == 2
  276.       for i in x...x + width
  277.         for j in y...y + height
  278.           red   = color1.red + (color2.red - color1.red) *
  279.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  280.           green = color1.green + (color2.green - color1.green) *
  281.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  282.           blue  = color1.blue + (color2.blue - color1.blue) *
  283.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  284.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  285.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  286.           color = Color.new(red, green, blue, alpha)
  287.           set_pixel(i, j, color)
  288.         end
  289.       end
  290.     elsif align == 3
  291.       for i in x...x + width
  292.         for j in y...y + height
  293.           red   = color1.red + (color2.red - color1.red) *
  294.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  295.           green = color1.green + (color2.green - color1.green) *
  296.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  297.           blue  = color1.blue + (color2.blue - color1.blue) *
  298.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  299.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  300.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  301.           color = Color.new(red, green, blue, alpha)
  302.           set_pixel(i, j, color)
  303.         end
  304.       end
  305.     end
  306.   end
  307. end

  308. #==================================================================
  309. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  310. #==================================================================


复制代码
这个血条脚本用是可以用,不过我菜单和状态里已经实现显示血条了,那该怎么处理把这个脚本里菜单显示血条给去除掉?》

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2011-4-23
帖子
54
2
 楼主| 发表于 2011-5-31 21:05:22 | 只看该作者
额。。没有人会吗- - 急求啊,真的感谢的

点评

【标记】3小时自顶  发表于 2011-5-31 21:34
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
150 小时
注册时间
2011-5-29
帖子
28
3
发表于 2011-5-31 21:40:04 | 只看该作者
善用搜索功能。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
4
发表于 2011-5-31 21:42:19 | 只看该作者
好像没看到你这脚本里有定义Window_MenuStatus类的=.=
"不过我菜单和状态里已经实现显示血条了,那该怎么处理把这个脚本里菜单显示血条给去除掉?》"
你是指现在菜单显示了2种血条?还是这个脚本的血条覆盖了你原来的菜单血条效果?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2011-4-23
帖子
54
5
 楼主| 发表于 2011-5-31 21:42:39 | 只看该作者
风韵 发表于 2011-5-31 21:40
善用搜索功能。

我已尽力搜索,搜到了也不会求助了~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2011-4-23
帖子
54
6
 楼主| 发表于 2011-5-31 21:44:24 | 只看该作者
jhhuang 发表于 2011-5-31 21:42
好像没看到你这脚本里有定义Window_MenuStatus类的=.=
"不过我菜单和状态里已经实现显示血条了,那该怎么处 ...

是显示了2种血条。所以我想菜单是我菜单的血条。战斗时就这个脚本的血条好了 就是不知道怎么处理,是要注释掉一些语句吗
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
7
发表于 2011-5-31 22:45:33 | 只看该作者
本帖最后由 jhhuang 于 2011-5-31 23:21 编辑
a6363635 发表于 2011-5-31 21:44
是显示了2种血条。所以我想菜单是我菜单的血条。战斗时就这个脚本的血条好了 就是不知道怎么处理,是要注 ...


alias :draw_actor_hp_original :draw_actor_hp

  def draw_actor_hp(actor, x, y, width = 144)

你这个脚本重新定义了draw_actor_hp方法,所以在任何地方用这个方法显示HP就会显示HP血条....我把重新定义方法去掉了....改成在战斗中调用draw_actor_hp_original(去掉重新定义后改成新添加的方法.)方法.
  1. #===============================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #===============================================================


  4. # ——————————————————————————————

  5. # HP/SP/EXPゲージ表示スクリプト Ver 1.00
  6. # 配布元・サポートURL
  7. # http://members.jcom.home.ne.jp/cogwheel/

  8. #==============================================================================
  9. # ■ Window_BattleStatus
  10. #------------------------------------------------------------------------------
  11. #  显示战斗画面同伴状态的窗口。
  12. #==============================================================================

  13. class Window_BattleStatus < Window_Base
  14.   #--------------------------------------------------------------------------
  15.   # ● 刷新
  16.   #--------------------------------------------------------------------------
  17.   def refresh
  18.     self.contents.clear
  19.     @item_max = $game_party.actors.size
  20.     for i in 0...$game_party.actors.size
  21.       actor = $game_party.actors[i]
  22.       actor_x = i * 160 + 4
  23.       draw_actor_name(actor, actor_x, 0)
  24.       draw_actor_hp_original(actor, actor_x, 32, 120)
  25.       draw_actor_sp_original(actor, actor_x, 64, 120)
  26.       if @level_up_flags[i]
  27.         self.contents.font.color = normal_color
  28.         self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
  29.       else
  30.         draw_actor_state(actor, actor_x, 96)
  31.       end
  32.     end
  33.   end
  34. end

  35. #==========================================================
  36. # ■ Window_Base
  37. #------------------------------------------------------------
  38. #  ゲーム中のすべてのウィンドウのスーパークラスです。
  39. #============================================================

  40. class Window_Base < Window
  41.   #--------------------------------------------------------
  42.   # ● HP ゲージの描画
  43.   #--------------------------------------------------
  44.   # オリジナルのHP描画を draw_actor_hp_original と名前変更
  45.   alias :draw_actor_hp_original :draw_actor_hp
  46.   def draw_actor_hp_original(actor, x, y, width = 144)
  47.     # 変数rateに 現在のHP/MHPを代入
  48.     if actor.maxhp != 0
  49.       rate = actor.hp.to_f / actor.maxhp
  50.     else
  51.       rate = 0
  52.     end
  53.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  54.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  55.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  56.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  57.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  58.     plus_x = 0
  59.     rate_x = 0
  60.     plus_y = 25
  61.     plus_width = 0
  62.     rate_width = 100
  63.     height = 10
  64.     align1 = 1
  65.     align2 = 2
  66.     align3 = 0
  67.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  68.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  69.     grade1 = 1
  70.     grade2 = 0
  71.     # 色設定。color1:外枠,color2:中枠
  72.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  73.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  74.     color1 = Color.new(0, 0, 0, 192)
  75.     color2 = Color.new(255, 255, 192, 192)
  76.     color3 = Color.new(0, 0, 0, 192)
  77.     color4 = Color.new(64, 0, 0, 192)
  78.     color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
  79.     color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
  80.     # 変数spに描画するゲージの幅を代入
  81.     if actor.maxhp != 0
  82.       hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
  83.     else
  84.       hp = 0
  85.     end
  86.     # ゲージの描画
  87.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  88.                 width, plus_width + width * rate_width / 100,
  89.                 height, hp, align1, align2, align3,
  90.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  91.     # オリジナルのHP描画処理を呼び出し
  92.     draw_actor_hp(actor, x, y, width)
  93.   end
  94.   #--------------------------------------------------------------
  95.   # ● SP ゲージの描画
  96.   #------------------------------------------------------------
  97.   # オリジナルのSP描画を draw_actor_sp_original と名前変更
  98.   alias :draw_actor_sp_original :draw_actor_sp
  99.   def draw_actor_sp_original(actor, x, y, width = 144)
  100.     # 変数rateに 現在のSP/MSPを代入
  101.     if actor.maxsp != 0
  102.       rate = actor.sp.to_f / actor.maxsp
  103.     else
  104.       rate = 1
  105.     end
  106.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  107.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  108.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  109.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  110.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  111.     plus_x = 0
  112.     rate_x = 0
  113.     plus_y = 25
  114.     plus_width = 0
  115.     rate_width = 100
  116.     height = 10
  117.     align1 = 1
  118.     align2 = 2
  119.     align3 = 0
  120.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  121.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  122.     grade1 = 1
  123.     grade2 = 0
  124.     # 色設定。color1:外枠,color2:中枠
  125.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  126.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  127.     color1 = Color.new(0, 0, 0, 192)
  128.     color2 = Color.new(255, 255, 192, 192)
  129.     color3 = Color.new(0, 0, 0, 192)
  130.     color4 = Color.new(0, 64, 0, 192)
  131.     color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
  132.     color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
  133.     # 変数spに描画するゲージの幅を代入
  134.     if actor.maxsp != 0
  135.       sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
  136.     else
  137.       sp = (width + plus_width) * rate_width / 100
  138.     end
  139.     # ゲージの描画
  140.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  141.                 width, plus_width + width * rate_width / 100,
  142.                 height, sp, align1, align2, align3,
  143.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  144.     # オリジナルのSP描画処理を呼び出し
  145.     draw_actor_sp(actor, x, y, width)
  146.   end
  147.   #---------------------------------------------------------
  148.   # ● ゲージの描画
  149.   #-----------------------------------------------------
  150.   def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
  151.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  152.     case align1
  153.     when 1
  154.       x += (rect_width - width) / 2
  155.     when 2
  156.       x += rect_width - width
  157.     end
  158.     case align2
  159.     when 1
  160.       y -= height / 2
  161.     when 2
  162.       y -= height
  163.     end
  164.     # 枠描画
  165.     self.contents.fill_rect(x, y, width, height, color1)
  166.     self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
  167.     if align3 == 0
  168.       if grade1 == 2
  169.         grade1 = 3
  170.       end
  171.       if grade2 == 2
  172.         grade2 = 3
  173.       end
  174.     end
  175.     if (align3 == 1 and grade1 == 0) or grade1 > 0
  176.       color = color3
  177.       color3 = color4
  178.       color4 = color
  179.     end
  180.     if (align3 == 1 and grade2 == 0) or grade2 > 0
  181.       color = color5
  182.       color5 = color6
  183.       color6 = color
  184.     end
  185.     # 空ゲージの描画
  186.     self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
  187.                                   color3, color4, grade1)
  188.     if align3 == 1
  189.       x += width - gauge
  190.     end
  191.     # 実ゲージの描画
  192.     self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
  193.                                   color5, color6, grade2)
  194.   end
  195. end

  196. #--------------------------------------------------------------
  197. #  Bitmapクラスに新たな機能を追加します。
  198. #===================================================================

  199. class Bitmap
  200.   #------------------------------------------------------------
  201.   # ● 矩形をグラデーション表示
  202.   #     color1 : スタートカラー
  203.   #     color2 : エンドカラー
  204.   #     align  :  0:横にグラデーション
  205.   #               1:縦にグラデーション
  206.   #               2:斜めにグラデーション(激重につき注意)
  207.   #--------------------------------------------------------
  208.   def gradation_rect(x, y, width, height, color1, color2, align = 0)
  209.     if align == 0
  210.       for i in x...x + width
  211.         red   = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
  212.         green = color1.green +
  213.                 (color2.green - color1.green) * (i - x) / (width - 1)
  214.         blue  = color1.blue +
  215.                 (color2.blue - color1.blue) * (i - x) / (width - 1)
  216.         alpha = color1.alpha +
  217.                 (color2.alpha - color1.alpha) * (i - x) / (width - 1)
  218.         color = Color.new(red, green, blue, alpha)
  219.         fill_rect(i, y, 1, height, color)
  220.       end
  221.     elsif align == 1
  222.       for i in y...y + height
  223.         red   = color1.red +
  224.                 (color2.red - color1.red) * (i - y) / (height - 1)
  225.         green = color1.green +
  226.                 (color2.green - color1.green) * (i - y) / (height - 1)
  227.         blue  = color1.blue +
  228.                 (color2.blue - color1.blue) * (i - y) / (height - 1)
  229.         alpha = color1.alpha +
  230.                 (color2.alpha - color1.alpha) * (i - y) / (height - 1)
  231.         color = Color.new(red, green, blue, alpha)
  232.         fill_rect(x, i, width, 1, color)
  233.       end
  234.     elsif align == 2
  235.       for i in x...x + width
  236.         for j in y...y + height
  237.           red   = color1.red + (color2.red - color1.red) *
  238.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  239.           green = color1.green + (color2.green - color1.green) *
  240.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  241.           blue  = color1.blue + (color2.blue - color1.blue) *
  242.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  243.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  244.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  245.           color = Color.new(red, green, blue, alpha)
  246.           set_pixel(i, j, color)
  247.         end
  248.       end
  249.     elsif align == 3
  250.       for i in x...x + width
  251.         for j in y...y + height
  252.           red   = color1.red + (color2.red - color1.red) *
  253.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  254.           green = color1.green + (color2.green - color1.green) *
  255.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  256.           blue  = color1.blue + (color2.blue - color1.blue) *
  257.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  258.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  259.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  260.           color = Color.new(red, green, blue, alpha)
  261.           set_pixel(i, j, color)
  262.         end
  263.       end
  264.     end
  265.   end
  266. end

  267. #==================================================================
  268. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  269. #==================================================================
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2011-4-23
帖子
54
8
 楼主| 发表于 2011-6-1 11:06:43 | 只看该作者
本帖最后由 a6363635 于 2011-6-1 11:15 编辑
jhhuang 发表于 2011-5-31 22:45
alias :draw_actor_hp_original :draw_actor_hp

  def draw_actor_hp(actor, x, y, width = 144)


非常感谢这位大哥的帮忙,的确实现了在菜单中重复出现2种,但是战斗中却出了问题,就是这个错误

我也不明白这句话是什么意思。我用66上的1.8版血条也会出现这个问题。
提示上的45行,就是你发我脚本框里的23行
您能再帮忙一下吗?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
帖子
969
9
发表于 2011-6-1 11:54:08 | 只看该作者
本帖最后由 jhhuang 于 2011-6-1 12:07 编辑
a6363635 发表于 2011-6-1 11:06
非常感谢这位大哥的帮忙,的确实现了在菜单中重复出现2种,但是战斗中却出了问题,就是这个错误

我也不 ...


你可能其他脚本又定义了.

把这个脚本里面的
class Window_BattleStatus < Window_Base
这个类和内容全部删掉....


全局搜索draw_actor_hp(actor, actor_x, 32, 120)
draw_actor_sp(actor, actor_x, 62, 120)
(只修改class Window_BattleStatus < Window_Base这个类里面的)
改成
draw_actor_hp_original(actor, actor_x, 32, 120)
draw_actor_sp_original(actor, actor_x, 64, 120)

反正
draw_actor_hp(...) #显示HP
draw_actor_hp_original(...) #显示HP和HP条
要在什么地方改,自己看着办
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2011-4-23
帖子
54
10
 楼主| 发表于 2011-6-1 13:01:22 | 只看该作者
jhhuang 发表于  
你可能其他脚本又定义了.

把这个脚本里面的

多谢这位大哥的人情帮助,问题还是未能得到解决按照你所说的。的确不会出错,但是不会显示血条。算了
没就没吧,总会有办法的,也不急一时,谢谢~!

点评

其实新建一个工程,把这两个脚本放进去测试没问题,你肯定是其他地方定义了.  发表于 2011-6-1 13:04
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 01:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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