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

Project1

 找回密码
 注册会员
搜索

关于战斗血条

查看数: 3444 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2011-5-31 17:04

正文摘要:

本帖最后由 a6363635 于 2011-5-31 17:09 编辑 我用的是RTAB战斗系统。我想在战斗时显示血条。应该在哪个类里修改? 如果说用什么1.8血条脚本,我用不了,说54行有错。所以我想找个简单的方式 显示血条就可以了, ...

回复

a6363635 发表于 2011-6-1 13:40:07
jhhuang 发表于 2011-6-1 13:35
我平时在忙,有空才上论坛,有问题你还是在论坛发帖吧.
而且我也是RUBY初学者= =不懂太多问题. ...

呵呵 大家都一样啊。脚本我也是只懂皮毛的皮毛,最多改改 让我自己编我还真没那能耐 我QQ是610305654 如果你愿意 ,可以加我 呵呵
jhhuang 发表于 2011-6-1 13:35:43
本帖最后由 jhhuang 于 2011-6-1 13:36 编辑
a6363635 发表于 2011-6-1 13:34
兄弟 最后还是解决了,我舍弃了我菜单中的血条,全部用了那个清爽的血条 ,呵呵 真的很谢谢你,如果可以 ...


我平时在忙,有空才上论坛,有问题你还是在论坛发帖吧.
而且我也是RUBY初学者= =不懂太多问题.

评分

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

查看全部评分

a6363635 发表于 2011-6-1 13:34:06
jhhuang 发表于 2011-6-1 11:54
你可能其他脚本又定义了.

把这个脚本里面的

兄弟 最后还是解决了,我舍弃了我菜单中的血条,全部用了那个清爽的血条 ,呵呵 真的很谢谢你,如果可以的话 想做个朋友 以后不懂的可以问问你,行吗
a6363635 发表于 2011-6-1 13:18:29
jhhuang 发表于 2011-6-1 11:54
你可能其他脚本又定义了.

把这个脚本里面的

嗯,我也发现,我把这段脚本放在很下面 就是战斗错误 放在window_battlestatus就是运行就错了。我觉得RTAB中有问题吧。但是用原版的,就是没经过你修改的,却能很正常运行,哎。。
a6363635 发表于 2011-6-1 13:01:22
jhhuang 发表于  
你可能其他脚本又定义了.

把这个脚本里面的

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

点评

其实新建一个工程,把这两个脚本放进去测试没问题,你肯定是其他地方定义了.  发表于 2011-6-1 13:04
jhhuang 发表于 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条
要在什么地方改,自己看着办
jhhuang 发表于 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. #==================================================================
复制代码
a6363635 发表于 2011-5-31 21:44:24
jhhuang 发表于 2011-5-31 21:42
好像没看到你这脚本里有定义Window_MenuStatus类的=.=
"不过我菜单和状态里已经实现显示血条了,那该怎么处 ...

是显示了2种血条。所以我想菜单是我菜单的血条。战斗时就这个脚本的血条好了 就是不知道怎么处理,是要注释掉一些语句吗
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-27 06:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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