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

Project1

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

[已经解决] 关于战斗血条对应脚本的坐标修改。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
739 小时
注册时间
2013-4-15
帖子
1756
跳转到指定楼层
1
发表于 2013-11-9 17:34:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 576437081 于 2013-11-10 15:52 编辑

我用的是横版战斗3.3,用了战斗血条对应脚本之后,发现血条,状态和数字没有对齐,
而我也不懂怎么调整坐标(总是调不准)。
游戏界面规格:544,416
附上血条:






由于工程较大,还请各位把素材和脚本复制进新的工程,然后进行调整。
战斗血条对应脚本:
RUBY 代码复制
  1. module STRRGSS2
  2.  
  3.   ST_SX      = -24         # ステータスのX座標修正
  4.   ST_SY      = -96        # ステータスのY座標修正
  5.   ST_WIDTH   = 80          # ステータス横幅
  6.   ST_NAME    = true        # ステータスに名前を表示する
  7.   PCOMMAND_W = true        # パーティコマンドを横並びに変更
  8.   PCOMMAND_R = [0,0,544,1] # パーティコマンド[X座標, Y座標, 幅, 文字揃え]
  9. end
  10. class Window_BattleStatus < Window_Selectable
  11.   # バトルステータス座標
  12.   def set_xy
  13.     @x = []
  14.     @y = []
  15.     for i in 0...$game_party.members.size
  16.       w = 128 + 8
  17.       x = (544 / 2) - (($game_party.members.size - 1) * (w / 2))
  18.       x += (i * (w+40)) -20
  19.       @x[i] = x + STRRGSS2::ST_SX
  20.       @y[i] = 416 + STRRGSS2::ST_SY
  21.     end
  22.   end
  23. end
  24. #==============================================================================
  25. # ■ Window_PartyCommand
  26. #==============================================================================
  27. class Window_PartyCommand < Window_Command
  28.   #--------------------------------------------------------------------------
  29.   # ★ 再定義
  30.   #--------------------------------------------------------------------------
  31.   def initialize
  32.     s1 = Vocab::fight
  33.     s2 = Vocab::escape
  34.       super(128, [s1, s2], 1, 4)
  35.       draw_item(0, true)
  36.       draw_item(1, $game_troop.can_escape)
  37.     self.x = 544-128#STRRGSS2::PCOMMAND_R[0]
  38.     self.y = STRRGSS2::PCOMMAND_R[1]
  39.     self.active = false
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # ● 項目の描画
  43.   #     index   : 項目番号
  44.   #     enabled : 有効フラグ。false のとき半透明で描画
  45.   #--------------------------------------------------------------------------
  46.   def draw_item(index, enabled = true)
  47.     rect = item_rect(index)
  48.     rect.x += 4
  49.     rect.width -= 8
  50.     self.contents.clear_rect(rect)
  51.     self.contents.font.color = normal_color
  52.     self.contents.font.color.alpha = enabled ? 255 : 128
  53.     self.contents.draw_text(rect, @commands[index], STRRGSS2::PCOMMAND_R[3])
  54.   end
  55.   def update
  56.     super
  57.     self.visible = self.active
  58.   end
  59. end
  60. #==============================================================================
  61. # ■ Window_BattleStatus
  62. #==============================================================================
  63. class Window_BattleStatus < Window_Selectable
  64.   #--------------------------------------------------------------------------
  65.   # ★ エイリアス
  66.   #--------------------------------------------------------------------------
  67.   alias initialize_str11c initialize
  68.   def initialize(f = false)
  69.     @f = f
  70.     @lvuppop = []
  71.     set_xy
  72.     @s_sprite = []
  73.     @s_party = []
  74.     @s_lv = []
  75.     [url=home.php?mod=space&uid=316553]@opacity[/url] = 0
  76.     initialize_str11c
  77.     self.contents.dispose
  78.     self.contents = Bitmap.new(STRRGSS2::ST_WIDTH, height - 32)
  79.     self.back_opacity = 0
  80.     self.opacity = 0
  81.     @column_max = 4#$game_party.actors.size
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● リフレッシュ
  85.   #--------------------------------------------------------------------------
  86.   def refresh
  87.     self.contents.clear
  88.     @item_max = $game_party.members.size
  89.     for i in 0...@item_max
  90.       draw_item(i)
  91.     end
  92.     update
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 名前の描画
  96.   #--------------------------------------------------------------------------
  97.   def draw_actor_name(actor, x, y)
  98.     self.contents.font.color = hp_color(actor)
  99.     self.contents.draw_text(x, y, STRRGSS2::ST_WIDTH, WLH, actor.name)
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ★ 再定義
  103.   #--------------------------------------------------------------------------
  104.   def draw_item(index)
  105.     return unless @f
  106.     rect = item_rect(index)
  107.     rect.x = 0
  108.     rect.y = 0
  109.     rect.width -= 8
  110.     self.contents.clear_rect(rect)
  111.     self.contents.font.color = normal_color
  112.     actor = $game_party.members[index]
  113.     draw_actor_name(actor, rect.x, rect.y + 72 - 24 - 40) if STRRGSS2::ST_NAME
  114.     w = STRRGSS2::ST_WIDTH
  115.     draw_actor_state(actor, rect.x, rect.y + 72, w)
  116.     draw_actor_hp(actor, rect.x, rect.y + 72 - 24 - 20, w)
  117.     draw_actor_mp(actor, rect.x, rect.y + 72 - 24, w)
  118.     #
  119.     @s_sprite[index] = Sprite.new if @s_sprite[index] == nil
  120.     @s_sprite[index].bitmap = self.contents.clone
  121.     @s_sprite[index].x = @x[index] + 4
  122.     @s_sprite[index].y = @y[index]
  123.     @s_sprite[index].opacity = @opacity
  124.     @s_lv[index] = actor.level
  125.     @s_party[index] = [actor.name, actor.hp, actor.maxhp, actor.mp, actor.maxmp, actor.states]
  126.     #
  127.     self.contents.clear
  128.   end
  129.   def update
  130.     super
  131.     return unless @f
  132.     for i in [email]0...@s_sprite.size[/email]
  133.       @s_sprite[i].opacity = @opacity
  134.     end
  135.     [url=home.php?mod=space&uid=316553]@opacity[/url] += 8
  136.     for i in [email]0...@s_sprite.size[/email]
  137.       a = $game_party.members[i]
  138.       m = @s_party[i]
  139.       if (a.name != m[0]) or (a.hp != m[1]) or (a.mp != m[3]) or
  140.         (a.states != m[5]) or (a.maxhp != m[2]) or (a.maxmp != m[4])
  141.         @s_sprite[i].bitmap.dispose
  142.         draw_item(i)
  143.       end
  144.     end
  145.   end
  146.   def dispose      
  147.     super
  148.     return unless @f
  149.     for i in [email]0...@lvuppop.size[/email]
  150.       @lvuppop[i].dispose if @lvuppop[i] != nil
  151.     end
  152.     @lvuppop = nil
  153.     for i in [email]0...@s_sprite.size[/email]
  154.       @s_sprite[i].bitmap.dispose
  155.       @s_sprite[i].dispose
  156.     end
  157.   end
  158.   def item_rect(index)
  159.     rect = Rect.new(0, 0, 0, 0)
  160.     return rect
  161.   end
  162. end
  163. #==============================================================================
  164. # ■ Scene_Battle
  165. #==============================================================================
  166. class Scene_Battle < Scene_Base
  167.   #--------------------------------------------------------------------------
  168.   # ★ エイリアス(v1.4修正箇所)
  169.   #--------------------------------------------------------------------------
  170.   alias start_str11c start
  171.   def start
  172.     # 配列記憶
  173.     @str_member = $game_party.members.clone
  174.     @trid = -1
  175.     start_str11c
  176.   end
  177.   alias terminate_str11c terminate
  178.   def terminate
  179.     terminate_str11c
  180.   end
  181.   alias process_battle_event_str11c process_battle_event
  182.   def process_battle_event
  183.     process_battle_event_str11c
  184.     # パーティメンバーに変更があった場合、
  185.     # ステータス?バトラーを作り直し
  186.     if @str_member != $game_party.members
  187.       @str_member = $game_party.members.clone
  188.       @spriteset.dispose_actors
  189.       @spriteset.create_actors
  190.       @status_window.dispose
  191.       @status_window = Window_BattleStatus.new(true)
  192.       @status_window.x = 0
  193.       @status_window.y = 416 - 128
  194.       p
  195.     end
  196.   end
  197.   alias process_escape_str11c process_escape
  198.   def process_escape
  199.     @party_command_window.visible = false
  200.     process_escape_str11c
  201.   end
  202.   alias update_party_command_selection_str11c update_party_command_selection
  203.   def update_party_command_selection
  204.     update_party_command_selection_str11c
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● フレーム更新
  208.   #--------------------------------------------------------------------------
  209.   alias update_str11 update
  210.   def update
  211.     if @status_window.index != -1
  212.       m = 4#$game_party.actors
  213.       a = $game_actors[m[@status_window.index]]
  214.     end
  215.     if @target_enemy_window != nil
  216.       m = @target_enemy_window.enemy
  217.       a = $game_troop.members[m.index]
  218.       text = a.name
  219.     elsif @target_actor_window != nil
  220.       m = $game_party.actors
  221.       a = $game_actors[m[@target_actor_window.index]]
  222.       text = a.name
  223.     elsif @status_window.index != -1
  224.       m = 4#$game_party.actors
  225.       a = $game_actors[m[@status_window.index]]
  226.     else
  227.     end
  228.     update_str11
  229.   end
  230.   alias update_basic_str11c update_basic
  231.   def update_basic(m = false)
  232.     update_basic_str11c(m)
  233.     @status_window.update
  234.   end
  235. end

