Project1

标题: 角色或事件显示变量条脚本 [打印本页]

作者: s20810    时间: 2016-1-13 05:08
标题: 角色或事件显示变量条脚本
本帖最后由 s20810 于 2016-1-13 05:10 编辑

请问这脚本如果要让事件显示变量条该如何设置?
原范本已失连不知道该如何使用,烦请大大们帮忙@@
@无限の剣制

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Sprite
  3. #==============================================================================
  4. class Sprite
  5.   #--------------------------------------------------------------------------
  6.   # ● 血条配色
  7.   #--------------------------------------------------------------------------
  8.   ALPHA      = 192                              # 不透明度
  9.   FONT_COLOR = Color.new(64,  64, 240, ALPHA)  # hp 数值
  10.   B_COLOR    = Color.new(255, 255, 255, ALPHA)  # 血条外框
  11.   BG_COLOR   = Color.new(  0,   0,   0, ALPHA)  # 血条底
  12.   HP_COLOR_1 = Color.new(255, 128,  64, ALPHA)  # 血条渐变色 1
  13.   HP_COLOR_2 = Color.new(240, 192,  64, ALPHA)  # 血条渐变色 2
  14.   #--------------------------------------------------------------------------
  15.   # ● 画血条
  16.   #--------------------------------------------------------------------------
  17.   def draw_character_hp(character, x, y, width)
  18.     draw_character_hp_gauge(character, x, y, width)
  19.     self.bitmap.font.color = FONT_COLOR
  20.     self.bitmap.font.size = 12
  21.     self.bitmap.draw_text(0,0,32,20,character.hp,2)
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 画血条的背景条
  25.   #--------------------------------------------------------------------------
  26.   def draw_character_hp_gauge(character, x, y, width)
  27.     gw = width * character.hp / character.maxhp
  28.     self.bitmap.fill_rect(x, y+16, width+2, 5, B_COLOR)
  29.     self.bitmap.fill_rect(x+1, y+17, width, 3, BG_COLOR)
  30.     self.bitmap.gradient_fill_rect(x+1, y+17, gw, 3, HP_COLOR_1, HP_COLOR_2)
  31.   end
  32. end
  33.  
  34. #==============================================================================
  35. # ■ Sprite_Character
  36. #==============================================================================
  37. class Sprite_Character < Sprite_Base
  38.   #--------------------------------------------------------------------------
  39.   # ● 定义实例变量
  40.   #--------------------------------------------------------------------------
  41.   attr_accessor :character
  42.   #--------------------------------------------------------------------------
  43.   # ● 释放
  44.   #--------------------------------------------------------------------------
  45.   def dispose
  46.     dispose_balloon
  47.     super
  48.     if @hp_sprite != nil
  49.       @hp_sprite.bitmap.dispose
  50.       @hp_sprite.dispose
  51.       @hp_sprite = nil
  52.     end
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 更新画面
  56.   #--------------------------------------------------------------------------
  57.   alias old_update update
  58.   def update
  59.     old_update
  60.     if @hp_sprite == nil
  61.       unless @character.is_a?(Game_Vehicle) or @character.maxhp <= 0
  62.         hp_sprite_set(@character)
  63.       end
  64.     end
  65.     unless @character.is_a?(Game_Vehicle)
  66.       hp_update if @character.update_hp
  67.     end
  68.     hp_follow
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 显示 hp
  72.   #--------------------------------------------------------------------------
  73.   def hp_sprite_set(character)
  74.     @hp_sprite = Sprite.new
  75.     @hp_sprite.bitmap = Bitmap.new(32, 24)
  76.     @hp_sprite.draw_character_hp(character, 0, 0, width = 30)
  77.     @hp_sprite.x = self.x - @hp_sprite.width/2
  78.     @hp_sprite.y = self.y - self.height - 21
  79.     @hp_sprite.z = self.z + 1
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 让 hp 跟随事件或角色
  83.   #--------------------------------------------------------------------------
  84.   def hp_follow
  85.     return if @hp_sprite == nil
  86.     return if @character.is_a?(Game_Vehicle)
  87.     @hp_sprite.x = self.x - @hp_sprite.width/2
  88.     @hp_sprite.y = self.y - self.height - 21
  89.     @hp_sprite.z = self.z + 1
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 刷新 hp
  93.   #--------------------------------------------------------------------------
  94.   def hp_update
  95.     return if @hp_sprite == nil
  96.     return if @character.is_a?(Game_Vehicle)
  97.     @character.update_hp = false
  98.     @hp_sprite.bitmap.clear
  99.     @hp_sprite.draw_character_hp(@character, 0, 0, width = 30)
  100.   end
  101. end
  102.  
  103. #==============================================================================
  104. # ■ Game_Event
  105. #==============================================================================
  106. class Game_Event < Game_Character
  107.   #--------------------------------------------------------------------------
  108.   # ● 定义实例变量
  109.   #--------------------------------------------------------------------------
  110.   attr_reader   :hp
  111.   attr_reader   :maxhp
  112.   attr_accessor  :update_hp
  113.   #--------------------------------------------------------------------------
  114.   # ● 初始化对像
  115.   #     map_id : 地图 ID
  116.   #     event  : 事件 (RPG::Event)
  117.   #--------------------------------------------------------------------------
  118.   alias ini initialize
  119.   def initialize(map_id, event)
  120.     @maxhp = @hp = 0
  121.     @update_hp = false
  122.     ini(map_id, event)
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 更改 hp
  126.   #     hp : 事件自身的hp
  127.   #--------------------------------------------------------------------------
  128.   def hp=(hp)
  129.     @hp = hp
  130.     @hp = 0 if @hp < 0
  131.     @update_hp = true
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 初始化 maxhp
  135.   #     maxhp : 事件自身的最大 hp
  136.   #--------------------------------------------------------------------------
  137.   def maxhp=(maxhp)
  138.     @maxhp = @hp = maxhp
  139.   end
  140. end
  141.  
  142. #==============================================================================
  143. # ■ Game_Player
  144. #==============================================================================
  145. class Game_Player < Game_Character
  146.   #--------------------------------------------------------------------------
  147.   # ● 定义实例变量
  148.   #--------------------------------------------------------------------------
  149.   attr_reader    :hp
  150.   attr_reader    :maxhp
  151.   attr_accessor  :update_hp
  152.   #--------------------------------------------------------------------------
  153.   # ● 初始化对象
  154.   #--------------------------------------------------------------------------
  155.   alias ini initialize
  156.   def initialize
  157.     @maxhp = @hp = 0
  158.     @update_hp = false
  159.     ini
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 刷新
  163.   #--------------------------------------------------------------------------
  164.   def refresh
  165.     if $game_party.members.size == 0
  166.       @character_name = ""
  167.       @character_index = 0
  168.     else
  169.       actor = $game_party.members[0]   # 获得首名角色
  170.       @character_name = actor.character_name
  171.       @character_index = actor.character_index
  172.       #获取角色 hp 和 maxhp
  173.       if @hp != actor.hp or @maxhp != actor.maxhp
  174.         @hp = actor.hp
  175.         @maxhp = actor.maxhp
  176.         @update_hp = true
  177.       end
  178.     end
  179.   end
  180. end
  181.  
  182. #==============================================================================
  183. # ■ Game_Interpreter
  184. #==============================================================================
  185. class Game_Interpreter
  186.   #--------------------------------------------------------------------------
  187.   # ● 设置正在启动的事件
  188.   #--------------------------------------------------------------------------
  189.   alias old_setup_starting_event setup_starting_event
  190.   def setup_starting_event
  191.     $game_player.refresh
  192.     old_setup_starting_event
  193.   end
  194. end

作者: 正太君    时间: 2016-1-13 08:28
事件脚本...
  1. $game_map.events[事件编号].maxhp = 300
  2. $game_map.events[事件编号].hp = 200
复制代码

作者: s20810    时间: 2016-1-14 02:48
本帖最后由 s20810 于 2016-1-14 03:03 编辑
正太君 发表于 2016-1-13 08:28
事件脚本...


感謝大大0.0

請問有開關的嗎@@?

還有如何釋放為0的變量條...
作者: 正太君    时间: 2016-1-14 09:11
s20810 发表于 2016-1-14 02:48
感謝大大0.0

請問有開關的嗎@@?

66行下面插入一句
  1. @hp_sprite.bitmap.clear if @character.hp == 0 if @hp_sprite.bitmap if @hp_sprite
复制代码





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