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

Project1

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

[已经解决] 如何查看敵方血量(數字)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2016-10-13
帖子
28
跳转到指定楼层
1
发表于 2017-2-6 20:36:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 sam870716 于 2017-2-7 13:38 编辑

就是...我現在已經有個裝血量滾動條 以及繪至敵方血量的腳本

但是我想要精確一點的在血量條下面多一串數字(或者直接蓋在敵方血量條上面也行)

以下是我用的滾動腳本

<
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● require Taroxd基础设置
  3. #    给值槽增加动态的滚动效果
  4. #--------------------------------------------------------------------------
  5.  
  6. class Taroxd::Transition
  7.  
  8.   # value: 当前值。changing: 当前是否正在变化
  9.   attr_reader :value, :changing
  10.  
  11.   # get_target.call 获取到变化的数据。可以使用 block 代替 get_target。
  12.   def initialize(duration, get_target = nil, &block)
  13.     @duration = duration
  14.     @get_target = get_target || block
  15.     @value = @target = @get_target.call
  16.     [url=home.php?mod=space&uid=188055]@d[/url] = 0
  17.   end
  18.  
  19.   # 更新值槽的值。如果值槽发生变化,返回 true。
  20.   def update
  21.     @target = @get_target.call
  22.     @changing = @value != @target
  23.     update_transition if @changing
  24.     @changing
  25.   end
  26.  
  27.   private
  28.  
  29.   def update_transition
  30.     @d = @duration if @d.zero?
  31.     @d -= 1
  32.     @value = if @d.zero?
  33.       @target
  34.     else
  35.       (@value * @d + @target).fdiv(@d + 1)
  36.     end
  37.   end
  38. end
  39.  
  40. # include 之后,可用 @gauge_transitions[actor][:hp] 等
  41. # 获取 Taroxd::Transition 的实例。
  42. module Taroxd::RollGauge
  43.  
  44.   Transition = Taroxd::Transition
  45.  
  46.   def initialize(*)
  47.     @gauge_transitions = make_gauge_transitions
  48.     @gauge_roll_count = 0
  49.     super
  50.   end
  51.  
  52.   def update
  53.     super
  54.     if (@gauge_roll_count += 1) >= gauge_roll_interval
  55.       roll_all_gauge if update_gauge_transitions
  56.       @gauge_roll_count = 0
  57.     end
  58.   end
  59.  
  60.   def draw_actor_hp(actor, x, y, width = 124)
  61.     hp = @gauge_transitions[actor][:hp].value
  62.     rate = hp.fdiv(actor.mhp)
  63.     draw_gauge(x, y, width, rate, hp_gauge_color1, hp_gauge_color2)
  64.     change_color(system_color)
  65.     draw_text(x, y, 30, line_height, Vocab::hp_a)
  66.     draw_current_and_max_values(x, y, width, hp.to_i, actor.mhp,
  67.       hp_color(actor), normal_color)
  68.   end
  69.  
  70.   def draw_actor_mp(actor, x, y, width = 124)
  71.     mp = @gauge_transitions[actor][:mp].value
  72.     mmp = actor.mmp
  73.     rate = mmp.zero? ? 0 : mp.fdiv(actor.mmp)
  74.     draw_gauge(x, y, width, rate, mp_gauge_color1, mp_gauge_color2)
  75.     change_color(system_color)
  76.     draw_text(x, y, 30, line_height, Vocab::mp_a)
  77.     draw_current_and_max_values(x, y, width, mp.to_i, actor.mmp,
  78.       mp_color(actor), normal_color)
  79.   end
  80.  
  81.   def draw_actor_tp(actor, x, y, width = 124)
  82.     tp = @gauge_transitions[actor][:tp].value
  83.     rate = tp.fdiv(actor.max_tp)
  84.     draw_gauge(x, y, width, rate, tp_gauge_color1, tp_gauge_color2)
  85.     change_color(system_color)
  86.     draw_text(x, y, 30, line_height, Vocab::tp_a)
  87.     change_color(tp_color(actor))
  88.     draw_text(x + width - 42, y, 42, line_height, tp.to_i, 2)
  89.   end
  90.  
  91.   private
  92.  
  93.   # 获取 make_gauge_transitions 生成的对象
  94.   attr_reader :gauge_transitions
  95.  
  96.   # 值槽滚动所需的帧数
  97.   def gauge_roll_frame
  98.     30
  99.   end
  100.  
  101.   # 每隔多少帧更新一次值槽
  102.   def gauge_roll_interval
  103.     1
  104.   end
  105.  
  106.   # 生成值槽变化的数据。可在子类重定义。
  107.   # 默认的定义中,可以通过 gauge_transitions[actor][:hp] 等方式获取数据。
  108.   def make_gauge_transitions
  109.     Hash.new { |hash, actor|
  110.       hash[actor] = Hash.new do |h, k|
  111.         h[k] = Transition.new(gauge_roll_times, actor.method(k))
  112.       end
  113.     }.compare_by_identity
  114.   end
  115.  
  116.   # 更新渐变的值。
  117.   # 返回真值则触发一次刷新。
  118.   # 每 gauge_roll_interval 帧调用一次。
  119.   def update_gauge_transitions
  120.     need_roll = false
  121.     gauge_transitions.each_value do |hash|
  122.       hash.each_value do |t|
  123.         need_roll = true if t.update
  124.       end
  125.     end
  126.     need_roll
  127.   end
  128.  
  129.   # 值槽滚动所需的次数。
  130.   def gauge_roll_times
  131.     gauge_roll_frame / gauge_roll_interval
  132.   end
  133.  
  134.   # 滚动所有值槽。可在子类重定义。
  135.   def roll_all_gauge
  136.     refresh
  137.   end
  138. end
  139.  
  140. class Window_BattleStatus
  141.   include Taroxd::RollGauge
  142. end
  143.  
  144. class Window_MenuStatus < Window_Selectable
  145.  
  146.   include Taroxd::RollGauge
  147.  
  148.   def roll_all_gauge
  149.     item_max.times do |i|
  150.       actor = $game_party.members[i]
  151.       rect = item_rect(i)
  152.       rect.x += 108
  153.       rect.y += line_height / 2
  154.       contents.clear_rect(rect)
  155.       draw_actor_simple_status(actor, rect.x, rect.y)
  156.     end
  157.   end
  158. end
