Project1

标题: 美丽的血条加地图显示 [打印本页]

作者: 黑之翅膀    时间: 2011-10-27 18:35
标题: 美丽的血条加地图显示
好想以前有人发过了...

System:里
GaugeHP.png
GaugeMP.png
GaugeEXP.png












美丽血条显示

  1. #==============================================================================
  2. # ■ Window_Status
  3. #==============================================================================
  4. class Window_Status < Window_Base
  5.   def draw_exp_info(x, y)
  6.     s_next = sprintf(Vocab::ExpNext, Vocab::level)
  7.     self.contents.font.color = system_color
  8.     self.contents.draw_text(x, y + WLH * 0, 180, WLH, Vocab::ExpTotal)
  9.     self.contents.draw_text(x, y + WLH * 2, 180, WLH, s_next)
  10.     draw_actor_exp(@actor, x, y + WLH * 1)
  11.     draw_actor_next_exp(@actor, x, y + WLH * 3)
  12.   end
  13. end
  14. module KGC
  15. module GenericGauge
  16.   # 图像   >>> Graphics/System
  17.   HP_IMAGE  = "GaugeHP"   # HP
  18.   MP_IMAGE  = "GaugeMP"   # MP
  19.   EXP_IMAGE = "GaugeEXP"  # EXP
  20.   # 位置坐标 [x, y]
  21.   HP_OFFSET  = [-23, -2]  # HP
  22.   MP_OFFSET  = [-23, -2]  # MP
  23.   EXP_OFFSET = [-23, -2]  # EXP
  24.   # 长度
  25.   HP_LENGTH  = -4  # HP
  26.   MP_LENGTH  = -4  # MP
  27.   EXP_LENGTH = -4  # EXP
  28.   # 倾斜度
  29.   # 数值指定:(-89~89)
  30.   HP_SLOPE  = 30  # HP
  31.   MP_SLOPE  = 30  # MP
  32.   EXP_SLOPE = 30  # EXP
  33. end
  34. end
  35. #==============================================================================
  36. $imported = {} if $imported == nil
  37. $imported["GenericGauge"] = true

  38. #==============================================================================
  39. # ■ Bitmap
  40. #==============================================================================
  41. unless $imported["BitmapExtension"]
  42. class Bitmap
  43. #--------------------------------------------------------------------------
  44. # 倾斜...
  45. #--------------------------------------------------------------------------
  46.   def skew_blt(x, y, src_bitmap, src_rect, slope, opacity = 255)
  47.     slope = [[slope, -90].max, 90].min
  48.     sh    = src_rect.height
  49.     off  = sh / Math.tan(Math::PI * (90 - slope.abs) / 180.0)
  50.     if slope >= 0
  51.       dx   = x + off.round
  52.       diff = -off / sh
  53.     else
  54.       dx   = x
  55.       diff = off / sh
  56.     end
  57.     rect = Rect.new(src_rect.x, src_rect.y, src_rect.width, 1)
  58.     sh.times { |i|
  59.       blt(dx + (diff * i).round, y + i, src_bitmap, rect, opacity)
  60.       rect.y += 1
  61.     }
  62.   end
  63. end
  64. end

  65. #==============================================================================
  66. # ■ Game_Actor
  67. #==============================================================================
  68. class Game_Actor < Game_Battler
  69.   def next_exp
  70.     return @exp_list[@level+1]
  71.   end
  72.   def next_diff_exp
  73.     return (@exp_list[@level+1] - @exp_list[@level])
  74.   end
  75.   def next_rest_exp
  76.     return (@exp_list[@level+1] - @exp)
  77.   end
  78. end

  79. #==============================================================================
  80. # ■ Window_Base
  81. #==============================================================================
  82. class Window_Base < Window
  83.   GAUGE_SRC_POS = {
  84.     :normal   => [ 0, 24],
  85.     :decrease => [ 0, 48],
  86.     :increase => [72, 48],
  87.   }
  88.   @@__gauge_buf = Bitmap.new(320, 24)
  89.   def draw_gauge(file, x, y, width, value, limit, offset, len_offset, slope,
  90.       gauge_type = :normal)
  91.     img    = Cache.system(file)
  92.     x     += offset[0]
  93.     y     += offset[1]
  94.     width += len_offset
  95.     draw_gauge_base(img, x, y, width, slope)
  96.     gw = width * value / limit
  97.     draw_gauge_bar(img, x, y, width, gw, slope, GAUGE_SRC_POS[gauge_type])
  98.   end
  99.   def draw_gauge_base(img, x, y, width, slope)
  100.     rect = Rect.new(0, 0, 24, 24)
  101.     if slope != 0
  102.       self.contents.skew_blt(x, y, img, rect, slope)
  103.       rect.x = 96
  104.       self.contents.skew_blt(x + width + 24, y, img, rect, slope)
  105.       rect.x     = 24
  106.       rect.width = 72
  107.       dest_rect = Rect.new(0, 0, width, 24)
  108.       @@__gauge_buf.clear
  109.       @@__gauge_buf.stretch_blt(dest_rect, img, rect)
  110.       self.contents.skew_blt(x + 24, y, @@__gauge_buf, dest_rect, slope)
  111.     else
  112.       self.contents.blt(x, y, img, rect)
  113.       rect.x = 96
  114.       self.contents.blt(x + width + 24, y, img, rect)
  115.       rect.x     = 24
  116.       rect.width = 72
  117.       dest_rect = Rect.new(x + 24, y, width, 24)
  118.       self.contents.stretch_blt(dest_rect, img, rect)
  119.     end
  120.   end
  121.   def draw_gauge_bar(img, x, y, width, gw, slope, src_pos, start = 0)
  122.     rect = Rect.new(src_pos[0], src_pos[1], 72, 24)
  123.     dest_rect = Rect.new(0, 0, width, 24)
  124.     @@__gauge_buf.clear
  125.     @@__gauge_buf.stretch_blt(dest_rect, img, rect)
  126.     dest_rect.x     = start
  127.     dest_rect.width = gw
  128.     x += start
  129.     if slope != 0
  130.       self.contents.skew_blt(x + 24, y, @@__gauge_buf, dest_rect, slope)
  131.     else
  132.       self.contents.blt(x + 24, y, @@__gauge_buf, dest_rect)
  133.     end
  134.   end
  135.   def draw_actor_hp_gauge(actor, x, y, width = 120)
  136.     draw_gauge(KGC::GenericGauge::HP_IMAGE,
  137.       x, y, width, actor.hp, actor.maxhp,
  138.       KGC::GenericGauge::HP_OFFSET,
  139.       KGC::GenericGauge::HP_LENGTH,
  140.       KGC::GenericGauge::HP_SLOPE
  141.     )
  142.   end
  143.   def draw_actor_mp_gauge(actor, x, y, width = 120)
  144.     draw_gauge(KGC::GenericGauge::MP_IMAGE,
  145.       x, y, width, actor.mp, [actor.maxmp, 1].max,
  146.       KGC::GenericGauge::MP_OFFSET,
  147.       KGC::GenericGauge::MP_LENGTH,
  148.       KGC::GenericGauge::MP_SLOPE
  149.     )
  150.   end
  151.   def draw_actor_exp(actor, x, y, width = 180)
  152.     self.contents.font.color = normal_color
  153.     self.contents.draw_text(x, y, width, WLH, actor.exp_s, 2)
  154.   end
  155.   def draw_actor_next_exp(actor, x, y, width = 180)
  156.     draw_actor_exp_gauge(actor, x, y, width)
  157.     self.contents.font.color = normal_color
  158.     self.contents.draw_text(x, y, width, WLH, actor.next_rest_exp_s, 2)
  159.   end
  160.   def draw_actor_exp_gauge(actor, x, y, width = 180)
  161.     diff = [actor.next_diff_exp, 1].max
  162.     rest = [actor.next_rest_exp, 1].max
  163.     draw_gauge(KGC::GenericGauge::EXP_IMAGE,
  164.       x, y, width, diff - rest, diff,
  165.       KGC::GenericGauge::EXP_OFFSET,
  166.       KGC::GenericGauge::EXP_LENGTH,
  167.       KGC::GenericGauge::EXP_SLOPE
  168.     )
  169.   end
  170. end