RUBY 代码复制
  1. class Window_BattleStatus < Window_Selectable
  2.    BTSKIN_00 = ""   # メインスキン
  3.   BTSKIN_01 = "Btskin_hp"     # HP(ゲージ)
  4.   BTSKIN_02 = "Btskin_mp"     # MP(ゲージ)
  5.   BTSKIN_04 = "Btskin_n00"    # HP(数字)
  6.   BTSKIN_05 = "Btskin_n00"    # MP(数字)
  7.   BTSKIN_03 = ""#"Btskin_state"  # ステートスキン
  8.   # 各スキン座標[  x,  y]
  9.   BTSKIN_B_XY = [  0,  0]     # 基準座標
  10.   BTSKIN_00XY = [  0,  0]     # メインスキン
  11.   BTSKIN_01XY = [124, 13]     # HP(ゲージ)
  12.   BTSKIN_02XY = [207, 14]     # MP(ゲージ)
  13.   BTSKIN_04XY = [148-16,  1]     # HP(数字)
  14.   BTSKIN_05XY = [232-16,  1]     # MP(数字)
  15.   BTSKIN_03XY = [180,  -10]     # State Skin
  16.   BTSKIN_06XY = [460,  3]     # State
  17.   # Various Settings
  18.   BTSKIN_01GS = 2             # HP Gauge Speed (Low values are fast)
  19.   BTSKIN_02GS = 4             # MP Gauge Speed(Low values are fast)
  20.   BTSKIN_04SS = 8             # HP Rolling Numbers Speed(Low values are fast)
  21.   BTSKIN_05SS = 2             # MP Rolling Numbers Speed(Low values are fast)
  22.   BTSKIN_04NS = 4             # HP Maximum Digits
  23.   BTSKIN_05NS = 4             # MP Maximum Digits
  24.   BTSKIN_06WH = [24,24]       # [State Width, Height]
  25.   BTSKIN_06SC = 2             # State Icon Scroll Speed
  26.                               # (Values close to 1 are fast)
  27.   # バトルステータス座標
  28.   def set_xy
  29.     @x = []
  30.     @y = []
  31.     for i in 0...$game_party.members.size
  32.       x = 0
  33.       y = (i * 24)
  34.       @x[i] = x + 16#+ STRRGSS2::ST_SX
  35.       @y[i] = y + 16#+ STRRGSS2::ST_SY
  36.     end
  37.   end
  38.   # 設定箇所ここまで
  39.   @@f = false
  40.  
  41.  
  42.   #--------------------------------------------------------------------------
  43.   # ★ エイリアス
  44.   #--------------------------------------------------------------------------
  45.   alias initialize_str33 initialize
  46.   def initialize(f = false)
  47.     initialize_str33
  48.     unless @@f
  49.       @f = @@f = true
  50.     else
  51.       @f = false
  52.     end
  53.     set_xy
  54.     @s_sprite = []
  55.     @s_party = []
  56.     @s_lv = []
  57.     [url=home.php?mod=space&uid=316553]@opacity[/url] = 0
  58.     self.contents.dispose
  59.     self.create_contents
  60.     self.back_opacity = 0
  61.     self.opacity = 0
  62.     #@column_max = $game_party.actors.size
  63.     @viewport = Viewport.new(0, 416-128, 416, 128)
  64.     @hpgw = (Cache.system(BTSKIN_01)).width
  65.     @mpgw = (Cache.system(BTSKIN_02)).width
  66.     @viewport.z = self.z - 1
  67.     @state_opacity = []
  68.     @item_max = $game_party.members.size
  69.     return unless @f
  70.     for i in 0...@item_max
  71.       draw_item(i)
  72.     end
  73.     update
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● リフレッシュ潰し
  77.   #--------------------------------------------------------------------------
  78.   def refresh
  79.     # :-)
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● ステートの描画
  83.   #--------------------------------------------------------------------------
  84.   def draw_actor_state(actor)
  85.     icon = Cache.system("Iconset")
  86.     w = actor.states.size * 24
  87.     w = 24 if w < 1
  88.     bitmap = Bitmap.new(w, BTSKIN_06WH[1])
  89.     count = 0
  90.     for state in actor.states
  91.       icon_index = state.icon_index
  92.       x = 24 * count
  93.       rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  94.       bitmap.blt(x, 0, icon, rect)
  95.       count += 1
  96.     end
  97.     return bitmap
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 名前作成
  101.   #--------------------------------------------------------------------------
  102.   def name_bitmap(actor)
  103.     bitmap = Bitmap.new(100, 24)
  104.     bitmap.font.size = 16
  105.     return bitmap
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● ステート数取得
  109.   #--------------------------------------------------------------------------
  110.   def state_size(actor)
  111.     return actor.states.size
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● アイテム作成
  115.   #--------------------------------------------------------------------------
  116.   def draw_item(index)
  117.     return unless @f
  118.     actor = $game_party.members[index]
  119.     #
  120.     @s_sprite[index] = []
  121.     s = @s_sprite[index]
  122.     # メインスキン
  123.     s[0] = Sprite.new(@viewport)
  124.     s[0].bitmap = Cache.system(BTSKIN_00)
  125.     s[0].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_00XY[0]
  126.     s[0].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_00XY[1]
  127.     s[0].z = 0
  128.     # HP
  129.     s[1] = Sprite.new(@viewport)
  130.     s[1].bitmap = Cache.system(BTSKIN_01)
  131.     s[1].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
  132.     s[1].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
  133.     s[1].z = 4
  134.     w = s[1].bitmap.width
  135.     h = s[1].bitmap.height / 2
  136.     s[1].src_rect.set(0, 0, w, h)
  137.     s[2] = Sprite.new(@viewport)
  138.     s[2].bitmap = Cache.system(BTSKIN_01)
  139.     s[2].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
  140.     s[2].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
  141.     s[2].z = 3
  142.     s[2].src_rect.set(0, h, w, h)
  143.     s[11] = 96
  144.     s[6] = Sprite_strNumbers.new(@viewport, BTSKIN_04, BTSKIN_04NS)
  145.     s[6].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_04XY[0]
  146.     s[6].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_04XY[1]
  147.     s[6].z = 5
  148.     s[13] = actor.hp
  149.     s[6].update(s[13])
  150.     # MP
  151.     s[3] = Sprite.new(@viewport)
  152.     s[3].bitmap = Cache.system(BTSKIN_02)
  153.     s[3].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
  154.     s[3].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
  155.     s[3].z = 4
  156.     w = s[3].bitmap.width
  157.     h = s[3].bitmap.height / 2
  158.     s[3].src_rect.set(0, 0, w, h)
  159.     s[4] = Sprite.new(@viewport)
  160.     s[4].bitmap = Cache.system(BTSKIN_02)
  161.     s[4].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
  162.     s[4].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
  163.     s[4].z = 3
  164.     s[4].src_rect.set(0, h, w, h)
  165.     s[12] = 56
  166.     s[7] = Sprite_strNumbers.new(@viewport, BTSKIN_05, BTSKIN_05NS)
  167.     s[7].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_05XY[0]
  168.     s[7].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_05XY[1]
  169.     s[7].z = 5
  170.     s[14] = actor.mp
  171.     s[7].update(s[14])
  172.     # ステート
  173.     s[5] = Viewport.new(0, 0, BTSKIN_06WH[0], BTSKIN_06WH[1])
  174.     s[5].rect.x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_06XY[0] + @viewport.rect.x
  175.     s[5].rect.y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_06XY[1] + @viewport.rect.y
  176.     s[5].z = @viewport.z + 1
  177.     s[8] = Sprite.new(@viewport)
  178.     s[8].bitmap = Cache.system(BTSKIN_03)
  179.     s[8].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_03XY[0]
  180.     s[8].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_03XY[1]
  181.     s[8].z = -2
  182.     s[9] = Plane.new(s[5])
  183.     s[9].bitmap = draw_actor_state(actor)
  184.     s[10] = state_size(actor)
  185.     # 現在のステータスに
  186.     s[11] = ((@hpgw * (actor.hp / (actor.maxhp * 1.0))) + 1).truncate
  187.     if actor.maxmp != 0
  188.       s[12] = ((@mpgw * (actor.mp / (actor.maxmp * 1.0))) + 1).truncate
  189.     else
  190.       s[12] = 0
  191.     end
  192.     s[15] = Sprite.new(@viewport)
  193.     s[15].bitmap = name_bitmap(actor)
  194.     s[15].x = @x[index] + 4
  195.     s[15].y = @y[index] + 2
  196.     s[15].z = 0
  197.     s[1].src_rect.width = s[11]
  198.     s[2].src_rect.width = s[11]
  199.     s[3].src_rect.width = s[12]
  200.     s[4].src_rect.width = s[12]
  201.     s[6].update(s[13])
  202.     s[7].update(s[14])
  203.     # 不可視に
  204.     for l in [0,1,2,3,4,8,9,15]
  205.       s[l].opacity = 0
  206.     end
  207.     for l in [6,7]
  208.       s[l].o = 0
  209.     end
  210.     # 情報記憶
  211.     @s_lv[index] = actor.level
  212.     @s_party[index] = [actor.name, actor.hp, actor.maxhp,
  213.                        actor.mp, actor.maxmp, actor.states]
  214.      #
  215.     x = index * 161 - 20
  216.     y = 15
  217.     s[16] = Sprite.new
  218.     s[16].bitmap = Cache.system("HUD_" + actor.name)
  219.     s[16].x = @x[index] + 4 - 20
  220.     s[16].y = @y[index] + 2 + 285
  221.     s[16].z = 0
  222.     end
  223.   #--------------------------------------------------------------------------
  224.   # ● オブジェクト開放
  225.   #--------------------------------------------------------------------------
  226.   def dispose      
  227.     super
  228.     return unless @f
  229.     for i in [email]0...@s_sprite.size[/email]
  230.       for l in [0,1,2,3,4,8,9,15,16]
  231.         @s_sprite[i][l].bitmap.dispose
  232.         @s_sprite[i][l].dispose
  233.       end
  234.       for l in [5,6,7]
  235.         @s_sprite[i][l].dispose
  236.       end
  237.     end
  238.     @@f = false
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● フレーム更新
  242.   #--------------------------------------------------------------------------
  243.   def update
  244.     super
  245.     return unless @f
  246.     for i in [email]0...@s_sprite.size[/email]
  247.       s = @s_sprite[i]
  248.       a = $game_party.members[i]
  249.       m = @s_party[i]
  250.       @state_opacity[i] = 0 if @state_opacity[i] == nil
  251.       # 不透明度アップ
  252.       @state_opacity[i] += 8
  253.       if @opacity < 272
  254.         @opacity += 8
  255.         for l in [0,1,2,3,4,15]
  256.           s[l].opacity = @opacity
  257.         end
  258.         for l in [6,7]
  259.           s[l].o = @opacity
  260.         end
  261.       end
  262.       # 名前更新
  263.       if a.name != m[0]
  264.         s[15].bitmap.dispose
  265.         s[15].bitmap = name_bitmap(a)
  266.         m[0] = a.name
  267.       end
  268.       # HP/MP更新
  269.       update_hp(s,a,m)
  270.       update_mp(s,a,m)
  271.       # ステート更新
  272.       if s[10] > BTSKIN_06WH[0] / 24 and (Graphics.frame_count % BTSKIN_06SC) == 0
  273.         s[9].ox += 1
  274.       end
  275.       if s[10] > 0 and @state_opacity[i] < 272
  276.         for l in [8,9]
  277.           s[l].opacity = @state_opacity[i]
  278.         end
  279.       end
  280.       if a.states != m[5]
  281.         m[5] = a.states
  282.         s[9].ox = 0
  283.         s[9].bitmap.dispose
  284.         s[9].bitmap = draw_actor_state($game_party.members[i])
  285.         s[10] = state_size($game_party.members[i])
  286.         @state_opacity[i] = 0
  287.         for l in [8,9]
  288.           s[l].opacity = @state_opacity[i]
  289.         end
  290.       end
  291.     end
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # ● フレーム更新 (HP)
  295.   #--------------------------------------------------------------------------
  296.   def update_hp(s,a,m)
  297.     # HPくるくる
  298.     if a.hp != s[13]
  299.       c = 0; c = 1 if a.hp < a.maxhp / 4; c = 2 if a.hp == 0
  300.       if s[13] > a.hp
  301.         s[13] -= BTSKIN_04SS
  302.         s[13] = a.hp if s[13] < a.hp
  303.       else
  304.         s[13] += BTSKIN_04SS
  305.         s[13] = a.hp if s[13] > a.hp
  306.       end
  307.       s[6].update(s[13], c)
  308.     end
  309.     # HP
  310.     if a.hp != m[1]
  311.       s[11] = ((@hpgw * (a.hp / (a.maxhp * 1.0))) + 1).truncate
  312.       m[1] = a.hp
  313.     end
  314.     sr = s[1].src_rect
  315.     if sr.width != s[11]
  316.       sp = BTSKIN_01GS
  317.       sr.width = (s[11] + (s[1].src_rect.width * (sp - 1))) / sp
  318.       sr.width = 2 if sr.width <= 1 and a.hp > 0
  319.     end
  320.     sr = s[2].src_rect
  321.     sp = 2
  322.     if sr.width != s[1].src_rect.width and (Graphics.frame_count % sp) == 0
  323.       if sr.width < s[1].src_rect.width
  324.         sr.width += 1
  325.       else
  326.         sr.width -= 1
  327.       end
  328.     end
  329.     sr.width = 2 if sr.width <= 1 and a.hp > 0
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● フレーム更新 (MP)
  333.   #--------------------------------------------------------------------------
  334.   def update_mp(s,a,m)
  335.     # MPくるくる
  336.     if a.mp != s[14]
  337.       c = 0; c = 1 if a.mp < a.maxmp / 4
  338.       if s[14] > a.mp
  339.         s[14] -= BTSKIN_05SS
  340.         s[14] = a.mp if s[14] < a.mp
  341.       else
  342.         s[14] += BTSKIN_05SS
  343.         s[14] = a.mp if s[14] > a.mp
  344.       end
  345.       s[7].update(s[14], c)
  346.     end
  347.     # MP
  348.     if a.mp != m[3]
  349.       if a.maxmp != 0
  350.         s[12] = ((@mpgw * (a.mp / (a.maxmp * 1.0))) + 1).truncate
  351.       else
  352.         s[12] = 0
  353.       end
  354.       m[3] = a.mp
  355.     end
  356.     sr = s[3].src_rect
  357.     if sr.width != s[12]
  358.       sp = BTSKIN_02GS
  359.       sr.width = (s[12] + (s[3].src_rect.width * (sp - 1))) / sp
  360.       sr.width = 2 if sr.width <= 1 and a.mp > 0
  361.     end
  362.     sr = s[4].src_rect
  363.     sp = 2
  364.     if sr.width != s[3].src_rect.width and (Graphics.frame_count % sp) == 0
  365.       if sr.width < s[3].src_rect.width
  366.         sr.width += 1
  367.       else
  368.         sr.width -= 1
  369.       end
  370.     end
  371.     sr.width = 2 if sr.width <= 1 and a.mp > 0
  372.   end
  373. end
  374.  
  375. #==============================================================================
  376. # ■ Sprite_strNumber
  377. #==============================================================================
  378. class Sprite_strNumber < Sprite
  379.   #--------------------------------------------------------------------------
  380.   # ● オブジェクト初期化
  381.   #--------------------------------------------------------------------------
  382.   def initialize(v, gra, n = 0)
  383.     @n = n
  384.     super(v)
  385.     self.bitmap = Cache.system(gra)
  386.     [url=home.php?mod=space&uid=133944]@w[/url] = self.bitmap.width/10
  387.     @h = self.bitmap.height/3
  388.     self.src_rect = Rect.new(@n*@w, 0, @w, @h)
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● フレーム更新
  392.   #--------------------------------------------------------------------------
  393.   def update(n = -1, c = 0)
  394.     @n = n
  395.     self.src_rect.x = @n*@w
  396.     self.src_rect.y = c*@h
  397.   end
  398. end
  399. #==============================================================================
  400. # ■ Sprite_strNumbers
  401. #==============================================================================
  402. class Sprite_strNumbers
  403.   attr_accessor :x
  404.   attr_accessor :y
  405.   attr_accessor :z
  406.   attr_accessor :o
  407.   #--------------------------------------------------------------------------
  408.   # ● オブジェクト初期化
  409.   #--------------------------------------------------------------------------
  410.   def initialize(v, gra, n = 4, s = 0)
  411.     @n = n # 桁数
  412.     @x = 0
  413.     @y = 0
  414.     @z = 0
  415.     @o = 255
  416.     [url=home.php?mod=space&uid=114926]@sprite[/url] = []
  417.     # 字間設定
  418.     b = Cache.system(gra)
  419.     @s = b.width / 10 - s
  420.     # スプライト作成
  421.     for i in 0...n
  422.       @sprite[i] = Sprite_strNumber.new(v, gra)
  423.     end
  424.     update
  425.   end
  426.   #--------------------------------------------------------------------------
  427.   # ● フレーム更新
  428.   #--------------------------------------------------------------------------
  429.   def update(v = 0, c = 0)
  430.     val = []
  431.     # 数値を配列に格納
  432.     for i in 0...@n
  433.       if (10 ** (i)) == 0
  434.         val[i] = v % 10
  435.       else
  436.         val[i] = v / (10 ** (i)) % 10
  437.       end
  438.     end
  439.     val = val.reverse
  440.     # 先頭の0を取り除く
  441.     for i in 0...@n
  442.       if val[i] == 0 and @n != i + 1
  443.         val[i] = -1
  444.       else
  445.         break
  446.       end
  447.     end
  448.     # スプライト更新
  449.     for i in 0...@n
  450.       @sprite[i].update(val[i], c)
  451.       @sprite[i].x = @x + (i * @s)
  452.       @sprite[i].y = @y
  453.       @sprite[i].z = @z
  454.       @sprite[i].opacity = @o
  455.     end
  456.   end
  457.   #--------------------------------------------------------------------------
  458.   # ● 不透明度の適用
  459.   #--------------------------------------------------------------------------
  460.   def o=(val)
  461.     @o = val
  462.     for i in 0...@n
  463.       @sprite[i].opacity = @o
  464.     end
  465.   end
  466.   #--------------------------------------------------------------------------
  467.   # ● オブジェクト開放
  468.   #--------------------------------------------------------------------------
  469.   def dispose
  470.     for i in [email]0...@sprite.size[/email]
  471.       @sprite[i].bitmap.dispose
  472.       @sprite[i].dispose
  473.     end
  474.   end
  475. end

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Bitmap
  3. #==============================================================================
  4.  
  5. class Bitmap
  6.   #--------------------------------------------------------------------------
  7.   # ● 文字描画
  8.   #--------------------------------------------------------------------------
  9.   def draw_text_f(x, y, width, height, str, align = 0, color = Color.new(64,32,255))
  10.     shadow = self.font.shadow
  11.     b_color = self.font.color.dup
  12.     font.shadow = false
  13.     font.color = color
  14.     draw_text(x + 1, y, width, height, str, align)
  15.     draw_text(x - 1, y, width, height, str, align)
  16.     draw_text(x, y + 1, width, height, str, align)
  17.     draw_text(x, y - 1, width, height, str, align)
  18.     font.color = b_color
  19.     draw_text(x, y, width, height, str, align)
  20.     font.shadow = shadow
  21.   end
  22.   def draw_text_f_rect(r, str, align = 0, color = Color.new(64,32,255))
  23.     draw_text_f(r.x, r.y, r.width, r.height, str, align = 0, color)
  24.   end
  25. end
   

