Project1
标题: 使用华丽横版脚本的两个问题... [打印本页]
作者: lincen 时间: 2011-5-17 23:59
标题: 使用华丽横版脚本的两个问题...
本帖最后由 lincen 于 2011-5-18 00:01 编辑
第一个,血条排列整齐问题,还有一个就是战斗菜单向下滚动...
这个脚本应该是设置排列的吧,谁帮我看看,实在看不懂了- #==============================================================================
- # ★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 .GraphicsSystem 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 = "atb_Btskin_main" # Main Skin
- BTSKIN_01 = "atb_Btskin_hp" # HP(Gauge)
- BTSKIN_02 = "atb_Btskin_mp" # MP(Gauge)
- BTSKIN_04 = "Btskin_n00" # HP(Numbers)
- BTSKIN_05 = "Btskin_n00" # MP(Numbers)
- BTSKIN_03 = "atb_Btskin_state" # State
- # Skin coordinates[ x, y]
- BTSKIN_B_XY = [ 0, 0] # Standard Coordinates
- BTSKIN_00XY = [ 0, 0] # Main Skin
- BTSKIN_01XY = [132, 16] # HP(Gauge)
- BTSKIN_02XY = [216, 16] # MP(Gauge)
- BTSKIN_04XY = [148, 2] # HP(Numbers)
- BTSKIN_05XY = [232, 2] # MP(Numbers)
- BTSKIN_03XY = [104, 0] # State Skin
- BTSKIN_06XY = [104, 0] # 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 = 6 # 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 = [24,24] # [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 =
- y = (i * 24)
- @x[i] = x + 16#+ STRRGSS2::ST_SX
- @y[i] = y + 16#+ STRRGSS2::ST_SY
- end
- end
- # 設定箇所ここまで
- @@f = false
-
-
- #--------------------------------------------------------------------------
- # ★ エイリアス
- #--------------------------------------------------------------------------
- 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 = 16
- bitmap.draw_text_f(0, 0, 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]
- #
- 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]
- @s_sprite[i][l].bitmap.dispose
- @s_sprite[i][l].dispose
- end
- for l in [5,6,7]
- @s_sprite[i][l].dispose
- end
- end
- @@f = false
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- super
- return unless @f
- for i in 0...@s_sprite.size
- s = @s_sprite[i]
- a = $game_party.members[i]
- m = @s_party[i]
- @state_opacity[i] = 0 if @state_opacity[i] == nil
- # 不透明度アップ
- @state_opacity[i] += 8
- if @opacity < 272
- @opacity += 8
- for l in [0,1,2,3,4,15]
- 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[i] < 272
- for l in [8,9]
- s[l].opacity = @state_opacity[i]
- 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[i])
- s[10] = state_size($game_party.members[i])
- @state_opacity[i] = 0
- for l in [8,9]
- s[l].opacity = @state_opacity[i]
- 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[i] = 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[i] = v % 10
- else
- val[i] = v / (10 ** (i)) % 10
- end
- end
- val = val.reverse
- # 先頭の0を取り除く
- for i in 0...@n
- if val[i] == 0 and @n != i + 1
- val[i] = -1
- else
- break
- end
- end
- # スプライト更新
- for i in 0...@n
- @sprite[i].update(val[i], c)
- @sprite[i].x = @x + (i * @s)
- @sprite[i].y = @y
- @sprite[i].z = @z
- @sprite[i].opacity = @o
- end
- end
- #--------------------------------------------------------------------------
- # ● 不透明度の適用
- #--------------------------------------------------------------------------
- def o=(val)
- @o = val
- for i in 0...@n
- @sprite[i].opacity = @o
- end
- end
- #--------------------------------------------------------------------------
- # ● オブジェクト開放
- #--------------------------------------------------------------------------
- def dispose
- for i in [email protected]
- @sprite[i].bitmap.dispose
- @sprite[i].dispose
- end
- end
- end
复制代码
lincen于2011-5-18 00:25补充以下内容:
也许这个是,现在蒙了已经0.0- #==============================================================================
- # ★RGSS2
- # STR11+atb_ATB Wait Gauge v1.0 08/03/20
- # *STR33g1_Battle Status required
- #
- # ・Gauges are only for actors.
- #
- #==============================================================================
- # ■ Window_BattleStatus
- #==============================================================================
- class Window_BattleStatus < Window_Selectable
- # Skin file names
- BTSKIN_17 = "wait_gauge01" # Bars file name
- BTSKIN_18 = "wait_gauge00" # Skin file name
- # XP Style Positions
- #BTSKIN_17XY = [ 0, -8] # Gauge coordinates [x, y]
- #BTSKIN_18XY = [ -8, -16] # Skin coordinates [x, y]
- BTSKIN_17XY = [300, 16] # Gauge coordinates [x, y]
- BTSKIN_18XY = [292, 8] # Skin coordinates [x, y]
- #--------------------------------------------------------------------------
- # ★ エイリアス
- #--------------------------------------------------------------------------
- alias initialize_str11pog initialize
- def initialize(f = false)
- @wagw = (Cache.system(BTSKIN_17)).width
- initialize_str11pog(f)
- end
- #--------------------------------------------------------------------------
- # ● アイテム作成
- #--------------------------------------------------------------------------
- alias draw_item_str11pwa draw_item
- def draw_item(index)
- return unless @f
- actor = $game_party.members[index]
- draw_item_str11pwa(index)
- s = @s_sprite[index]
- # ウェイトゲージ
- s[17] = Sprite.new(@viewport)
- s[17].bitmap = Cache.system(BTSKIN_17)
- s[17].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_17XY[0]
- s[17].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_17XY[1]
- s[17].z = 4
- w = s[17].bitmap.width
- h = s[17].bitmap.height / 3
- s[17].src_rect.set(0, 0, w, h)
- # ウェイトスキン
- s[18] = Sprite.new(@viewport)
- s[18].bitmap = Cache.system(BTSKIN_18)
- s[18].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_18XY[0]
- s[18].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_18XY[1]
- s[18].z = 3
- #
- s[20] = ((@wagw * (actor.ctb_gauge / (actor.max_ctb_gauge * 1.0))) + 1).truncate
- s[17].src_rect.width = s[20]
- # 不可視に
- for l in [17,18]
- s[l].opacity = 0
- end
- # 追加判定
- @s_party[10] = actor.ctb_gauge
- end
- #--------------------------------------------------------------------------
- # ● オブジェクト開放
- #--------------------------------------------------------------------------
- alias dispose_str11pwa dispose
- def dispose
- dispose_str11pwa
- for i in 0...@s_sprite.size
- for l in [17,18]
- @s_sprite[i][l].bitmap.dispose
- @s_sprite[i][l].dispose
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias update_str11pwa update
- def update
- update_str11pwa
- return unless @f
- for i in 0...@s_sprite.size
- s = @s_sprite[i]
- # 不透明度アップ
- if @opacity < 272
- for l in [17,18]
- s[l].opacity = @opacity
- end
- end
- # ウェイトゲージ更新
- update_wa(s,$game_party.members[i],@s_party[i])
- end
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新 (ウェイトゲージ)
- #--------------------------------------------------------------------------
- def update_wa(s,a,m)
- sr = s[17].src_rect
- # 色変更
- gauge = a.ctb_gauge
- if a.aw_gauge > 0
- gauge = a.aw_gauge
- s[17].src_rect.y = s[17].src_rect.height * 2
- elsif @wagw <= sr.width
- s[17].src_rect.y = s[17].src_rect.height
- else
- s[17].src_rect.y = 0
- end
- # ゲージ更新
- if gauge != m[10]
- s[20] = ((@wagw * (gauge / (a.max_ctb_gauge * 1.0))) + 1).truncate
- m[10] = (gauge)
- s[17].src_rect.width = s[20]
- end
- end
- end
复制代码