Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
' i' v- ?6 ^1 S( |2 r, V% v$ Q會在每隻事件怪物的腳下顯示
. U8 C7 ^0 I4 L4 j# M問題是不知道為什麼3 m' `" b& f% `  W/ B  U2 c! _
有時打怪打一打會跳出
' g7 B& P5 `( b; l---------------------------( V' S6 @  H) v' ^, W1 N& R
XAS$ M/ ~/ D, i4 T& c; z1 D! p9 g8 W
---------------------------3 s( j0 `# @8 U% k
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。  Q# K0 q& K! R, U

  M% F/ L  Q5 K: w7 q2 v  Vdisposed bitmap
. b6 p/ ^5 T  H+ r; J+ }---------------------------2 U3 i$ t8 m( U2 J3 b' o
確定   * {( q2 M% G; v
---------------------------3 S( x9 E9 A* L0 {5 ~

. J/ C% J, u4 V這是腳本- [. F3 r7 ]: ^9 V' B) u  u1 H
8 {& g) X5 z/ A) B! b+ d2 A" o
  1. #===============================================================================' [7 h4 s6 K5 ^
  2. # MOG - s Hud 1.0      
    ! H  C! v2 [/ c4 v; m
  3. #===============================================================================
    6 C8 K+ R3 t" Q) j3 e& A( m
  4. # By Moghunter % {7 T2 Y; Q/ w
  5. # http://www.atelier-rgss.com
    * q& b% k. k; Z4 J6 }6 i
  6. #===============================================================================  {1 y% u% x# ^
  7. # Translated by Calvin624
    " U/ \, F3 d$ s$ Y) p1 z5 m
  8. # http://www.xasabs.wordpress.com
    4 X+ M3 W+ U% y
  9. #===============================================================================
      @1 V9 }1 L1 P. m# w4 I* J
  10. ###############################-DESCRIPTION-####################################
    : M7 ]& M5 t, s
  11. #===============================================================================& [$ N. Q$ K' F% R
  12. # Personal HUD – displays the HP and SP below the hero.4 `1 x, F( \( B6 Y8 ~$ ~+ r! X
  13. #===============================================================================
    6 Q1 p( J. z6 A
  14. #/ N, z0 Y+ T6 u* y9 r
  15. # Graphics required:0 B4 e/ G& ^. Y# y% c
  16. #
    $ ~: R! a2 q1 ^* [' ~1 R
  17. # S_Border_HP_Meter.png
    9 d8 P  ^/ N+ m3 m8 o3 A  B
  18. # S_Border_SP_Meter.png* L, n7 A  ~% L3 k0 [8 B6 a
  19. # S_HP_Meter.png2 ]- D. K* L: o/ S- L) e
  20. # S_SP_Meter.png
    / l4 s6 j6 O* n5 D4 U  ?& j2 {: J
  21. #' A! V5 {$ E" S* e+ ]! k4 [6 f
  22. # All images must be in the Windowskin folder./ S) l+ B7 ]0 ^& J
  23. #
    1 v% i% e& U8 Y/ X
  24. #===============================================================================: t( L* T4 r  n$ N+ S# U
  25. module MOG
    ) C+ J6 c$ w, ~2 J
  26. VISIBLE_DEF = false  
    9 b9 ]; b6 }( S( f" e3 p
  27. # Show HP meter?) o( D( q8 X, t* u0 P& @* g& {
  28. HP_HUD = true" G; i) x  y+ n6 ^6 ?
  29. # Position of the HP border8 |" H7 [, e: W9 T
  30. S_BORDER_HP_METER_X = -2. z# ~( G: u' ?( W3 F& `$ i
  31. S_BORDER_HP_METER_Y = -2  0 e$ W/ H+ k! ~% w1 \% I
  32. # Position of the HP meter2 h: v" |  d- A
  33. S_HP_METER_X = 0
    . V+ f9 w2 O5 R' H% L
  34. S_HP_METER_Y = 0! M" C5 i  W  s0 b" g3 i
  35. # Show SP meter?3 ^! o8 F9 _" x9 K+ K  `' E
  36. SP_HUD = true
    ( T2 j6 X5 H) N# I) W+ T1 E" [
  37. # Position of the SP border
    1 S, J! y. \; y( p- n
  38. S_BORDER_SP_METER_X = 0
    # F" s- s  M! X( f/ i4 q% C+ {
  39. S_BORDER_SP_METER_Y = 10 : y( ]+ {" D  x% e9 }' j! a0 }( O
  40. # Position of the SP meter- h. U6 \. B& G( K  h3 |- g
  41. S_SP_METER_X = 04 v( T/ M2 x; V8 R$ E9 W3 K$ M
  42. S_SP_METER_Y = 10
    4 i7 O; s; }( P: v+ P; |
  43. # Switch to disable the HUD
    , a# ~' }8 ]4 q. d
  44. DISABLE_SHUD_SWITCH = 5" \# m0 u. Y/ w9 ?
  45. RANGE = 20+ t! _& M& ]: q. V7 M
  46. end
    8 f8 T: Z, I3 W- m/ y) V
  47. #===============================================================================
    9 X, k4 k* g  a2 v8 p8 n
  48. # S Hud
    & a( p. o$ b3 N0 P/ y
  49. #===============================================================================
    ( q3 l3 d6 w. @6 }+ p4 N) `
  50. class S_Hud < RPG::Sprite. N. k/ t1 b  a5 p
  51.   include MOG
    ; a( \. [0 i2 {
  52.   #--------------------------------------------------------------------------3 ]3 k# d3 W- d) `( w) u  D( r
  53.   # * Initialize/ M' ~8 ?- I# W" U( [( D
  54.   #--------------------------------------------------------------------------# @6 b5 w7 X6 M
  55.   def initialize(enemy,viewport)9 Q' `1 t3 p$ n; B2 \) e  k
  56.     super(viewport)
    / ]1 Z* W5 I- u. A
  57.     @enemy  = enemy4 N8 C- H# B" N3 |9 ]
  58.     @battler = @enemy.battler9 i5 m; B% C( I% b0 D
  59.     @old_hp  = 0
    . U- z% _1 }: N2 a
  60.     @old_sp  = 09 T! j1 e2 b1 G: c9 s
  61.     @old_vis = false( M# L4 I) N* r
  62.     self.bitmap = Bitmap.new(100, 100)- {! ^) R. @& \) b
  63.     self.visible = (VISIBLE_DEF)#false! F& p/ f! H5 E, Q( |
  64.     self.z = 100+ a" ?' ?. ?3 n
  65.     #HP Border -------------------------------------------------------------------
    . L& t. h8 a& X- z3 ?
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter"); x+ _2 X/ e, B7 }) ~
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)" w; l4 V. O9 _7 j; ?1 Q
  68.     @layout_sprite = Sprite.new
    + y( e0 x1 Z$ V4 z) k  w2 i1 ^
  69.     @layout_sprite.bitmap = @layout_bitmap" q, o  j# k4 m' v
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)4 X2 h" {5 C+ c! a& Y- E
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    . h0 M4 w8 q; V  b6 D# I  M
  72.     @layout_sprite.z = 50013 l/ \4 e1 N8 C0 d
  73.     #HP Meter ---------------------------------------------------
    % u* W$ u) S% \& \- f, e
  74.     @hp_flow = 0
    5 e+ Q8 z' r* ]7 y
  75.     @hp_damage_flow = 0
    + ]8 \  N9 c9 i
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter"): m" T2 x' h! C# v; A! C7 K
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)1 }( \% X3 d) h8 \9 C
  78.     @hp_range = @hp_image.width / 31 V# G( E6 ~3 l; I; H  ~
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    / Z% M1 \' K/ M$ g5 e& T
  80.     @hp_width2 = @hp_range / 2
    ( `0 [0 ^0 n4 g( q- O, d! X
  81.     @hp_height = @hp_image.height / 27 z- y; K2 X* o0 F5 ?8 m3 u
  82.     @hp_width_old = @hp_width# z9 w3 r- t( ~" U
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
      ^4 \& H7 o- D* o$ n$ E# V+ C
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) 0 I" s$ k6 H; a! ]
  85.     @hp_sprite = Sprite.new( [& I& j. T4 o' t$ Y
  86.     @hp_sprite.bitmap = @hp_bitmap" a/ q/ w* s' {  B# P9 Q+ B& s
  87.     @hp_sprite.z = 5002
    5 @. r( ?' P) l. r* d4 d8 q
  88.     #SP Border -------------------------------------------------------------------3 a3 M" m1 h! _" }" p, _. x
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    + q4 O0 N) R5 Y& l8 N! _, m5 |
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)8 N* t! k1 Y+ G  Y) t3 `- f1 _% v
  91.     @layout2_sprite = Sprite.new
    3 E+ z6 ^5 H* H# `- Z
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    , l% p  O; Z9 ^+ V
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    5 J2 s0 R* A9 M3 |/ s
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    : J, ~: o) F0 u3 H) R
  95.     @layout2_sprite.z = 5001    6 o2 P3 U9 w' N/ p% G1 |/ y
  96.     #SP Meter ------------------------------------------------------
    " f! d. s8 R( i% K  ^
  97.     @sp_flow = 0
    ! \0 [+ Q8 x) o+ G) Q
  98.     @sp_damage_flow = 0/ I8 w9 f/ S# N! q
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")4 \# z: w* x0 I+ E$ N
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ) W  M. L3 D0 |. m
  101.     @sp_range = @sp_image.width / 31 m. I2 I% K  C  T9 s
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  . y. x' K$ i7 q2 p
  103.     @sp_width2 = @sp_range / 2
    " O( H  g' N+ k* n, W0 ~. }
  104.     @sp_height = @sp_image.height / 24 z% W+ Q2 n+ P
  105.     @sp_width_old = @sp_width
    ) ^3 a' d6 D1 X3 ~
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height); ?  p7 \/ [, x3 O: y$ t- X; `' `7 L
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)5 X; ?% U- z! s( L8 X
  108.     @sp_sprite = Sprite.new. t5 K( O% l$ ]. q; ~9 H
  109.     @sp_sprite.bitmap = @sp_bitmap
    ) v# W! {/ F5 Q: c: `3 H3 R
  110.     @sp_sprite.z = 5002
    , d* q: A7 o/ G4 v& F
  111.     update+ O/ p1 z  \. X, Y7 C
  112.   end
    8 }  J' e5 [" D% y8 v: o1 y
  113.   #--------------------------------------------------------------------------- Y  s; y- k( ~/ u6 g
  114.   # * Refresh" S( r) L6 N! C$ b- P
  115.   #--------------------------------------------------------------------------
    5 s. z( W% \- G$ V: r
  116.   def refresh
    ; Q( e. ^% R) G
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible( @4 Z, i7 q% U
  118.     self.bitmap.clear
    1 @% B' T* n" Y0 \8 N
  119.     @old_vis = self.visible
    ) j& h# x& F% S! Y1 F, H/ U! q# W
  120.     @old_sp = @battler.sp9 m* i% A, n& N7 x
  121.     @old_hp = @battler.hp& O9 N+ S# ]6 H( p: W
  122.     hp_flow_update5 j* @- B% i, F9 v
  123.     sp_flow_update
    1 d' o$ w4 T( E+ \; g
  124.     hud_pos_update) d; s/ C1 Z, C
  125.     visible_update+ @& \+ k4 C  c
  126.   end* d+ T  c% k2 U9 x# q
  127.   #--------------------------------------------------------------------------
    . }1 q) b5 m! h/ E0 L$ E
  128.   # * Dispose
    # i& T2 U# Q6 J# a0 e! W  |: S
  129.   #--------------------------------------------------------------------------6 X7 g' W' w  O; G0 F
  130.   def dispose/ c& \4 U' d& Z. i  q
  131.     #HP Meter Dispose* C7 d2 G% h7 K* u
  132.     @hp_sprite.bitmap.dispose
    6 }! l5 C9 g6 _) _  ?/ {' A
  133.     @hp_sprite.dispose; q, s1 X+ l8 [* b
  134.     @hp_bitmap.dispose5 z3 B! V2 R5 Z. f. E) _
  135.     #HP Border Dispose
    9 J6 \! Q6 o) Z8 C8 R
  136.     @layout_sprite.bitmap.dispose
    " Z) p4 S; E0 x) D
  137.     @layout_sprite.dispose
    % `5 n- j+ [/ x( i8 D9 N
  138.     @layout_bitmap.dispose
    3 [( C. v+ P" V" e( j* L9 ~
  139.     #SP Meter Dispose6 }, P/ d* G5 d: G
  140.     @sp_sprite.bitmap.dispose; H5 b! Y- w. H/ e4 Z, C; t
  141.     @sp_sprite.dispose5 g# l8 O3 U7 e0 W/ O# r" s/ V
  142.     @sp_bitmap.dispose
    2 i4 ?9 M7 H6 O
  143.     #SP Border Dispose8 h9 `; g8 q9 x" ?1 X! N
  144.     @layout2_sprite.bitmap.dispose
    * i8 Q- M0 u; t  x3 x
  145.     @layout2_sprite.dispose
    / |6 l+ H& L2 e. k* z* }4 w, d
  146.     @layout2_bitmap.dispose
    7 ^  }0 t( ?( p, O! ^
  147.   end
    ; S+ P- @7 D1 [" `3 y
  148.   #--------------------------------------------------------------------------/ V* P+ B, H% N; ^7 ^! S
  149.   # * Update
    * D( Y+ z# a! ?1 C5 E7 H
  150.   #--------------------------------------------------------------------------1 z: W/ X3 e& B' |0 z! S& j
  151.   def update: F- L- v1 g( R( r- W
  152.      @battler = @enemy.battler 8 C2 m; }# M8 Q  T
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    $ W! z4 q& ^$ K) n6 h  x+ ~1 w
  154.      if self.visible$ S( P' Q2 @7 U) V9 o! v
  155.        refresh
    % F9 f4 `7 O9 E. Q' F$ B+ W' k
  156.      else& D6 v1 _/ d2 C/ E6 v
  157.        self.bitmap.clear
    7 e% Y4 d+ o. q
  158.      end
    9 k+ c9 D% }+ t- U4 [0 Y; f
  159.   end7 u7 q1 B, z8 R. W1 e, ~& B
  160.   #--------------------------------------------------------------------------
    7 O4 M' S3 p. j' z
  161.   # * Visible Update
    * z, j8 S$ A4 ^: o! `0 G( H; A# x
  162.   #--------------------------------------------------------------------------
    9 p2 i/ i8 ]7 A- k
  163.   def visible_update
    + x# r( p9 V/ d9 r
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true* |0 X' x1 P$ R) ^
  165.        @hp_sprite.visible = false: x# B: w+ I- }6 Z- _" \$ ]% S
  166.        @layout_sprite.visible = false
      P) t: h9 }& d0 r& Y3 g
  167.        @sp_sprite.visible = false" O/ g7 P6 ~" a* D
  168.        @layout2_sprite.visible = false
    : a4 E4 R+ ^4 Q# N. [" X
  169.     else  H: ^4 H( Q. h; B8 Y& x
  170.        if HP_HUD == true* {2 y1 m3 E2 @9 {
  171.          @hp_sprite.visible = true" Q; e% B, G5 }* i) F/ Y& T* B/ G' I
  172.          @layout_sprite.visible = true5 ~: j: R% E7 W+ B. K9 P) s
  173.        else
    + N/ r* f4 H$ N
  174.          @hp_sprite.visible = false3 z( y. l. V1 s4 a. M* |, q
  175.          @layout_sprite.visible = false; V( s0 y- ^5 R! Y9 G! F& e& o
  176.        end  
    - p* w8 _. r- H
  177.        if SP_HUD == true+ P& r7 h3 t9 P! j
  178.          @sp_sprite.visible = true* e  V- q( p- a. ^/ v0 v0 D
  179.          @layout2_sprite.visible = true
    - f* e& t9 o5 [* t2 N2 b; g. d
  180.        else
    ! y6 q- ]9 p! ]- N; g
  181.          @sp_sprite.visible = false# `$ \2 c5 \, z) o! a
  182.          @layout2_sprite.visible = false
    1 U6 A7 ^" h+ _' w3 ^. w
  183.        end
    4 `# W" b, @4 w7 F: n
  184.      end  
    9 F/ a6 B0 o5 _7 v' s- c# \
  185.    end
    ( h3 E5 i! ^7 ^% A
  186.   #--------------------------------------------------------------------------  y- A& F# v7 K5 q8 I, F
  187.   # * Hud Pos Update
    * \! K% }/ v3 f* m* j
  188.   #--------------------------------------------------------------------------
    1 Q0 u- N2 Q/ S
  189.   def hud_pos_update
    5 Q9 Z4 U9 A  {! Y
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X; }2 ?5 ^$ F5 ^& O- \7 R
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  7 |& P+ m$ T* J& M
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    / K1 q* i. j0 D8 M1 \6 L
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y " h" x0 g+ ^# ]+ T( x1 J
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X. @5 o" v" q$ Q8 o, W5 J2 A
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    8 e: C' h7 J$ F+ r, o
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X9 p! Y( X, ?( U- w0 i5 _, c
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     + a: F6 n( T( {. d) P% N) }
  198.   end  " G+ F" N1 s+ P* i
  199.   #--------------------------------------------------------------------------
    1 s% p! v% e6 g4 ], y2 s! o$ v0 g
  200.   # * Hp Flow Update
    3 F( w9 |; j( X. A, E' |
  201.   #--------------------------------------------------------------------------+ p+ ?' R6 ?# T6 E
  202.   def hp_flow_update
    % x( ]2 J& e" y* x; N0 k) M4 U
  203.       @hp_sprite.bitmap.clear
    # ~5 l8 z1 }: r
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    7 g9 h/ H- Y4 F- h  o1 t
  205.           #HP Damage---------------------------------
    + J. _# ~! l& y- T* H4 [
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1009 M. @. d" E* ?0 y
  207.           valor = 0.5 if valor < 1         
    $ V+ L# v' L) x" ]
  208.           if @hp_width_old != @hp_width
    ! G- K3 I- u6 Q+ F: G; G, o/ N4 U9 M
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    + J$ m$ \) k# E
  210.           if @hp_width_old < @hp_width 3 f" A' l9 J! v( k! p
  211.              @hp_width_old = @hp_width
    & A! l3 f! U0 \9 d: J8 B! s
  212.           end      
    6 c9 t9 V# M0 z8 O  V; c. X+ x
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    ! V8 z9 X9 d+ @* s+ u6 r/ n
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       6 y  E3 f: z3 S$ I! k% c
  215.           end        
    3 u  ~) g6 e0 J4 Z
  216.       #HP Real------------------------------------
    7 j+ Q: f/ a& i2 o% p. T. ?& |
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)2 H! h2 [. s( ^
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          ) K9 C, \+ c0 P! ~+ G" _* _- i
  219.       @hp_flow += 2  
    " |! p2 Q' e% H2 x; @7 h
  220.       if @hp_flow >= @hp_image.width - @hp_range
      |* X9 K/ x7 X4 M( X8 K
  221.          @hp_flow = 0  2 M9 g8 D, ~& Z; W3 r
  222.       end# n  q; \3 v; V& O
  223.   end   
    % C6 U% S% C7 T9 A4 R
  224.   #--------------------------------------------------------------------------
    ! N: Q$ Q& ]  a+ c8 |
  225.   # * Sp Flow Update8 O+ ]4 p9 p/ v% C
  226.   #--------------------------------------------------------------------------
    ' s4 S* z1 x# H
  227.   def sp_flow_update9 M, d0 s7 T* T  R# L
  228.       @sp_sprite.bitmap.clear
    : S) C4 T7 b, V* b8 J" h* j+ l5 v
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp , N7 `) n5 l: b8 [' B
  230.           #SP Damage---------------------------------9 H; O3 B) B* ?: L" e" u
  231.           if @sp_width_old != @sp_width+ b0 W& n; n$ ~- ?* O8 y. }
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100  r" E- f; ]/ j0 P( M! C
  233.           valor = 0.5 if valor < 1              . c; e5 J$ n0 x! C
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  % S5 C) n( n* k. [, Q
  235.           if @sp_width_old < @sp_width
    9 o+ y$ k: T  ~
  236.              @sp_width_old = @sp_width9 V1 i. V$ ?) ?1 J
  237.           end      8 k* g0 t9 g$ B, ~% n6 S- o
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)' T0 J3 s; Y4 \
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
      n$ h: E  c; ~4 d1 f% ]& q6 M
  240.           end
    9 i; O1 C+ d7 G% i
  241.       #SP Real------------------------------------: x1 M- o: ^* H8 J) Z1 @
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    ( E# i8 a8 G4 `1 @& W# l* H5 l: T
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)( u5 \. h4 _: {) Z
  244.       @sp_flow += 1  8 D; o7 Q( T9 u& Y) a( V: H
  245.       if @sp_flow >= @sp_image.width - @sp_range
    * Q7 B3 j' k6 W% S! Z( V3 K' v, ?
  246.          @sp_flow = 0  
    7 b$ D3 U: r  R5 o, w; o! u% {) f
  247.       end4 o0 l, o5 d8 N. ?1 R
  248.     end            5 `- Q: X# g$ d# u& e/ r3 E4 F; g! c# O
  249.   end
    + {' S# f8 u. h% ~& Q# a* @4 i2 _
  250. #===============================================================================
    " y; y# D3 Y- Q9 a5 ?
  251. class Sprite_Character < RPG::Sprite/ e* V8 q" G; Y( G; I# a' r& o
  252. #-------------------------------------------------------------------------------
    $ \5 X+ R. O- U  g, r
  253.   alias :xas_emini_hud_init :initialize" ?# L* @2 A$ e9 e+ ?1 r
  254.   include MOG8 O% ?2 a. d" P2 {. c
  255.   def initialize(viewport, character)
    . y5 Y: S0 T5 V0 Q6 f3 m* D
  256.     xas_emini_hud_init(viewport, character)9 s0 a9 s' e( p; T7 @, r: z
  257.     @viewport = viewport) h0 v4 w' ?  H8 Z/ {$ [
  258.     return if @character.battler.nil?
    ! A; D6 V4 E: x- w5 I4 B/ a
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    9 i, p% J- T- u+ \( |1 H
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id). P- f1 D3 X( [2 X+ c0 w3 d
  261.     return if @character.battler.is_a?(Game_Actor)4 m7 Y2 L& Y- \# b8 y2 _
  262.     @bars = S_Hud.new(@character, @viewport)' c( f) m, h% u0 ^; g# N8 h" e
  263.   end2 `! U- |$ ~% A+ \8 i  O& ]7 E' H
  264. #-------------------------------------------------------------------------------
    " J, k6 `, v3 u3 h  w7 P
  265.   alias :xas_emini_hud_up :update# z% c: a! ~0 V" {" F
  266.   def update
    ; V8 ?; [3 s1 R# M% V
  267.     xas_emini_hud_up% ^1 I  [. P* `
  268.     return if @bars.nil?
    ( W6 U+ O, h7 @1 r1 E0 {
  269.     return if @bars.disposed?9 o2 \% h) F8 \$ `, Y3 Q
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs! `) @' y2 F9 t. t! Z
  271.     @bars.visible = (dis <= RANGE)
    6 i5 ?& c. r8 b
  272.     if @bars.visible8 x8 A) r* O& M# E# B* B
  273.       @bars.x = @character.screen_x# - @cw / 4- `9 P6 K% ?# s8 [. Z/ {5 _2 F2 E- V) p
  274.       @bars.y = @character.screen_y# - @ch / 4% _+ ^3 m/ d) i& {% h0 `
  275.     end0 j! _9 [; K( Z& {
  276.     @bars.update
    7 b* a# G6 O) z! O# K/ M# U/ D" P
  277.   end& A9 ?. [: Y$ S* y  I2 P
  278. #-------------------------------------------------------------------------------+ _& p: X4 {, [3 F7 t' g) u9 r/ c) j- J
  279.   def dispose
    : k: j8 R  ?  q) I- B0 U* N( {+ _
  280.     super: h0 F' d# u9 x# v( }5 F
  281.     @bars.dispose if [email protected]?
    * w, o# w8 l" k0 ?+ U( E
  282.   end
    # X* T3 i: q% Y- r8 w4 L0 \, {
  283. end
    " K5 g: M3 `) J( i

  284. ! ~2 V6 p2 x) g) ~
  285. $mog_rgss_s_hud = true
复制代码

% Q* ?7 V3 W# ^+ j3 W8 m
  V8 W. `, V6 t9 j4 J3 s& X! r& A+ s. k% k& t
上面所說出錯的203行內容為4 y3 [$ e$ x# t6 \1 V4 L7 M7 Q
@hp_sprite.bitmap.clear
2 H0 G% b2 [2 I, v6 }2 v, L
, N, G" x# F9 S, d: `$ {6 [想知道怎麼解決( h+ t5 z1 [/ z' s0 h

& Y; `3 x: ]( E  M7 e該腳本支持3.828 g1 f. p) h* C0 {& }5 f

. J* u4 H/ V% N8 T, i3 a下面是圖檔,要塞在Windowskin下: z1 ?; [" ], P8 _

; _4 T: F  o$ A7 R; Q S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
- _* c7 P4 ^7 Q+ L8 ]
1 ?; O9 ~. E; ?" i, O, W, l: k5 q, }, p2 n
7 d- Z0 x- \5 N8 ]: V+ ~3 w; s: i

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
5 X/ A. y9 |: Y& d& N8 _7 z结果尝试刷新了一个已经释放的图形
- V% W0 L7 D7 P. ~2 @6 N6 [
) n: `4 g4 J5 q6 |0 u/ I* M" O' D. @1 a7 |! k

3 \, E, z  Z; V% a2 N( G; n虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    + n4 i  m8 z! P3 D. h  M0 i
复制代码
不要后面那个条件貌似就没问题了。  E! e# e1 z8 u/ Z, b, l

! G$ u: A. E- h- L' E% Z( v5 r6 {9 ~  l3 ]2 J  R, ]
  m4 z1 b7 \$ p; p5 D9 [- T

7 \# y2 g8 [- l: \  M, ], ?
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 ) S( i! x& D6 E# s4 l4 w1 J4 i0 H  f
貌似是释放的条件不合适
( r4 n- v% F2 M) Q( ~2 p结果尝试刷新了一个已经释放的图形

* f6 E* g3 O3 |3 X: W; E. N把後面那個條件弄掉後,的確沒問題了
' c& T' N2 [. S$ \2 Q目前從關頭打到關尾結束都沒再彈什麼錯誤
& }. B) a7 H$ ]( L" w1 a非常感謝
/ b5 G7 h5 s6 V# m% d# F5 Y. I, O. D& L. p  l$ h
不過我是參照著別人腳本改的9 t! s6 I' {, g9 B
他寫的條件式也是那樣,但我用他的沒什麼錯誤
$ ?% r! u: i" g4 g5 I7 K7 |不知道是怎麼回事
* |: ?$ J* f4 W+ s7 J; b) B) J是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
9 p2 X; n" `' I) f/ G+ F$ {我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
& r$ U7 W9 H: C嘛..这个数组吧..我在以前试写队友的时候关注过一点
6 S/ j3 Y; R5 J* S- B) X不知道XAS内部对它做了什么手脚还是为啥,$ M5 M! _* @# m* x) s' z% L
总有那么一瞬间,没有被消灭的敌人事件也变成了nil! c& |5 H, i7 m, W3 Q$ n

8 N( ^) I9 G% a9 w2 ?$game_map.events.values[@enemy.id].nil?/ j* d& {, n/ p, u
因此自然而然的返回true并符合条件把图形释放掉了$ Y4 t+ K, C7 N. P  u7 }/ d5 L

. N+ T# z6 f& fLZ应该有注意到吧,( \8 M) s5 \5 H2 o1 l: \
我测试的时候发现报错前几帧,图形会消失,, P7 D* s4 ?4 k1 `
应该就是“误以为敌人被消灭”了。
+ m0 F* x5 S: Z8 A
5 ]! e4 o8 m/ ^. }% M1 k受限于个人水平,至今无法找出$game_map.events的真相..
$ r- I) w" Q6 P3 P) K8 u
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 & u% j" I* o4 F9 \* o( b
$game_map.events/ {: ~  \. v# E( }' j
嘛..这个数组吧..我在以前试写队友的时候关注过一点
" U7 r) i- m2 E不知道XAS内部对它做了什么手脚还是 ...
" d% G4 S. H) a& k/ J- f; B
當初我把那個條件式看了三遍,都不覺得他有什麼錯; G6 L3 w/ Y* v' ]3 z. d3 D, k
原來還有這麼深奧詭異的事XD6 U# e7 Z+ S# C. s" {4 z

# j$ C8 P0 \/ g4 i, \* N4 l9 `( l錯誤發生前的確會有圖形沒顯示出來
8 D1 l+ m# }4 r1 u4 a2 Y不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪.../ o( G  o$ q8 h: a# G  c+ K
沒想到居然是詐屍了XD
, L! C: V5 v# t2 s
& ]6 m; U. G4 L9 W不曉得3.91有沒有修正這問題...6 U# z. P3 I. s  x
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。& M2 V0 x( |; U  ?4 B
# T' S% p6 h0 j$ V! h- y4 i5 O
的确* l, Q/ H! h' P) ^
用惯3.82之后想去整3.91觉得压力甚大..4 {" A/ _" a: G% {2 v" g2 w
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。2 _3 Q- o5 `0 h! d
) X0 B, l- k) w. s1 S6 i
然后加一个判断处理的。(我记得有一个disposed?)




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