点评

就是X、Y坐标,都是慢慢调的  发表于 2013-11-9 19:35
不过我很在意你的血条素材哦~~~  发表于 2013-11-9 17:58

评分

参与人数 1星屑 +10 收起 理由
yangjunyin2002 + 10 素材天空梦帮你画的?

查看全部评分

Lv1.梦旅人

梦石
0
星屑
196
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
2
发表于 2013-11-9 17:57:56 | 只看该作者
自己不动手尝试怎么行呢?我当初也是自己一遍遍试过去的= =

点评

血条素材的框是天空梦做的,那hp和MP是我做的。  发表于 2013-11-9 18:00
= =可是我一试就会和之前的相差十万八千里啊···  发表于 2013-11-9 17:59

——旧坑欢迎戳
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
196
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
3
发表于 2013-11-9 18:02:00 | 只看该作者
我可以帮你改啊= =给工程吧。直接这么调会很累的= =还需要横战素材什么的= =所以...然后我可以帮你,就是关于你那个素材(表情图省略...)

点评

工程好大的说····你不是也用横战吗,横战素材你应该有的,素材好说。  发表于 2013-11-9 18:04

——旧坑欢迎戳
回复 支持 反对

使用道具 举报

Lv4.逐梦者

送快递的水表员

梦石
10
星屑
4857
在线时间
3303 小时
注册时间
2012-6-27
帖子
7160

