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

Project1

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

[已经过期] 显示血条的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
51 小时
注册时间
2011-4-23
帖子
54
跳转到指定楼层
1
发表于 2011-5-15 20:33:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一段显示血条的脚本
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————

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

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

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

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

  26. class Window_Base < Window
  27.   #--------------------------------------------------------------------------
  28.   # ● HP ゲージの描画
  29.   #--------------------------------------------------------------------------
  30.   # オリジナルのHP描画を draw_actor_hp_original と名前変更
  31.   alias :draw_actor_hp_original :draw_actor_hp
  32.    def draw_actor_hp(actor, x, y, width = 144)
  33.     # 変数rateに 現在のHP/MHPを代入
  34.     if actor.maxhp != 0
  35.       rate = actor.hp.to_f / actor.maxhp
  36.     else
  37.       rate = 0
  38.     end
  39.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  40.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  41.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  42.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  43.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  44.     plus_x = 0
  45.     rate_x = 0
  46.     plus_y = 25
  47.     plus_width = 0
  48.     rate_width = 100
  49.     height = 10
  50.     align1 = 1
  51.     align2 = 2
  52.     align3 = 0
  53.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  54.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  55.     grade1 = 1
  56.     grade2 = 0
  57.     # 色設定。color1:外枠,color2:中枠
  58.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  59.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  60.     color1 = Color.new(0, 0, 0, 192)
  61.     color2 = Color.new(255, 255, 192, 192)
  62.     color3 = Color.new(0, 0, 0, 192)
  63.     color4 = Color.new(64, 0, 0, 192)
  64.     color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
  65.     color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
  66.     # 変数spに描画するゲージの幅を代入
  67.     if actor.maxhp != 0
  68.       hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
  69.     else
  70.       hp = 0
  71.     end
  72.     # ゲージの描画
  73.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  74.                 width, plus_width + width * rate_width / 100,
  75.                 height, hp, align1, align2, align3,
  76.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  77.     # オリジナルのHP描画処理を呼び出し
  78.     draw_actor_hp_original(actor, x, y, width)
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● SP ゲージの描画
  82.   #--------------------------------------------------------------------------
  83.   # オリジナルのSP描画を draw_actor_sp_original と名前変更
  84.   alias :draw_actor_sp_original :draw_actor_sp
  85.   def draw_actor_sp(actor, x, y, width = 144)
  86.     # 変数rateに 現在のSP/MSPを代入
  87.     if actor.maxsp != 0
  88.       rate = actor.sp.to_f / actor.maxsp
  89.     else
  90.       rate = 1
  91.     end
  92.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  93.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  94.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  95.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  96.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  97.     plus_x = 0
  98.     rate_x = 0
  99.     plus_y = 25
  100.     plus_width = 0
  101.     rate_width = 100
  102.     height = 10
  103.     align1 = 1
  104.     align2 = 2
  105.     align3 = 0
  106.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  107.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  108.     grade1 = 1
  109.     grade2 = 0
  110.     # 色設定。color1:外枠,color2:中枠
  111.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  112.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  113.     color1 = Color.new(0, 0, 0, 192)
  114.     color2 = Color.new(255, 255, 192, 192)
  115.     color3 = Color.new(0, 0, 0, 192)
  116.     color4 = Color.new(0, 64, 0, 192)
  117.     color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
  118.     color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
  119.     # 変数spに描画するゲージの幅を代入
  120.     if actor.maxsp != 0
  121.       sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
  122.     else
  123.       sp = (width + plus_width) * rate_width / 100
  124.     end
  125.     # ゲージの描画
  126.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  127.                 width, plus_width + width * rate_width / 100,
  128.                 height, sp, align1, align2, align3,
  129.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  130.     # オリジナルのSP描画処理を呼び出し
  131.     draw_actor_sp_original(actor, x, y, width)
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● EXP ゲージの描画
  135.   #--------------------------------------------------------------------------
  136.   # オリジナルのEXP描画を draw_actor_sp_original と名前変更
  137.   alias :draw_actor_exp_original :draw_actor_exp
  138.   def draw_actor_exp(actor, x, y, width = 204)
  139.     # 変数rateに 現在のexp/nextexpを代入
  140.     if actor.next_exp != 0
  141.       rate = actor.now_exp.to_f / actor.next_exp
  142.     else
  143.       rate = 1
  144.     end
  145.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  146.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  147.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  148.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  149.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  150.     plus_x = 0
  151.     rate_x = 0
  152.     plus_y = 25
  153.     plus_width = 0
  154.     rate_width = 100
  155.     height = 10
  156.     align1 = 1
  157.     align2 = 2
  158.     align3 = 0
  159.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  160.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  161.     grade1 = 1
  162.     grade2 = 0
  163.     # 色設定。color1:外枠,color2:中枠
  164.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  165.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  166.     color1 = Color.new(0, 0, 0, 192)
  167.     color2 = Color.new(255, 255, 192, 192)
  168.     color3 = Color.new(0, 0, 0, 192)
  169.     color4 = Color.new(64, 0, 0, 192)
  170.     color5 = Color.new(80 * rate, 80 - 80 * rate ** 2, 80 - 80 * rate, 192)
  171.     color6 = Color.new(240 * rate, 240 - 240 * rate ** 2, 240 - 240 * rate, 192)
  172.     # 変数expに描画するゲージの幅を代入
  173.     if actor.next_exp != 0
  174.       exp = (width + plus_width) * actor.now_exp * rate_width /
  175.                                                           100 / actor.next_exp
  176.     else
  177.       exp = (width + plus_width) * rate_width / 100
  178.     end
  179.     # ゲージの描画
  180.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  181.                 width, plus_width + width * rate_width / 100,
  182.                 height, exp, align1, align2, align3,
  183.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  184.     # オリジナルのEXP描画処理を呼び出し
  185.     draw_actor_exp_original(actor, x, y)
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 延迟时间描画
  189.   #--------------------------------------------------------------------------
  190.   def draw_actor_delay_time(actor, x, y, width = 144)
  191.     # 変数rateに 現在のSP/MSPを代入
  192.     if actor.delay_time_max != 0
  193.       rate = actor.delay_time.to_f / actor.delay_time_max
  194.     else
  195.       rate = 0
  196.     end
  197.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  198.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  199.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  200.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  201.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  202.     plus_x = 0
  203.     rate_x = 0
  204.     plus_y = 25
  205.     plus_width = 0
  206.     rate_width = 100
  207.     height = 10
  208.     align1 = 1
  209.     align2 = 2
  210.     align3 = 0
  211.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  212.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  213.     grade1 = 1
  214.     grade2 = 0
  215.     # 色設定。color1:外枠,color2:中枠
  216.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  217.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  218.     color1 = Color.new(0, 0, 0, 192)
  219.     color2 = Color.new(255, 255, 192, 192)
  220.     color3 = Color.new(0, 0, 0, 192)
  221.     color4 = Color.new(0, 64, 0, 192)
  222.     color5 = Color.new(100 * rate, 100 * rate, 0, 192)
  223.     color6 = Color.new(255 * rate, 255 * rate, 0, 192)
  224.     # 変数spに描画するゲージの幅を代入
  225.     if actor.delay_time_max != 0
  226.       sp = (width + plus_width) * actor.delay_time * rate_width / 100 / actor.delay_time_max
  227.     else
  228.       sp = (width + plus_width) * rate_width / 100
  229.     end
  230.     # ゲージの描画
  231.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  232.                 width, plus_width + width * rate_width / 100,
  233.                 height, sp, align1, align2, align3,
  234.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  235.     # 描绘字符串 "行动时间"
  236.     self.contents.font.color = system_color
  237.     self.contents.font.size = 20
  238.     self.contents.draw_text(x, y, 120, 32, 'Delay')
  239.     self.contents.font.color = normal_color
  240.     self.contents.draw_text(x, y, 120, 32, actor.delay_time.to_s, 2)
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 咏唱时间描画
  244.   #--------------------------------------------------------------------------
  245.   def draw_actor_casting_time(actor, x, y, width = 144)
  246.     # 変数rateに 現在のSP/MSPを代入
  247.     time = actor.casting_time_max - actor.casting_time
  248.     if actor.casting_time_max != 0
  249.       rate = time.to_f / actor.casting_time_max
  250.     else
  251.       rate = 0
  252.     end
  253.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  254.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  255.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  256.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  257.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  258.     plus_x = 0
  259.     rate_x = 0
  260.     plus_y = 25
  261.     plus_width = 0
  262.     rate_width = 100
  263.     height = 10
  264.     align1 = 1
  265.     align2 = 2
  266.     align3 = 0
  267.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  268.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  269.     grade1 = 1
  270.     grade2 = 0
  271.     # 色設定。color1:外枠,color2:中枠
  272.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  273.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  274.     color1 = Color.new(0, 0, 0, 192)
  275.     color2 = Color.new(255, 255, 192, 192)
  276.     color3 = Color.new(0, 0, 0, 192)
  277.     color4 = Color.new(0, 64, 0, 192)
  278.     color5 = Color.new(100 * rate, 100 * rate, 0, 192)
  279.     color6 = Color.new(255 * rate, 255 * rate, 0, 192)
  280.     # 変数spに描画するゲージの幅を代入
  281.     if actor.casting_time_max != 0
  282.       sp = (width + plus_width) * time * rate_width / 100 / actor.casting_time_max
  283.     else
  284.       sp = (width + plus_width) * rate_width / 100
  285.     end
  286.     # ゲージの描画
  287.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  288.                 width, plus_width + width * rate_width / 100,
  289.                 height, sp, align1, align2, align3,
  290.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  291.     # 描绘字符串 "行动时间"
  292.     self.contents.font.color = system_color
  293.     self.contents.font.size = 20
  294.     self.contents.draw_text(x, y, 120, 32, 'Cast')
  295.     self.contents.font.color = normal_color
  296.     self.contents.draw_text(x, y, 120, 32, time.to_s, 2)
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● ゲージの描画
  300.   #--------------------------------------------------------------------------
  301.   def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
  302.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  303.     case align1
  304.     when 1
  305.       x += (rect_width - width) / 2
  306.     when 2
  307.       x += rect_width - width
  308.     end
  309.     case align2
  310.     when 1
  311.       y -= height / 2
  312.     when 2
  313.       y -= height
  314.     end
  315.     # 枠描画
  316.     self.contents.fill_rect(x, y, width, height, color1)
  317.     self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
  318.     if align3 == 0
  319.       if grade1 == 2
  320.         grade1 = 3
  321.       end
  322.       if grade2 == 2
  323.         grade2 = 3
  324.       end
  325.     end
  326.     if (align3 == 1 and grade1 == 0) or grade1 > 0
  327.       color = color3
  328.       color3 = color4
  329.       color4 = color
  330.     end
  331.     if (align3 == 1 and grade2 == 0) or grade2 > 0
  332.       color = color5
  333.       color5 = color6
  334.       color6 = color
  335.     end
  336.     # 空ゲージの描画
  337.     self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
  338.                                   color3, color4, grade1)
  339.     if align3 == 1
  340.       x += width - gauge
  341.     end
  342.     # 実ゲージの描画
  343.     self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
  344.                                   color5, color6, grade2)
  345.   end
  346. end

  347. #------------------------------------------------------------------------------
  348. #  Bitmapクラスに新たな機能を追加します。
  349. #==============================================================================

  350. class Bitmap
  351.   #--------------------------------------------------------------------------
  352.   # ● 矩形をグラデーション表示
  353.   #     color1 : スタートカラー
  354.   #     color2 : エンドカラー
  355.   #     align  :  0:横にグラデーション
  356.   #               1:縦にグラデーション
  357.   #               2:斜めにグラデーション(激重につき注意)
  358.   #--------------------------------------------------------------------------
  359.   def gradation_rect(x, y, width, height, color1, color2, align = 0)
  360.     if align == 0
  361.       for i in x...x + width
  362.         red   = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
  363.         green = color1.green +
  364.                 (color2.green - color1.green) * (i - x) / (width - 1)
  365.         blue  = color1.blue +
  366.                 (color2.blue - color1.blue) * (i - x) / (width - 1)
  367.         alpha = color1.alpha +
  368.                 (color2.alpha - color1.alpha) * (i - x) / (width - 1)
  369.         color = Color.new(red, green, blue, alpha)
  370.         fill_rect(i, y, 1, height, color)
  371.       end
  372.     elsif align == 1
  373.       for i in y...y + height
  374.         red   = color1.red +
  375.                 (color2.red - color1.red) * (i - y) / (height - 1)
  376.         green = color1.green +
  377.                 (color2.green - color1.green) * (i - y) / (height - 1)
  378.         blue  = color1.blue +
  379.                 (color2.blue - color1.blue) * (i - y) / (height - 1)
  380.         alpha = color1.alpha +
  381.                 (color2.alpha - color1.alpha) * (i - y) / (height - 1)
  382.         color = Color.new(red, green, blue, alpha)
  383.         fill_rect(x, i, width, 1, color)
  384.       end
  385.     elsif align == 2
  386.       for i in x...x + width
  387.         for j in y...y + height
  388.           red   = color1.red + (color2.red - color1.red) *
  389.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  390.           green = color1.green + (color2.green - color1.green) *
  391.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  392.           blue  = color1.blue + (color2.blue - color1.blue) *
  393.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  394.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  395.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  396.           color = Color.new(red, green, blue, alpha)
  397.           set_pixel(i, j, color)
  398.         end
  399.       end
  400.     elsif align == 3
  401.       for i in x...x + width
  402.         for j in y...y + height
  403.           red   = color1.red + (color2.red - color1.red) *
  404.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  405.           green = color1.green + (color2.green - color1.green) *
  406.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  407.           blue  = color1.blue + (color2.blue - color1.blue) *
  408.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  409.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  410.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  411.           color = Color.new(red, green, blue, alpha)
  412.           set_pixel(i, j, color)
  413.         end
  414.       end
  415.     end
  416.   end
  417. end
复制代码
这个显示血条的脚本并无错误,只是我想找个高手帮我改一下。这个脚本是在菜单,状态和战斗下会显示我方的血条。
可是我的菜单已经实现了这个功能,所以我想只在战斗时显示血条,我该注释掉或者删掉哪些语句呢- -日本的看不懂- -

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1500
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

2
发表于 2011-5-22 15:38:33 | 只看该作者
搜索下面三个东西~
  1.       draw_actor_exp(actor, x, y + 64)
  2.       draw_actor_hp(actor, x + 236, y + 32)
  3.       draw_actor_sp(actor, x + 236, y + 64)
复制代码
然后都改为如下~
  1.       draw_actor_exp_original(actor, x, y + 64)
  2.       draw_actor_hp_original(actor, x + 236, y + 32)
  3.       draw_actor_sp_original(actor, x + 236, y + 64)
复制代码
然后就没了~
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-20 21:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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