Project1

标题: 自己修改的插件出了錯誤 [打印本页]

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
+ i; L& I3 \& N8 N- d9 x9 h會在每隻事件怪物的腳下顯示  ~( b7 X0 T* @5 t
問題是不知道為什麼
) B4 Y- x# j$ a有時打怪打一打會跳出
% L& @6 E: Z/ Y' v& E---------------------------- l# T8 O9 f; o" g7 C& j
XAS
' b' M: M9 `4 P0 v0 x---------------------------
. L' C) z! d+ p  J* h! c  c脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
6 {, I: I" Y) p1 N3 @: G. Z$ P; T- C' R1 j- E  k
disposed bitmap' x! l4 F( ~: c$ n, @
---------------------------1 C' m* M% g# |. W# Y* T
確定   9 c2 e9 H+ T7 p: R. M; [* k' I
---------------------------1 V* u  T3 h. k. Z1 R9 x$ b
) `% O. \0 y; d( n( c' J/ N
這是腳本
2 V# F5 J; F# D5 J, [  a0 f$ y9 W+ K6 d0 i
  1. #===============================================================================
    * ?3 I3 s! [, U9 k7 t
  2. # MOG - s Hud 1.0      8 y" H! H8 c3 m+ r* N1 r
  3. #===============================================================================6 F1 H  w$ e9 z- b
  4. # By Moghunter & M) @; S  Q7 D9 S! n. b" N5 Y
  5. # http://www.atelier-rgss.com$ z( O. J# T' R/ {+ \
  6. #===============================================================================
      C+ I& o/ y: Z; E
  7. # Translated by Calvin624
    - \' s- y6 c9 a; Y- m
  8. # http://www.xasabs.wordpress.com/ J4 t% Q- l/ k) @
  9. #===============================================================================" S& N' u2 A3 z5 e
  10. ###############################-DESCRIPTION-####################################& L& c/ x2 N9 ]( }6 ^, `) S2 \6 b
  11. #===============================================================================% h3 a- c, O! j0 N. |) r  T" B
  12. # Personal HUD – displays the HP and SP below the hero.
    + d6 t) O- n4 c9 s
  13. #===============================================================================$ X' g% z' d7 N$ F1 Q" V( O1 |
  14. #
    ) B7 D5 U) K8 u6 K0 l! G: W
  15. # Graphics required:6 s6 a# I: b9 Z& ^7 y$ w
  16. # ; q' G. U) p; l- _2 |
  17. # S_Border_HP_Meter.png
    - [( V' Q1 Y6 ?% j. y
  18. # S_Border_SP_Meter.png4 A/ z4 G! K1 S2 M
  19. # S_HP_Meter.png
    : I  @- R- e2 R
  20. # S_SP_Meter.png
    : Q/ c$ t! s  ^% h" K$ B! I; P
  21. #
    8 P# F: b& p0 o' Q$ \2 m4 u8 L* v
  22. # All images must be in the Windowskin folder.( r! g! r$ i( P3 h0 J0 }
  23. #+ K5 R# Q0 |4 H, q4 D  b) J
  24. #===============================================================================8 b9 {5 Q' s  F
  25. module MOG  n& D2 r' Q3 a1 |0 J$ F
  26. VISIBLE_DEF = false  ' G  M( k8 `7 i3 V
  27. # Show HP meter?3 z- l. w" ?2 ?0 _! J
  28. HP_HUD = true
    7 `5 q4 V, f8 A. {+ s
  29. # Position of the HP border! D  E  B$ P3 B7 h& a4 Y6 k
  30. S_BORDER_HP_METER_X = -2, w0 @8 |& Z1 a6 r3 d1 O% q
  31. S_BORDER_HP_METER_Y = -2  1 u- a, J6 j# p8 T! R5 S
  32. # Position of the HP meter
    * D+ O& w+ ]& r* d# f% C7 p* `
  33. S_HP_METER_X = 0
    6 F3 E9 Q- m  q  K* j2 q
  34. S_HP_METER_Y = 07 G; X/ H8 v! h: b' W
  35. # Show SP meter?
    5 P6 S5 S1 k# n  G% n" G
  36. SP_HUD = true7 r# D0 F+ ]& o) h; l7 t5 R4 Z9 c
  37. # Position of the SP border+ l3 }6 ^) Z7 f- X$ J
  38. S_BORDER_SP_METER_X = 0$ _! d+ O. O) I* A" `9 o
  39. S_BORDER_SP_METER_Y = 10
    ' K! \, _& m  \
  40. # Position of the SP meter9 [( [) z+ D8 e! k
  41. S_SP_METER_X = 0) y( S  M1 K" v6 b* h3 J
  42. S_SP_METER_Y = 10
    , p) g. \$ T1 Q0 A
  43. # Switch to disable the HUD
    7 U" ]" R$ z: t
  44. DISABLE_SHUD_SWITCH = 5
    * [4 P: ?5 f, H# R: J2 z4 C( F3 K
  45. RANGE = 20" @  V. Q  I  |8 s" D' Y
  46. end
    ! ^6 r  S4 L+ S5 [- S4 r) V; b& |
  47. #===============================================================================1 x& o# G! B# }/ u- b2 ?7 e
  48. # S Hud3 z4 k& ?( ^+ c
  49. #===============================================================================
    9 w2 _( q1 b- |8 D# x/ c( [
  50. class S_Hud < RPG::Sprite
    ; @0 V9 w' l- F" c0 U
  51.   include MOG
    3 k. P9 W  N3 i+ P0 \. L) A+ h
  52.   #--------------------------------------------------------------------------
    1 k# ~0 B$ A/ u% w
  53.   # * Initialize
    $ J) q; ?) E# A: h
  54.   #--------------------------------------------------------------------------! }2 I# `0 k$ j6 s. b0 D2 M  @4 n
  55.   def initialize(enemy,viewport)
    " b! x! v0 J0 f' d
  56.     super(viewport) - v' G$ L, I  }8 y' r# N: _  y
  57.     @enemy  = enemy
    ! Q' n7 x0 o+ f% v( `1 B
  58.     @battler = @enemy.battler6 b2 X4 |0 a+ b8 j
  59.     @old_hp  = 0- @8 H9 N1 {$ `- G
  60.     @old_sp  = 0" X' j0 l' u5 s* f6 R, Y# A4 N
  61.     @old_vis = false
      p, U+ U! b3 i
  62.     self.bitmap = Bitmap.new(100, 100)7 F, F' N: d, q7 T* R8 t
  63.     self.visible = (VISIBLE_DEF)#false! v  f9 X& v+ b( Q5 n
  64.     self.z = 100
    : T3 W4 e0 U& [/ @. N
  65.     #HP Border -------------------------------------------------------------------7 L+ }5 v! w( R, |) J$ ?, X
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")7 R+ y0 m9 M& J* p# ^9 f& g8 H& u
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height), c" l; t1 l0 r" m- i9 u6 u: M: J
  68.     @layout_sprite = Sprite.new+ N7 _, ]: e1 k1 {: L
  69.     @layout_sprite.bitmap = @layout_bitmap# j! h. Z! ]. v" R
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)( }- f- r( R9 j+ S
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      " |& t) C; |1 ?2 E- |" r
  72.     @layout_sprite.z = 50013 y5 ]6 W% S7 f* a6 j& Z* x8 {
  73.     #HP Meter ---------------------------------------------------7 V5 f1 t" C5 U/ i
  74.     @hp_flow = 00 B  g7 h* V4 X# T* Q1 k( e
  75.     @hp_damage_flow = 0
    , p- Y; K8 M6 e9 A/ z( Z
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    9 _4 k4 v- g" R8 r3 S% ^3 o
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)( `4 W0 ^# p% y5 z/ G; Y1 t; |
  78.     @hp_range = @hp_image.width / 3
    $ A: T& N, r$ W1 H; V
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  $ D6 A4 M0 d' j0 |& T. j9 z
  80.     @hp_width2 = @hp_range / 2
    ; V2 J! [% H. f. [9 h
  81.     @hp_height = @hp_image.height / 2
    $ V' g  _8 N1 x
  82.     @hp_width_old = @hp_width
    - b) d: c. n% A/ P, u+ a' R
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    7 O) S: d8 L/ w) b- z
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    1 r3 Y, m) ~' n0 X7 E) e3 [& \
  85.     @hp_sprite = Sprite.new
    4 V+ W2 A8 X% p/ u
  86.     @hp_sprite.bitmap = @hp_bitmap  [. O& \) u+ O) k* X
  87.     @hp_sprite.z = 5002
    : ^( ]% C0 Y7 ?' m2 T" l
  88.     #SP Border -------------------------------------------------------------------8 Q; ~+ F' Q: j1 W. d
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    : h6 X* e0 `+ ^. V6 i2 P" l0 f7 g
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)4 y; V( P# E$ R" L% }! ^! S5 S
  91.     @layout2_sprite = Sprite.new2 N0 g. m: k4 M7 a
  92.     @layout2_sprite.bitmap = @layout2_bitmap
      l8 K' y* x- z. j5 y
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)$ b' Q, |2 Y% [0 {! W3 H% ?
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      4 s9 ]8 k$ f8 s
  95.     @layout2_sprite.z = 5001   
    / U) W* f( R/ |
  96.     #SP Meter ------------------------------------------------------/ l" B" z4 ]3 h+ N) x" C
  97.     @sp_flow = 03 c  _. y  d& z( {
  98.     @sp_damage_flow = 06 U; l  `& I& Q  G, ~8 ~' [$ E
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    / O! U1 a1 T7 Q7 R
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    % A3 V0 D" K6 M! M
  101.     @sp_range = @sp_image.width / 38 u0 E- z6 J$ s+ K; [4 I2 w
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  ' W. Q2 L0 a. y2 l2 ]% v% f! {+ z
  103.     @sp_width2 = @sp_range / 2* M& Y3 T9 T: @# p( w1 E8 Z0 `
  104.     @sp_height = @sp_image.height / 27 \5 ]1 U# G1 q8 B' N
  105.     @sp_width_old = @sp_width
    * s$ o. m0 f/ D! y6 n3 l
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    ' B- n% d: O7 I% O
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    % P  t( ?: }' y
  108.     @sp_sprite = Sprite.new( z5 Z% r- F4 G  e$ K, F; z: {  a
  109.     @sp_sprite.bitmap = @sp_bitmap. v) p! ~! W$ n: i, G
  110.     @sp_sprite.z = 5002
    + m6 [$ v' A% |: B3 P5 P' H. w
  111.     update
    3 N2 n% Q% r' L; ]/ B; [
  112.   end. s$ Y! \5 c8 m4 v- `9 k
  113.   #--------------------------------------------------------------------------7 e) T' Z8 J1 X; |, J
  114.   # * Refresh
    $ y9 l6 Z9 q( t; s6 M
  115.   #--------------------------------------------------------------------------
    3 |, k: Q$ g1 Y% Y) J
  116.   def refresh
    5 `' V; b1 C& e
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible" B& t' Q* E6 e' s' Y/ h$ o. B
  118.     self.bitmap.clear
    / g+ R7 X( @( z8 H/ @' O
  119.     @old_vis = self.visible
    - g" Z+ v8 f  y4 G
  120.     @old_sp = @battler.sp
    , I. \4 k7 c; M" ?1 x" @
  121.     @old_hp = @battler.hp
    & ]$ P; B% _+ j
  122.     hp_flow_update. Q7 b- n: w# c/ ]) M* s0 ?
  123.     sp_flow_update1 X7 c% \# E( P8 Q
  124.     hud_pos_update/ ^" V+ q% G8 c+ R, c+ D  `7 a5 @- V
  125.     visible_update3 [3 I6 v+ F* n3 _% J& I7 \) C9 a
  126.   end
    , R% B4 m- U5 J" u* y7 I
  127.   #--------------------------------------------------------------------------
    # p5 t/ ^4 _' ~" T2 @7 m3 ~
  128.   # * Dispose
    3 b/ {3 a7 o" O' T/ ^
  129.   #--------------------------------------------------------------------------
    # q% Y8 O* B* s! G4 I4 E: D. X
  130.   def dispose
    3 ^- C' Z! j5 z
  131.     #HP Meter Dispose
    & Y! e: a7 o6 }2 ^  j+ F! g8 K) W
  132.     @hp_sprite.bitmap.dispose
    $ l# A( Y+ _6 O6 ]) v
  133.     @hp_sprite.dispose# _- w! O, T# m' |5 _; Y% C
  134.     @hp_bitmap.dispose* \6 N! a* C! p1 Z* v) v* j
  135.     #HP Border Dispose
    ( T) [2 |  Y: s  w) ^
  136.     @layout_sprite.bitmap.dispose0 l* D3 p5 z. M% M3 n, |9 ]
  137.     @layout_sprite.dispose
      N" z4 x, a8 F( D. O4 [" o8 T
  138.     @layout_bitmap.dispose% O+ l0 `. M6 J  D- u( n
  139.     #SP Meter Dispose
    1 {6 }2 v( P; b% f9 f& W9 K9 O
  140.     @sp_sprite.bitmap.dispose; ?5 }# e7 O/ v; k
  141.     @sp_sprite.dispose$ M$ w/ y( ~1 K* l3 m
  142.     @sp_bitmap.dispose
      c0 ]" N6 I3 E6 i" v4 Z& `& }0 R
  143.     #SP Border Dispose
    1 H5 z) g0 K) j0 h. c4 u/ B
  144.     @layout2_sprite.bitmap.dispose
    , b# X' O) L$ C" p
  145.     @layout2_sprite.dispose
    2 @4 g# |2 q, T0 Y
  146.     @layout2_bitmap.dispose
    : i: U* ?  p6 L7 d9 V
  147.   end
    2 E& w, `. W9 r9 V: h' t
  148.   #--------------------------------------------------------------------------
    2 j  ~: ]3 t2 w, @. H
  149.   # * Update
    8 U  u' x8 c" e
  150.   #--------------------------------------------------------------------------
    : C- F5 v7 o- A( H0 d- ~
  151.   def update
    . M% K" S4 [2 x* L- g) e1 E9 H$ u
  152.      @battler = @enemy.battler " m& H$ t" Z9 p" z* Y* v0 T5 Y
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?/ E6 M0 @5 V( n4 T2 K
  154.      if self.visible
    " M" `" d' q  i* l0 c
  155.        refresh
    " z6 i, s/ c# p: Z% M6 z5 p
  156.      else
    : p2 j' q3 J$ Y, y3 G" t0 b
  157.        self.bitmap.clear
    * Z2 p# z/ Q1 _' C
  158.      end
    0 \  w5 X, P9 z3 i5 S
  159.   end! J- N5 |/ T' r9 J7 V- l1 \. ]: c1 P
  160.   #--------------------------------------------------------------------------) w; I; E( d( {! i/ p
  161.   # * Visible Update: H: d1 V9 w% [0 R) n/ C# k/ R
  162.   #--------------------------------------------------------------------------
    4 w) a' ~- z$ N% h& ^# X! b
  163.   def visible_update
    2 b# h8 |( e# e0 B2 X2 `  |
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true. h2 C0 e; ^7 O/ p" k
  165.        @hp_sprite.visible = false
    * B3 n, }) @9 u  D% o$ t( s
  166.        @layout_sprite.visible = false
    ; ]) s  K; B! W  u1 w) j
  167.        @sp_sprite.visible = false1 T" [/ ~5 M6 B
  168.        @layout2_sprite.visible = false
    2 R; o9 h* e& b1 X1 g" q
  169.     else
    : W6 C/ Z% A/ @* M$ h+ b
  170.        if HP_HUD == true2 X- d: X+ w  m- [$ d
  171.          @hp_sprite.visible = true
    * D3 I; j9 A: `$ r$ w
  172.          @layout_sprite.visible = true/ p. m$ q, H: B( U) l) c) }; z5 l
  173.        else# |. y; R& ]# X0 }' O. [
  174.          @hp_sprite.visible = false
    * e, {$ }( M: s: y
  175.          @layout_sprite.visible = false
    , S; O" W8 g5 j% V% B  f
  176.        end  
    . @, X# S# A, S4 T
  177.        if SP_HUD == true- {; d# h( K$ b0 x$ p3 L, d, G
  178.          @sp_sprite.visible = true% y  g6 a) l, G! |
  179.          @layout2_sprite.visible = true
    1 S6 o; O0 `, Y- ]6 k$ N
  180.        else
    " s& w! V7 X& ~- h2 \
  181.          @sp_sprite.visible = false, ~; K7 g  @: q2 X9 V6 M5 w0 i8 t
  182.          @layout2_sprite.visible = false/ A% e+ o7 x( y$ c( d3 G
  183.        end
    . E$ l! J+ n; j' R
  184.      end  
    3 `1 T1 O& v" _2 A
  185.    end
    : ]4 V$ c5 l- i/ p6 u
  186.   #--------------------------------------------------------------------------
    8 n) Y/ j( ~% r2 |
  187.   # * Hud Pos Update
    # `, N3 K7 w0 F2 b& e
  188.   #--------------------------------------------------------------------------
    ) D$ X2 t2 Q* U* t
  189.   def hud_pos_update# j7 x2 n3 b% A2 d
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X. G7 @3 ?) W( K
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  ) c1 B* Y8 J5 ]6 e( o6 S, C
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X4 t3 Z4 [' d# B8 \6 z; z; b
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 1 t7 d7 J# n6 b5 |9 q& S% W
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
      ~  B* w$ c& z( B* m
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  ( M$ S, l- V) S  ~8 `/ O: E/ F
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X: H7 u' A+ |: ]0 y. n# V9 i8 y
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     2 u$ Q( L3 |5 H5 z3 h
  198.   end  
    * Z/ G$ p0 y) R$ K2 s$ K+ P
  199.   #--------------------------------------------------------------------------) m; w9 E2 |, u
  200.   # * Hp Flow Update
    ) H+ _2 \) [  b$ P; z
  201.   #--------------------------------------------------------------------------
    $ Z) C: Y0 g1 c1 C- ]( U' P4 U
  202.   def hp_flow_update; [2 v) u6 h" \9 [, @. c+ ^: v
  203.       @hp_sprite.bitmap.clear
    . n7 |4 U4 F& e/ c& `
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  , d$ `  P% ^" I4 ~
  205.           #HP Damage---------------------------------
    ; O  n( g6 x' i) T
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100: e0 c) ~- b$ r# L
  207.           valor = 0.5 if valor < 1          ' z' K# T! K! Y! g9 t- e
  208.           if @hp_width_old != @hp_width
    # O5 u& b& r2 H$ q) K  ~) z
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  ' }+ y+ m: a) }! h8 i) o2 X( v
  210.           if @hp_width_old < @hp_width
      {2 O( p2 w' p; b( T# H& |4 i
  211.              @hp_width_old = @hp_width
    ' g! F0 q& ?5 k
  212.           end      , {3 ?  h3 I- W+ Z$ b
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)* I4 l* u# t$ _9 O
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       / C! h+ g6 e5 S; _# ^( x
  215.           end        
    . }7 U+ g3 `6 J. F
  216.       #HP Real------------------------------------
    * }3 }0 A' w4 g% o( G% X
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)) |0 D: x2 j' U3 F0 V
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    1 q- q" f5 w, F; V' `% {8 [; d
  219.       @hp_flow += 2  ; N8 P0 m5 x4 A
  220.       if @hp_flow >= @hp_image.width - @hp_range0 v% x' m1 z6 k5 H+ W, a6 Z
  221.          @hp_flow = 0  8 X) Q5 ]& S" N$ p9 k& o
  222.       end) N$ E- E% C, ~7 j5 o# I
  223.   end    " \0 k9 v9 {( |/ t  T$ N6 [
  224.   #--------------------------------------------------------------------------$ z# z" }  C3 |- f' a3 D
  225.   # * Sp Flow Update- X' [) b! z6 r8 l4 ?9 H
  226.   #--------------------------------------------------------------------------- j1 {/ F, i" ~" t! f
  227.   def sp_flow_update
    ; Q9 `( Y8 O/ k( j8 X2 x: \, Z, d
  228.       @sp_sprite.bitmap.clear; r, J$ w1 W! N: P6 j1 a, f
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp + ]: W* b3 q# |7 \: i( i* X; C
  230.           #SP Damage---------------------------------# h' V. M) o' ^: d  A% d
  231.           if @sp_width_old != @sp_width/ A- Y: F5 U& e) Z6 z+ w1 b
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    $ w+ X- ?1 l5 u6 _1 A! S
  233.           valor = 0.5 if valor < 1              
    ( P* ~: }4 t2 e5 O! T- w
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  : J/ G* @) o/ \5 r
  235.           if @sp_width_old < @sp_width
    ; n+ `4 T, O2 u4 L- S# m
  236.              @sp_width_old = @sp_width
    . U9 o+ o/ _( C, l; W- c
  237.           end      
    , l, B3 U" ^- _
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    ! i( x% l. }7 z: k  n
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    9 y; T, B, v* @
  240.           end
    " W6 h8 D7 E6 H5 t! `% z1 Y* ^  n
  241.       #SP Real------------------------------------
    ; w0 j% E8 d1 i7 \
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    ) T! j8 Q' K. K' s' X3 b5 B. |
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)2 V3 u( M: b- k
  244.       @sp_flow += 1  
    & z+ r. U6 O3 V" j/ _; X" m
  245.       if @sp_flow >= @sp_image.width - @sp_range
    $ q' j! Z3 f1 s
  246.          @sp_flow = 0  & z5 |! l# `; a
  247.       end
    ; [1 J- M; ]# \- ?
  248.     end            & z3 B+ B5 U; {: T: Z
  249.   end
    * I1 q3 O! V* [3 p9 [7 x- u+ D5 H
  250. #===============================================================================- O0 F2 g0 O. W) e8 r1 C
  251. class Sprite_Character < RPG::Sprite
    ; k# E; x, t2 r- O& x5 g8 B" l
  252. #-------------------------------------------------------------------------------, L0 ~# S4 X3 @! p8 m
  253.   alias :xas_emini_hud_init :initialize
    ; u7 C) C( D& ^; g
  254.   include MOG
    8 i. l) F' s1 s
  255.   def initialize(viewport, character)
    , c# {/ f# L7 k) ]
  256.     xas_emini_hud_init(viewport, character)4 X6 }3 }* w' Y0 r% {: y
  257.     @viewport = viewport
    ( e% D1 w6 U; \8 e! x: }
  258.     return if @character.battler.nil?3 V9 d2 Y8 L4 c+ P7 B
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)- n8 t4 r: q; V# B4 {
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)/ `! L7 u8 S- x) b: B
  261.     return if @character.battler.is_a?(Game_Actor)
    4 ?$ V5 I& |5 N9 u! f! k: b
  262.     @bars = S_Hud.new(@character, @viewport)2 O# e5 f! d# ~& C
  263.   end. J& a6 Y0 ]. s: A0 s& x9 A% R
  264. #-------------------------------------------------------------------------------
    ! _! v" ~* {/ ~
  265.   alias :xas_emini_hud_up :update
    : O. z: K$ A) W! e1 W) j, q# I- l
  266.   def update/ q" H9 t$ ^% s0 r
  267.     xas_emini_hud_up# n1 ?- F; w1 A/ W: U2 A) D
  268.     return if @bars.nil?
    : U& c; b1 L! C6 p3 S, t/ T
  269.     return if @bars.disposed?5 k/ Y; }# Y( M9 N8 j  b& g$ L+ M
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs- V  I3 ^1 D. e' I( e( n3 U- t. d1 f
  271.     @bars.visible = (dis <= RANGE)
    / N. }- z, ]6 c# B  @) @9 G
  272.     if @bars.visible" ~1 q, L( {3 O3 E/ h. |. G# u
  273.       @bars.x = @character.screen_x# - @cw / 4
    ) h; h( Y! b" v* @
  274.       @bars.y = @character.screen_y# - @ch / 41 r4 l0 G9 ~6 I
  275.     end- g/ ^* A5 @$ w. A
  276.     @bars.update2 `: U8 {* r; D- {2 b/ ~8 ]$ K7 f( _8 n" {  e
  277.   end1 f) b9 w" Q9 N. q: a6 p
  278. #-------------------------------------------------------------------------------) z+ D1 `# @' V3 Q
  279.   def dispose
    " t2 e7 g! V9 _( J5 K- c
  280.     super
    . z; s: J- o  K: \
  281.     @bars.dispose if [email protected]?8 l8 }3 G+ v' [; u! ]0 r; `
  282.   end* d% K; F. f3 R! n. K$ V, F
  283. end* p2 Q3 f, l  ]1 e. f; \3 l4 @! }
  284. 6 \. Z/ U, L' J, f( e* H3 T8 s
  285. $mog_rgss_s_hud = true