开拓者贵宾

4
发表于 2013-11-9 18:44:30 | 只看该作者
如果我没记错是调这里的坐标
  1. # 各スキン座標[  x,  y]
  2.   BTSKIN_B_XY = [  0,  0]     # 基准坐标
  3.   BTSKIN_00XY = [  0,  0]     # メインスキン
  4.   BTSKIN_01XY = [124, 13]     # 血条坐标
  5.   BTSKIN_02XY = [207, 14]     # 魔力条坐标
  6.   BTSKIN_04XY = [148-16,  1]     # HP(数字)坐标
  7.   BTSKIN_05XY = [232-16,  1]     # MP(数字)坐标
  8.   BTSKIN_03XY = [180,  -10]     # State Skin
  9.   BTSKIN_06XY = [460,  3]     # State
复制代码
↑如果没记错的话是这些

P.S.:楼上的也许看上了你的素材哟

点评

我知道调哪里,但是总是调不准啊·····  发表于 2013-11-9 19:16
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
739 小时
注册时间
2013-4-15
帖子
1756
5
 楼主| 发表于 2013-11-10 15:52:25 | 只看该作者
yangjunyin2002 发表于 2013-11-9 18:02
我可以帮你改啊= =给工程吧。直接这么调会很累的= =还需要横战素材什么的= =所以...然后我可以帮你,就是关 ...

谢谢,我自己解决了

点评

解决了就好~  发表于 2013-11-10 16:38
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 00:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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