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

Project1

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

[已经解决] VA地图显示HP

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
201 小时
注册时间
2013-1-23
帖子
270
跳转到指定楼层
1
发表于 2013-3-27 21:01:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 love896624434 于 2013-3-28 07:40 编辑

在做魔塔来着,发现地图不能显示HP真心不方便。搜了一下,只找到这个http://rpg.blue/thread-217052-1-1.html
但是脚本插进去完全没有反应,什么都没显示。求解了,怎么显示HP?只显示名字和HP就够了,其他的不显示。
因为我做的是魔塔,所以透明度最好高一点,能看清血量就够了。
求帮助求调教
好吧,就这样开始完成我第一个完全版的游戏吧!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
来自 3楼
发表于 2013-3-28 09:15:15 | 只看该作者
又作了一些修改,主要是加了按钮切换显示 / 隐藏功能,以及背景渐层底色,预设的 :C 是指键盘的 Z 键:

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Variables
  4. #------------------------------------------------------------------------------
  5. #     地图上显示变量窗口
  6. #==============================================================================
  7. #  在不想要显示的地图备注栏中放上 <NOHPHUB> 就可以隐藏。
  8. #==============================================================================
  9.  
  10. HPHUB_X = 0 #显示变量的 X 座标
  11. HPHUB_Y = 0 #显示变量的 Y 座标
  12.  
  13. HPHUB_INPUT = :C #切换显示/隐藏按钮, 若不想要按钮切换, 等号右边可以清除, 或改为 nil 或 "" 或 ''
  14.  
  15. class Window_Variables < Window_Base
  16.   #--------------------------------------------------------------------------
  17.   # ● 初始化
  18.   #--------------------------------------------------------------------------
  19.   def initialize
  20.     super(0, 0, window_width, fitting_height(1))
  21.     self.opacity = 0 #窗口整体不透明度
  22.     self.back_opacity = 120 #窗口背景底色不透明度
  23.     @icon = 0
  24.     @variable = 0
  25.     @o_hp = 0
  26.     refresh
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 取得视窗的宽度
  30.   #--------------------------------------------------------------------------
  31.   def window_width
  32.     return 355
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 刷新
  36.   #--------------------------------------------------------------------------
  37.   def refresh
  38.     return if $game_party.leader.hp == @o_hp
  39.     @o_hp = $game_party.leader.hp
  40.     contents.clear
  41.     draw_background(contents.rect)
  42.     draw_actor_name($game_party.leader, HPHUB_X, HPHUB_Y)
  43.     @x = HPHUB_X + $game_party.leader.name.size * self.contents.font.size #HP 的显示 X 座标
  44.     draw_icon(122, @x, HPHUB_Y, true)
  45.     draw_actor_hp($game_party.leader, @x + self.contents.font.size + 4, HPHUB_Y)
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 绘制背景
  49.   #--------------------------------------------------------------------------
  50.   def draw_background(rect)
  51.     temp_rect = rect.clone
  52.     contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 取得背景色 1
  56.   #--------------------------------------------------------------------------
  57.   def back_color1
  58.     Color.new(0, 0, 0, 90)
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 取得背景色 2
  62.   #--------------------------------------------------------------------------
  63.   def back_color2
  64.     Color.new(0, 0, 0, 30)
  65.   end
  66. end
  67.  
  68. #==============================================================================
  69. # ■ Scene_Map
  70. #------------------------------------------------------------------------------
  71. #      地图生成窗口
  72. #==============================================================================
  73. class Scene_Map < Scene_Base
  74.   alias new_start start
  75.   def start
  76.     new_start
  77.     @varia_window = Window_Variables.new
  78.     @varia_window.visible = false
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 刷新
  82.   #--------------------------------------------------------------------------
  83.   alias new_update update
  84.   def update
  85.     new_update
  86.     #地图备注检查
  87.     return if (/<NOHPHUB>/i.match($game_map.note)) != nil
  88.     #初始值
  89.     @show_hp_hud = true if @show_hp_hud == nil
  90.     #按键切换开/关
  91.     if HPHUB_INPUT != nil && HPHUB_INPUT != "" && HPHUB_INPUT != ''
  92.       if Input.trigger?(HPHUB_INPUT)
  93.         if @show_hp_hud != true
  94.           @show_hp_hud = true
  95.         else
  96.           @show_hp_hud = false
  97.         end
  98.       end
  99.     end
  100.     #显示/隐藏执行
  101.     if @show_hp_hud == true
  102.       @varia_window.refresh
  103.       @varia_window.visible = true
  104.     else
  105.       @varia_window.visible = false
  106.       #close_varia_window
  107.     end
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 释放
  111.   #--------------------------------------------------------------------------
  112.   alias new_terminate terminate
  113.   def terminate
  114.     @varia_window.dispose
  115.     new_terminate
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 关闭
  119.   #--------------------------------------------------------------------------
  120.   def close_varia_window
  121.     @varia_window.close
  122.     update until @varia_window.close?
  123.   end
  124. end
  125.  
  126. #==============================================================================
  127. # ■ Game_Map
  128. #------------------------------------------------------------------------------
  129. #  管理地图的类。
  130. #==============================================================================
  131. class Game_Map
  132.   #--------------------------------------------------------------------------
  133.   # ● 取得地图备注栏
  134.   #--------------------------------------------------------------------------
  135.   def note
  136.     @map.note
  137.   end
  138. end



