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

Project1

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

讓HP、SP數值描繪在血槽、氣槽上面。。

 关闭 [复制链接]

Lv1.梦旅人

空靈

梦石
0
星屑
50
在线时间
11 小时
注册时间
2006-7-27
帖子
521
跳转到指定楼层
1
发表于 2008-9-29 20:26:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想讓HP、SP數值描繪在值槽上面。。而不是被蓋住。。
被蓋住的。。

下面是我的腳本。。-V-
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————

  4. #==============================================================================
  5. # ■ Game_Actor
  6. #------------------------------------------------------------------------------
  7. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  8. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  9. #==============================================================================

  10. class Game_Actor < Game_Battler
  11. #--------------------------------------------------------------------------
  12. # ● 取得战斗画面的 X 坐标
  13. #--------------------------------------------------------------------------
  14. def screen_x
  15. case self.index
  16. when 0
  17.    return 350
  18. when 1
  19.    return 430
  20. when 2
  21.    return 510
  22. when 3
  23.    return 580
  24. else
  25.    return 600

  26.   end
  27. end
  28. #--------------------------------------------------------------------------
  29. # ● 取得战斗画面的 Y 坐标
  30. #--------------------------------------------------------------------------
  31. def screen_y
  32. case self.index
  33. when 0
  34.    return 430
  35. when 1
  36.    return 395
  37. when 2
  38.    return 360
  39. when 3
  40.    return 325
  41. else
  42.    return 1000
  43.   end
  44. end
  45. #--------------------------------------------------------------------------
  46. # ● 取得战斗画面的 Z 坐标
  47. #--------------------------------------------------------------------------
  48. def screen_z
  49. case self.index
  50. when 0
  51.    return 10
  52. when 1
  53.    return 9
  54. when 2
  55.    return 8
  56. when 3
  57.    return 7
  58. else
  59.    return 0
  60.    end
  61. end
  62. end


  63. #==============================================================================
  64. # ■ Window_Base
  65. #------------------------------------------------------------------------------
  66. #  游戏中全部窗口的超级类。
  67. #==============================================================================

  68. class Window_Base < Window
  69. #--------------------------------------------------------------------------
  70. # ● 描绘 HP
  71. #     actor : 角色
  72. #     x     : 描画目标 X 坐标
  73. #     y     : 描画目标 Y 坐标
  74. #     width : 描画目标的宽
  75. #--------------------------------------------------------------------------
  76. def draw_actor_hp1(actor, x, y, width = 72)
  77.    # 描绘字符串 "HP"
  78.    self.contents.font.color = system_color
  79.    self.contents.draw_text(x, y, 24, 24, $data_system.words.hp)
  80.    # 计算描绘 MaxHP 所需的空间
  81.    if width - 24 >= 32
  82.      hp_x = x + 32# + width - 24
  83.    end
  84.    # 描绘 HP
  85.    self.contents.font.color = actor.hp == 0 ? knockout_color :
  86.      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  87.    self.contents.draw_text(hp_x, y, 32, 24, actor.hp.to_s, 2)
  88. end
  89. #--------------------------------------------------------------------------
  90. # ● 描绘 SP
  91. #     actor : 角色
  92. #     x     : 描画目标 X 坐标
  93. #     y     : 描画目标 Y 坐标
  94. #     width : 描画目标的宽
  95. #--------------------------------------------------------------------------
  96. def draw_actor_sp1(actor, x, y, width = 72)
  97.    # 描绘字符串 "SP"
  98.    self.contents.font.color = system_color
  99.    self.contents.draw_text(x, y, 24, 24, $data_system.words.sp)
  100.    # 计算描绘 MaxSP 所需的空间
  101.    if width - 24 >= 32
  102.      sp_x = x + 32# + width - 24
  103.    end
  104.    # 描绘 SP
  105.    self.contents.font.color = actor.sp == 0 ? knockout_color :
  106.      actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  107.    self.contents.draw_text(sp_x, y, 32, 24, actor.sp.to_s, 2)
  108. end
  109. end





  110. #==============================================================================
  111. # ■ Window_BattleStatus
  112. #------------------------------------------------------------------------------
  113. #  显示战斗画面同伴状态的窗口。
  114. #==============================================================================

  115. class Window_BattleStatus < Window_Base
  116. #--------------------------------------------------------------------------
  117. # ● 初始化对像
  118. #--------------------------------------------------------------------------
  119. #$data_system_level_up_me = "Audio/ME/升级音乐"
  120. def initialize
  121.    super(0, 0, 640, 480)
  122.    self.contents = Bitmap.new(width - 10, height - 32)
  123.    self.opacity = 0
  124.    @level_up_flags = [false, false, false, false]
  125.    refresh
  126. end
  127. #--------------------------------------------------------------------------
  128. # ● 释放
  129. #--------------------------------------------------------------------------
  130. def dispose
  131.    super
  132. end
  133. #--------------------------------------------------------------------------
  134. # ● 设置升级标志
  135. #     actor_index : 角色索引
  136. #--------------------------------------------------------------------------
  137. def level_up(actor_index)
  138.    @level_up_flags[actor_index] = true
  139. end
  140. #--------------------------------------------------------------------------
  141. # ● 刷新
  142. #--------------------------------------------------------------------------
  143. def refresh
  144.    self.contents.clear
  145.    @item_max = $game_party.actors.size
  146.     for i in 0...$game_party.actors.size
  147.      actor = $game_party.actors[i]
  148.      
  149.       x = i * 125
  150.       a = actor.id.to_s + "_b"
  151.       bitmap=Bitmap.new("Graphics/Battlersface/#{a}")  
  152.       src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  153.       self.contents.blt(110 + x , 376, bitmap, src_rect)
  154.       
  155.    case i
  156.        when 0
  157.         x = 171
  158.         y = 406
  159.        when 1
  160.         x = 296
  161.         y = 406
  162.        when 2
  163.         x = 421
  164.         y = 406
  165.        when 3
  166.         x = 546
  167.         y = 406
  168.       end
  169.      if @level_up_flags[i]
  170.        self.contents.font.color = normal_color
  171.        self.contents.draw_text(x, y, 80, 24, "修為提升!")
  172.        Audio.me_stop
  173.         Audio.me_play($data_system_level_up_me)

  174.      else
  175.      self.contents.font.size = 12
  176.      draw_actor_hp1(actor, x-15, y-15, 80)
  177.      self.contents.font.size = 12
  178.      draw_actor_sp1(actor, x-15, y+5, 80)
  179.      self.contents.font.size = 12
  180.     end
  181.    end
  182. end
  183. #--------------------------------------------------------------------------
  184. # ● 刷新画面
  185. #--------------------------------------------------------------------------
  186. def update
  187.    super
  188.    # 主界面的不透明度下降
  189.    if $game_temp.battle_main_phase
  190.      self.contents_opacity -= 50 if self.contents_opacity > 1
  191.    else
  192.      self.contents_opacity += 50 if self.contents_opacity < 255
  193.    end
  194. end
  195. end





  196. #==============================================================================
  197. # ■ Window_BattleStatus
  198. #==============================================================================
  199. class Window_BattleStatus < Window_Base
  200. #--------------------------------------------------------------------------
  201. # ● 初始化
  202. #--------------------------------------------------------------------------
  203. alias xrxs_bp2_refresh refresh
  204. def refresh
  205.    xrxs_bp2_refresh
  206.    @item_max = $game_party.actors.size
  207.     for i in 0...$game_party.actors.size
  208.      actor = $game_party.actors[i]
  209.      case i
  210.        when 0
  211.         x = 169
  212.         y = 394
  213.        when 1
  214.         x = 294
  215.         y = 394
  216.        when 2
  217.         x = 419
  218.         y = 394
  219.        when 3
  220.         x = 544
  221.         y = 394
  222.       end
  223.      draw_actor_hp_meter(actor, x, y)
  224.      draw_actor_sp_meter(actor, x, y + 19)
  225.    end
  226. end
  227. end
  228. #==============================================================================
  229. # ■ Window_Base
  230. #==============================================================================
  231. class Window_Base < Window
  232. #--------------------------------------------------------------------------
  233. # ● HP描画
  234. #--------------------------------------------------------------------------
  235.   def draw_actor_hp_meter(actor,x,y)
  236.     width = 50
  237.     white = Color.new(255,255,255,200)
  238.     black = Color.new(0,0,0,200)
  239.     startcolor = Color.new(255,0,0,200)
  240.     endcolor = Color.new(255,255,0,200)
  241.     w = width * actor.hp / actor.maxhp
  242.     #白色边框
  243.     self.contents.fill_rect(x+1, y+11, width-2, 1, white)
  244.     self.contents.fill_rect(x, y+12, width, 1, white)
  245.     self.contents.fill_rect(x-1, y+13, width+2, 9, white)
  246.     self.contents.fill_rect(x, y+22, width, 1, white)
  247.     self.contents.fill_rect(x+1, y+23, width-2, 1, white)
  248.     #黑色背景
  249.     self.contents.fill_rect(x+2, y+12, width-4, 1, black)
  250.     self.contents.fill_rect(x+1, y+13, width-2, 1, black)
  251.     self.contents.fill_rect(x, y+14, width, 7, black)
  252.     self.contents.fill_rect(x+1, y+21, width-2, 1, black)
  253.     self.contents.fill_rect(x+2, y+22, width-4, 1, black)
  254.   if w > width/2
  255.     draw_line(x+1, y+12, x+w-3, y+12, startcolor, 1, endcolor)
  256.     draw_line(x, y+13, x+w-2, y+13, startcolor, 1, endcolor)
  257.     draw_line(x-1, y+14, x+w-1, y+14, startcolor, 1, endcolor)
  258.     draw_line(x-1, y+15, x+w-1, y+15, startcolor, 1, endcolor)
  259.     draw_line(x-1, y+16, x+w-1, y+16, startcolor, 1, endcolor)
  260.     draw_line(x-1, y+17, x+w-1, y+17, startcolor, 1, endcolor)
  261.     draw_line(x-1, y+18, x+w-1, y+18, startcolor, 1, endcolor)
  262.     draw_line(x-1, y+19, x+w-1, y+19, startcolor, 1, endcolor)
  263.     draw_line(x-1, y+20, x+w-1, y+20, startcolor, 1, endcolor)
  264.     draw_line(x, y+21, x+w-2, y+21, startcolor, 1, endcolor)
  265.     draw_line(x+1, y+22, x+w-3, y+22, startcolor, 1, endcolor)
  266.   else
  267.     draw_line(x+1, y+12, x+w+2, y+12, startcolor, 1, endcolor)
  268.     draw_line(x, y+13, x+w+1, y+13, startcolor, 1, endcolor)
  269.     draw_line(x-1, y+14, x+w, y+14, startcolor, 1, endcolor)
  270.     draw_line(x-1, y+15, x+w, y+15, startcolor, 1, endcolor)
  271.     draw_line(x-1, y+16, x+w, y+16, startcolor, 1, endcolor)
  272.     draw_line(x-1, y+17, x+w, y+17, startcolor, 1, endcolor)
  273.     draw_line(x-1, y+18, x+w, y+18, startcolor, 1, endcolor)
  274.     draw_line(x-1, y+19, x+w, y+19, startcolor, 1, endcolor)
  275.     draw_line(x-1, y+20, x+w, y+20, startcolor, 1, endcolor)
  276.     draw_line(x, y+21, x+w+1, y+21, startcolor, 1, endcolor)
  277.     draw_line(x+1, y+22, x+w+2, y+22, startcolor, 1, endcolor)
  278.   end
  279.   end
  280.   def draw_actor_sp_meter(actor,x,y)
  281.     width = 50
  282.     white = Color.new(255,255,255,200)
  283.     black = Color.new(0,0,0,200)
  284.     startcolor = Color.new(0,0,255,200)
  285.     endcolor = Color.new(0,255,255,200)
  286.     w = width * actor.sp / actor.maxsp
  287.     #白色边框
  288.     self.contents.fill_rect(x+1, y+11, width-2, 1, white)
  289.     self.contents.fill_rect(x, y+12, width, 1, white)
  290.     self.contents.fill_rect(x-1, y+13, width+2, 9, white)
  291.     self.contents.fill_rect(x, y+22, width, 1, white)
  292.     self.contents.fill_rect(x+1, y+23, width-2, 1, white)
  293.     #黑色背景
  294.     self.contents.fill_rect(x+2, y+12, width-4, 1, black)
  295.     self.contents.fill_rect(x+1, y+13, width-2, 1, black)
  296.     self.contents.fill_rect(x, y+14, width, 7, black)
  297.     self.contents.fill_rect(x+1, y+21, width-2, 1, black)
  298.     self.contents.fill_rect(x+2, y+22, width-4, 1, black)
  299.   if w > width/2
  300.     draw_line(x+1, y+12, x+w-3, y+12, startcolor, 1, endcolor)
  301.     draw_line(x, y+13, x+w-2, y+13, startcolor, 1, endcolor)
  302.     draw_line(x-1, y+14, x+w-1, y+14, startcolor, 1, endcolor)
  303.     draw_line(x-1, y+15, x+w-1, y+15, startcolor, 1, endcolor)
  304.     draw_line(x-1, y+16, x+w-1, y+16, startcolor, 1, endcolor)
  305.     draw_line(x-1, y+17, x+w-1, y+17, startcolor, 1, endcolor)
  306.     draw_line(x-1, y+18, x+w-1, y+18, startcolor, 1, endcolor)
  307.     draw_line(x-1, y+19, x+w-1, y+19, startcolor, 1, endcolor)
  308.     draw_line(x-1, y+20, x+w-1, y+20, startcolor, 1, endcolor)
  309.     draw_line(x, y+21, x+w-2, y+21, startcolor, 1, endcolor)
  310.     draw_line(x+1, y+22, x+w-3, y+22, startcolor, 1, endcolor)
  311.   else
  312.     draw_line(x+1, y+12, x+w+1, y+12, startcolor, 1, endcolor)
  313.     draw_line(x, y+13, x+w, y+13, startcolor, 1, endcolor)
  314.     draw_line(x-1, y+14, x+w-1, y+14, startcolor, 1, endcolor)
  315.     draw_line(x-1, y+15, x+w-1, y+15, startcolor, 1, endcolor)
  316.     draw_line(x-1, y+16, x+w-1, y+16, startcolor, 1, endcolor)
  317.     draw_line(x-1, y+17, x+w-1, y+17, startcolor, 1, endcolor)
  318.     draw_line(x-1, y+18, x+w-1, y+18, startcolor, 1, endcolor)
  319.     draw_line(x-1, y+19, x+w-1, y+19, startcolor, 1, endcolor)
  320.     draw_line(x-1, y+20, x+w-1, y+20, startcolor, 1, endcolor)
  321.     draw_line(x, y+21, x+w, y+21, startcolor, 1, endcolor)
  322.     draw_line(x+1, y+22, x+w+1, y+22, startcolor, 1, endcolor)
  323.   end
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● ライン描画 by 桜雅 在土
  327.   #--------------------------------------------------------------------------
  328.   def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
  329.     # 描写距離の計算。大きめに直角時の長さ。
  330.     distance = (start_x - end_x).abs + (start_y - end_y).abs
  331.     # 描写開始
  332.     if end_color == start_color
  333.       for i in 1..distance
  334.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  335.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  336.         if width == 1
  337.           self.contents.set_pixel(x, y, start_color)
  338.         else
  339.           self.contents.fill_rect(x, y, width, width, start_color)
  340.         end
  341.       end
  342.     else
  343.       for i in 1..distance
  344.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  345.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  346.         r = start_color.red * (distance-i)/distance + end_color.red * i/distance
  347.         g = start_color.green * (distance-i)/distance + end_color.green * i/distance
  348.         b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
  349.         a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
  350.         if width == 1
  351.           self.contents.set_pixel(x, y, Color.new(r, g, b, a))
  352.         else
  353.           self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
  354.         end
  355.       end
  356.     end
  357.   end
  358. end
