查看: 5158|回复: 13

[已经解决] 请求帮助,如何让VX横版战斗界面变成这样?

[复制链接]
梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-6-15
回帖
23
发表于 2012-6-30 23:09:44 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 旺仔牛奶糖 于 2012-7-1 00:15 编辑


我用的是 国外的 超级VX横版战斗 具体就是如何 加入人物立绘的血条显示


‘‘──旺仔牛奶糖于2012-6-30 23:11补充以下内容:


正常的应该是这样
’’

我使用的是VX完美横板RPG系统SBS3.4d:http://rpg.blue/forum.php?mod=vi ... 2&highlight=3.4
梦石
0
星屑
880
在线时间
32 小时
注册时间
2011-6-6
回帖
4
发表于 2012-7-1 11:55:07 | 显示全部楼层
楼主我比较在意你的第一个游戏……
回复

使用道具 举报

最萌的小猫

梦石
0
星屑
1347
在线时间
692 小时
注册时间
2011-11-5
回帖
3320
发表于 2012-7-1 17:51:11 | 显示全部楼层
我知道,但是你悬赏那么少养我怎么告诉你??

点评

呜呜呜~~我错了~~~~  发表于 2012-8-2 20:00

评分

参与人数 1星屑 -40 收起 理由
Luciffer -40 消极发言

查看全部评分

小猫,感情浓郁的天然嘿啾一只,属性:水,嘿啾,无轨迹流线萌。喜欢在正午伸出小爪子卖着各种次元萌。平行穿越次元萌差。
如需要小猫,请认准啾怪时空电话。这宇宙萌源的秘密,需要找到时空边界萌源能量爆发的封印钥匙。快来和小猫一同去冒险吧!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
55 小时
注册时间
2012-7-1
回帖
35
发表于 2012-7-1 23:00:53 | 显示全部楼层
这不是有一个脚步可以修改这个横版战斗的那些东西吗,我好像看过哦~

评分

参与人数 1星屑 -20 收起 理由
Luciffer -20 这不等于什么都没说吗?

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-6-15
回帖
23
 楼主| 发表于 2012-7-2 20:44:10 | 显示全部楼层
D2之触 发表于 2012-7-1 11:55
楼主我比较在意你的第一个游戏……

我在制作中……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-6-15
回帖
23
 楼主| 发表于 2012-7-3 18:20:30 | 显示全部楼层
@houyuxiaoyang你需要多少悬赏 你说? 我现在的游戏急需啊.. 跪求!
回复

使用道具 举报

梦石
0
星屑
2306
在线时间
1010 小时
注册时间
2012-4-30
回帖
1455

开拓者

发表于 2012-7-3 19:39:09 | 显示全部楼层
本帖最后由 铅笔描绘的思念 于 2012-7-3 19:45 编辑

修改一下你的哪个Battle Status在draw_item加一些
  1. s[16] = Sprite.new
  2.      s[16].bitmap = Cache.system(actor.name)#载入system里与角色名一样的文件
  3.      s[16].x = @x[index] + 10 - 227
  4.      s[16].y = @y[index] + -4 + 225
  5.      s[16].z = 0
复制代码
再在下面dispose里[0,1,2,3,4,8,9,15] 改成[0,1,2,3,4,8,9,15,16] 恩。。update里的加不加随便。。这个精灵更不更新没什么大碍
还有update_cursor加self.cursor_rect.empty


我知道,但是你悬赏那么少养我怎么告诉你??

@houyuxiaoyang 您厉害。。为什么不帮忙呢。。100EXP对一个在杂兵用户组的还是比较多的了。。不要贪得无厌。。

点评

战斗测试中 for i in [email]0...@s_sprite.size[/email] 错误  发表于 2012-7-4 20:53
回复

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-6-15
回帖
23
 楼主| 发表于 2012-7-4 20:05:23 | 显示全部楼层