测试截图:



点评

顺便还希望追加一个开关打开才显示的判定(不是按键是开关=-=)  发表于 2014-1-27 21:37
巨巨,想求追加MP显示的版本,为了不挖坟只能用点评=A=/  发表于 2014-1-27 21:23
請問我想用開關來開啟或關閉HP顯示 該怎麼做呢?  另外我下載範例發現他底條尾部沒有漸層  发表于 2013-10-24 10:35

评分

参与人数 2星屑 +400 梦石 +2 收起 理由
Luciffer + 400 _(:з」∠)_求脚本~~
Mic_洛洛 + 2 我该怎么说你好?大狮子(大好银)!.

查看全部评分

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
2
发表于 2013-3-28 00:24:36 | 只看该作者
本帖最后由 j433463 于 2013-3-28 06:13 编辑

写脚本我不在行,这脚本原本是我自己写来用在游戏中显示版本号的,稍作修改,看看能不能用。


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Variables
  4. #------------------------------------------------------------------------------
  5. #     地图上显示变量窗口
  6. #==============================================================================
  7. #  在不想要显示的地图备注栏中放上 <NOHPHUB> 就可以隐藏。
  8. #==============================================================================
  9.  
  10. HPHUB_X = 0 #显示变量的 X 座标
  11. HPHUB_Y = 0 #显示变量的 Y 座标
  12.  
  13. class Window_Variables < Window_Base
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化
  16.   #--------------------------------------------------------------------------
  17.   def initialize
  18.     super(0, 0, window_width, fitting_height(1))
  19.     self.back_opacity = 0
  20.     self.opacity = 0
  21.     @icon = 0
  22.     @variable = 0
  23.     @o_hp = 0
  24.     refresh
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 取得视窗的宽度
  28.   #--------------------------------------------------------------------------
  29.   def window_width
  30.     return 350
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 刷新
  34.   #--------------------------------------------------------------------------
  35.   def refresh
  36.     return if $game_party.leader.hp == @o_hp
  37.     @o_hp = $game_party.leader.hp
  38.     contents.clear
  39.     draw_text(HPHUB_X, HPHUB_Y, 328, 24, $game_party.leader.name, 0)
  40.     @x = HPHUB_X + $game_party.leader.name.size * self.contents.font.size #HP 的显示 X 座标
  41.     draw_icon(122, @x, HPHUB_Y, true)
  42.     draw_text(@x + self.contents.font.size + 4, HPHUB_Y, 328, 24, @o_hp, 0)
  43.   end
  44. end
  45.  
  46. #==============================================================================
  47. # ■ Scene_Map
  48. #------------------------------------------------------------------------------
  49. #      地图生成窗口
  50. #==============================================================================
  51. class Scene_Map < Scene_Base
  52.   alias new_start start
  53.   def start
  54.     new_start
  55.     @varia_window = Window_Variables.new
  56.     @varia_window.visible = false
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 刷新
  60.   #--------------------------------------------------------------------------
  61.   alias new_update update
  62.   def update
  63.     new_update
  64.     # 开关控制
  65.     if (/<NOHPHUB>/i.match($game_map.note)) != nil
  66.       @varia_window.visible = false
  67.       close_varia_window
  68.     else
  69.       @varia_window.refresh
  70.       @varia_window.visible = true
  71.     end
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 释放
  75.   #--------------------------------------------------------------------------
  76.   alias new_terminate terminate
  77.   def terminate
  78.     @varia_window.dispose
  79.     new_terminate
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 关闭
  83.   #--------------------------------------------------------------------------
  84.   def close_varia_window
  85.     @varia_window.close
  86.     update until @varia_window.close?
  87.   end
  88. end
  89.  
  90. #==============================================================================
  91. # ■ Game_Map
  92. #------------------------------------------------------------------------------
  93. #  管理地图的类。
  94. #==============================================================================
  95. class Game_Map
  96.   #--------------------------------------------------------------------------
  97.   # ● 取得地图备注栏
  98.   #--------------------------------------------------------------------------
  99.   def note
  100.     @map.note
  101.   end
  102. end




