赞 | 0 |
VIP | 2 |
好人卡 | 0 |
积分 | 1 |
经验 | 3901 |
最后登录 | 2017-7-16 |
在线时间 | 149 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 149 小时
- 注册时间
- 2010-8-10
- 帖子
- 53
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
角色挨了打,要等到1回合结束后HP/MP才刷新,这是为什么?脚本如下:- #==============================================================================
- # ★RGSS2
- # STR11e_バトルステータス++ 1.3 09/08/07
- #
- # ・STR11c_XP風バトル#メインのステータスレイアウトを大改造
- # ・セクションの位置はSTR11cより下
- # ・デザインや演出にこだわりたい人におすすめ
- # ・素材規格とか設定とかややこしいけどがんばってください!
- #
- # ※v1.1で数字素材の規格が変更になりました。ご注意ください。
- #
- # ◇機能一覧
- # ・格ゲー風味のHP/MPゲージ
- # ・高速回転(?)する数値
- # ・流れるステートアイコン/何もステートが掛かっていない時は非表示に
- #
- # ◇素材規格
- # このスクリプトの動作には複数のスキン画像が必要になります。
- # スキン画像はSystemフォルダにインポートしてください。
- #
- # ・メインスキン
- # HP/MPゲージの下地になるスキンです。
- # サイズ制限無し
- # ・HP/MPゲージ
- # 通常ゲージと追尾ゲージの二つをひとつの画像にまとめたものです。
- # 幅 = 無制限
- # 高さ = ゲージの高さ(任意のサイズ) * 2
- # 一列目に通常ゲージ、二列目に追尾ゲージを配置します。
- # ・数字
- # 0123456789の数値を横に並べたものを
- # HPMPの数値が通常、1/4未満、0の順に縦に並べます。
- # 幅 = 数字1コマの幅(任意のサイズ) * 10
- # 高さ = 任意の高さ * 3
- # ・ステートスキン
- # ステートアイコンの下地になるスキンです。
- # なにもステートが掛かっていない時は非表示になる仕様の為、
- # メインスキンとは別に用意します。
- # サイズ制限無し
- #
- #------------------------------------------------------------------------------
- #
- # 更新履歴
- # ◇1.2→1.3
- # STR11dを最新VER(2.2)にするとレベルアップポップが出ないバグを修正
- # ※STR11cもバージョンアップしてください
- # ◇1.1→1.2
- # 数字の回転速度を変化量に応じて可変するようにした
- # ◇1.0→1.1
- # 残りHPMPに応じて数字グラフィック(色)を変えることができるようになった
- # アクターの名前表示機能を追加。STR11c側で設定してください
- # ◇0.9→1.0
- # ステート更新時の挙動が気に入らないのを修正
- # ◇0.8→0.9
- # 最大MPが0だと動作しないバグを修正
- # 細かいミスを修正
- #
- #==============================================================================
- # ■ 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 = "Btskin_n00" # HP(Numbers)
- BTSKIN_05 = "Btskin_n00" # MP(Numbers)
- BTSKIN_03 = "" # State
- # Skin coordinates[ x, y]皮肤坐标
- BTSKIN_B_XY = [-16, 52] # 基準座標
- BTSKIN_00XY = [ 0, 0] # 主皮肤
- BTSKIN_01XY = [ 0, 3] # HP(量规)
- BTSKIN_02XY = [ 0, 20] # MP(量规)
- BTSKIN_04XY = [ 48, -8] # HP(数字)
- BTSKIN_05XY = [ 48, 10] # MP(数字)
- BTSKIN_03XY = [ 44,-54] # ステートスキン
- BTSKIN_06XY = [ 44,-60] # ステート
- # Various Settings速度
- BTSKIN_01GS = 1 # HP Gauge Speed (Low values are fast)
- BTSKIN_02GS = 1 # MP Gauge Speed(Low values are fast)
- BTSKIN_04SS = 1 # HP Rolling Numbers Speed(Low values are fast)
- BTSKIN_05SS = 1 # MP Rolling Numbers Speed(Low values are fast)
- BTSKIN_04NS = 1 # HP Maximum Digits
- BTSKIN_05NS = 1 # MP Maximum Digits
- BTSKIN_06WH = [72,72] # [State Width, Height]
- BTSKIN_06SC = 1 # State Icon Scroll Speed
- # (Values close to 1 are fast)
- # 战斗状态坐标
- def set_xy
- @x = []
- @y = []
- for i in 0...$game_party.members.size
- x = (i * 160) + 40
- y = 3
- @x[i] = x + 16#+ STRRGSS2::ST_SX
- @y[i] = y + 16#+ STRRGSS2::ST_SY
- end
- end
- # 设定处到这里
- @@f = false
-
-
- #--------------------------------------------------------------------------
- # ★别名
- #--------------------------------------------------------------------------
- alias initialize_str33 initialize #initialize初始化
- def initialize(f = false)
- initialize_str33
- unless @@f
- @f = @@f = true
- else
- @f = false
- end
- set_xy
- @s_sprite = []
- @s_party = []
- @s_lv = []
- [url=home.php?mod=space&uid=316553]@opacity[/url] = 0
- self.contents.dispose
- self.create_contents
- self.back_opacity = 0
- self.opacity = 0
- #@column_max = $game_party.actors.size
- @viewport = Viewport.new(0, 480-128, 640, 128) #新视窗
- @hpgw = (Cache.system(BTSKIN_01)).width #HP
- @mpgw = (Cache.system(BTSKIN_02)).width #MP
- @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)
- #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
- #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]
- s[l].opacity = 0
- end
- for l in [6,7]
- s[l].o = 0
- end
- # 情報記憶(actor, x, y, size = 151)
- @s_lv[index] = actor.level
- @s_party[index] = [actor.name, actor.hp, actor.maxhp,
- actor.mp, actor.maxmp, actor.states]
- #
- x = index * 161 - 20
- y = 15
- #draw_actor_baselevel(actor, x - 30, y + 67)
- s[16] = Sprite.new
- s[16].bitmap = Cache.system("Battle.Status_" + actor.name)
- s[16].x = @x[index] - 56
- s[16].y = @y[index] + 221
- s[16].z = 0
- 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]
- if @s_sprite[i][0]
- @s_sprite[i][0].bitmap.dispose
- @s_sprite[i][0].dispose
- end
- if @s_sprite[i][1]
- @s_sprite[i][1].bitmap.dispose
- @s_sprite[i][1].dispose
- end
- if @s_sprite[i][2]
- @s_sprite[i][2].bitmap.dispose
- @s_sprite[i][2].dispose
- end
- if @s_sprite[i][3]
- @s_sprite[i][3].bitmap.dispose
- @s_sprite[i][3].dispose
- end
- if @s_sprite[i][4]
- @s_sprite[i][4].bitmap.dispose
- @s_sprite[i][4].dispose
- end
- if @s_sprite[i][8]
- @s_sprite[i][8].bitmap.dispose
- @s_sprite[i][8].dispose
- end
- if @s_sprite[i][9]
- @s_sprite[i][9].bitmap.dispose
- @s_sprite[i][9].dispose
- end
- if @s_sprite[i][16]
- @s_sprite[i][16].bitmap.dispose
- @s_sprite[i][16].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]
- 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)
- [url=home.php?mod=space&uid=133944]@w[/url] = 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
- [url=home.php?mod=space&uid=114926]@sprite[/url] = []
- # 字間設定
- 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
复制代码 |
|