Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
& u/ U  K3 p. X9 v0 R& Y' B會在每隻事件怪物的腳下顯示
. z0 q2 r: G/ K  T  m; X8 a問題是不知道為什麼" V/ c, e. j: [4 X  ]- p
有時打怪打一打會跳出
' j2 f8 X7 ?$ C" a! b---------------------------$ I1 E4 d) Z2 E9 w: J' D/ c- W" r
XAS
7 I( I# g5 b2 ?5 `9 |2 d1 P---------------------------  O& [7 {4 ~6 f+ [4 q& K
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。$ E! U" {+ _% [1 y  ?1 U5 _2 W/ G
7 c3 T1 D9 G0 F- \5 o) g$ n' b% \
disposed bitmap
# Z5 U0 i- Y: r# w1 ^  T---------------------------
$ r4 M! d4 S' y8 Y& v/ H1 R2 z/ S確定   - a$ b, ?6 x* P
---------------------------& q3 X4 j+ H1 f4 r
/ a$ ~: Q; b( H/ S' m& }. L6 j
這是腳本
8 O- X- x2 E/ i5 V4 x" }
. M: G, [3 R, X9 V& e! ~, K6 D7 ?
  1. #===============================================================================6 k( C" ]/ {0 ?. d& U- q
  2. # MOG - s Hud 1.0      
    1 p& h9 j0 L* T" ^* |  h
  3. #===============================================================================
    2 ?. m' x. q) ]' M
  4. # By Moghunter
    2 H& k9 D# {2 O
  5. # http://www.atelier-rgss.com
    4 E* T9 {& F1 B6 G, ?9 r  W' Z9 v
  6. #===============================================================================! h: t2 i( \: _* D( P' [0 T
  7. # Translated by Calvin624
    ' F+ S) d/ t9 M* j! L& j
  8. # http://www.xasabs.wordpress.com4 G3 |* V$ n! t. i
  9. #===============================================================================
      \* u' I2 a% m/ D
  10. ###############################-DESCRIPTION-####################################
    9 k' I$ _4 W" m1 v4 X3 `
  11. #===============================================================================
    * U4 D, k* X* Y/ N; l. e. K2 N
  12. # Personal HUD – displays the HP and SP below the hero.( ?0 M' a% p' \' k* h' x" N
  13. #===============================================================================
    2 Y4 r' c% e$ l# W5 m, Z3 \% T+ Z0 r
  14. #% S/ C; _5 {  [
  15. # Graphics required:
    * C3 H! f" o5 z0 P. e
  16. #
    ( e) Z, N( O. S& t1 o& p* |" s/ d
  17. # S_Border_HP_Meter.png
    5 m* n2 U5 F1 Q! Y, d8 G. C; b
  18. # S_Border_SP_Meter.png0 K0 E! U8 `+ i6 ^" L2 H9 G
  19. # S_HP_Meter.png! c/ i  ]4 f& B* P
  20. # S_SP_Meter.png' Y# q$ F' _2 |$ L$ H
  21. #
    . O6 z* T3 g1 @  A$ _
  22. # All images must be in the Windowskin folder.# P$ W  o3 `; n* [, u* W5 {
  23. #9 W8 _2 w* s) x/ q3 P( @
  24. #===============================================================================
    1 x' @! N9 H/ z# d, \- v; \
  25. module MOG
    9 t3 J1 d# i7 m8 ~" R( U4 ~
  26. VISIBLE_DEF = false  + \/ x4 m1 A7 I2 ?
  27. # Show HP meter?
    2 j0 N8 g2 U( S% a5 i7 Y( K  o
  28. HP_HUD = true% q! y6 o6 I! q. e+ h& R
  29. # Position of the HP border
    8 ^6 E# g% `- \0 l5 m. d  h
  30. S_BORDER_HP_METER_X = -2% e1 j. ^5 E" X4 ^* J/ h
  31. S_BORDER_HP_METER_Y = -2  
    + N# p6 T2 \: }  J% t& b; v  u  J
  32. # Position of the HP meter5 G: J5 d# @$ F1 a3 V
  33. S_HP_METER_X = 0- V9 o. b' I2 k3 A- I
  34. S_HP_METER_Y = 0
    ( h0 R7 G8 M, J, K0 l$ ]
  35. # Show SP meter?/ |- @! h3 I8 B5 E- A6 W' q
  36. SP_HUD = true; D$ ?3 i) z/ \+ ~& l6 Y
  37. # Position of the SP border# i6 J4 D. [2 P
  38. S_BORDER_SP_METER_X = 0
    ; F& i/ C9 w/ @4 J  C- }7 ]
  39. S_BORDER_SP_METER_Y = 10
    9 A/ g: L- t, n( C- p* `
  40. # Position of the SP meter) M9 |, a' v6 {' {
  41. S_SP_METER_X = 0% i6 m. \" ~: @2 K% U, c* g4 {
  42. S_SP_METER_Y = 10
    3 g5 A6 p! L: o7 D, H# H) N. J' Y  u8 x
  43. # Switch to disable the HUD& m; {, @# s; v( a+ C
  44. DISABLE_SHUD_SWITCH = 5/ `9 t9 T4 K, |: F+ m6 P
  45. RANGE = 20
    7 P# ?: R/ d, m) C
  46. end
    ! ^9 g  g" H3 k: p" r+ }
  47. #===============================================================================$ A& d/ E4 Y6 U! A) I; {
  48. # S Hud
    ! f& K* b. C+ X$ N$ Q2 w4 Y4 h( Y$ g
  49. #===============================================================================
    ; ]1 t5 a1 d8 Y- Y
  50. class S_Hud < RPG::Sprite1 T1 Y$ J' x) O- D# i8 b/ G  I
  51.   include MOG* U. `8 Y7 R+ X* x8 P$ N7 }
  52.   #--------------------------------------------------------------------------  ?  x1 `% ~& H) F/ Q! u* D
  53.   # * Initialize
    2 z! f9 W+ h! }1 @5 V2 f3 N
  54.   #--------------------------------------------------------------------------; E. v! @; Z/ B1 _
  55.   def initialize(enemy,viewport)
    * X! w* ]8 Q) c& K; A; f. p) c
  56.     super(viewport)
    3 @) h/ N8 H6 J5 L; ^" B
  57.     @enemy  = enemy
    $ R$ c" Z# O( B+ k) \% [
  58.     @battler = @enemy.battler& F; P, o, ]1 p, z% g- _
  59.     @old_hp  = 0" e$ J. R! v- b$ ~
  60.     @old_sp  = 0
    2 {. G% c& ]$ T0 @) b0 g
  61.     @old_vis = false* ~# z8 R* P6 p: z
  62.     self.bitmap = Bitmap.new(100, 100)
    + g2 ?; x( P) k0 k5 T: }8 G9 i9 f& Y
  63.     self.visible = (VISIBLE_DEF)#false* N2 O' V: R2 w  X8 ]) `9 K7 S
  64.     self.z = 100+ a: E1 _( E1 G6 D
  65.     #HP Border -------------------------------------------------------------------7 p5 i, }; R6 h/ E
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")1 ~9 T" v5 G& ^% m+ L# o, l" t. \3 L
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    ( v/ b* Y, H/ P7 z
  68.     @layout_sprite = Sprite.new" f- F5 J6 A9 M9 w" y5 {! B0 _
  69.     @layout_sprite.bitmap = @layout_bitmap. j: @* ^4 w3 c. ]  H: }$ W2 I, Q; h
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    ) j8 }& }  H8 ?
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      3 N5 [7 r: F* _7 Q! Z- R
  72.     @layout_sprite.z = 50010 t+ B9 P' O% }- j" F' r4 x
  73.     #HP Meter ---------------------------------------------------
    5 F' H& h* [% P% _3 Y* [: s
  74.     @hp_flow = 0: k5 i. F5 O3 @+ |3 Y
  75.     @hp_damage_flow = 05 Z+ W2 T: L4 `7 U  K& T" @8 r, R
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")$ ^  s( {8 p$ g4 ?  s( |% T: T
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    3 |: `) ]4 y' D* j! G
  78.     @hp_range = @hp_image.width / 3' T/ |9 n8 o3 K- O) c
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    $ I6 g8 ~, Z: `1 V0 b0 f
  80.     @hp_width2 = @hp_range / 26 V1 ^" a% |  Q( ~; D
  81.     @hp_height = @hp_image.height / 23 P4 K6 m! g% m" C3 X# A
  82.     @hp_width_old = @hp_width
    " X9 ~7 F2 [& @" i9 c4 b
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    - l3 q* z; y# h) e9 ^. p3 a2 h
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    4 ]% f( q( ]' o: Y4 |* W
  85.     @hp_sprite = Sprite.new
    ; V$ `, y) v$ U+ _" Q7 K& ^# y  z
  86.     @hp_sprite.bitmap = @hp_bitmap. x  W8 A! o+ b/ ?# W
  87.     @hp_sprite.z = 5002. i! v8 b! F& a8 V( O9 e
  88.     #SP Border -------------------------------------------------------------------: Z' t; y; d2 r( g. f; T# b; |1 L/ O
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")+ U" V/ G8 {% F1 N: R. Q
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)0 S4 v+ g, B% Z
  91.     @layout2_sprite = Sprite.new8 m3 t. }# \0 g# ]
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    9 N/ ]6 e; V. ?  C5 v
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    : `6 R* t* r0 Q3 u
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    8 J' N0 r7 e4 U2 Z; N; |- R
  95.     @layout2_sprite.z = 5001   
    " s; \/ Z+ \9 B0 D& G
  96.     #SP Meter ------------------------------------------------------
      o$ S5 R" y9 U# ?8 X" F' j
  97.     @sp_flow = 0; `8 P4 r, I2 V7 e& }
  98.     @sp_damage_flow = 0' b6 k/ q/ o% y9 w& \
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    , B+ j! Z5 v& {. A6 M# W
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ( e! ]# n7 B8 H3 I' u( j
  101.     @sp_range = @sp_image.width / 3+ B. N$ C0 ^6 ~- S
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  - N1 q; B3 n- f& e
  103.     @sp_width2 = @sp_range / 2! @8 |/ v! F# a' m' n$ m, F
  104.     @sp_height = @sp_image.height / 2
    % _1 S4 o7 S& e8 ^$ F3 z
  105.     @sp_width_old = @sp_width. B+ b/ V8 h/ }7 h" _" _
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)6 E& A! \3 {& n$ |; Y
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ; M8 I! ]& \/ w4 ~5 W; O$ T
  108.     @sp_sprite = Sprite.new5 L4 n. Q& n' r6 k
  109.     @sp_sprite.bitmap = @sp_bitmap
      c( e# o/ D; c" x$ Q$ n/ K, |0 N/ k
  110.     @sp_sprite.z = 50025 J& R1 P! r7 _# o4 p
  111.     update
    ( {5 D1 D0 l; r7 z
  112.   end
    1 _: [) O% r7 L/ K* X' q
  113.   #--------------------------------------------------------------------------# `- |- h- e6 {( A0 V. Y' h+ q
  114.   # * Refresh  n9 l4 s  q6 o0 B6 k
  115.   #--------------------------------------------------------------------------
    $ j3 \! [9 E2 z- Q3 s8 j% l
  116.   def refresh/ L" l( u# u, X+ k4 M8 f' J+ X
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible6 i3 s! X/ N: j4 ^4 d
  118.     self.bitmap.clear
    : z9 @$ z8 v$ k! q* S. z2 V- I8 k
  119.     @old_vis = self.visible/ ]2 Z; v8 A/ P; l4 a; \
  120.     @old_sp = @battler.sp' l% G  C+ T7 K2 ?3 x9 J" R* ~
  121.     @old_hp = @battler.hp+ V8 i$ j+ G* S0 S3 _  i2 e. W
  122.     hp_flow_update
    " ]- I) w. w/ c' v9 i8 U
  123.     sp_flow_update* H# i% ?% t/ i; p8 C& V1 S+ _
  124.     hud_pos_update
    - N$ r) N% l: [. E1 _4 G( X
  125.     visible_update
    # u: Q0 b; J% Y+ i6 A3 z( H
  126.   end
    $ @; @# n) k- l* K2 x
  127.   #--------------------------------------------------------------------------
    / ]5 v! b$ b* W3 Y- v' I6 c3 K
  128.   # * Dispose
    7 B! c% J2 O% }, I0 P
  129.   #--------------------------------------------------------------------------
    * U/ e. L2 a. `" v0 S
  130.   def dispose- r( \2 }7 \; {3 h# w8 W0 B9 e/ E3 C8 f
  131.     #HP Meter Dispose. ]) T' Z1 x" M7 X4 D& p
  132.     @hp_sprite.bitmap.dispose
    ; E& p, l8 G0 M# `6 E" ]. S0 x: ~
  133.     @hp_sprite.dispose  C4 n9 z5 ?8 x8 j- Y
  134.     @hp_bitmap.dispose  Q; D9 W7 C7 u# ?3 E$ f# h
  135.     #HP Border Dispose$ s( d$ R* x& L- ~# H
  136.     @layout_sprite.bitmap.dispose# F) u* k  ^% s, a* C3 ~5 ]
  137.     @layout_sprite.dispose
    * i2 v: o8 a( ]5 V8 a2 g
  138.     @layout_bitmap.dispose
    # b; y% Y: K: p; |
  139.     #SP Meter Dispose$ Y1 M' x% h! }+ I' S! l
  140.     @sp_sprite.bitmap.dispose6 V. h3 _, o1 V- B- M. Y' f5 \
  141.     @sp_sprite.dispose. V" i' u1 K. b4 I/ V  E
  142.     @sp_bitmap.dispose
    3 E- S$ }' O7 K" ^' Z0 }
  143.     #SP Border Dispose& p- W% r' h' C4 q" L
  144.     @layout2_sprite.bitmap.dispose
    ) [6 ]& H. V: \
  145.     @layout2_sprite.dispose! L7 F. F" c& Z( M& \8 e5 h
  146.     @layout2_bitmap.dispose, `  }3 K% U" M4 Y& b! B! ?
  147.   end) q1 A$ G% _8 C7 k5 m
  148.   #--------------------------------------------------------------------------7 R3 `8 T' M7 k' T6 [: L* ~
  149.   # * Update
    * l1 j1 R0 T# h' a
  150.   #--------------------------------------------------------------------------$ q7 Q- b( K2 p# {4 N) A% K
  151.   def update; \+ O8 o& K% [1 ~9 j
  152.      @battler = @enemy.battler
    " h: \( F: ]& b
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    9 f1 H9 r7 h' [: i3 |: G) a- C8 {: w
  154.      if self.visible
    ! |) V; r5 t$ L  s8 o
  155.        refresh
    / t3 Y+ y1 b/ m2 o$ b
  156.      else$ k! _; ]( n' S5 E) E, w
  157.        self.bitmap.clear& K0 {% O* h; S+ c) K6 D
  158.      end) ~3 T" X2 \! B
  159.   end$ c9 @4 e! S2 @
  160.   #--------------------------------------------------------------------------
    , j) c0 B" B4 n- @% s2 w* D3 A
  161.   # * Visible Update* a" M2 ?4 x# A: K: ?& N
  162.   #--------------------------------------------------------------------------4 F+ x* g. ]. {, d& w4 M; `3 ]
  163.   def visible_update
    $ d  N9 _; i! s& F/ |0 I$ p$ P8 @
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    ! T# Q( S: `4 Z0 E4 g
  165.        @hp_sprite.visible = false
    / W- o: h" E# ]/ J0 w6 ~2 [( }
  166.        @layout_sprite.visible = false* K2 I2 x# l, }7 @4 F7 s' j  m/ C/ c, r
  167.        @sp_sprite.visible = false
      V- G% B" k' h. C
  168.        @layout2_sprite.visible = false
    2 O' ?2 e$ B& j  g; Z/ r
  169.     else& \' G, e; K7 I0 W( i2 V
  170.        if HP_HUD == true
    2 H& }1 d$ f% C7 t/ y" ?
  171.          @hp_sprite.visible = true
    ( e  r% A6 |0 M' e; m; j
  172.          @layout_sprite.visible = true
    * \$ n& P2 G& q  ^
  173.        else
    1 t5 G* f+ X! W5 G  H6 b) @
  174.          @hp_sprite.visible = false
    8 y( p3 N  }7 ]3 t0 M* I9 z
  175.          @layout_sprite.visible = false
    , a! q9 f+ N$ L: q3 S1 x6 x3 N2 `
  176.        end  
    ! H" c, J( w  Q# x  s2 q
  177.        if SP_HUD == true* w$ L; j4 w9 r  a
  178.          @sp_sprite.visible = true
      w, i! P* R& H# U
  179.          @layout2_sprite.visible = true
    9 G" e+ N: I$ {( p
  180.        else
    # |/ Z2 S) T2 W9 ^' @, A; i
  181.          @sp_sprite.visible = false
    6 N' a  t+ e5 G1 M2 G1 ]
  182.          @layout2_sprite.visible = false% V' C" w  R1 G- B3 g
  183.        end # `1 c( I+ O5 r2 v( G4 m
  184.      end  
    / ^% \# u1 s5 F
  185.    end
    . e8 f) y* B5 U  E+ Y3 N& b
  186.   #--------------------------------------------------------------------------3 Y1 E' c8 q0 ~; [( m
  187.   # * Hud Pos Update8 f# F2 N4 j) A8 |2 u
  188.   #--------------------------------------------------------------------------
    & ^1 ]6 E: H& ~3 ~
  189.   def hud_pos_update
    * K( \7 z! P4 i* i; r
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    : Z- i5 W6 H/ ^( _
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  ! K# k  K; ]8 n& K/ u
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X4 H' T0 O8 z1 x
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y " Q2 M' e9 T3 J& H7 f% F
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    2 ]& r- [% F  a0 A
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  2 B+ T% @- ?& \* l
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    . K1 ]8 ~! @: H$ x5 ~
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     ; F3 A0 u6 E) T4 w; e- q0 p( F
  198.   end  ) G- Y8 h( P7 v/ V( Q2 T( ?- X& O
  199.   #--------------------------------------------------------------------------4 o! ^+ E0 T5 S" o
  200.   # * Hp Flow Update
    7 y% c( v' {. B+ C9 T& f
  201.   #--------------------------------------------------------------------------- m6 A$ ]# J  Y! V$ n
  202.   def hp_flow_update0 K# T6 [1 O( _, F& i
  203.       @hp_sprite.bitmap.clear
    ( f, E0 R9 l7 I/ Q
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    * j* y0 M, \2 O
  205.           #HP Damage---------------------------------$ S" l3 P1 s7 m# B) o1 K) c
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100) C; F" p* P1 S0 W2 R; a2 ^
  207.           valor = 0.5 if valor < 1         
    3 r$ b) O" X% ]0 q0 i# E9 G2 q
  208.           if @hp_width_old != @hp_width2 h9 E, G$ Q) W+ s3 U* l
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  ! ^% k& u; w; ^* R% V( R, a' c: F
  210.           if @hp_width_old < @hp_width : E. k( i' [* Z5 N
  211.              @hp_width_old = @hp_width
    ! v, Z. j  O! G2 c, I& Z3 I6 e0 {
  212.           end      
    4 D- z* l) R' [# s
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    . W  k( U1 N% X$ \7 j2 q* ]) b" [
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       4 o  E: B" e2 s+ d$ p& L" f" g
  215.           end        . h* N) ?$ u7 ?8 c7 a" _# _
  216.       #HP Real------------------------------------
    ( D/ K- b, P6 A4 A8 l
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    / M. s, X7 U+ l: k6 m
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          # Z  ]' @3 ]) r+ Y
  219.       @hp_flow += 2  3 X% D7 x1 c' n" T) u% ?! v2 K
  220.       if @hp_flow >= @hp_image.width - @hp_range
    2 z/ I" {& I1 K! G! R! U" o
  221.          @hp_flow = 0  ! z* e  f' t1 f+ U# G* L
  222.       end& u& P8 ]  ~0 r* Y' y4 P
  223.   end    7 O: ^/ b7 ^# Y+ Z2 Z6 G/ M5 R" q3 g
  224.   #--------------------------------------------------------------------------
    , U- r, I" }) }- t, L4 C
  225.   # * Sp Flow Update
    . Z. o1 u% J2 w6 ^0 O/ _
  226.   #--------------------------------------------------------------------------$ ~. O% F' u8 |. \
  227.   def sp_flow_update7 W! [8 n, L. I! g
  228.       @sp_sprite.bitmap.clear
    ' M* [% K! k% H
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp $ \7 |+ @; f. o1 W" r
  230.           #SP Damage---------------------------------
    9 L$ @2 b8 L6 E' [' n/ p
  231.           if @sp_width_old != @sp_width$ ]0 x* O& Z* b/ r
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100. G5 N# K' Y/ y1 e5 z; ^( n9 S
  233.           valor = 0.5 if valor < 1              
    ) O) y1 `5 x. T8 g; h
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    ) Z$ C( ^: e" g# Z' ?( d- r
  235.           if @sp_width_old < @sp_width
    & O8 `. Z$ e* E/ h! ^5 k, J1 ]
  236.              @sp_width_old = @sp_width
    . y. Q- [0 J# w! L
  237.           end      " Q% l/ l7 t' ]9 a
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height): V& y- }' n9 s4 s4 R/ Q
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) % T) y5 L; ]: K, Z. Z7 o, Q
  240.           end6 B# Q1 |; D# J7 R2 E7 W! ?
  241.       #SP Real------------------------------------
    : ~) D8 A2 [0 t2 }) G
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    . j  v$ d* F2 _
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)- U0 R! T% l3 t. L( N# N" i
  244.       @sp_flow += 1  / e: o' U% i9 K% c
  245.       if @sp_flow >= @sp_image.width - @sp_range+ p6 Z! o. d" R1 ]1 P* M
  246.          @sp_flow = 0  5 G4 r6 ~# g, n( r# Q* L
  247.       end
    ( c/ D0 t7 Q2 t, ~% o
  248.     end            ) b$ t& j1 G) \; I
  249.   end4 t$ D$ c; O7 H6 W9 L
  250. #===============================================================================* l0 B, z  i' w
  251. class Sprite_Character < RPG::Sprite
    ' V# a) F3 Q2 Z. F9 B+ o
  252. #-------------------------------------------------------------------------------
    ' J1 j% z; V) g1 x
  253.   alias :xas_emini_hud_init :initialize
    " g8 e# h/ K& I1 A" q1 y7 M- W3 g
  254.   include MOG
    5 E/ R( P3 r; O  M- z+ ^' G
  255.   def initialize(viewport, character)
    9 {2 Z4 [& w4 {6 `, W
  256.     xas_emini_hud_init(viewport, character)
      R) S, C! w* {
  257.     @viewport = viewport: S) e9 Z8 z, [5 l3 w3 {
  258.     return if @character.battler.nil?. U: x1 l) S+ V. }
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    ! I* _/ c7 ]( i$ r0 V8 n% ^
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)5 R) M4 l7 L, J& Q
  261.     return if @character.battler.is_a?(Game_Actor)2 k0 t# z9 R7 L- i9 p7 I3 B) C
  262.     @bars = S_Hud.new(@character, @viewport)8 i6 j! n* K& A6 h+ v9 D
  263.   end) D4 ~3 Z! s3 G! j
  264. #-------------------------------------------------------------------------------
    ; i# [/ `( G5 `' f, }: Y" [- y
  265.   alias :xas_emini_hud_up :update/ J) ^- L, W3 H7 a
  266.   def update
    ( q5 G% p: m) F4 a8 a) [. h! Y7 U6 G
  267.     xas_emini_hud_up
    , N( t$ D1 V* V: c
  268.     return if @bars.nil?
    : G0 j5 |0 A3 N/ r
  269.     return if @bars.disposed?2 \% E  [6 K7 y8 m; X2 y' c
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    - U4 g! Y; S1 Y. ]  C  n
  271.     @bars.visible = (dis <= RANGE)
    % Z& z8 c. g( M6 M" Y4 G/ r
  272.     if @bars.visible- K( a& ?+ k/ @0 x0 \3 `. Q! k
  273.       @bars.x = @character.screen_x# - @cw / 4
    5 g" _8 Z) j# ]6 D
  274.       @bars.y = @character.screen_y# - @ch / 4/ T0 u, G& ]9 K6 N0 l3 |$ i
  275.     end
    7 L$ M. L# Y( q2 s( S3 W
  276.     @bars.update- y$ `# n3 K2 @5 y
  277.   end! x1 u0 E  l# C2 T# v, t0 P
  278. #-------------------------------------------------------------------------------/ V/ p" R7 F% d' A- p1 Q. |
  279.   def dispose; E7 e# K' K  n% \' G4 `
  280.     super
    / a( y4 I+ C6 @6 V
  281.     @bars.dispose if [email protected]?/ k- x% _6 n( R. _, |
  282.   end
    & n+ b" I; E! q" S' A
  283. end3 t7 Y. q# ]  u6 B3 |. H! {
  284. , T( s8 v, {, q6 B
  285. $mog_rgss_s_hud = true
复制代码

; ^/ o5 L+ W& y, X
8 q9 W* c6 \: N, ?' ^$ K- u4 \7 b/ p
0 N( Z) \  T& N4 \9 B6 d上面所說出錯的203行內容為
3 H8 v& l" a1 \  V@hp_sprite.bitmap.clear
" |3 v0 |1 i/ R6 i' k2 R1 x4 Z* [- K0 q( R' Y
想知道怎麼解決5 s9 {) b6 ]5 Z3 q' N+ Y3 k) I
$ R0 B$ g' O4 Q, F) }+ Q1 n, |
該腳本支持3.82
6 J8 j+ {/ s" q* H  V, l( j+ w+ k" G7 K% [* q( x
下面是圖檔,要塞在Windowskin下
6 @' }, \6 O1 ?6 H( y1 V, k( y8 W% T  {, Q; q) s( L: d3 y3 t
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) ) s$ {6 Q2 `+ J( |5 t+ R% \6 g, N

2 g; v2 R1 b, \* J  V4 r
  k# s1 a9 j* o! ~# b" ^* D" l6 J1 D! k

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适, W# Y) a' J: Q7 _2 H) M4 N. z6 `
结果尝试刷新了一个已经释放的图形
, _# `+ }$ o9 R) K8 t8 v4 e& _! V- u% \, R" j

" j8 q+ W9 w' s0 A1 V! I( d5 A. l& t2 t2 A  K  ^; @4 z0 n
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?6 ~9 K+ t; Y/ a+ D( ~
复制代码
不要后面那个条件貌似就没问题了。+ K4 A' T* J9 E* G) d
9 u5 w8 a* H7 A' k; t7 R' L- A9 V0 H
: w5 R6 x3 j; B3 L
  _, n! T/ m: N9 B
5 G" J( g. r) m2 u. k  x" r0 n

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
8 L) {) X0 Y  R" J' |/ N貌似是释放的条件不合适
1 r; U: |  g8 y结果尝试刷新了一个已经释放的图形

$ m( }1 V& Z7 V. W# P把後面那個條件弄掉後,的確沒問題了
% j' f- o6 X9 W目前從關頭打到關尾結束都沒再彈什麼錯誤9 V- P! c6 Y) Z- H* e
非常感謝! Q5 o+ q2 P0 `# D. M4 V( q, Q1 n
! h5 u* N1 [6 v' I: d; d! n$ Q$ s
不過我是參照著別人腳本改的
- h4 g/ ~* _8 I  f他寫的條件式也是那樣,但我用他的沒什麼錯誤/ K% g/ |8 U# y3 r
不知道是怎麼回事
8 U$ D/ F1 E" g4 I7 N/ o' Z, w8 d是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的; x  V+ C( S5 c4 p8 n8 K3 f- i
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
1 {; e. H4 B+ Y( j! y嘛..这个数组吧..我在以前试写队友的时候关注过一点( {( a3 U& j& X/ |3 ~
不知道XAS内部对它做了什么手脚还是为啥,
5 B- B6 G7 m- f9 c总有那么一瞬间,没有被消灭的敌人事件也变成了nil
- s8 z+ h- l4 `8 N5 z! K# |3 q) D0 e1 m5 ], U, o
$game_map.events.values[@enemy.id].nil?) w) j4 C0 [% O2 {8 S0 n" ?- d
因此自然而然的返回true并符合条件把图形释放掉了5 y9 [$ P+ N( L1 u3 j

) p1 R# o/ L  y% M6 eLZ应该有注意到吧,4 W# W& r. f, j* i
我测试的时候发现报错前几帧,图形会消失,1 h; G, W) ^& Q
应该就是“误以为敌人被消灭”了。
" \: w: Y- y5 C/ I- z" j1 {. j$ P% j% R9 c7 \
受限于个人水平,至今无法找出$game_map.events的真相../ ^( E) P: V4 i! [

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 # [8 ]0 }5 D, V* Q: c' u) i
$game_map.events
0 B  B. `9 o, G8 ?$ c% J9 N4 w) B嘛..这个数组吧..我在以前试写队友的时候关注过一点
% o3 h$ E- u" Q3 q! g  C不知道XAS内部对它做了什么手脚还是 ...
$ r0 E$ u. E5 |* r
當初我把那個條件式看了三遍,都不覺得他有什麼錯+ S! j. B' M1 j. I
原來還有這麼深奧詭異的事XD0 }7 ?$ g) W# J; m3 D% m5 x

% E' ^, n  W& B錯誤發生前的確會有圖形沒顯示出來# F) {3 x6 g$ p' x! \0 i9 y
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...! Y8 Y  M8 O4 h3 x5 m
沒想到居然是詐屍了XD7 S7 ~- K5 Z# O; o7 E5 U
+ v4 v3 q9 N. y6 w+ g" _
不曉得3.91有沒有修正這問題..., U: m8 m- A2 |* [+ O% D! n
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
4 z  b% r! b% s) [9 R2 d2 {# J9 @
$ ?6 G5 Z. j9 ]9 `) p: `/ k# F的确  [& u( S& `4 y  F
用惯3.82之后想去整3.91觉得压力甚大..% e) Z$ r1 m8 g
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。. T. ~! G: r. w8 N2 J7 x- a) B
, [% E+ [, t9 t2 i3 s6 C! B
然后加一个判断处理的。(我记得有一个disposed?)




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