>

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2016-10-13
帖子
28
2
 楼主| 发表于 2017-2-6 20:37:38 | 只看该作者
本帖最后由 sam870716 于 2017-2-7 13:39 编辑

敵方血量

<
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● require Taroxd基础设置,动态值槽
  3. #    战斗中敌人显示血条
  4. #    如不想显示,可在敌人处备注 <hide hp>
  5. #    可在敌人处备注 <hp width w>、<hp height h>、<hp dxy dx dy> 调整血槽。
  6. #    其中 w 表示宽度、h 表示高度,dx、dy 表示坐标的偏移。
  7. #--------------------------------------------------------------------------
  8.  
  9. Taroxd::EnemyHP = true
  10.  
  11. class RPG::Enemy < RPG::BaseItem
  12.  
  13.   note_any :hp_dxy, [0, 0], /\s+(-?\d+)\s+(-?\d+)/, '[$1.to_i, $2.to_i]'
  14.   note_i :hp_width, 80
  15.   note_i :hp_height, 6
  16.   note_bool :hide_hp?
  17.  
  18.   # 初始化并获取战斗图的尺寸
  19.   def init_width_height
  20.     bitmap = Bitmap.new("Graphics/Battlers/#{@battler_name}")
  21.     @width = bitmap.width
  22.     [url=home.php?mod=space&uid=291977]@height[/url] = bitmap.height
  23.     bitmap.dispose
  24.   end
  25.  
  26.   def width
  27.     return @width if @width
  28.     init_width_height
  29.     @width
  30.   end
  31.  
  32.   def height
  33.     return [url=home.php?mod=space&uid=291977]@height[/url] if @height
  34.     init_width_height
  35.     @height
  36.   end
  37. end
  38.  
  39. class Sprite_EnemyHP < Sprite
  40.  
  41.   include Taroxd::RollGauge
  42.   include Taroxd::DisposeBitmap
  43.  
  44.   HP_COLOR1 = Color.new(223, 127, 63)
  45.   HP_COLOR2 = Color.new(239, 191, 63)
  46.   BACK_COLOR = Color.new(31, 31, 63)
  47.  
  48.   def initialize(viewport, enemy)
  49.     @enemy = enemy
  50.     super(viewport)
  51.     data = enemy.enemy
  52.     @width = data.hp_width
  53.     @height = data.hp_height
  54.     self.bitmap = Bitmap.new(@width, @height)
  55.     dx, dy = enemy.enemy.hp_dxy
  56.     self.ox = @width / 2
  57.     self.oy = @height
  58.     self.x = enemy.screen_x + dx
  59.     self.y = enemy.screen_y + dy
  60.     self.z = enemy.screen_z + 10
  61.     refresh
  62.   end
  63.  
  64.   def make_gauge_transitions
  65.     Transition.new(gauge_roll_times) do
  66.       @enemy.hp.fdiv(@enemy.mhp)
  67.     end
  68.   end
  69.  
  70.   def update_gauge_transitions
  71.     gauge_transitions.update
  72.   end
  73.  
  74.   def refresh
  75.     bitmap.clear
  76.     rate = gauge_transitions.value
  77.     return if rate.zero?
  78.     fill_w = (bitmap.width * rate).to_i
  79.     bitmap.fill_rect(fill_w, 0, @width - fill_w, @height, BACK_COLOR)
  80.     bitmap.gradient_fill_rect(0, 0, fill_w, @height, HP_COLOR1, HP_COLOR2)
  81.   end
  82. end
  83.  
  84. class Spriteset_Battle
  85.  
  86.   # 导入精灵组
  87.   def_after :create_enemies do
  88.     @enemy_hp_sprites = $game_troop.members.map { |enemy|
  89.       Sprite_EnemyHP.new(@viewport1, enemy) unless enemy.enemy.hide_hp?
  90.     }.compact
  91.   end
  92.  
  93.   def_after(:update_enemies)  { @enemy_hp_sprites.each(&:update)  }
  94.   def_after(:dispose_enemies) { @enemy_hp_sprites.each(&:dispose) }
  95. end

