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

Project1

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

[已经解决] 如何让这个血槽只在菜单显示,战斗时不显示?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
跳转到指定楼层
1
发表于 2012-1-5 15:35:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  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. #==================================================================
复制代码

博客:我的博客

Lv2.观梦者

(?????)

梦石
0
星屑
728
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

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

  241. #--------------------------------------------------------------
  242. #  Bitmapクラスに新たな機能を追加します。
  243. #===================================================================

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

  312. #==================================================================
  313. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  314. #==================================================================
复制代码
添加了4行:
41 86(HP)
96 141(SP)
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 09:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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