复制代码

5 z4 m3 Y: h9 G: D, {$ K" K/ l
& {9 H- v- `2 W6 J: n& s! s, O$ h: t" Q# a) t2 Z% R) D" \8 o
上面所說出錯的203行內容為" l! S# O0 J' q: Q( b- I+ D
@hp_sprite.bitmap.clear) ^4 N' T% h% [
: I; k! s# \# N# \) Q# D, Y" I
想知道怎麼解決
; ~3 k' Q7 t) Y: ]! p! N5 t: |
) f+ E/ r, m8 \  s' R該腳本支持3.82- B! j( S+ C% |# V2 ^  N1 Q

1 l& `8 ?' }+ T2 H3 l0 `" p下面是圖檔,要塞在Windowskin下
$ ]; Z2 Q6 N' Z# F. N6 c' C. H* X2 B( n& f
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)   A2 }2 E( U" i0 n
* c' O9 e* l  V' G1 I8 }
" }+ \& E: D" Q2 P6 B! X
5 g! D% P' Y. @4 e6 c

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适1 o+ J) L7 |$ I) Q
结果尝试刷新了一个已经释放的图形
6 Q- y. p, ]' K4 S+ z; @  w' I% a$ `  ~2 X& Y! K
4 Y/ n5 s$ c& A  A  m

) ^  Y5 E2 u4 T2 K' s5 b虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?: M1 I3 N4 U2 T% G; [; S
复制代码
不要后面那个条件貌似就没问题了。6 e  }7 R! C+ c
0 s5 w. U6 k7 m( S, S& z

+ W, y, S) H; W( W+ ?" C! r
. [4 m: [% t$ z' G6 L! T4 a$ X6 H4 _
. [, d8 v# V$ ?' n( Y: h' u
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 $ Z4 r0 g: Q5 d  O: \/ C
貌似是释放的条件不合适' B1 K( z" W- a/ z- u, c- A1 o8 ?1 W) j
结果尝试刷新了一个已经释放的图形
' Y' D; C: U1 S, X9 r- K' c
把後面那個條件弄掉後,的確沒問題了
4 Z6 s7 t4 |4 t  q% o目前從關頭打到關尾結束都沒再彈什麼錯誤
. X  i5 B# o8 o, c/ Z: w非常感謝
# p  h2 [$ f, Y. H* _. _1 o- q( |- V* S
6 ]5 a  I6 q$ y+ H不過我是參照著別人腳本改的
1 m. \7 _+ H1 F; w  F$ p! S+ q他寫的條件式也是那樣,但我用他的沒什麼錯誤3 j+ ]$ `' Q4 r! J- `! X( C
不知道是怎麼回事
  v) R/ ^& ?, G9 }" E  ^是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