点评

可以使用< >功能贴子更整齐  发表于 2017-2-7 10:06
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
3
发表于 2017-2-7 10:07:55 | 只看该作者
本帖最后由 VIPArcher 于 2017-2-7 10:58 编辑

@VIPArcher 帮忙结贴,我发他脚本,(@VIPArcher 你们紫色头像的管理经常删我帖子,本人还是喜欢私下解决,这样犯不着连贴等问题)
楼主要的脚本


这次帮你编辑了一下,下次请注意发代码的时候尽量使用代码框<>

点评

话说怎么私信taroxd大大,我找不到只能留言  发表于 2017-2-7 11:56
多谢解答VIPARCHER  发表于 2017-2-7 11:55
其实那些只是针对恶意扰乱秩序的人,你正常回答就好了。你对任何版务操作有异议都可以私信,艾特,举报,班务区发帖等方式提出疑问  发表于 2017-2-7 11:45
你可以一个回复里用代码框和折叠一起使用来发多个代码,另外如果非要连帖才能回答,正常是不会处罚的。你别看版规似乎非常严苛  发表于 2017-2-7 11:42
下次用代码框了。嘻嘻  发表于 2017-2-7 11:37
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
4
发表于 2017-2-7 10:10:26 | 只看该作者
<Boss HP Meter>放到敌人的备注栏就行,你可以去插入图片来增加效果,不加也不会BUG。看你乐意了,要不是那个紫色头像管理太烦。这6R我都不想帮了,私下解决难道不行?
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2016-10-13
帖子
28
5
 楼主| 发表于 2017-2-7 13:37:47 | 只看该作者
感謝WWW    &不好意思沒看清楚要怎麼把它弄整齊  我試試看WW
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2016-10-13
帖子
28
6
 楼主| 发表于 2017-2-7 13:54:26 | 只看该作者
然後我刪完這行換355行出錯QAQ  難道  相衝了?    ..不好意思不太會改腳本  新手一隻QQ   https://rpg.blue/forum.php?mod=attachment&aid=MzIyMDE4fDA4Y2I5YzJkMzUwOTEzNDVhM2ZlODZlMjU2Y2VlODhhfDE3MzE3OTQyMDU%3D&request=yes&_f=.jpg

求解.jpg (17.08 KB, 下载次数: 35)

求解.jpg

点评

VIPARCHER,这样算不算我水贴。我那么晚来发素材  发表于 2017-2-10 11:59
论坛的bug导致的,你看图书馆的Q&A里面有解释,你把 [url=home.php?mod=space&uid=1330256]@meter[/url] 改成 @meter 就好了  发表于 2017-2-7 14:43
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2016-10-13
帖子
28
7
 楼主| 发表于 2017-2-8 03:11:48 | 只看该作者