复制代码


版务信息:本贴由楼主自主结贴~

星星在哪里都是很亮的,就看你有沒有抬頭去看他們                       --------華麗麗的百變暖暖窩
本人之作《夙誓》龜速進行中。。= =!

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

2
发表于 2008-9-29 20:31:58 | 只看该作者
     draw_actor_hp(actor, x, y)
     draw_actor_sp(actor, x, y + 19)

这两句加在Battle_Status你描绘血条的语句的下面看看吧,因为没有你脚本里的图片,没法测试可行性。

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

天空幻想者

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-5-5
帖子
563
3
发表于 2008-9-29 20:32:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

空靈

梦石
0
星屑
50
在线时间
11 小时
注册时间
2006-7-27
帖子
521
4
 楼主| 发表于 2008-9-29 20:35:57 | 只看该作者
以下引用天圣的马甲于2008-9-29 12:31:58的发言:


    draw_actor_hp(actor, x, y)
    draw_actor_sp(actor, x, y + 19)


这两句加在Battle_Status你描绘血条的语句的下面看看吧,因为没有你脚本里的图片,没法测试可行性。

會更亂的說。。-V-。。我好像沒說清楚。。-V-。。就是讓數值顯示在值槽的上層。。不被蓋住。。

星星在哪里都是很亮的,就看你有沒有抬頭去看他們                       --------華麗麗的百變暖暖窩
本人之作《夙誓》龜速進行中。。= =!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