复制代码



地图血条显示:开关18打开时:
if $game_switches[18] == true

  1. class Scene_Map < Scene_Base
  2.   alias hpmpwindow_start start
  3.   def start
  4.     hpmpwindow_start
  5.     @hpmpwindow = Window_Base.new(395, 337, 160, 80)   
  6.   end
  7.   alias hpmpwindow_update update
  8.   def update
  9.     actor = $game_party.members[0]
  10.     if @temp_hp != actor.hp or @temp_mp != actor.mp
  11.       @hpmpwindow.contents.clear
  12.       @hpmpwindow.draw_actor_hp(actor, 0, 0)
  13.       @hpmpwindow.draw_actor_mp(actor, 0, 25)
  14.       @temp_hp = actor.hp
  15.       @temp_mp = actor.mp
  16.     end
  17.     @hpmpwindow.update
  18.     hpmpwindow_update
  19.         if $game_switches[18] == true
  20.     @hpmpwindow.opacity = 255
  21.     @hpmpwindow.back_opacity = 255
  22.     @hpmpwindow.contents_opacity = 255
  23.     else
  24.     @hpmpwindow.opacity = 0
  25.     @hpmpwindow.back_opacity = 0
  26.     @hpmpwindow.contents_opacity = 0
  27.     end
  28.   end
  29.   alias hpmpwindow_terminate terminate
  30.   def terminate
  31.     @hpmpwindow.dispose
  32.     hpmpwindow_terminate
  33.   end
  34. end
复制代码


作者: Rion幻音    时间: 2011-10-27 18:40
KGC的脚本拿来发布,没问题吗……
作者: 黑之翅膀    时间: 2011-10-27 18:52
Rion幻音 发表于 2011-10-27 18:40
KGC的脚本拿来发布,没问题吗……

额...
作者: 黑舞嗜    时间: 2011-10-27 20:05
话说除了状态界面其他界面有变化没?(如果只有状态画面有变化那不是太不协调了)
作者: 黑之翅膀    时间: 2011-10-27 20:59


战斗显示..

血条自己改改就行了
作者: 不会脚本    时间: 2011-10-27 21:06
果断一个有用的脚本
作者: liqunsz    时间: 2011-10-27 22:06
Rion幻音 发表于 2011-10-27 18:40
KGC的脚本拿来发布,没问题吗……
  1. KGC::
复制代码
的确呢……大概应该发到地球村什么的?
作者: 夏侯缭乱    时间: 2011-10-28 12:42
好东西啊,支持一下
作者: 猪头三~    时间: 2011-11-15 13:37
好像很强大,不过我用的是XP`
作者: 黑崎一护    时间: 2011-11-15 15:04
记得还有一个怒气的脚本是一套的,也是用这种图片。
作者: hcm    时间: 2011-11-15 15:12
可是这颜色和蓝底白边太不搭调了。
作者: 退屈£无聊    时间: 2011-11-16 21:48
斜的描绘居然不卡?(将信将疑||
作者: ♂追忆    时间: 2011-11-16 22:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: ngngy    时间: 2011-11-16 23:25
颜色要是能再亮一点  水晶化一点。。。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1