( g$ v& ?  Y" n* K' w我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events$ V) ]$ H  K8 Q( a. t& ~# O7 S$ `
嘛..这个数组吧..我在以前试写队友的时候关注过一点6 g5 J4 A, F$ r1 ?
不知道XAS内部对它做了什么手脚还是为啥,6 h1 V) ?+ g; `/ y% [* e
总有那么一瞬间,没有被消灭的敌人事件也变成了nil
  a4 P( d. V$ b! j; A* q) K+ \/ U& P  s, ~
$game_map.events.values[@enemy.id].nil?
: N( P0 g8 ^3 i* y! w1 g因此自然而然的返回true并符合条件把图形释放掉了
; x( u9 `5 q3 J  |3 i8 B" I  R/ e1 w" P
LZ应该有注意到吧,- s: Z: d9 S% ^# T8 m6 n
我测试的时候发现报错前几帧,图形会消失,
" W' U& Q0 m% q7 ^- k& l# g应该就是“误以为敌人被消灭”了。
  m8 A  w; P, ^& j
3 {3 R  h# ~% g- |1 c+ ^" q/ z  o受限于个人水平,至今无法找出$game_map.events的真相..6 A5 T7 `3 d1 w; K/ W

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 ) ]1 U3 p" B' B+ R, G# W8 D
$game_map.events" f* N/ x* j$ a* ]3 j5 k" g
嘛..这个数组吧..我在以前试写队友的时候关注过一点
( a  k* k% e2 `/ h3 M不知道XAS内部对它做了什么手脚还是 ...

5 {: s* j' n1 _( b+ a4 `當初我把那個條件式看了三遍,都不覺得他有什麼錯" L* x! L% t7 Q
原來還有這麼深奧詭異的事XD
) ^+ z* J: F7 F5 T1 N4 @7 o) a
* [, w" J0 ~: K8 B0 P: i; n) s錯誤發生前的確會有圖形沒顯示出來
6 o* N. X5 m7 B: S8 H3 A不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
5 Y( A. x) E& F0 Z沒想到居然是詐屍了XD
: _7 P1 W0 o4 d: @/ h$ l6 z4 [( t
不曉得3.91有沒有修正這問題...
! K& E8 E" d7 v不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
$ V# Z! p" E( U
7 }4 Z2 |- _- X' r+ u/ s. c( m的确* `6 H) Q  L# A. G
用惯3.82之后想去整3.91觉得压力甚大..
+ p3 B4 {2 u& M$ j* c" ]干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
3 G$ f) k1 v/ f; j5 ^
2 S( H: F: \1 M然后加一个判断处理的。(我记得有一个disposed?)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1