Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
7 c# ^( Z9 K( c8 \( g會在每隻事件怪物的腳下顯示3 L8 {+ C/ }# }" }. \0 Q
問題是不知道為什麼+ E1 y# n% X$ |# b/ A/ q/ U% P
有時打怪打一打會跳出- o4 n8 E& Q, t& ^8 ^% m2 a
---------------------------. g8 U& ^2 v' X: i* D' K1 C9 I
XAS
  X, I2 b* l  S1 [0 `+ O4 t4 T---------------------------! o5 n- u, }5 h) v4 g& ?5 \
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。! M& G- L: R; a% C: w

0 r5 K- i) u& @. ~$ M) R) adisposed bitmap
1 T% [* B$ m: n* o( |' l& [2 h---------------------------! ^% M) w1 I+ y3 M
確定   
- b9 _  T' G' b  J---------------------------
! t9 t! u/ @0 v) F' G: M3 v% M4 `2 d% J
這是腳本
( q. O. i0 B  j- i% v
9 D, [( J9 @/ j9 ~% W' q
  1. #===============================================================================
    * V9 t. n4 G8 n. Y" O0 U
  2. # MOG - s Hud 1.0      
      s4 }$ i! d) G8 S
  3. #===============================================================================
    , Z0 ?/ v$ Q& ~1 k1 h# k- T6 M- @
  4. # By Moghunter
    $ E3 ^( J1 {: X1 m! T
  5. # http://www.atelier-rgss.com7 e. S  @& `6 d* d9 I
  6. #===============================================================================' F9 N& h- w$ |* _9 O$ l: G
  7. # Translated by Calvin624 % C6 J4 n* A% L. x
  8. # http://www.xasabs.wordpress.com
    7 ~0 @. v7 z0 ^# D9 g  g1 Z  W
  9. #===============================================================================# F' S, R& o, x$ a, W) [+ S0 u8 G
  10. ###############################-DESCRIPTION-####################################
    & \; Z; g* c$ Z' V0 Q$ |1 I: j
  11. #===============================================================================
    $ D7 G. \& P' r5 M! T$ l
  12. # Personal HUD – displays the HP and SP below the hero.) b& P: K0 K+ u$ q
  13. #===============================================================================
    4 u+ Y/ i8 f6 T
  14. #
    * ~6 p$ }, }8 J
  15. # Graphics required:
    5 R1 s7 F. z5 ?9 j
  16. #
    4 t5 F1 }# C2 `; q
  17. # S_Border_HP_Meter.png
    . L0 p9 g; Z8 p- p! s8 g! ~
  18. # S_Border_SP_Meter.png
    ( I. T" P, o4 I+ \& a; O
  19. # S_HP_Meter.png$ d  z/ O' x  d9 F% J! J
  20. # S_SP_Meter.png# S& J2 W7 \* k% @2 r/ y
  21. #* B2 J  P: z" ]5 k. O! ?
  22. # All images must be in the Windowskin folder.  F# @  Y0 M- P" Y8 Y  `3 V
  23. #9 x# l& @- n5 E# \9 y
  24. #===============================================================================) V* a5 u& F+ h9 J" {9 ]- @3 g; G
  25. module MOG
    " K% n; F; j0 p
  26. VISIBLE_DEF = false  
    6 O6 U' k( G4 z* J7 I/ G* d
  27. # Show HP meter?7 E; q6 ~: @8 z* J' J
  28. HP_HUD = true
    ) O' O* x. C; G+ a
  29. # Position of the HP border
    & k% C& e2 [( W) c$ `
  30. S_BORDER_HP_METER_X = -23 |! e1 H3 a5 Z& L4 M
  31. S_BORDER_HP_METER_Y = -2  
    * y- r, i6 _1 N3 f$ M7 c* @
  32. # Position of the HP meter
    3 \% f/ Q  B0 B9 ?
  33. S_HP_METER_X = 0
    . Q. s/ r2 a9 S' X4 {
  34. S_HP_METER_Y = 0
    - b1 W, I4 _% q) c0 C
  35. # Show SP meter?; {# g; O, ]+ l) b
  36. SP_HUD = true
    ! v# E, c2 q  C0 a
  37. # Position of the SP border
    1 O) a" t9 a/ f; Y6 r; I* ?4 t
  38. S_BORDER_SP_METER_X = 07 `5 d4 x# G) f6 h7 M8 ~9 D9 j
  39. S_BORDER_SP_METER_Y = 10
    3 d' y! ?! f7 ]4 L3 G, f
  40. # Position of the SP meter  v1 W; c0 C0 d) Y1 w/ B, a
  41. S_SP_METER_X = 0' i6 d( Y0 ~. Q; h2 }0 S
  42. S_SP_METER_Y = 10
    0 m: v/ F2 O/ I
  43. # Switch to disable the HUD1 j( O2 p7 I9 I
  44. DISABLE_SHUD_SWITCH = 56 {0 H, x  L2 e4 N
  45. RANGE = 20  l" R6 w7 W. ]" E
  46. end
    # m3 U* P# V9 t, D0 E
  47. #===============================================================================) o4 l5 _5 f. Q7 [
  48. # S Hud
    / k8 n  T% l7 G+ ?, D' B
  49. #===============================================================================
    0 ~, \- k+ q; h2 }& v& O
  50. class S_Hud < RPG::Sprite0 `( D1 O5 d8 E
  51.   include MOG) p5 e& R+ c8 Z$ R6 f, D
  52.   #--------------------------------------------------------------------------* b- \6 Y8 Y4 r4 L
  53.   # * Initialize: ^+ r5 K: s! ^  l
  54.   #--------------------------------------------------------------------------# Q  D. q, P& i3 Z3 X. A
  55.   def initialize(enemy,viewport)2 `7 S" J) ?& P
  56.     super(viewport) ! b% z" i+ h1 J% C+ O
  57.     @enemy  = enemy3 v( ]+ o7 @* L
  58.     @battler = @enemy.battler4 W0 X/ }: H* S  H0 }' _* ~
  59.     @old_hp  = 0, K0 S/ _! y7 ^" e# H- }0 C
  60.     @old_sp  = 0: _- B* j" D* L, k" e
  61.     @old_vis = false
      u' m; c9 R6 }8 j& K3 v
  62.     self.bitmap = Bitmap.new(100, 100)
    7 @" E" v4 t: \& s: ?$ H8 A. c" p
  63.     self.visible = (VISIBLE_DEF)#false
    * l% d$ x' b" ?4 @
  64.     self.z = 100
    # M" y5 Q  a" U, {6 O
  65.     #HP Border -------------------------------------------------------------------
    3 C1 U9 N6 j* i/ r5 Q1 K
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
      Q4 D* A; |8 h4 P. o  M- c
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)/ C4 a$ {1 y4 T+ l5 D0 h
  68.     @layout_sprite = Sprite.new5 j' Q3 i7 A2 v5 p, u
  69.     @layout_sprite.bitmap = @layout_bitmap
    / X& K8 Q7 X  d3 Q7 M; L  r) g
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height): h7 X# y( f) H/ O
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      1 Y% u& W# ^* o
  72.     @layout_sprite.z = 5001
    % G9 r) D& P* A8 g+ h
  73.     #HP Meter ---------------------------------------------------3 L+ R# q3 e5 V" C, w" o0 U
  74.     @hp_flow = 0
    / v' E  K/ V, @& ~" O: }, s- N
  75.     @hp_damage_flow = 08 x5 s! ^7 y0 Q/ o" v& i! M
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    $ \, T# `& _% i! ~) D: c
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height); G& P+ ?7 \4 a) ]) G9 V: z
  78.     @hp_range = @hp_image.width / 3" H! S1 q) T$ R1 L# n+ S; ?% q5 O+ j
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    ! i& u9 `& ?1 w& c( J( Q
  80.     @hp_width2 = @hp_range / 2
    ! B( {. ~: J9 \4 I- ]6 Q* a
  81.     @hp_height = @hp_image.height / 28 x. S( B4 |4 T  }2 p) v) w1 ?
  82.     @hp_width_old = @hp_width
    9 T8 s9 x5 o* b$ v# t, M! A6 W6 {- Q9 E
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    8 q0 v2 T( r& H$ V% u7 L
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) ; D9 }% V- f3 A) F0 d, }9 x
  85.     @hp_sprite = Sprite.new
    . w# o+ z& ?+ M' i2 d
  86.     @hp_sprite.bitmap = @hp_bitmap4 q! g/ w9 y  \
  87.     @hp_sprite.z = 5002- w* A$ y! U9 P4 o
  88.     #SP Border -------------------------------------------------------------------
    2 f  L* \6 s: ~2 i4 _# ]4 E
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")( s+ H) h+ G) n( o/ S/ o" ]
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    2 y- P: W' p1 I0 y
  91.     @layout2_sprite = Sprite.new
    ! v9 \5 q6 o" o" g% h( r
  92.     @layout2_sprite.bitmap = @layout2_bitmap( }5 u( s; n8 S% \4 |" f1 }( I, ], _
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)6 Z2 H; W! t% G+ d& ]1 L
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      8 M* M, E: l' h$ V
  95.     @layout2_sprite.z = 5001   
    & t8 E) ?* c! H* `2 K# H* P
  96.     #SP Meter ------------------------------------------------------
    ; P& Y1 p: I9 g( c
  97.     @sp_flow = 0' L  f3 F7 {6 a! P- A. B( l
  98.     @sp_damage_flow = 03 G: J! U6 }7 f8 `. ?( m  u
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    * J" P& R7 o+ e
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    2 R, X2 l, R2 m4 R
  101.     @sp_range = @sp_image.width / 3' k! f5 l0 ~& V
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    5 n; D. E; X" r: l' N6 y9 E2 C; @
  103.     @sp_width2 = @sp_range / 2) ?% q. e2 ]0 D5 a
  104.     @sp_height = @sp_image.height / 2, G: Q  f" B/ y4 V4 x
  105.     @sp_width_old = @sp_width
    - i1 I! L& J6 F' p4 d
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    4 U! U' ]  e  L
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    8 S( o+ _) e# j4 U
  108.     @sp_sprite = Sprite.new
    - ^* P1 J! R7 i
  109.     @sp_sprite.bitmap = @sp_bitmap
    5 w! _2 z5 v. j0 h
  110.     @sp_sprite.z = 5002
    + S1 c( w7 }- {( C
  111.     update; l1 [) d/ w: Y
  112.   end
    5 Q4 P8 X+ T" l" S7 y$ [
  113.   #--------------------------------------------------------------------------. M) {, g( b+ |# a: Q
  114.   # * Refresh" C: P1 B0 \. |7 z
  115.   #--------------------------------------------------------------------------$ `3 D* x% ?1 ~5 p) q9 I. @
  116.   def refresh6 w6 k  S8 E; d4 |/ U: c% Q/ p
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    7 Y! f  y+ H: v( w" }
  118.     self.bitmap.clear
    8 Q: L1 I- O# c( p) `
  119.     @old_vis = self.visible
    . d* y3 n3 s* L& O; y
  120.     @old_sp = @battler.sp
    - e- Q  B0 K1 G- ^% C& b
  121.     @old_hp = @battler.hp
    & I0 [5 d- A& i! e+ N2 Z; q
  122.     hp_flow_update
    ! {  x& r3 P, t, A9 _
  123.     sp_flow_update
    - p6 Y% |; r: k  g5 H
  124.     hud_pos_update
    : k# j  g) Y. Q3 E* o
  125.     visible_update
    $ N1 }( k5 s% i( J; Y
  126.   end
    2 x) x" Q0 u+ p
  127.   #--------------------------------------------------------------------------# \; D) q( ]- ]9 K5 Q
  128.   # * Dispose
    ; c- F6 T- v1 Q2 P
  129.   #--------------------------------------------------------------------------1 c9 {0 H' B6 U5 Z1 @
  130.   def dispose* k. D6 D2 l5 T/ l2 P3 f$ s9 S
  131.     #HP Meter Dispose5 X; y5 r& b8 Z8 K! `% D
  132.     @hp_sprite.bitmap.dispose8 ^5 E: {& ?$ ^& e- x
  133.     @hp_sprite.dispose) O; U( X! I4 |0 U. W1 [
  134.     @hp_bitmap.dispose- p3 g* B( x& u4 v7 x- U& c
  135.     #HP Border Dispose8 h# X- ^; n8 [( R: A7 u
  136.     @layout_sprite.bitmap.dispose4 i: \) n2 N5 X6 z7 t% q
  137.     @layout_sprite.dispose) Q0 h' V4 v, h  U
  138.     @layout_bitmap.dispose7 p% a5 H( ~! y# z5 N2 w; X2 O
  139.     #SP Meter Dispose6 r2 q/ x3 d7 `6 C% N- x
  140.     @sp_sprite.bitmap.dispose0 s9 k) A/ u) Q% u. Q6 i
  141.     @sp_sprite.dispose+ g) O+ v6 ?2 G; j5 Y- v: X$ }
  142.     @sp_bitmap.dispose
      v" E" x& [. z7 ~. Z
  143.     #SP Border Dispose
    4 n. b$ `, n: b( G% q' o+ K
  144.     @layout2_sprite.bitmap.dispose
    - E  n; t/ o- a6 s% x/ j
  145.     @layout2_sprite.dispose2 [( Z2 x4 e( d9 J$ ?
  146.     @layout2_bitmap.dispose) v' }  a/ l; r0 ~9 m4 e1 Z- g
  147.   end: e' G0 d6 T' f0 J6 @( W% }
  148.   #--------------------------------------------------------------------------) J7 d" o4 ^& g' l7 R! }# D
  149.   # * Update
      L/ e' c% e5 O& C
  150.   #--------------------------------------------------------------------------% y  Q0 @6 `) [  C- {
  151.   def update
    . o& f  c+ Z( y- }. e
  152.      @battler = @enemy.battler ' f$ _- c+ y% d" Y/ N2 x
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    6 v) _- c* M# @' K' E' j
  154.      if self.visible1 N# L3 m( V0 `
  155.        refresh& x+ Q, \1 @& \) q( C1 g
  156.      else
    7 i- j2 l/ `2 c% Z6 w1 [5 q
  157.        self.bitmap.clear
    " D0 x0 \: O/ J2 m( X% w; K. B/ k, U4 k
  158.      end1 R' u/ o% D5 A8 G
  159.   end7 a$ G' H4 S9 S
  160.   #--------------------------------------------------------------------------
    2 g0 u' c) o! u5 s( w+ }
  161.   # * Visible Update* E: H  P' {% l9 b* [6 X  E3 z
  162.   #--------------------------------------------------------------------------3 |/ q3 w* y& E
  163.   def visible_update) l1 k7 j- G9 X9 r9 \% ]; v
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true6 q  F) J& A+ a2 t2 b- I# A
  165.        @hp_sprite.visible = false
    ( Q: ?* {* c9 ^0 _7 i
  166.        @layout_sprite.visible = false
    5 i1 H/ Q2 m2 p- J& o
  167.        @sp_sprite.visible = false9 z; F0 R: Y2 R6 U% R
  168.        @layout2_sprite.visible = false+ O$ h& d3 C$ k; y
  169.     else: @% Z- P& Y7 h  B; f, a( \( }
  170.        if HP_HUD == true$ T+ H* X, o. v4 d) M. R
  171.          @hp_sprite.visible = true3 e* r- w- I2 x: T' l/ g7 v5 T" a
  172.          @layout_sprite.visible = true$ W5 z& Y% b4 I/ s6 m  N7 G
  173.        else
    : d& m% o- y7 y
  174.          @hp_sprite.visible = false
    1 b# h! G0 F8 |& Y: b- W  g
  175.          @layout_sprite.visible = false
    ' @. @! W! ?4 z$ p( v/ O8 [
  176.        end  * `+ \" c9 ^' k, T
  177.        if SP_HUD == true
    7 J" |* j  U0 Z# U
  178.          @sp_sprite.visible = true
    * _! E0 v6 z! `$ J7 j" a$ b  u
  179.          @layout2_sprite.visible = true
    ! n: H: H$ P0 B% U0 I6 ]6 ^
  180.        else: Q8 i. j' X0 M8 F, y" x
  181.          @sp_sprite.visible = false
    & n: }% G  ]7 K. O4 [
  182.          @layout2_sprite.visible = false
    4 ^; k; d3 K, o8 @
  183.        end
    : u! H8 F9 r( I3 M! b' N" I6 s; |
  184.      end  ) a- l, e% n1 e; l, `
  185.    end & \; ]0 {3 ~( l5 k3 D, y+ g9 k
  186.   #--------------------------------------------------------------------------4 d5 v9 Z1 z2 V3 p2 o3 F
  187.   # * Hud Pos Update
    9 k0 x4 p2 X) q- y( S' G% r
  188.   #--------------------------------------------------------------------------
    # v% e- a) ^1 o) c7 F0 u
  189.   def hud_pos_update2 o1 {0 x8 ^1 Z: o
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    ) Q; A' k- S2 H
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  6 {' ^2 C9 J1 \8 i
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
      M( \( F9 A! P: E5 [: @9 A5 o% x
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    . H  e; Q) _" z. I
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X1 ?6 R3 [  c: B. }" m
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  ! p% v3 y5 S4 w0 c' Z/ N5 P
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X0 c% G* k: h' s( w) h3 m7 Q1 C) x
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    4 z; z! U, _+ N: e& V2 b& @
  198.   end  
    8 j' t2 k& u6 U: d2 @! b5 @+ C$ M
  199.   #--------------------------------------------------------------------------3 B* z8 _8 C% g+ f) V: w
  200.   # * Hp Flow Update
    0 K/ w  @/ C1 D, V
  201.   #--------------------------------------------------------------------------/ g! L% M$ x0 p
  202.   def hp_flow_update
    ) ^3 S2 K2 v* v* F1 g4 n" Y$ q
  203.       @hp_sprite.bitmap.clear. p+ ?" D, B% u& O, z1 n
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  5 d4 v  o0 X/ f- O1 }$ Z- `
  205.           #HP Damage---------------------------------8 y+ r/ R( H5 T- F' _
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100& N' O. d8 U: C
  207.           valor = 0.5 if valor < 1            S6 X3 s! f' Q" Q
  208.           if @hp_width_old != @hp_width1 ]' e5 `$ Z5 G
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  5 R; v0 V0 {6 X3 x# A" J
  210.           if @hp_width_old < @hp_width % m3 ]3 T  ^. F! p3 C7 H
  211.              @hp_width_old = @hp_width3 u3 E) J! z2 o8 U! h
  212.           end      ( x+ T" l/ p3 `- P; a. W6 _
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    3 z/ ~+ j& \6 E, W
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    ; p( a1 E/ A) o2 h
  215.           end        1 r( l' H: p# l# u' }
  216.       #HP Real------------------------------------- h9 J' B# T: H- a3 y: a; c
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    1 P1 {" E) l4 @6 l( U. g$ L
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    / [4 M6 [3 l% U9 m
  219.       @hp_flow += 2  
    : i( \" F  D1 X6 A2 s, T7 B' n
  220.       if @hp_flow >= @hp_image.width - @hp_range% Q  \  [3 h' i3 G/ |
  221.          @hp_flow = 0  1 }1 ~' F- R& W* b% n, n) ^
  222.       end* u, D% l+ z/ h; A4 {% s8 Q
  223.   end    ; z8 {. j4 F: r, |: m
  224.   #--------------------------------------------------------------------------" Q: {( G0 K& M! d0 B  d$ T
  225.   # * Sp Flow Update3 X/ e9 E1 o" W& ]2 ]
  226.   #--------------------------------------------------------------------------# p1 Q7 M1 s; w5 d, o0 l7 Y3 W
  227.   def sp_flow_update
    3 M& q% ?6 Z2 z
  228.       @sp_sprite.bitmap.clear
    ! }3 d, t9 T% `; c) g0 W0 ]
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp - Q! x! \3 [& t9 y4 Q
  230.           #SP Damage---------------------------------
    ) Y; A" n* [# a1 k* I& O% g! e
  231.           if @sp_width_old != @sp_width
    3 [! H" N6 A: k- y
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100$ N, t- g& }+ l9 f# k+ c) u, K+ G
  233.           valor = 0.5 if valor < 1              
    * E) I6 j% M2 {6 a3 q) z5 B
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    9 A/ h( w! O+ W/ ~& c; R" [/ i% \
  235.           if @sp_width_old < @sp_width
    ' R  j% n; K- G# F4 y8 A
  236.              @sp_width_old = @sp_width
    8 [" u# D6 |% U6 r# B1 b
  237.           end      
    - E6 c% E4 k7 l( m9 I5 M8 w
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    " w; L6 I) P0 K
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) % @6 ]% K8 e0 D4 z
  240.           end
    . x2 ~3 x% C9 T3 N9 T, {3 K
  241.       #SP Real------------------------------------
    ) p6 ]- V% @% H9 \, V
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)0 h( a* ^1 g9 V  g/ N/ t1 A
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    0 u4 Y2 a/ G% X$ b0 s
  244.       @sp_flow += 1  
    ! y/ U  a* n* _' R
  245.       if @sp_flow >= @sp_image.width - @sp_range
    * s7 U1 z! d/ B% K) B' ~" |
  246.          @sp_flow = 0  7 D" N6 y$ v  \
  247.       end" j; t) p7 Y+ \8 c
  248.     end            % V! S# i6 |% W! h5 k* d3 {( C: t6 ?
  249.   end
    & q! l2 |0 g* A2 B( r6 |& d4 {
  250. #===============================================================================
    9 [" P  t4 T- Q5 o6 }
  251. class Sprite_Character < RPG::Sprite) K8 x* ^: r* y& K
  252. #-------------------------------------------------------------------------------
    ; g6 a6 T2 Y, ^6 w; r+ ?
  253.   alias :xas_emini_hud_init :initialize
    - {6 Q3 i! X- q4 r
  254.   include MOG1 |: h4 E3 b1 U# \2 f" \
  255.   def initialize(viewport, character), J4 E3 g" R2 {* z
  256.     xas_emini_hud_init(viewport, character)
    ) E6 M9 g8 u5 j" j/ v
  257.     @viewport = viewport2 p; q1 i9 G8 q
  258.     return if @character.battler.nil?+ Y- j- v6 _  g+ i3 L( {/ n! @  Q% T
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id), u2 t: i8 _: a1 m
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    - S( e/ H! L1 [# L4 X
  261.     return if @character.battler.is_a?(Game_Actor)
    * N5 c3 s/ n* W! w1 w
  262.     @bars = S_Hud.new(@character, @viewport)
    . L! ?9 V% x: o: O; e
  263.   end) Y1 O/ V0 Y+ V' k& B- i/ t
  264. #-------------------------------------------------------------------------------
    % _0 A, A, ?% w/ ?9 Z: P; u& A
  265.   alias :xas_emini_hud_up :update6 c$ W6 Y2 q% U
  266.   def update
    % y/ R6 h# @$ o$ a: p, N
  267.     xas_emini_hud_up
    9 ?5 X' f6 H5 \% H5 S& ]3 c# L- w" n
  268.     return if @bars.nil?8 m; ]/ {% `5 c
  269.     return if @bars.disposed?
    2 Y3 [# O; I% F7 D& x
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs- C: a8 T$ C$ R' v
  271.     @bars.visible = (dis <= RANGE)
    4 m" p9 U) I  Q. Q% K6 R' X
  272.     if @bars.visible
    % n4 J& \: M: j' l" `9 s
  273.       @bars.x = @character.screen_x# - @cw / 4
    4 N' R6 f' @# x- A1 d4 t
  274.       @bars.y = @character.screen_y# - @ch / 4
    8 _4 B2 K5 v1 P' z  K7 ]& G+ h6 _# ^
  275.     end
    2 W3 N+ j2 s3 K4 ?, T
  276.     @bars.update
    1 E8 q, M( ~# O6 r6 O# z
  277.   end+ s! P6 `$ A' m% ?
  278. #-------------------------------------------------------------------------------* B- n) Z6 G+ P" d+ X
  279.   def dispose
    : y4 B; F) J  `/ C( N
  280.     super
    ( \* }, _/ S! t; |5 f0 s9 x8 T& d
  281.     @bars.dispose if [email protected]?; d$ Q; a' p# s* A
  282.   end
    4 s2 b6 _  p9 J* q; \
  283. end- U% D9 h  q& V  I( D  l( j

  284. / v& K7 J$ M9 U! Y
  285. $mog_rgss_s_hud = true
复制代码

/ @3 a5 L, J- q) T! w, y$ R0 [0 [) Y# p/ g8 H5 _1 b4 h# Q4 k
1 q" H8 W- u, i6 b
上面所說出錯的203行內容為1 v5 j( L. N8 J) r1 B7 _* r8 e
@hp_sprite.bitmap.clear
6 ^! W# C, S1 q; A
7 i. a, V. h  K5 P! ^: ^5 n! ~' \2 V想知道怎麼解決& b" o  F+ u! @0 R& |
! W, q& y& c0 e9 t. F1 u  K7 |0 P1 e
該腳本支持3.826 t7 X% F# G0 C' O4 G
' O; |$ n: c0 V8 E9 K& B
下面是圖檔,要塞在Windowskin下
9 e' {5 b4 p/ B% S# v# f0 N% |0 v; D( P2 i4 k
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) , S2 \# B  Q2 A: ?

! H" N. n$ ^6 t% J
) X; p% a* \0 e& p# s' E; s4 h2 |' U% {) C

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
9 c/ @% s1 D7 a1 ?; V' J2 `0 u结果尝试刷新了一个已经释放的图形
* H5 a) C& e/ |$ N' j. U
1 J) G3 [8 }- ~0 k- J( ]
% `: [7 y* F" [: H8 t# b0 j; m1 c
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?+ }6 V$ M8 _6 Y
复制代码
不要后面那个条件貌似就没问题了。: F( M! d" J: R2 u- I' k' r
' J6 a0 q0 L9 p, G. V0 [( \9 N
" O6 U7 a7 ?# S& g1 _
% q3 H) @, c2 E) V8 }+ K9 \

8 @' |8 _9 C% d# h6 c0 V) y: @
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 6 a7 l8 w7 y: w8 T
貌似是释放的条件不合适
2 O/ M# M$ C0 @5 h" z结果尝试刷新了一个已经释放的图形
! A# s7 [3 V( X
把後面那個條件弄掉後,的確沒問題了" I6 m" c3 O8 U6 \) ^
目前從關頭打到關尾結束都沒再彈什麼錯誤
$ V, B* r! ~0 `" e; d1 O非常感謝
3 G, n: A! e( r( U
4 c3 F+ P7 y) g! X6 E9 `+ V9 ?( H9 v不過我是參照著別人腳本改的4 g4 }% |# h! ~0 M5 c
他寫的條件式也是那樣,但我用他的沒什麼錯誤
9 t, c6 ^4 o- Y" F" m不知道是怎麼回事
9 G7 K) A4 l" O% H是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的$ Z8 e9 t/ g( T* B/ {! ^
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events- J) G  p/ f9 O, V0 G- H9 f
嘛..这个数组吧..我在以前试写队友的时候关注过一点! |& r- \% J( ^5 I( X0 i
不知道XAS内部对它做了什么手脚还是为啥,
  w7 Y1 r  a( x4 ]) H6 U* v总有那么一瞬间,没有被消灭的敌人事件也变成了nil
7 Y( ]. p6 i5 k! @8 F, U5 N
" A" m" ~$ ]. _4 E% @; R$game_map.events.values[@enemy.id].nil?% i- {" t  {% F4 e
因此自然而然的返回true并符合条件把图形释放掉了  P8 h0 n* S5 H0 G5 L: t
. Z/ y) t% }) B( s  i2 R
LZ应该有注意到吧,: Y4 _! c. l) E1 t3 Z4 l
我测试的时候发现报错前几帧,图形会消失,
8 {7 E$ B; e8 _应该就是“误以为敌人被消灭”了。
  d- F9 E. k9 F  d$ L
% N8 W/ j# U# d% n& d0 g' M受限于个人水平,至今无法找出$game_map.events的真相..) \3 |, W/ z5 r& [1 t5 x

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 7 v; A  [9 n' D: z# x
$game_map.events" X  O' K; H7 s: a9 P
嘛..这个数组吧..我在以前试写队友的时候关注过一点
' U2 Q  ?! w' V8 s" [' v+ T不知道XAS内部对它做了什么手脚还是 ...
7 ], Y7 O9 T' A6 }  L" B
當初我把那個條件式看了三遍,都不覺得他有什麼錯* z! d- Z5 }3 {6 M* Y
原來還有這麼深奧詭異的事XD2 J- n1 J  S6 E' Z1 N
. c  L- i/ k- T& I, Z8 e& H
錯誤發生前的確會有圖形沒顯示出來3 u* d# b# M8 f
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...0 E9 d0 [, F8 g* ^
沒想到居然是詐屍了XD, ]  j4 n: g( q# g0 ?

: V) K" \& H7 W9 E1 t3 d* x6 p7 }/ F不曉得3.91有沒有修正這問題...- t( i* y4 l4 L2 O' f% y) t
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
2 M9 I! Z  C% l( d7 c! n1 b1 k- {6 J( }  K: {
的确
9 E' a" K8 |  c3 n用惯3.82之后想去整3.91觉得压力甚大..- n; t8 T  r5 L7 k
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。  i9 e, n" E& J
( {  r: T0 p3 \+ T' R  G8 q5 T+ m
然后加一个判断处理的。(我记得有一个disposed?)




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