5
发表于 2008-9-29 20:42:01 | 只看该作者
咳-v-b这正是我觉得奇怪和难办的地方……
明明默认工程的测试上没问题……
你看看你描绘HP和SP的语句在哪里,最好和描绘血条的语句放在一起……应该和Z值无关才对……

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

空靈

梦石
0
星屑
50
在线时间
11 小时
注册时间
2006-7-27
帖子
521
6
 楼主| 发表于 2008-9-29 20:43:47 | 只看该作者
以下引用天圣的马甲于2008-9-29 12:42:01的发言:

咳-v-b这正是我觉得奇怪和难办的地方……
明明默认工程的测试上没问题……
你看看你描绘HP和SP的语句在哪里,最好和描绘血条的语句放在一起……应该和Z值无关才对……

是描繪血槽的位置麼?。。

星星在哪里都是很亮的,就看你有沒有抬頭去看他們                       --------華麗麗的百變暖暖窩
本人之作《夙誓》龜速進行中。。= =!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

空靈

梦石
0
星屑
50
在线时间
11 小时
注册时间
2006-7-27
帖子
521
7
 楼主| 发表于 2008-9-29 20:46:01 | 只看该作者
哦。。我知道放哪裡了。。謝謝天聖大人。。

星星在哪里都是很亮的,就看你有沒有抬頭去看他們                       --------華麗麗的百變暖暖窩
本人之作《夙誓》龜速進行中。。= =!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-23 20:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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