Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條# w+ ?. y- n' H/ f
會在每隻事件怪物的腳下顯示
0 W9 t: Z/ w$ E" N4 f問題是不知道為什麼
2 r- O" j9 g4 E2 @3 S0 j1 F6 Y: \有時打怪打一打會跳出
  H3 Y6 X$ y0 t) {7 ]0 N---------------------------' q7 N3 [5 i8 Z+ N" g
XAS
& W2 Y/ }: x) V  ~+ ], I---------------------------
6 O% R+ A4 l) A# i1 s8 o脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。8 B& z- Z; C0 i) V; v- }9 u% A, ~  c
8 e# _; ~4 ~1 @% V7 E
disposed bitmap9 J3 S" `8 l9 s6 p# C, z
---------------------------
' i' J9 D- H: V5 o: I; L, z確定   
9 ?( X1 |: P; C7 z0 z---------------------------
. [; M7 @2 {1 \# G) e2 Y
" _1 t$ F) U! A$ ?: S9 b) J  l這是腳本$ B" e/ z) x# {" @) ?$ i; k

' [+ Y3 Z" V3 e! T
  1. #===============================================================================
    4 o$ F# b1 o0 C. v% H0 y5 s
  2. # MOG - s Hud 1.0      
    % N+ o/ f0 k5 ?) C2 Z2 k0 k
  3. #===============================================================================
    ) @* o: g, F9 e( V% @
  4. # By Moghunter : O& `" q+ J3 x; L& s
  5. # http://www.atelier-rgss.com1 g: o7 t1 B- _+ j( }
  6. #===============================================================================
    3 B# Q( m2 n( i" `5 w
  7. # Translated by Calvin624
    4 r. }; J9 [0 c6 W. c( Z& s: X! W
  8. # http://www.xasabs.wordpress.com- K9 G; e' g. r1 ?$ `0 n: p
  9. #===============================================================================. Q$ Z8 \  j7 K' {6 h/ Y
  10. ###############################-DESCRIPTION-####################################$ }( X7 ]0 J* {1 a4 d( q% H4 M
  11. #===============================================================================6 o" r) C, L/ d& e
  12. # Personal HUD – displays the HP and SP below the hero.
    " x0 c5 P# ]* r
  13. #===============================================================================( z2 B' W& [7 y& n
  14. #
    7 {/ N, @& z: V9 F8 ?6 V5 _6 X
  15. # Graphics required:
    . T* N& K) u. b; X6 y8 {
  16. # 9 X' E5 X# x# r& ^  }" u
  17. # S_Border_HP_Meter.png5 t! }2 A) s4 r9 C
  18. # S_Border_SP_Meter.png
      \& J7 @. I9 m  R3 J
  19. # S_HP_Meter.png5 ]- U: f4 k" V+ G
  20. # S_SP_Meter.png; t5 R- O, v  i+ Q6 F" ^) w
  21. ## b$ @( e( C: o4 G. L) B2 g
  22. # All images must be in the Windowskin folder.
    # P- A) E, N8 m
  23. #
    ; i" o/ c( \  S, g( u4 h) |$ V
  24. #===============================================================================
    $ @6 z( V3 Z1 `- J9 Q9 f
  25. module MOG- X* \" r* Z) P; q) _
  26. VISIBLE_DEF = false  
    & j- q  l9 ^% p; R# D2 {
  27. # Show HP meter?; ?) }  V! c( r
  28. HP_HUD = true
    7 a/ R- L: D7 ~
  29. # Position of the HP border/ r+ Q9 |2 D# V, x
  30. S_BORDER_HP_METER_X = -2
    8 L; O! e& ]' ~7 Y* c
  31. S_BORDER_HP_METER_Y = -2  1 s* O9 R5 F, a( a
  32. # Position of the HP meter
    ( n/ @! E* r2 i4 S: t
  33. S_HP_METER_X = 0
    ) b! [) w8 v( l9 r3 B
  34. S_HP_METER_Y = 0  P) C( }7 [# ]9 f* Z. h, H) J
  35. # Show SP meter?$ }3 L( W% n, V
  36. SP_HUD = true6 M8 Y' Q& X' C
  37. # Position of the SP border
    6 v) h( y) E6 e( q
  38. S_BORDER_SP_METER_X = 0% ?9 W, D, T) k  r) e
  39. S_BORDER_SP_METER_Y = 10
    : [2 v3 ~4 r& ]
  40. # Position of the SP meter
    0 U9 @6 W% @  c
  41. S_SP_METER_X = 0
    8 c+ K5 d% [" |% N. n
  42. S_SP_METER_Y = 10
    1 G4 X# F% Y4 z" t
  43. # Switch to disable the HUD0 O+ x) l$ \6 P6 P/ S5 j3 f
  44. DISABLE_SHUD_SWITCH = 5
    : k# F2 A) O& @; v0 A& Q8 G9 v! G
  45. RANGE = 20
    $ |0 n2 q% E" q: ~  D$ q
  46. end
    + }# z5 G% w/ E4 l9 i. x6 O% N
  47. #===============================================================================
      b2 \, z$ r# H, o- I6 q
  48. # S Hud
    0 j* @+ Z; W5 [/ l
  49. #===============================================================================
    7 \5 u* {1 o4 c7 T
  50. class S_Hud < RPG::Sprite+ x( v$ ]6 `- j* V4 x' U
  51.   include MOG3 `& e- ~& _% @# G5 o0 F! l6 x
  52.   #--------------------------------------------------------------------------1 v& x4 h& l5 N3 L/ z4 \
  53.   # * Initialize
    - z, X' G/ \( Q" n- r
  54.   #--------------------------------------------------------------------------
    # t9 `, x" N; q" Y( k, S
  55.   def initialize(enemy,viewport): F$ v2 O( S* k1 [7 x" `8 l; _
  56.     super(viewport)
    - m1 M2 H5 P- y
  57.     @enemy  = enemy
    3 g& g' O$ {6 u$ i0 b5 I8 m
  58.     @battler = @enemy.battler
      @- u+ I* a( F7 Q& B2 H
  59.     @old_hp  = 06 O4 Z) W3 s5 X4 |; O* J5 q
  60.     @old_sp  = 05 P! K. ^0 v  p( Q
  61.     @old_vis = false
    5 U# X# W% R7 E7 g% S' N7 ~+ g
  62.     self.bitmap = Bitmap.new(100, 100)
    % J& \: K& x4 V# E  W
  63.     self.visible = (VISIBLE_DEF)#false
    ) b8 |4 e+ a  b) S, H, j8 j
  64.     self.z = 100
    9 F1 ?+ [5 w0 Z+ t$ d5 n( L5 O
  65.     #HP Border -------------------------------------------------------------------
    ; g( }2 T4 O" w% P/ z" Y
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")# H5 `4 U2 s, G) c, O8 N) `
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    5 `, J% X; n: i/ H, A2 T. ~6 {
  68.     @layout_sprite = Sprite.new) o( s$ t% Y6 e; @: \
  69.     @layout_sprite.bitmap = @layout_bitmap
    ; _- b$ q9 @! @, `
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)1 R; Q- T3 ?3 i* ~( b
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      & \4 Q. I; a( p/ m; Y. s4 ?2 ~$ M
  72.     @layout_sprite.z = 5001
    5 ^( r- `5 X: G. r, a# w! s# c
  73.     #HP Meter ---------------------------------------------------
      @* s) y9 U' u2 ^3 n5 g: }
  74.     @hp_flow = 08 @8 S" j3 X" J: W9 V. m& {
  75.     @hp_damage_flow = 02 ~/ c! b; o: J8 H6 [0 E+ F: x8 `
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    & M& p3 N, {7 S9 i; y
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)6 h) r* S& `: P+ x
  78.     @hp_range = @hp_image.width / 3
    2 }7 ^; l7 B- U2 l7 Y
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    / m9 j+ b% Z4 M/ E  z/ }
  80.     @hp_width2 = @hp_range / 2, t! C3 B5 K+ I. ?- W) c
  81.     @hp_height = @hp_image.height / 2
    ' \# o" ]$ t0 L/ B; P' ?
  82.     @hp_width_old = @hp_width8 j+ h' |5 Z) H7 N  }
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    . a; z, H3 a3 g- b) {( O4 P
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    . ?9 P: y9 C5 A' q# Y
  85.     @hp_sprite = Sprite.new
    7 e+ P0 ^0 ?! _$ @
  86.     @hp_sprite.bitmap = @hp_bitmap) G0 F( X3 a& w
  87.     @hp_sprite.z = 5002
    0 s( G2 U/ S& u# G7 R+ l) a; M
  88.     #SP Border -------------------------------------------------------------------) n9 ?- ^2 ^4 c3 D+ f
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    9 g5 a( y& m# |; u$ e8 X+ {
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)4 R4 R/ p, B- R; }% }1 M+ B- E, @
  91.     @layout2_sprite = Sprite.new; o- x0 v+ P6 u
  92.     @layout2_sprite.bitmap = @layout2_bitmap( ~6 f  D: c6 P* W: E* C
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)8 H$ ~4 S3 \2 Y7 N- H  C
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      " G, _  w3 f8 t
  95.     @layout2_sprite.z = 5001   
    8 w( T0 c* V  s9 `5 D' k6 \
  96.     #SP Meter ------------------------------------------------------0 t; V, ?/ r" o$ H, Q, U
  97.     @sp_flow = 01 l4 ]3 I, F# R+ L7 h
  98.     @sp_damage_flow = 0
    " E0 y$ f5 [$ \( _2 C. n' O1 t4 r
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    , w& j) t: m* d# j! M! j
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    $ W0 S0 e( u# j- V0 M! [* |! F
  101.     @sp_range = @sp_image.width / 39 T5 ^9 T) l/ t0 K8 J- K- s
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  - Z) Y2 c, t( b
  103.     @sp_width2 = @sp_range / 29 E, ~* @( B5 W- l
  104.     @sp_height = @sp_image.height / 2: M2 v) m* F( y! [
  105.     @sp_width_old = @sp_width& u( I: H1 y& J+ ]% ~0 Q
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    1 I" M3 d6 T9 F
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    * y' e8 J+ i9 K6 E: e3 |
  108.     @sp_sprite = Sprite.new
    ! r& \: _( {2 V( V
  109.     @sp_sprite.bitmap = @sp_bitmap  G1 G7 ^3 i# j6 [9 t
  110.     @sp_sprite.z = 5002' Y$ m( p: V3 |, b. d$ f
  111.     update
    ( L2 m, ^/ J  Y) |
  112.   end
    # T& c, [" l5 ^' s$ V& J0 S
  113.   #--------------------------------------------------------------------------
    3 A' \: r0 }  h, m( @
  114.   # * Refresh
    0 a, f7 W* S( W
  115.   #--------------------------------------------------------------------------
    1 t- y" e( @5 w: I" f( f
  116.   def refresh
    5 t  L3 J" V, s2 j9 [% M
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    6 O  \6 [5 c% W  E
  118.     self.bitmap.clear
    * c3 i9 t  I: o) h1 J
  119.     @old_vis = self.visible8 o& x% j, i' D& n
  120.     @old_sp = @battler.sp
    - n5 e6 t7 N- ^. N$ v
  121.     @old_hp = @battler.hp
    8 y8 I; Q3 E  `. W
  122.     hp_flow_update
    % Y1 J0 g& [% G  a6 ]$ a
  123.     sp_flow_update0 N7 {& y7 P. r* d* [6 X: a
  124.     hud_pos_update% i0 M- F" Z8 S6 a# o/ p6 Z; u
  125.     visible_update
    : r5 ~3 @& N1 a: H1 }4 G
  126.   end
    # w: `% _+ O7 i
  127.   #--------------------------------------------------------------------------
    . W3 \9 x1 v/ P% `8 W; |
  128.   # * Dispose' e5 o5 \3 y! ?0 x9 n0 c9 X0 [
  129.   #--------------------------------------------------------------------------, U; Y, a# _. W$ }& S- M
  130.   def dispose
    * e# I' ]+ o! N1 A
  131.     #HP Meter Dispose+ a4 \" [8 a$ ~/ O) z$ R: E
  132.     @hp_sprite.bitmap.dispose
    ( X$ W* f4 w' O
  133.     @hp_sprite.dispose& m2 ?6 }5 A" m1 g+ Q
  134.     @hp_bitmap.dispose
    2 T5 [) v- D& s' B+ N
  135.     #HP Border Dispose; d, I5 V# T; ?5 h
  136.     @layout_sprite.bitmap.dispose
    9 c; n. m2 G# E3 k9 k' `
  137.     @layout_sprite.dispose/ z; J4 }; P9 {9 l9 k) ~$ E. `
  138.     @layout_bitmap.dispose
    0 c. p( ?2 X) g8 U: J( G
  139.     #SP Meter Dispose
    & Z' [  [" J9 |' p8 w
  140.     @sp_sprite.bitmap.dispose
    ; Y: X) `5 l* T2 ~
  141.     @sp_sprite.dispose  m' `3 Y7 g6 A! H& I9 N
  142.     @sp_bitmap.dispose
    : |; M( A  u" i/ P
  143.     #SP Border Dispose
    5 m3 E: L4 N  H+ U) f- d
  144.     @layout2_sprite.bitmap.dispose
    # n% r& R7 [- F1 z$ v& f
  145.     @layout2_sprite.dispose. p. g: T0 d+ M4 x7 M, v; Y
  146.     @layout2_bitmap.dispose
    0 p6 f/ J  M  I2 Z2 u2 H' s2 _
  147.   end9 h6 c, F, c& Y
  148.   #--------------------------------------------------------------------------! g$ p* {4 ~7 w9 M
  149.   # * Update
    * V. N2 e2 T5 s0 \0 @) `. S' y) Z! Y; r
  150.   #--------------------------------------------------------------------------
    ( s8 r- V4 }- x
  151.   def update
    * R4 M" b; D4 H
  152.      @battler = @enemy.battler
    / a3 h, F- b; R& x1 S- ]
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    - S% V( N3 C- B1 r, K8 x9 M. @
  154.      if self.visible
    # |  k1 ~) o  Z# w2 @: L" X
  155.        refresh; i, p0 W, q* g2 j8 N  P0 q. d
  156.      else
    3 Y2 j' R- @2 ]0 T. L3 p: _
  157.        self.bitmap.clear
    5 ?) z0 _/ ~: g9 |; g
  158.      end  E+ I) Q4 e8 P) `& c8 E
  159.   end
    * w, p! G# {6 W0 Y
  160.   #--------------------------------------------------------------------------1 g$ Q- N" R# B9 o3 `+ ^
  161.   # * Visible Update( s3 ?1 j4 y5 W
  162.   #--------------------------------------------------------------------------) q2 d" q* n5 {* b, N5 t# r. ~1 S
  163.   def visible_update4 y% {) p% b1 r: I2 K: C2 j; k
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true& I4 g7 g' U2 h2 x
  165.        @hp_sprite.visible = false
    5 n% L% N( [& Y/ n
  166.        @layout_sprite.visible = false
    ! u5 r  t+ ?% L( n( j1 I. K) I
  167.        @sp_sprite.visible = false
    7 r) o( q$ v, e$ E! J1 D, Z, H
  168.        @layout2_sprite.visible = false
    2 [; S+ u: l; [6 E
  169.     else# U! a) f9 y' b5 n' e- d0 t
  170.        if HP_HUD == true
    ) t, \$ K! n4 b0 A7 d$ a) Y' y: n
  171.          @hp_sprite.visible = true
    - I' K/ T9 ]0 y9 {& n& O: t
  172.          @layout_sprite.visible = true
    " L3 l$ w6 @5 x
  173.        else
    ( T6 m0 n; L% D& U: E- S* u5 @
  174.          @hp_sprite.visible = false* U& a& V; W& U, i6 d
  175.          @layout_sprite.visible = false' C1 }9 e- W/ s; X- M/ e$ U+ J: F
  176.        end  " y" D% I. o& {1 @
  177.        if SP_HUD == true6 k0 ?. K+ o- D$ E, J1 O7 }
  178.          @sp_sprite.visible = true
    6 x' ]7 o4 b* {  @/ Z
  179.          @layout2_sprite.visible = true, z4 _) S4 M, |
  180.        else
    8 B9 Z! t3 k, @; l
  181.          @sp_sprite.visible = false
    * l' i: {  w0 C$ [* G
  182.          @layout2_sprite.visible = false
    " ^1 T! p$ V$ {) @* i3 X2 w) s% \' R
  183.        end
    2 r* v/ F8 i) b! J
  184.      end  : E# E! Q5 e: \, [4 d' W. }
  185.    end / Y* n' V9 E8 l; X9 e5 {
  186.   #--------------------------------------------------------------------------3 V' H8 B& l" e( w0 @% _* ?6 Z1 Q4 ~
  187.   # * Hud Pos Update( l% A/ O5 M$ s7 k) ?
  188.   #--------------------------------------------------------------------------. p, ~8 }# [( K5 B0 l$ O
  189.   def hud_pos_update
    5 k& _- e$ ~% G
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    1 E' K" W+ I/ P. \
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  ) |; X* P$ K# a/ w& g) f
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X8 W5 r& n2 B; V9 j3 k! j! k1 T( g
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y - m$ z* t' N3 \
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    $ S4 r6 y0 G$ g6 y+ N- h' ^, ]
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    2 B" m" o6 @" V7 ~+ Z1 U
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X& R: B1 }0 a0 p0 W% n1 A
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    / Y3 \' E- P0 b' b  X5 U9 i
  198.   end  $ o) e; h" V2 U. y; s% q' h7 L
  199.   #--------------------------------------------------------------------------
    3 k* D5 m/ ]8 r1 N! _- \
  200.   # * Hp Flow Update: _, M3 a/ @: K/ P
  201.   #--------------------------------------------------------------------------& F9 @- R( l, z5 Z( a& c8 s
  202.   def hp_flow_update
    ; D: E. N8 T' ~# \, W) u8 Q" I
  203.       @hp_sprite.bitmap.clear
    / T% ], j! Z  s) b6 q
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    5 x& @  b" c& a' u/ k9 {
  205.           #HP Damage---------------------------------! S# Q! l1 k( C
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100% G( ]# e4 a9 ^9 l8 X, A
  207.           valor = 0.5 if valor < 1            [. P- N4 j& y+ u
  208.           if @hp_width_old != @hp_width; b( f' @) s- g$ Q+ C" m
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  ! h, [5 u# M) W7 ~2 G' F" J" H+ K: T3 P
  210.           if @hp_width_old < @hp_width
    6 H; F& @2 P( b
  211.              @hp_width_old = @hp_width
    . ^' p7 a) w3 K2 H9 b
  212.           end      
    ) Q7 J2 N: u- ~( _2 E7 X! f
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    # I: A! q" S4 h3 {2 g3 r( T
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    % s3 K  F- ~  L
  215.           end        5 d7 e- q5 f) l9 R/ r
  216.       #HP Real------------------------------------
    5 G0 j( X, \, L) @- A% \, s
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)$ K( K, W2 A& F3 z
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          5 J! J4 B0 w5 h: `
  219.       @hp_flow += 2  ! i' W6 {3 ]8 M8 g0 B5 i4 U8 f6 W3 e
  220.       if @hp_flow >= @hp_image.width - @hp_range! l" D, w% Q9 B' p
  221.          @hp_flow = 0  
    , z+ Z5 h! v% {' ]$ E
  222.       end) ]& D0 S$ M% ~8 Y4 Z# h. i3 [8 k
  223.   end    - P9 _4 d5 |8 W6 B# R
  224.   #--------------------------------------------------------------------------, j8 V! e  @) U
  225.   # * Sp Flow Update$ Z: [. W$ [/ _& _' m* `
  226.   #--------------------------------------------------------------------------; G  P% f5 S5 Q, @, O
  227.   def sp_flow_update5 a0 V) w- E  w7 q: v. v
  228.       @sp_sprite.bitmap.clear( C  i' U1 T9 o# a% |
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp " @3 M7 i/ O+ |' V9 e# B
  230.           #SP Damage---------------------------------
    ! c8 l7 z# K* l# u
  231.           if @sp_width_old != @sp_width$ h6 ]) K; J1 W! m, x
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
      d+ n, [: k& r2 V6 B9 M/ s
  233.           valor = 0.5 if valor < 1              
    # _5 U% a) \1 H1 K/ w  F5 ]6 b$ o) q
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    7 K* N% N9 z$ y+ X# l3 X6 q* {2 w
  235.           if @sp_width_old < @sp_width 4 k) h4 z. q7 g+ C, {( k$ y- i5 s
  236.              @sp_width_old = @sp_width
    - H# h% e$ R, {  ?, E1 e
  237.           end      1 n3 _) L0 O6 e( l4 o
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    2 l2 I( E  A5 z0 @- @4 f  V
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) ; [9 P2 }! g# I
  240.           end% L4 A  e$ j9 {8 n6 f  i, W0 n- F8 H
  241.       #SP Real------------------------------------
    8 K! g8 [' I3 q6 t; }
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    5 F: |+ `- h( B
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    0 `/ \1 a! n; p' F( I
  244.       @sp_flow += 1  " W6 e" l" d7 j1 z: ?
  245.       if @sp_flow >= @sp_image.width - @sp_range* X" K8 e* `( n2 R
  246.          @sp_flow = 0  % k' m7 r, Y" o3 h" v/ J
  247.       end3 I8 {2 U& k) g  Y4 O& `, v1 d8 Q
  248.     end            , g9 p. R9 _3 v+ b/ |# ~  W, R
  249.   end' P1 P" q" Q; [% ?  m$ `
  250. #===============================================================================
    ( Q8 R4 C8 X3 O6 m$ i8 n
  251. class Sprite_Character < RPG::Sprite" y+ f# d8 W3 ?' @1 p2 i
  252. #-------------------------------------------------------------------------------7 v+ T+ t2 C) v( N) J: s: h
  253.   alias :xas_emini_hud_init :initialize3 s0 |  @8 B0 u4 U
  254.   include MOG
    ! R/ Z) w3 X( a! b! f" J; V
  255.   def initialize(viewport, character)# J3 W5 R* X9 q% v0 p* {" P
  256.     xas_emini_hud_init(viewport, character)
    7 Z4 c/ Y2 g+ P, Y  @$ q2 f. O
  257.     @viewport = viewport/ Y! b( C! ~' u# x
  258.     return if @character.battler.nil?2 ~' V& x. G* d
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)" J, ~: Z+ P0 B8 X' [' B" {/ K
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
      L$ _+ ~' J6 c2 {$ r' D
  261.     return if @character.battler.is_a?(Game_Actor)0 P9 J$ {, l% o, `: ]5 Q
  262.     @bars = S_Hud.new(@character, @viewport)- [2 ?& Z( Z" x9 P, M# I
  263.   end
    5 I/ {, w' [) X) H! {6 }
  264. #-------------------------------------------------------------------------------7 T& g- }  |& a( M7 u: G% U
  265.   alias :xas_emini_hud_up :update
    / }4 l4 t; Z4 r
  266.   def update* G1 g+ a% W5 o# v1 ]. t3 {. M
  267.     xas_emini_hud_up
    . e" _1 y0 t3 t
  268.     return if @bars.nil?
    , o  g4 J/ {3 a3 s6 e1 l
  269.     return if @bars.disposed?
    5 A* F. N4 n* J4 v: ^% G( ?
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    * @" J/ A/ l  k7 Q/ b+ v6 ]
  271.     @bars.visible = (dis <= RANGE)
    7 U) f$ Y3 @2 |6 H6 g$ n4 i
  272.     if @bars.visible
    2 V4 n' u' U+ |
  273.       @bars.x = @character.screen_x# - @cw / 4& p3 N2 B' J- x' c
  274.       @bars.y = @character.screen_y# - @ch / 4! ^8 @  [7 ^1 e! n# D# \- }
  275.     end
    - I; J* ?) _6 t. x3 o! a# C. g
  276.     @bars.update
    4 X) r( \+ A4 ^& X8 w
  277.   end5 c0 }% }! W& \+ H$ r
  278. #-------------------------------------------------------------------------------. Z7 M9 _2 j- z, {: x6 [4 L
  279.   def dispose
    : ]- v+ Z; l+ r; B
  280.     super: l- w2 k8 I9 M8 F
  281.     @bars.dispose if [email protected]?& I. t2 R. S" J: l1 O3 ]
  282.   end
    / x/ P+ A" t/ ~  U* j6 z1 b! o
  283. end  b5 J! f+ ]  A. |( q4 O- l4 H. S
  284. 5 d/ s$ K) }' ~% b6 o( I3 ~9 _
  285. $mog_rgss_s_hud = true
复制代码
, D) Q+ L% b' W3 J' R
7 B3 l& }8 l( d) n1 \, X

- y0 a2 p# K* r, I上面所說出錯的203行內容為
2 y* {: Y: s9 s: [# g: j: }  l& u4 P@hp_sprite.bitmap.clear
+ ^' |) B! G) {  w0 i. D9 X8 a4 R
" [- R4 r: V$ }8 C想知道怎麼解決' R" ]: G: P8 a8 H2 c
* ]$ V  N/ s& y/ q
該腳本支持3.82
: r! i; }7 `! v# B6 ?9 z' A
0 A! o. D" ]1 e5 `) {* g3 T下面是圖檔,要塞在Windowskin下
4 g9 {. p! p1 f, n7 S! C' e+ \! V- {; t
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
, E" R! m) o  }/ ]4 A9 S! G2 a, o% W! }( K7 V
3 z5 m# \$ K4 s, {/ M+ g8 k
/ G8 K* Y# |6 m+ i

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
/ L! h* _8 M/ V- e  Q" s结果尝试刷新了一个已经释放的图形
. a5 S# A6 C' \& T5 l  ?( V# C* x6 J4 }6 b7 e- H  S- F
4 U8 C/ u0 I1 s! b+ C& A
# Q5 U# O) O" F/ ~# T% |  K" m
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?6 h! i8 v: z6 R$ S) t
复制代码
不要后面那个条件貌似就没问题了。" y9 ^" g4 K$ i( E  |6 @' j+ ?0 M2 i5 y

2 R5 k' n! o5 b  ~$ a: \( f7 o* A. D- {: T; W. z

! P) J) c7 B5 I# k% P, T& ~/ M# O- F! \; a# m& z. X8 e

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 9 x# \0 D5 `+ B5 a. D
貌似是释放的条件不合适
% E8 e$ [: c/ @" N: |, V1 }结果尝试刷新了一个已经释放的图形

% o: B; R8 A6 H4 k% H0 K! w8 q2 l+ Y把後面那個條件弄掉後,的確沒問題了
% m! E2 C5 a* Z4 i目前從關頭打到關尾結束都沒再彈什麼錯誤. ?3 c$ F$ V7 }' A/ L. b2 D
非常感謝
% n7 u% Z2 s  }0 T! c3 q
1 }) R$ f+ x8 f# _' E" P1 b不過我是參照著別人腳本改的
6 q" O; B2 x' R他寫的條件式也是那樣,但我用他的沒什麼錯誤0 W+ P+ f8 h' x$ ~
不知道是怎麼回事8 M& _. T9 y2 H% m# q
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
2 k6 D3 G6 U+ x& f' k3 n) Z我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events8 V, o* u7 U$ S3 i
嘛..这个数组吧..我在以前试写队友的时候关注过一点
, n, t5 U  U2 @) g2 z不知道XAS内部对它做了什么手脚还是为啥," A* ]. k  t: R8 N" ]$ G
总有那么一瞬间,没有被消灭的敌人事件也变成了nil4 c8 w4 e$ W/ m/ W+ b

& A6 |; n3 g6 X/ ]( ~$game_map.events.values[@enemy.id].nil?6 Z: d) q% i1 c8 K" W! o
因此自然而然的返回true并符合条件把图形释放掉了* L! G0 U* J4 _% Y. v; P

( \, y! v' i/ ^; F/ D$ uLZ应该有注意到吧,1 h5 I2 j' F& I$ o+ a- O9 `& |
我测试的时候发现报错前几帧,图形会消失,3 h2 j2 F2 ~/ K7 i, U& Y$ f
应该就是“误以为敌人被消灭”了。
% [8 K2 N1 X; q. V9 K+ b
4 t7 {) v2 E+ L2 R0 e受限于个人水平,至今无法找出$game_map.events的真相... h4 }  R& s7 V, T

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 9 m! ]0 `0 `1 e2 M+ U/ q( T
$game_map.events9 b) @7 r: n( `' Z
嘛..这个数组吧..我在以前试写队友的时候关注过一点
* `: x4 j/ i' @不知道XAS内部对它做了什么手脚还是 ...
. b% }- L) A, r( k% Y9 `, ^/ n7 J6 @
當初我把那個條件式看了三遍,都不覺得他有什麼錯
9 q8 l+ n+ K- e8 b  C! V$ F  {原來還有這麼深奧詭異的事XD
( t7 E) v. j/ w! S0 x
$ w% s7 r1 F: M9 A# b. Y& x錯誤發生前的確會有圖形沒顯示出來
# [) ?  [9 W5 J! \! H不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...' h& a. E2 Z! D  l
沒想到居然是詐屍了XD
: W6 R2 D4 H0 [* G3 o0 v- k. D9 X% ]9 T2 T8 ?. j4 m; q. y6 x
不曉得3.91有沒有修正這問題...
) i! I9 P* W7 g4 o% h3 y9 r+ d不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。0 c* ^* b: |* L; K
9 M( R* k$ C. K9 _. \$ o
的确
' j) @9 H2 A3 V. v( X9 D' c& ?用惯3.82之后想去整3.91觉得压力甚大..; ?- p4 y2 x; _9 Z; f- }8 A- l
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
! A, D" M7 M' r" N  E
5 f: ?/ A3 Z% s4 r然后加一个判断处理的。(我记得有一个disposed?)




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