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

Project1

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

[已经过期] 請幫我修改這個戰鬥顯血腳本的一點小功能,謝謝!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
448 小时
注册时间
2011-10-9
帖子
184
跳转到指定楼层
1
发表于 2012-10-8 12:49:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 冷徹心扉 于 2012-11-26 13:29 编辑

這是橫版戰鬥顯示敵方血條的自定腳本
但預設功能是攻擊敵人後在敵人腳下顯示血條、過一段時間消失

我希望能改成
1.開始戰鬥就顯示血條(可略)
2.血條隨著敵人死亡而消失,而不會留著一個空槽在場上
3.血條中顯示被削減的傷害區塊,類似格鬥遊戲那樣
4.能更改為自定義圖片更好

非常需要這樣的功能,希望各位高手協助修改一下,感激不盡!



腳本如下
  1. class Sprite_Battler < Sprite_Base
  2.   # Word used in enemy Notes field to hide HP gauge
  3.   GAUGE_M = "HIDEHP"
  4.   # 背景色                       [邊框顏色,                       內部顏色]
  5.   GAUGE_BC = [Color.new(0,0,0,255), Color.new(20,0,0,240)]  #155.205.155
  6.   # 面層色(漸變效果) [左端, 右端]
  7.   GAUGE_GC = [Color.new(130,0,0), Color.new(210,30,30)]
  8.   #
  9.   GAUGE_W = 82 # 寬度 140
  10.   GAUGE_H = 4 # 高度 5.5
  11.   GAUGE_S = 17 # 扣減速度(超過2)30 越小越快
  12.   GAUGE_T = 30000 # 顯示幀數 1秒3000   10秒30000   30秒90000    60秒180000
  13.   GAUGE_O = 16 # 不透明度16
  14.   #
  15.   GAUGE_V = false # 當光標出現可疑損壞。需要STRxx光標。
  16.   #--------------------------------------------------------------------------
  17.   # ● 繪畫血條
  18.   #--------------------------------------------------------------------------
  19.   def create_enhpgauge
  20.     g_width = GAUGE_W  # 長
  21.     g_height = GAUGE_H # 高
  22.     f_color = GAUGE_BC # 背景色
  23.     g_color = GAUGE_GC # 面層色
  24.     # 圖畫繪製
  25.     bitmap = Bitmap.new(g_width, g_height * 2)
  26.     # 上半部分:圖畫定義,背景色
  27.     bitmap.fill_rect(0, 0, g_width, g_height, f_color[0])         # 外框
  28.     bitmap.fill_rect(1, 1, g_width - 2, g_height - 2, f_color[1]) # 內部
  29.     # 上半部分:圖畫定義,面層色
  30.     bitmap.gradient_fill_rect(1, g_height + 1, g_width - 2, g_height - 2,
  31.                               g_color[0], g_color[1])             # 層次
  32.     # 血條建立 # [0] = 背景色 ; [1] = 面層色
  33.     @hp_gauge = [Sprite.new, Sprite.new]
  34.     for i in 0..1
  35.       sprite = @hp_gauge   
  36.       sprite.viewport = self.viewport
  37.       sprite.bitmap = bitmap
  38.       sprite.src_rect.set(0, 0, g_width, g_height)
  39.       sprite.src_rect.y = g_height if i == 1
  40.       if $back_attack && N01::BACK_ATTACK && N01::BACK_ATTACK_NON_BACK_MIRROR
  41.         sprite.x = Graphics.width - @battler.screen_x
  42.       else
  43.   #----------------------------------------------------------------------------------------------------------------------------------------------------        
  44.         sprite.x = @battler.screen_x  #直接打數字固定在左上,用後面語法跟隨圖片
  45.       end
  46. #~       sprite.y = @battler.screen_y + 10  #血條的高低  8
  47. #~       sprite.y = @battler.screen_y + 19  #血條的高低  5+14      
  48.       
  49.       
  50.       
  51.       sprite.y = @battler.screen_y  + 15 #血條的高低  5+14           
  52.       
  53.       
  54.   #----------------------------------------------------------------------------------------------------------------------------------------------------      
  55.       sprite.ox = g_width / 2
  56.       sprite.oy = g_height / 2
  57.       sprite.z = 200
  58.       sprite.z += 20 if i == 1      
  59.       sprite.opacity = 0
  60.     end
  61.     # 各種
  62.     @enid = @battler.enemy_id
  63.     @hp = @battler.hp
  64.     @gauge_width = GAUGE_W + 1
  65.     @gauge_opacity = 0
  66.   end
  67.   #----------------------------------------------------------------------------------------------------------------------------------------------------
  68.   # ● 血條更新
  69.   #--------------------------------------------------------------------------
  70.   def enhpgauge_update
  71.     # 如果對應ID敵人被傷害的時候需要顯示
  72.     if @enid != @battler.enemy_id
  73.       @enid = @battler.enemy_id
  74.       @gauge_visible = true
  75. #~ ##      @gauge_visible = false if $data_enemies[@enid].note.include?(GAUGE_M)
  76. #~  ##     for i in @hp_gauge do i.visible = @gauge_visible end
  77.       end
  78.     return unless @gauge_visible
  79.     # 計算更新
  80.     if @hp != @battler.hp
  81.       g_width = (@battler.hp / (@battler.maxhp * 1.0))
  82.       @gauge_width = ((GAUGE_W * g_width) + 1).truncate
  83.       @gauge_opacity = GAUGE_T
  84.       @hp = @battler.hp
  85.     end
  86.     # 長
  87.     g_width = @hp_gauge[1].src_rect.width
  88.     speed = GAUGE_S
  89.     rect = @hp_gauge[1].src_rect
  90.     rect.width = (@gauge_width + (g_width * (speed - 1))) / speed
  91.     if rect.width != @gauge_width
  92.       if rect.width > @gauge_width
  93.         rect.width -= 1
  94.       else
  95.         rect.width += 1
  96.       end
  97.     end
  98.     rect.width = 2 if rect.width <= 1 and @hp > 0
  99.     # 透明度
  100.     if GAUGE_V and @battler.cursor_flash
  101.       @gauge_opacity += GAUGE_O * 2 if @gauge_opacity <= GAUGE_T / 2
  102.     else
  103.       @gauge_opacity -= GAUGE_O if @gauge_opacity > 0
  104.     end
  105.     # 透明度適用
  106.     for i in @hp_gauge do i.opacity = @gauge_opacity end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 對象初始化
  110.   #--------------------------------------------------------------------------
  111.   alias initialize_str15 initialize
  112.   def initialize(viewport, battler = nil)
  113.     initialize_str15(viewport, battler)
  114.     if @battler.is_a?(Game_Enemy)
  115.       create_enhpgauge
  116.       @gauge_visible = true
  117. #~ ##      @gauge_visible = false if $data_enemies[@enid].note.include?(GAUGE_M)
  118. #~   ##    for i in @hp_gauge do i.visible = @gauge_visible end
  119.     end
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 解放(dispose)
  123.   #--------------------------------------------------------------------------
  124.   alias dispose_str15 dispose
  125.   def dispose
  126.     dispose_str15
  127.     if @battler.is_a?(Game_Enemy)
  128.       @hp_gauge[0].bitmap.dispose
  129.       @hp_gauge[0].dispose
  130.       @hp_gauge[1].dispose
  131.     end
  132.   end
  133.   #--------------------------------------------------------------------------
  134.   # ● 幀更新
  135.   #--------------------------------------------------------------------------
  136.   alias update_str15 update
  137.   def update
  138.     update_str15
  139.     enhpgauge_update if @battler.is_a?(Game_Enemy)
  140.   end
  141. end
  142. #
  143. end
复制代码

点评

不放代码框的遇到i都得悲剧- -b  发表于 2012-10-8 14:19
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-16 07:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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