Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Script HUD de combat Ven 23 Sep 2011 - 21:13 | |
| Bonsoir En cherchant un peu j'ai trouver un script fort simpatique permettant de modifier le HUD de combat comme ceci: Le problème est que je me retrouve avec cette erreur quand je l'utilise : j'ai pourtant suivit les instructions comme il le fallait mais je ne vois pas ce que je pourrais faire d'autre . Voici le script : - Code:
-
#============================================================================== # ★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 = "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 = [134, 16] # HP(Gauge) BTSKIN_02XY = [220, 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 = 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 = [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 = 0 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 0...@sprite.size @sprite[i].bitmap.dispose @sprite[i].dispose end end end Voila voila Cordialement |
|
Dhamma Metta Chevalier Dragon (niveau 5)
Messages postés : 1897 Date d'inscription : 22/06/2011 Jauge LPC :
| Sujet: Re: Script HUD de combat Ven 23 Sep 2011 - 22:10 | |
| "unidefined methode "draw_text_f" for...."
signifie que la méthode draw_text_f n'existe pas elle n'est pas défini (undefined).
Enlève le "_f" pour voir. |
|
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: Script HUD de combat Ven 23 Sep 2011 - 22:40 | |
| ça marche nickel
merci pour ton aide (une fois de plus^^) |
|
Invité Invité
| Sujet: Re: Script HUD de combat Ven 23 Sep 2011 - 22:47 | |
| Trop fort M_P. |
|
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: Script HUD de combat Ven 23 Sep 2011 - 22:51 | |
| c'est fou quand même en même pas une semaine que je suis ici j'en ai appris bien plus que en 5 mois sur les autres forum ça claque=) |
|
Invité Invité
| Sujet: Re: Script HUD de combat Ven 23 Sep 2011 - 22:55 | |
| Et encore ce n'est que le début. ^^ D'ailleurs si tu tiens tant au système de limite, fait une demande. |
|
Dhamma Metta Chevalier Dragon (niveau 5)
Messages postés : 1897 Date d'inscription : 22/06/2011 Jauge LPC :
| Sujet: Re: Script HUD de combat Ven 23 Sep 2011 - 23:01 | |
| |
|
Shyno19 Ninja (niveau 5)
Messages postés : 220 Date d'inscription : 21/09/2011 Jauge LPC :
| Sujet: Re: Script HUD de combat Ven 23 Sep 2011 - 23:34 | |
| - Garruk a écrit:
- Et encore ce n'est que le début. ^^
D'ailleurs si tu tiens tant au système de limite, fait une demande. j'y manquerais pas =) mais pour l'instant j'ai le skin de mon hud de combat et mes menu a faire =) |
|
Jin Ancien staffeux
Messages postés : 8557 Date d'inscription : 08/12/2010 Jauge LPC :
| Sujet: Re: Script HUD de combat Sam 24 Sep 2011 - 1:26 | |
| Bah tu sais, M_P commence là prog, et moi j'aime trifouiller les scripts qui me plaise à moitié pour qu'il me plaise entièrement.
Et garruk qui en connait un petit peu sur le sujet.
Bon après il y a les frères Bogdanov ( nuki et molok) mais bon ... je ne dirais rien sur leur flemmardise x) |
|
Contenu sponsorisé
| Sujet: Re: Script HUD de combat | |
| |
|