本帖最后由 sam870716 于 2017-2-9 13:05 编辑

@300英雄
摁摁 首先有好幾個問題要問WWWW 不好意思  


簡單來說...求解這腳本詳細教學WWW(欠打
這腳本好像非常萬能 非常黑科技  但是要解決的問題也比較多一點(畢竟800多行嘛 揪咪)

p.s這三條長度都一樣 只是ps隨便塗塗的 #  印象中是100x20pixel

痾  不加也會bug喔 我目前用上去... 我把可能相衝的腳本拿下來試過 也是bug QAQ

01.jpg (12.95 KB, 下载次数: 36)

01首先 這是跟食人花戰鬥 下面沒丟備註出來的東西 (史萊姆不丟備柱也不會bug 但也不會有血條) ... ... ... ...

01首先 這是跟食人花戰鬥 下面沒丟備註出來的東西 (史萊姆不丟備柱也不會bug 但也不會有血條) ... ... ...  ...

02.jpg (9.54 KB, 下载次数: 37)

02這是我不知道它的圖要幹嘛 隨便丟幾個出來試試的圖(這腳本需要的圖)

02這是我不知道它的圖要幹嘛 隨便丟幾個出來試試的圖(這腳本需要的圖)

03.jpg (76.61 KB, 下载次数: 35)

03它只會顯示史萊姆b 然後 先不論血量條 數字條那裡怪怪的 我放數字的圖上去也怪怪的(不會用) ... ... .. ...

03它只會顯示史萊姆b 然後 先不論血量條  數字條那裡怪怪的  我放數字的圖上去也怪怪的(不會用) ... ... .. ...

04.jpg (68.6 KB, 下载次数: 35)

04打死史萊姆A的變化

04打死史萊姆A的變化

点评

素材已发  发表于 2017-2-10 11:49
@300英雄  发表于 2017-2-8 03:21
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
8
发表于 2017-2-10 11:47:39 | 只看该作者
BUG那么大啊。素材不是这样的,我发给你了。先试试看。我这边更改了坐标,所以会位置不一样

Battle_Boss_Meter.png (3.34 KB, 下载次数: 44)

Battle_Boss_Meter.png

Battle_Boss_Meter_Layout.png (3.54 KB, 下载次数: 47)

Battle_Boss_Meter_Layout.png

Battle_Boss_Number.png (10.67 KB, 下载次数: 37)

Battle_Boss_Number.png
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
9
发表于 2017-2-10 11:54:15 | 只看该作者
本帖最后由 300英雄 于 2017-2-10 12:03 编辑
sam870716 发表于 2017-2-8 03:11
@300英雄
摁摁 首先有好幾個問題要問WWWW 不好意思  


你的munbers是需要数组的,而你全黑,显示肯定也是全黑的,这是正常现象,按照楼主的提出的,血条不够长,数字没调位置。我刚拿来的时候血条是超级长的。而楼主很短,数字记得极坐标大概在右边。所以会在右边显示。楼主的问题出在素材上面。
[]=for nillness,应该是没素材,他框不出了
效果预览图

QQ截图20170210115910.png (39.21 KB, 下载次数: 34)

QQ截图20170210115910.png
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
21 小时
注册时间
2016-10-13
帖子
28
10
 楼主| 发表于 2017-2-11 09:22:59 | 只看该作者
300英雄 发表于 2017-2-10 11:54
你的munbers是需要数组的,而你全黑,显示肯定也是全黑的,这是正常现象,按照楼主的提出的,血条不够长 ...

@300英雄 非常感謝WWWW  這樣就算要改圖跟改腳本也知道要往哪個方向改了~~   


然後最後一個問題~  這麽血條模組是不是比較適用於單之怪物  (例如boss)
還是它有特殊的切換方法 (戰鬥中基本上它只會顯示最後一個攻擊你 或者是開場第一隻怪)

111.jpg (62.52 KB, 下载次数: 35)

111.jpg

点评

一般带血条的只有显示血量度,而不显示数字,我这个脚本能显示还是不错的。而且多个怪也能看,就是默认显示1号怪为主。想看伤害别的怪即可  发表于 2017-2-11 11:08
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 05:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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