补上截图:




如果把 def refresh 那一段改成这样:

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 刷新
  3.   #--------------------------------------------------------------------------
  4.   def refresh
  5.     return if $game_party.leader.hp == @o_hp
  6.     @o_hp = $game_party.leader.hp
  7.     contents.clear
  8.     draw_actor_name($game_party.leader, HPHUB_X, HPHUB_Y)
  9.     @x = HPHUB_X + $game_party.leader.name.size * self.contents.font.size #HP 的显示 X 座标
  10.     draw_icon(122, @x, HPHUB_Y, true) #爱心图标
  11.     draw_actor_hp($game_party.leader, @x + self.contents.font.size + 4, HPHUB_Y)
  12.   end



就会如这截图显示血槽了:




因为使用的是系统菜单上的血槽,所以如果要改血槽颜色或血槽高度,必须去 Window_Base 内改,但一改就所有菜单用到血槽的都会跟着改变。

如果想要连文字和血槽都半透明化,可以在 self.opacity = 0 的下方加上 self.contents.opacity = n,这个 n 是数字,0~255,数字越小越透明,255 完全不透明。

点评

成功了~谢谢大神哈~~~~  发表于 2013-3-28 07:32
发现好像把 HUD 打成 HUB 了,算了,反正没影响,不改了。  发表于 2013-3-28 01:19
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
201 小时
注册时间
2013-1-23
帖子
270
4
 楼主| 发表于 2013-3-28 13:10:09 | 只看该作者
j433463 发表于 2013-3-28 09:15
又作了一些修改,主要是加了按钮切换显示 / 隐藏功能,以及背景渐层底色,预设的 :C 是指键盘的 Z 键:

#e ...

多谢大神~附上一张我游戏的主菜单截图,自己做的,实在不怎么样=。=
好吧,就这样开始完成我第一个完全版的游戏吧!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
5
发表于 2013-3-28 13:20:23 | 只看该作者
背景不错,就是字普通了点,可以上网去搜寻一下,找些比较合意的字型下载,甚至网络上有线上制作 LOGO 文字的,弄出个漂亮的大标题出来很容易。

点评

我下载了几百种字体,全都不能用TAT  发表于 2013-3-28 14:03
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
6
发表于 2013-3-28 14:11:55 | 只看该作者
建议找 true type 字型,不要找那种点阵或书法帖转成的字,看您那是繁体字标题,那么找一找全真,文鼎,金梅,方正,超研泽的字型吧,这五种应该不难找。

找到后的 .ttf 档要用 Win 的字型安装把它安装好,已经开启的 PS 或文书软体要关掉重开,最好是安装完字型之后先重开机一次,让系统整理一遍已安装的字型。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
201 小时
注册时间
2013-1-23
帖子
270
7
 楼主| 发表于 2013-3-28 14:28:22 | 只看该作者