铅笔描绘的思念 发表于 2012-7-3 19:39
修改一下你的哪个Battle Status在draw_item加一些再在下面dispose里[0,1,2,3,4,8,9,15] 改成[0,1,2,3,4,8,9 ...

感谢了!
回复

使用道具 举报

梦石
0
星屑
50
在线时间
37 小时
注册时间
2012-6-15
回帖
23
 楼主| 发表于 2012-7-4 20:19:21 | 显示全部楼层
铅笔描绘的思念 发表于 2012-7-3 19:39
修改一下你的哪个Battle Status在draw_item加一些再在下面dispose里[0,1,2,3,4,8,9,15] 改成[0,1,2,3,4,8,9 ...

Battle status 是不是 Window_BattleStatus?
dispose 和 updata 在哪
回复

使用道具 举报

梦石
0
星屑
2306
在线时间
1010 小时
注册时间
2012-4-30
回帖
1455

开拓者

发表于 2012-7-4 20:28:35 | 显示全部楼层
本帖最后由 铅笔描绘的思念 于 2012-7-4 20:30 编辑
旺仔牛奶糖 发表于 2012-7-4 20:19
Battle status 是不是 Window_BattleStatus?
dispose 和 updata 在哪


[pre lang="ruby" line="1"]#==============================================================================
# ★RGSS2
# STR33g1_Battle Status  0.5 08/03/20
#
# ・STR11e has the same specifications.
# ★STR11eの後付ゲージプラグインを利用することができます。
#  このスクリプトより下に導入してください。
#
# ◇Features
# ・Different HP/MP Gauge Flavor
# ・"Rolling" Numbers
# ・State Icon Cycle
#
# ◇Materials
# This script requires several image skins.
# Skin images are placed in the .Graphics\System folder.
#
# ・Main Skin
#  HP/MP Back Gauge Skin
#   No size limit.
# ・HP/MP Gauge
#  Normally two gauges
#   Width = Unlimited
#  Height = Gauge Height(Optional) * 2
#  一列目に通常ゲージ、二列目に追尾ゲージを配置します。
# ・Numbers
#  0123456789 is the order of number arrays
#   Width = One Frame Width(Any Size) * 10
#  Height = Unlimited
# ・State Skin
#  State Icon Main Skin
#  なにもステートが掛かっていない時は非表示になる仕様の為、
#  Main skin is separate.
#  No size limit.
#
#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Selectable
  # Skin File name
  BTSKIN_00 = "Btskin_main"   # Main Skin
  
  BTSKIN_01 = "Btskin_hp"     # HP(Gauge)
  BTSKIN_02 = "Btskin_mp"     # MP(Gauge)
  BTSKIN_04 = ""    # HP(Numbers)
  BTSKIN_05 = ""    # MP(Numbers)
  BTSKIN_03 = ""  # State
  # Skin coordinates[  x,  y]
  BTSKIN_B_XY = [  0,  0]     # Standard Coordinates
  BTSKIN_00XY = [  0,  0]     # Main Skin
  
  BTSKIN_01XY = [142,  3]     # HP(Gauge)
  BTSKIN_02XY = [151, 15]     # MP(Gauge)
  
  BTSKIN_04XY = [148,  2]     # HP(Numbers) [10,  2]#
  BTSKIN_05XY = [232,  2]     # MP(Numbers) [0,  2]#
  BTSKIN_03XY = [384,  2]     # State Skin
  BTSKIN_06XY = [368,  2]     # State
  # Various Settings
  BTSKIN_01GS = 2             # HP Gauge Speed (Low values are fast)
  BTSKIN_02GS = 4             # MP Gauge Speed(Low values are fast)
  
  BTSKIN_04SS = 8             # HP Rolling Numbers Speed(Low values are fast)
  BTSKIN_05SS = 2             # MP Rolling Numbers Speed(Low values are fast)
  
  BTSKIN_04NS = 4             # HP Maximum Digits
  BTSKIN_05NS = 4             # MP Maximum Digits
  
  BTSKIN_06WH = [20,20]       # [State Width, Height]
  BTSKIN_06SC = 2             # State Icon Scroll Speed
                              # (Values close to 1 are fast)
  # バトルステータス座標
  def set_xy
    @x = []
    @y = []
    for i in 0...$game_party.members.size
      x = 0
      y = (i * 24)
      @x = x + 16#+ STRRGSS2::ST_SX
      @y = y + 16#+ STRRGSS2::ST_SY
    end
  end
  # 設定箇所ここまで
  @@f = false
  
  #--------------------------------------------------------------------------
  # ● カーソルを下に移動  ※再定義
  #--------------------------------------------------------------------------
  def cursor_down(wrap = false)
  end
  #--------------------------------------------------------------------------
  # ● カーソルを上に移動  ※再定義
  #--------------------------------------------------------------------------
  def cursor_up(wrap = false)
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新  ※再定義
  #--------------------------------------------------------------------------
  def update
    super
    update_cursor
    call_update_help
  end
  #--------------------------------------------------------------------------
  # ★ エイリアス
  #--------------------------------------------------------------------------
  alias initialize_str33 initialize
  def initialize(f = false)
    initialize_str33
    unless @@f
      @f = @@f = true
    else
      @f = false
    end
    set_xy
    @s_sprite = []
    @s_party = []
    @s_lv = []
    @opacity = 0
    self.contents.dispose
    self.create_contents
    self.back_opacity = 0
    self.opacity = 0
    #@column_max = $game_party.actors.size
    @viewport = Viewport.new(0, 416-128, 416, 128)
    @hpgw = (Cache.system(BTSKIN_01)).width
    @mpgw = (Cache.system(BTSKIN_02)).width
    @viewport.z = self.z - 1
    @state_opacity = []
    @item_max = $game_party.members.size
    return unless @f
    for i in 0...@item_max
      draw_item(i)
    end
    update
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ潰し
  #--------------------------------------------------------------------------
  def refresh
    # :-)
  end
  #--------------------------------------------------------------------------
  # ● ステートの描画
  #--------------------------------------------------------------------------
  def draw_actor_state(actor)
    icon = Cache.system("Iconset")
    w = actor.states.size * 24
    w = 24 if w < 1
    bitmap = Bitmap.new(w, BTSKIN_06WH[1])
    count = 0
    for state in actor.states
      icon_index = state.icon_index
      x = 24 * count
      rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      bitmap.blt(x, 0, icon, rect)
      count += 1
    end
    return bitmap
  end
  #--------------------------------------------------------------------------
  # ● 名前作成
  #--------------------------------------------------------------------------
  def name_bitmap(actor)
    bitmap = Bitmap.new(100, 24)
    bitmap.font.size = 17
    bitmap.draw_text_f(20, -2, 100, 24, actor.name)
    return bitmap
  end
  #--------------------------------------------------------------------------
  # ● ステート数取得
  #--------------------------------------------------------------------------
  def state_size(actor)
    return actor.states.size
  end
  #--------------------------------------------------------------------------
  # ● アイテム作成
  #--------------------------------------------------------------------------
  def draw_item(index)
    return unless @f
    actor = $game_party.members[index]
    #
    @s_sprite[index] = []
    s = @s_sprite[index]
    # メインスキン
    s[0] = Sprite.new(@viewport)
    s[0].bitmap = Cache.system(BTSKIN_00)
    s[0].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_00XY[0]
    s[0].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_00XY[1]
    s[0].z = 0
   
   
   
   
    # HP
    s[1] = Sprite.new(@viewport)
    s[1].bitmap = Cache.system(BTSKIN_01)
    s[1].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    s[1].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    s[1].z = 4
    w = s[1].bitmap.width
    h = s[1].bitmap.height / 2
    s[1].src_rect.set(0, 0, w, h)
    s[2] = Sprite.new(@viewport)
    s[2].bitmap = Cache.system(BTSKIN_01)
    s[2].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_01XY[0]
    s[2].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_01XY[1]
    s[2].z = 3
    s[2].src_rect.set(0, h, w, h)
    s[11] = 96
    s[6] = Sprite_strNumbers.new(@viewport, BTSKIN_04, BTSKIN_04NS)
    s[6].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_04XY[0]
    s[6].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_04XY[1]
    s[6].z = 5
    s[13] = actor.hp
    s[6].update(s[13])
    # MP
    s[3] = Sprite.new(@viewport)
    s[3].bitmap = Cache.system(BTSKIN_02)
    s[3].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    s[3].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    s[3].z = 4
    w = s[3].bitmap.width
    h = s[3].bitmap.height / 2
    s[3].src_rect.set(0, 0, w, h)
    s[4] = Sprite.new(@viewport)
    s[4].bitmap = Cache.system(BTSKIN_02)
    s[4].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_02XY[0]
    s[4].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_02XY[1]
    s[4].z = 3
    s[4].src_rect.set(0, h, w, h)
    s[12] = 56
    s[7] = Sprite_strNumbers.new(@viewport, BTSKIN_05, BTSKIN_05NS)
    s[7].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_05XY[0]
    s[7].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_05XY[1]
    s[7].z = 5
    s[14] = actor.mp
    s[7].update(s[14])
    # ステート
    s[5] = Viewport.new(0, 0, BTSKIN_06WH[0], BTSKIN_06WH[1])
    s[5].rect.x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_06XY[0] + @viewport.rect.x
    s[5].rect.y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_06XY[1] + @viewport.rect.y
    s[5].z = @viewport.z + 1
    s[8] = Sprite.new(@viewport)
    s[8].bitmap = Cache.system(BTSKIN_03)
    s[8].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_03XY[0]
    s[8].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_03XY[1]
    s[8].z = -2
    s[9] = Plane.new(s[5])
    s[9].bitmap = draw_actor_state(actor)
    s[10] = state_size(actor)
    # 現在のステータスに
    s[11] = ((@hpgw * (actor.hp / (actor.maxhp * 1.0))) + 1).truncate
    if actor.maxmp != 0
      s[12] = ((@mpgw * (actor.mp / (actor.maxmp * 1.0))) + 1).truncate
    else
      s[12] = 0
    end
    s[15] = Sprite.new(@viewport)
    s[15].bitmap = name_bitmap(actor)
    s[15].x = @x[index] + 4
    s[15].y = @y[index] + 2
    s[15].z = 0
    s[1].src_rect.width = s[11]
    s[2].src_rect.width = s[11]
    s[3].src_rect.width = s[12]
    s[4].src_rect.width = s[12]
    s[6].update(s[13])
    s[7].update(s[14])
    # 不可視に
    for l in [0,1,2,3,4,8,9,15]
      s[l].opacity = 0
    end
    for l in [6,7]
      s[l].o = 0
    end
    # 情報記憶
    @s_lv[index] = actor.level
    @s_party[index] = [actor.name, actor.hp, actor.maxhp,
                       actor.mp, actor.maxmp, actor.states]
    # ==add
    s[16] = Sprite.new(@viewport)
    s[16].bitmap = Cache.system("actor.name")
    s[16].x = X # X坐标
    s[16].y = Y # Y坐标
    s[16].z = -1

  end
  #--------------------------------------------------------------------------
  # ● オブジェクト開放
  #--------------------------------------------------------------------------
  def dispose      
    super
    return unless @f
    for i in 0...@s_sprite.size
      for l in [0,1,2,3,4,8,9,15,16] # 加16
        @s_sprite[l].bitmap.dispose
        @s_sprite[l].dispose
      end
      for l in [5,6,7]
        @s_sprite[l].dispose
      end
    end
    @@f = false
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    return unless @f
    for i in 0...@s_sprite.size
      s = @s_sprite
      a = $game_party.members
      m = @s_party
      @state_opacity = 0 if @state_opacity == nil
      # 不透明度アップ
      @state_opacity += 8
      if @opacity < 272
        @opacity += 8
        for l in [0,1,2,3,4,15,16] #这里加不加无所谓。。
          s[l].opacity = @opacity
        end
        for l in [6,7]
          s[l].o = @opacity
        end
      end
      # 名前更新
      if a.name != m[0]
        s[15].bitmap.dispose
        s[15].bitmap = name_bitmap(a)
        m[0] = a.name
      end
      # HP/MP更新
      update_hp(s,a,m)
      update_mp(s,a,m)
      # ステート更新
      if s[10] > BTSKIN_06WH[0] / 24 and (Graphics.frame_count % BTSKIN_06SC) == 0
        s[9].ox += 1
      end
      if s[10] > 0 and @state_opacity < 272
        for l in [8,9]
          s[l].opacity = @state_opacity
        end
      end
      if a.states != m[5]
        m[5] = a.states
        s[9].ox = 0
        s[9].bitmap.dispose
        s[9].bitmap = draw_actor_state($game_party.members)
        s[10] = state_size($game_party.members)
        @state_opacity = 0
        for l in [8,9]
          s[l].opacity = @state_opacity
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (HP)
  #--------------------------------------------------------------------------
  def update_hp(s,a,m)
    # HPくるくる
    if a.hp != s[13]
      c = 0; c = 1 if a.hp < a.maxhp / 4; c = 2 if a.hp == 0
      if s[13] > a.hp
        s[13] -= BTSKIN_04SS
        s[13] = a.hp if s[13] < a.hp
      else
        s[13] += BTSKIN_04SS
        s[13] = a.hp if s[13] > a.hp
      end
      s[6].update(s[13], c)
    end
    # HP
    if a.hp != m[1]
      s[11] = ((@hpgw * (a.hp / (a.maxhp * 1.0))) + 1).truncate
      m[1] = a.hp
    end
    sr = s[1].src_rect
    if sr.width != s[11]
      sp = BTSKIN_01GS
      sr.width = (s[11] + (s[1].src_rect.width * (sp - 1))) / sp
      sr.width = 2 if sr.width <= 1 and a.hp > 0
    end
    sr = s[2].src_rect
    sp = 2
    if sr.width != s[1].src_rect.width and (Graphics.frame_count % sp) == 0
      if sr.width < s[1].src_rect.width
        sr.width += 1
      else
        sr.width -= 1
      end
    end
    sr.width = 2 if sr.width <= 1 and a.hp > 0
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (MP)
  #--------------------------------------------------------------------------
  def update_mp(s,a,m)
    # MPくるくる
    if a.mp != s[14]
      c = 0; c = 1 if a.mp < a.maxmp / 4
      if s[14] > a.mp
        s[14] -= BTSKIN_05SS
        s[14] = a.mp if s[14] < a.mp
      else
        s[14] += BTSKIN_05SS
        s[14] = a.mp if s[14] > a.mp
      end
      s[7].update(s[14], c)
    end
    # MP
    if a.mp != m[3]
      if a.maxmp != 0
        s[12] = ((@mpgw * (a.mp / (a.maxmp * 1.0))) + 1).truncate
      else
        s[12] = 0
      end
      m[3] = a.mp
    end
    sr = s[3].src_rect
    if sr.width != s[12]
      sp = BTSKIN_02GS
      sr.width = (s[12] + (s[3].src_rect.width * (sp - 1))) / sp
      sr.width = 2 if sr.width <= 1 and a.mp > 0
    end
    sr = s[4].src_rect
    sp = 2
    if sr.width != s[3].src_rect.width and (Graphics.frame_count % sp) == 0
      if sr.width < s[3].src_rect.width
        sr.width += 1
      else
        sr.width -= 1
      end
    end
    sr.width = 2 if sr.width <= 1 and a.mp > 0
  end
end

#==============================================================================
# ■ Sprite_strNumber
#==============================================================================
class Sprite_strNumber < Sprite
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(v, gra, n = 0)
    @n = n
    super(v)
    self.bitmap = Cache.system(gra)
    @w = self.bitmap.width/10
    @h = self.bitmap.height/3
    self.src_rect = Rect.new(@n*@w, 0, @w, @h)
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update(n = -1, c = 0)
    @n = n
    self.src_rect.x = @n*@w
    self.src_rect.y = c*@h
  end
end
#==============================================================================
# ■ Sprite_strNumbers
#==============================================================================
class Sprite_strNumbers
  attr_accessor :x
  attr_accessor :y
  attr_accessor :z
  attr_accessor :o
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(v, gra, n = 4, s = 0)
    @n = n # 桁数
    @x = 0
    @y = 0
    @z = 0
    @o = 255
    @sprite = []
    # 字間設定
    b = Cache.system(gra)
    @s = b.width / 10 - s
    # スプライト作成
    for i in 0...n
      @sprite = Sprite_strNumber.new(v, gra)
    end
    update
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update(v = 0, c = 0)
    val = []
    # 数値を配列に格納
    for i in 0...@n
      if (10 ** (i)) == 0
        val = v % 10
      else
        val = v / (10 ** (i)) % 10
      end
    end
    val = val.reverse
    # 先頭の0を取り除く
    for i in 0...@n
      if val == 0 and @n != i + 1
        val = -1
      else
        break
      end
    end
    # スプライト更新
    for i in 0...@n
      @sprite.update(val, c)
      @sprite.x = @x + (i * @s)
      @sprite.y = @y
      @sprite.z = @z
      @sprite.opacity = @o
    end
  end
  #--------------------------------------------------------------------------
  # ● 不透明度の適用
  #--------------------------------------------------------------------------
  def o=(val)
    @o = val
    for i in 0...@n
      @sprite.opacity = @o
    end
  end
  #--------------------------------------------------------------------------
  # ● オブジェクト開放
  #--------------------------------------------------------------------------
  def dispose
    for i in 0...@sprite.size
      @sprite.bitmap.dispose
      @sprite.dispose
    end
  end
end[/pre]

update_cursor这个脚本是没有的。。你可以在默认的里面加。。也可以直接在这个脚本里加

点评

282、296、321行是改的  发表于 2012-7-4 20:29
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部