j433463 发表于 2013-3-28 14:11
建议找 true type 字型,不要找那种点阵或书法帖转成的字,看您那是繁体字标题,那么找一找全真,文鼎,金 ...

了解!上网找了个logo设计弄了一下,现在弄成这样了~
好吧,就这样开始完成我第一个完全版的游戏吧!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
8
发表于 2013-3-28 16:55:48 | 只看该作者


这标题如何?

点评

字是和您一样用网站LOGO做的,背景的图案是网上找的素材,然后缩放一下比例,用绘图软件把字和背景合并而已喔!合并时字有加上阴影。  发表于 2013-3-29 00:08
超华丽!大神拿什么做出来的~  发表于 2013-3-28 18:24
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
331 小时
注册时间
2012-5-4
帖子
158
9
发表于 2013-4-3 22:44:30 | 只看该作者
试试这个,人物小头像体力魔力特技都有显示,只不过没有明显数值。要打开100号开关(这个可以改):
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 碧の軌跡っぽいステータス表示
  3. #   @version 0.13 12/01/07
  4. #   @author さば缶
  5. #------------------------------------------------------------------------------
  6. #  マップ画面下にステータスが表示されます
  7. #
  8. #  ■用意するもの
  9. #    Graphics\System の下に Actor_bg1 ~ Actor_bg3
  10. #    Graphics\Faces の下に 顔グラを50%に縮小したファイル "通常のファイル名_s"
  11. #    例 Actor1.png → Actor1_s.png
  12. #    ※このファイルが存在しない場合、プログラムで縮小するため非常に荒くなります
  13. #
  14. #==============================================================================
  15. module Saba
  16.   module KisekiStatus
  17.     # このスイッチがONの場合、ステータスを表示します
  18.     INVISIBLE_SWITCH = 100
  19.  
  20.     # TPを表示する場合、true に設定します。
  21.     SHOW_TP = true
  22.   end
  23. end
  24.  
  25. class Window_KisekiStatus < Window_Selectable
  26.   #--------------------------------------------------------------------------
  27.   # ● オブジェクト初期化
  28.   #--------------------------------------------------------------------------
  29.   def initialize
  30.     super(0, Graphics.height-window_height+18, Graphics.width, window_height)
  31.     self.opacity = 0
  32.     self.visible = $game_switches[Saba::KisekiStatus::INVISIBLE_SWITCH]
  33.  
  34.     refresh
  35.   end
  36.   def refresh
  37.     @last_hps = []
  38.     @last_mps = []
  39.     @last_tps = []
  40.     super
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 項目数の取得
  44.   #--------------------------------------------------------------------------
  45.   def item_max
  46.     $game_party.battle_members.size
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● ウィンドウの高さを取得
  50.   #--------------------------------------------------------------------------
  51.   def window_height
  52.     item_height+32
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 項目の高さを取得
  56.   #--------------------------------------------------------------------------
  57.   def item_height
  58.     52
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 項目の幅を取得
  62.   #--------------------------------------------------------------------------
  63.   def item_width
  64.     return 70
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 桁数の取得
  68.   #--------------------------------------------------------------------------
  69.   def col_max
  70.     return $game_party.battle_members.size
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 項目の描画
  74.   #--------------------------------------------------------------------------
  75.   def draw_item(index)
  76.     actor = $game_party.battle_members[index]
  77.     rect = item_rect(index)
  78.  
  79.     bg_bitmap = Cache.system("Actor_bg1")
  80.     contents.blt(rect.x, rect.y, bg_bitmap, bg_bitmap.rect)
  81.  
  82.     small_bitmap = Bitmap.new(48, 48)
  83.     begin
  84.       bitmap = Cache.face(actor.face_name + "_s")
  85.     rescue
  86.     end
  87.     if bitmap == nil
  88.       bitmap = Cache.face(actor.face_name)
  89.       face_rect = Rect.new(actor.face_index % 4 * 96, actor.face_index / 4 * 96, 96, 96)
  90.       small_bitmap.stretch_blt(Rect.new(0, 0, 48, 48), bitmap, face_rect)
  91.     else
  92.       small_bitmap.blt(0, 0, bitmap, Rect.new(actor.face_index % 4 * 48,  actor.face_index / 4 * 48, 48, 48))
  93.     end
  94.     bitmap.dispose
  95.     clear_edge(small_bitmap)
  96.  
  97.     contents.blt(rect.x+2, 2, small_bitmap, Rect.new(0, 0, 48, 48))
  98.     small_bitmap.dispose
  99.  
  100.     if actor.dead?
  101.       bg_bitmap = Cache.system("Actor_bg1")
  102.       contents.blt(rect.x, rect.y, bg_bitmap, bg_bitmap.rect)
  103.       bg_bitmap = Cache.system("Actor_bg3")
  104.     else
  105.       bg_bitmap = Cache.system("Actor_bg2")
  106.     end
  107.     contents.blt(rect.x, rect.y, bg_bitmap, bg_bitmap.rect)
  108.  
  109.     draw_gauge(rect.x + 47, rect.y+20, 50, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
  110.     draw_gauge(rect.x + 42, rect.y+24, 50, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
  111.     if Saba::KisekiStatus::SHOW_TP
  112.       draw_gauge(rect.x + 37, rect.y+28, 50, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
  113.     end
  114.     @last_hps.push(actor.hp_rate)
  115.     @last_mps.push(actor.mp_rate)
  116.     @last_tps.push(actor.tp_rate)
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 顔画像の端を消します
  120.   #--------------------------------------------------------------------------
  121.   def clear_edge(bitmap)
  122.     22.times  { |i|
  123.       bitmap.clear_rect(0, i, 22 - i, 1)
  124.       bitmap.clear_rect(26 + i, i, 22 - i, 1)
  125.       bitmap.clear_rect(0, i + 26, i, 1)
  126.       bitmap.clear_rect(48 - i, i + 26, i, 1)
  127.     }
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● ゲージの描画
  131.   #     rate   : 割合(1.0 で満タン)
  132.   #     color1 : グラデーション 左端
  133.   #     color2 : グラデーション 右端
  134.   #--------------------------------------------------------------------------
  135.   def draw_gauge(x, y, width, rate, color1, color2)
  136.     fill_w = (width * rate).to_i
  137.     gauge_y = y + line_height - 8
  138.  
  139.     contents.fill_rect(x-2, gauge_y-1, width+4, 4, text_color(15))
  140.     contents.fill_rect(x-1, gauge_y-2, width+2, 6, text_color(15))
  141.     contents.fill_rect(x, gauge_y, width, 2, gauge_back_color)
  142.     contents.gradient_fill_rect(x, gauge_y, fill_w, 2, color1, color2)
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● フレーム更新
  146.   #--------------------------------------------------------------------------
  147.   def update
  148.     super
  149.     if $game_switches[Saba::KisekiStatus::INVISIBLE_SWITCH] == true &&
  150.       ! $game_message.busy? && ! $game_message.visible
  151.       self.visible = true
  152.     else
  153.       self.visible = false
  154.       return
  155.     end
  156.     hps = []
  157.     mps = []
  158.     tps = []
  159.     for actor in $game_party.battle_members
  160.       hps.push(actor.hp_rate)
  161.       mps.push(actor.mp_rate)
  162.       tps.push(actor.tp_rate)
  163.     end
  164.  
  165.     if @last_hps != hps || @last_mps != mps || @last_tps != tps
  166.       refresh
  167.     end
  168.   end
  169. end
  170.  
  171. class Scene_Map
  172.   #--------------------------------------------------------------------------
  173.   # ● 全ウィンドウの作成
  174.   #--------------------------------------------------------------------------
  175.   alias saba_kiseki_status_create_all_windows create_all_windows
  176.   def create_all_windows
  177.     saba_kiseki_status_create_all_windows
  178.     @kiseki_status_window = Window_KisekiStatus.new
  179.   end
  180. end

点评

恩,O(∩_∩)O谢谢  发表于 2013-4-4 01:21
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-18 16:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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