Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
4 u; J  \. R+ N( `5 E6 g會在每隻事件怪物的腳下顯示
% J$ t  u* w. ?' k$ h) m9 F- I問題是不知道為什麼  O. x8 @- D6 E$ o
有時打怪打一打會跳出
5 {2 `, V( W% k# F1 R5 u0 r---------------------------
, v) n9 j( l4 O- b5 l1 t8 dXAS5 ?: {$ c  m# M2 i! z: m. w" W
---------------------------3 S" [- r9 y- R' N( ^3 H; o: x# ], [
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
# D8 r' Q! u) T5 |7 S$ t3 ^8 l4 P
disposed bitmap/ j: P- X& T% c  d& E2 m1 a
---------------------------
: x+ s& f; ]0 n5 L# j" a$ a) N確定   : i3 K+ V8 ?: j5 B- G1 N& F& M
---------------------------
( \& L$ c- a/ {9 G3 X+ D" b5 H  d; G: B7 G9 R. u
這是腳本% ?. ~0 b& k" E2 ^' J  g

7 N$ K! o- f. L* B6 L& E$ n
  1. #===============================================================================' f7 m" s9 P/ H& V' M" R: S
  2. # MOG - s Hud 1.0      
    & T3 c; h  L( P" a+ J
  3. #===============================================================================
    ; ]2 N' r5 R& h: a! _/ }2 D
  4. # By Moghunter
    5 @/ V  ^. s& U, ]8 ?- f( f
  5. # http://www.atelier-rgss.com3 T1 F: ~( `: ]4 K3 J
  6. #===============================================================================+ `) @& Z( x  k# E! Z/ v
  7. # Translated by Calvin624
    ! d( o* p! G. F: ]) @# I/ H
  8. # http://www.xasabs.wordpress.com
    3 W) _! C7 I, b: m% P8 i& Z! B9 n0 u
  9. #===============================================================================
    + X) n  m. R+ [( O9 m; u' }: t$ f
  10. ###############################-DESCRIPTION-####################################% \" l5 }/ P, K+ R0 U! h1 S. b
  11. #===============================================================================0 Q5 d& ^5 c2 Y
  12. # Personal HUD – displays the HP and SP below the hero.
    # {+ V2 T0 |  r0 S
  13. #===============================================================================
    # G: ~$ {2 \8 Q% u, Z2 z& V5 J4 R
  14. #
    9 ^) J8 p4 f2 J
  15. # Graphics required:
    ' @  U% f9 i1 g& \" L0 e
  16. # . F$ {" B  `) \3 y' d  |
  17. # S_Border_HP_Meter.png/ \5 N" h& @! R$ [/ ~
  18. # S_Border_SP_Meter.png
    - K# g7 D0 H8 h  d3 p; ~: L( p
  19. # S_HP_Meter.png5 j: a5 P; P7 {
  20. # S_SP_Meter.png6 |, f# c1 Z3 Q; [) q
  21. #$ ^0 O8 ~- b. {, W! ~$ v4 s
  22. # All images must be in the Windowskin folder.
    , _+ k. d1 j; [
  23. #
    - \( _+ M0 m- D$ Z3 f
  24. #===============================================================================: H9 ]  @" q0 V1 f
  25. module MOG* `; h( c4 V4 i8 d+ z6 m
  26. VISIBLE_DEF = false  " ]3 x" D( _# {$ u/ V9 J
  27. # Show HP meter?
    9 S2 Z8 S  f% d; i" G5 U1 B) r; o  u/ n
  28. HP_HUD = true4 h! `6 q/ G" \  a, `- W
  29. # Position of the HP border
    & a1 @  a0 M) T5 h, k; L
  30. S_BORDER_HP_METER_X = -2  e9 o9 }& U8 _
  31. S_BORDER_HP_METER_Y = -2  
    % |# s8 y; @5 X: D
  32. # Position of the HP meter
    5 E$ r2 D' ?9 K
  33. S_HP_METER_X = 06 v  |+ ~9 x+ d6 R+ }
  34. S_HP_METER_Y = 0
    : Q* l: _) l6 k5 }7 _5 J) g7 n
  35. # Show SP meter?
    7 a' n- C+ z2 N' z
  36. SP_HUD = true- [" N1 W0 r* U- o8 _* I
  37. # Position of the SP border9 Y9 Q' u; j% @! }/ z2 F/ p7 p
  38. S_BORDER_SP_METER_X = 0
    3 d3 p+ P$ [. P  E4 K4 \; ]
  39. S_BORDER_SP_METER_Y = 10
    $ `8 N( q+ m; m  V+ @, \) }
  40. # Position of the SP meter
    ) W& q- v, A$ o5 P5 R$ c
  41. S_SP_METER_X = 0; F7 v! U7 f* V( W
  42. S_SP_METER_Y = 10+ e# P. {9 c0 K) h
  43. # Switch to disable the HUD- P6 a8 N7 P6 J. \7 y& L5 L; |; I
  44. DISABLE_SHUD_SWITCH = 50 l+ p! ^- ]1 j! x0 |' |4 ]- J
  45. RANGE = 20
    " O- v$ p# r# l& X
  46. end% j9 L' V# r" D; |' a8 q5 L# o2 {) m6 K
  47. #===============================================================================' D  {: [# J% G4 o0 k5 m! `
  48. # S Hud
    * K7 p, T2 v" W) q/ u
  49. #===============================================================================$ h: _1 B8 D0 P
  50. class S_Hud < RPG::Sprite
    + u/ h4 K* V6 p/ K3 r
  51.   include MOG2 |/ X/ i! ?2 ]- A; k( z' o
  52.   #--------------------------------------------------------------------------
    9 A) D, {" D- j2 F1 e9 l
  53.   # * Initialize8 I' L2 P2 e. M) a7 D7 V
  54.   #--------------------------------------------------------------------------3 k2 I9 c, h0 S, |
  55.   def initialize(enemy,viewport)
    , \9 f5 P( J# P% }
  56.     super(viewport)
    ( a( g; g+ {4 P5 [
  57.     @enemy  = enemy
    9 O: [$ R  q3 f+ O0 o0 B1 b2 h/ {
  58.     @battler = @enemy.battler
    # G1 Z( `" k5 R/ r* W
  59.     @old_hp  = 0
    4 g/ \3 B7 s8 l
  60.     @old_sp  = 02 l. V9 Z* J4 k5 f. X
  61.     @old_vis = false( F# ^; i: J$ v5 J9 I3 F# Q
  62.     self.bitmap = Bitmap.new(100, 100)
    $ n4 v; y2 d) T3 L7 r! i
  63.     self.visible = (VISIBLE_DEF)#false
    . I( [4 h* |: y$ Y1 B$ J( m
  64.     self.z = 1001 g3 E4 x# `% s0 J% m& L2 h
  65.     #HP Border -------------------------------------------------------------------8 ?9 M/ |# B6 S
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")# Y. a* V0 d- b0 e7 l
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    ! P( D: }3 g/ _' Z- s
  68.     @layout_sprite = Sprite.new
    ( p# @$ V; f! O4 I) `, h7 k8 c3 Q
  69.     @layout_sprite.bitmap = @layout_bitmap
    1 i6 r& I% I$ b  M
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    * W; C' M& v2 i4 n  V
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      0 V5 W  Y) H4 u: j2 ^
  72.     @layout_sprite.z = 5001
    " g1 e7 n& A$ d1 D" U
  73.     #HP Meter ---------------------------------------------------
    . P; o6 n$ {8 ~. G
  74.     @hp_flow = 0
    & c$ K" e% J$ ?9 {  k
  75.     @hp_damage_flow = 0% m1 C! h6 ]5 J$ L: k% l) D
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    3 g4 _, g( _: s  X9 I- J8 A4 I
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)8 p7 P8 u* E1 _( S& f" U& `
  78.     @hp_range = @hp_image.width / 3& R8 J7 E  \7 y0 }. j
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    4 z7 f0 ^; j3 i8 V
  80.     @hp_width2 = @hp_range / 2
    & w* Z% _6 r+ w) |
  81.     @hp_height = @hp_image.height / 2, K9 {- E. z/ R' `& ~: q& W
  82.     @hp_width_old = @hp_width
    : I: M4 G: x. H1 A/ n9 J, M
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)& C* \: ?' y, C0 G0 I1 O1 }
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) $ N8 Y- o" q5 Q2 r) L3 `+ j
  85.     @hp_sprite = Sprite.new
    1 N& ]" |* `: y( Y( m
  86.     @hp_sprite.bitmap = @hp_bitmap
    / `- i8 }0 k7 ~# J! H5 d
  87.     @hp_sprite.z = 5002
    : |: T4 \; a- k& U0 @
  88.     #SP Border -------------------------------------------------------------------! j3 q9 u4 f0 x6 m( D* x3 d. R9 W
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    # V+ m7 t7 N+ d
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)7 z, ?( I$ L0 I( O) X- X# T
  91.     @layout2_sprite = Sprite.new9 }, y6 c8 j+ c% H* e0 U
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    , u6 q  o4 G! A9 r! f3 B! `  C/ g
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    . [: m; }* h. x; {- i- k! n1 f+ \
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    6 {  ]( c- W# A. E
  95.     @layout2_sprite.z = 5001   
    9 `, Q7 _- x5 @8 N# R2 N5 c: f$ T4 v* b
  96.     #SP Meter ------------------------------------------------------! }% p+ }) `8 b$ B, k8 O9 m8 r2 ^& C- y7 F
  97.     @sp_flow = 06 W7 i9 l" ]) y$ r' r
  98.     @sp_damage_flow = 0! p9 V5 r4 J8 j! Q' Z/ b* U2 x
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    4 w( l( p" F$ K3 }! U
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ( {: |, `9 i. G. L5 ]7 c- k
  101.     @sp_range = @sp_image.width / 3
    4 p7 _9 Q% I. f# ]$ A, F3 ~$ c3 M
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    , h& M+ l, F0 N" U* P; g  ~, o
  103.     @sp_width2 = @sp_range / 2. B6 K1 u1 ?1 k  r2 k
  104.     @sp_height = @sp_image.height / 21 G+ Z, m4 G+ ?7 f! N
  105.     @sp_width_old = @sp_width7 R$ V, B& a+ I8 }- I2 |: W
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    2 K+ c5 e& a( T6 y7 o% Z- u
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)) Q9 \$ o) Y$ ?0 Z4 F6 D
  108.     @sp_sprite = Sprite.new5 C3 D# `4 n+ a  q! k
  109.     @sp_sprite.bitmap = @sp_bitmap
    1 }* @1 x7 D; D' J3 I  D5 [
  110.     @sp_sprite.z = 50028 c! P" F( h5 O% z$ ^6 c  ?) b
  111.     update7 {5 s5 i& @3 _" F: U0 N
  112.   end9 _* e8 D+ a& p
  113.   #--------------------------------------------------------------------------
    / x& t0 x( `- f+ [  @
  114.   # * Refresh+ @: K3 O' i3 b& F
  115.   #--------------------------------------------------------------------------, [7 B% _% t0 i
  116.   def refresh. ?! w( y% U/ `3 {+ R
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    : @4 L8 A8 y" r' ~4 T' t
  118.     self.bitmap.clear& D+ {! K; q! H2 g
  119.     @old_vis = self.visible* Z. N2 h& L9 x  P! [) [0 S0 c
  120.     @old_sp = @battler.sp6 }3 O/ q& j: [# R2 M7 a7 G
  121.     @old_hp = @battler.hp
    + Y3 i8 l9 V  z' N) z" ]
  122.     hp_flow_update: a% ]1 c+ k0 G! J- u
  123.     sp_flow_update
    % ~$ }3 f( ^* Z- x  \
  124.     hud_pos_update, V" D* _  _+ c/ B4 I
  125.     visible_update
    . f( @) t1 C+ ~1 u
  126.   end& m& n# T) F  O0 l
  127.   #--------------------------------------------------------------------------
    6 E1 P. }7 Y+ P5 u# n6 ^
  128.   # * Dispose
    3 Q4 ^9 K' R( T# z5 h8 w
  129.   #--------------------------------------------------------------------------
    5 I5 w+ U( Z+ s% M7 K* M2 I
  130.   def dispose6 W6 c7 ?$ a/ I. |/ W7 f
  131.     #HP Meter Dispose" z/ s# w. S" N- P
  132.     @hp_sprite.bitmap.dispose
    $ x1 u( X. h6 s6 d. n
  133.     @hp_sprite.dispose
    5 b# l! Z, V4 t( [. j
  134.     @hp_bitmap.dispose
    6 b# j4 }! r: r% ~
  135.     #HP Border Dispose) M/ s( G9 A8 z7 q" c- J
  136.     @layout_sprite.bitmap.dispose) z$ N* k- _2 S0 n/ c4 Q
  137.     @layout_sprite.dispose
    ! R# Q! y$ P7 A. G
  138.     @layout_bitmap.dispose5 U( l' Y! L2 g
  139.     #SP Meter Dispose
    ! z7 x, c4 m. {* c5 ?7 [% }
  140.     @sp_sprite.bitmap.dispose
    8 P+ x- z! T! o3 k( j) z% E! u
  141.     @sp_sprite.dispose, Q& I& p1 ]4 W6 K; n
  142.     @sp_bitmap.dispose. W+ p1 ^3 ^$ P# x7 H
  143.     #SP Border Dispose! ]' A% H( \3 ^/ I1 \3 Y, z
  144.     @layout2_sprite.bitmap.dispose. v) C& F1 V2 p5 l: E" |
  145.     @layout2_sprite.dispose' Q1 _6 j2 p+ `  I" L
  146.     @layout2_bitmap.dispose2 T, R6 m  F: _
  147.   end/ c6 t$ R) Z/ G, |7 @
  148.   #--------------------------------------------------------------------------$ h1 X9 {/ h0 N) K) F2 d
  149.   # * Update
    % e. R8 f2 y7 T/ p' [
  150.   #--------------------------------------------------------------------------/ Y8 L9 T* o( i( Z0 y( e6 T  p
  151.   def update
    4 y9 d& K' b  i. @
  152.      @battler = @enemy.battler
    . I) v0 k; [$ H. B: s% J
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?, C2 U( \9 K& G. m( C
  154.      if self.visible) u0 z5 ^9 W& L" |8 G6 T  i
  155.        refresh
    , \+ c/ q% z7 ^! o
  156.      else9 x  q% U& [8 E
  157.        self.bitmap.clear
    ; G7 x3 V  `% R8 y3 c
  158.      end
      x$ {! N( `7 g, N
  159.   end
    * \+ j1 I! f' t( `3 q4 F
  160.   #--------------------------------------------------------------------------# x. l8 t' V$ d5 b  G
  161.   # * Visible Update
    4 a- W7 X4 i& p, P$ h5 A( A! n
  162.   #--------------------------------------------------------------------------
    # |' A1 H* P, _. H4 ?
  163.   def visible_update
    : \' ~7 ^5 A7 `! X
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    & I' v/ w5 N! Z
  165.        @hp_sprite.visible = false0 O6 ]; M- u9 e4 j% w
  166.        @layout_sprite.visible = false- c1 |; g4 m" b/ s+ h7 \
  167.        @sp_sprite.visible = false1 T# q+ h6 L5 v+ \$ k
  168.        @layout2_sprite.visible = false
    : m: E" B2 ~8 y$ P! O$ ~
  169.     else
    2 Y1 g9 V7 k1 g
  170.        if HP_HUD == true+ ?# X' G3 m6 i8 q3 ]4 t
  171.          @hp_sprite.visible = true) y1 y" e6 S6 r2 m& n/ a1 _
  172.          @layout_sprite.visible = true+ _9 X: P3 \2 `
  173.        else2 {/ W* c+ S& ~: I/ b! T2 Y
  174.          @hp_sprite.visible = false' S  l* m2 X* a" Q) ~' H  Z/ \
  175.          @layout_sprite.visible = false, ^$ H/ x$ }4 i* k4 Y
  176.        end  
    ' d8 b, e" l2 M4 y0 n- u" \5 Q
  177.        if SP_HUD == true
    0 ~5 a3 F* R8 V1 a
  178.          @sp_sprite.visible = true
    . W6 e& X/ ^1 [9 U- O2 e8 n) M, T
  179.          @layout2_sprite.visible = true
    0 S* S3 Y7 d7 m% G3 t' \! _
  180.        else$ y/ q( D' s9 n% U# F2 l, y
  181.          @sp_sprite.visible = false
    . N( |: t0 U- j4 \$ w0 {6 \4 ]
  182.          @layout2_sprite.visible = false
    4 \/ d! G: w4 O9 S9 g8 I. ?
  183.        end ( ^) S( q$ e; Y; Q) I. T' S- e
  184.      end  3 C6 A& i2 Q+ S
  185.    end ) N+ t$ U6 \, q7 f3 e
  186.   #--------------------------------------------------------------------------
    , s8 ^; s* v( H9 E5 [: w! l5 f
  187.   # * Hud Pos Update
    ( R" B: C7 i2 `* s9 _  v0 R
  188.   #--------------------------------------------------------------------------; j5 a' X- ?% w- X
  189.   def hud_pos_update
    " `6 X5 |% V1 [% ]' b
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    + |2 d$ O4 |1 H! F# j9 P
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    # v2 w' K2 H( T+ X8 Y. u
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    + N2 h- u1 a) w% M3 Z* U! N
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y ( [+ ~/ w5 }. _% U# G" C
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    + A# `4 c( G7 Z; b5 k2 e
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    & R  x0 d! K( F* P0 G! r2 [/ v/ L
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X. k! g+ N( F4 f9 S
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    . v- k  M% I" b$ p3 O
  198.   end  . {9 [+ h  _0 U+ P: Y! O7 B
  199.   #--------------------------------------------------------------------------" b. ^( z9 k, s2 d
  200.   # * Hp Flow Update
    ; ^+ w/ Q; I& T- |
  201.   #--------------------------------------------------------------------------
    0 N5 b4 a0 o( ^, l8 d
  202.   def hp_flow_update
    . h3 z  K/ W2 O# _& e
  203.       @hp_sprite.bitmap.clear
    ! k8 Z+ X8 S3 ?/ H2 }1 {  W
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    $ \# Z1 O6 d* r9 Y) J8 Z: {6 y
  205.           #HP Damage---------------------------------9 @1 V: j' H5 S, V2 l( b
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    : G$ d1 ^' `1 B* M
  207.           valor = 0.5 if valor < 1          ( H) g7 a9 Y- O
  208.           if @hp_width_old != @hp_width
    2 S: G& V3 c# W' N6 \0 U) U7 T+ s
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  - R6 t% H& w) Q$ v3 x/ A* b
  210.           if @hp_width_old < @hp_width 0 b  Y6 b! w7 }/ ]: E* k
  211.              @hp_width_old = @hp_width4 K. j/ m- r5 |- K5 j$ e  _; ~
  212.           end      
    6 y6 ]8 R- m# z, m1 X: H
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    9 y5 @9 q9 T/ ]9 k  k' d( y
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    3 f% U, ~& d4 O0 e7 Q
  215.           end        
    5 i0 {$ D0 Z" A- U% K0 @
  216.       #HP Real------------------------------------, C1 C- X. q4 G7 c! U8 n" F9 I: X* A4 d
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    9 o, e' q. E% @+ Q. P% J( e8 p3 L, P0 S
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          * n" y+ ^5 @& {2 F
  219.       @hp_flow += 2  4 M* _; J+ C" M3 b! G4 M. \8 u$ n
  220.       if @hp_flow >= @hp_image.width - @hp_range+ f( ^( m3 d9 m* [5 {* j6 |
  221.          @hp_flow = 0  
    , l! b. c, ]5 T6 ~4 R! ~' Q+ n3 e
  222.       end1 k* [6 K5 ^2 @4 \
  223.   end    : A( Z/ G- D9 ?4 r& Q
  224.   #--------------------------------------------------------------------------
    + J, G  h6 ?  Q0 W# l& u  a
  225.   # * Sp Flow Update
    $ {. \6 j0 u0 G- B
  226.   #--------------------------------------------------------------------------
    / x/ D8 I" f) C
  227.   def sp_flow_update1 z# Q6 _3 f6 b2 m/ u" A
  228.       @sp_sprite.bitmap.clear3 d( F7 S* A: h9 n. F' C
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    : m( U8 G2 \( D/ d; W9 S
  230.           #SP Damage---------------------------------; E" s$ a) A; a
  231.           if @sp_width_old != @sp_width
    0 |' L6 |0 l+ l3 ^5 l8 w+ @& x
  232.           valor = (@sp_width_old - @sp_width) * 3 / 1004 \! O7 L" v* f: B
  233.           valor = 0.5 if valor < 1              
    , F/ L1 t$ L3 y. f! E* Y( {: H, b# t
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  ) X  N' G! r3 j6 I1 c: @
  235.           if @sp_width_old < @sp_width
    4 H  p4 W( x. r3 I( Y
  236.              @sp_width_old = @sp_width
    * x* b: Q$ U8 [% w
  237.           end      
    - P6 W7 R* J: Y0 b8 Y1 {3 Z# |( e
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)/ X/ \, v! X' x! _# t
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) ' j; `) s* [, V( o  f
  240.           end' A8 b# [+ I' [
  241.       #SP Real------------------------------------
    ; l, r% D/ [/ Z7 `& r
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)6 S8 a* h) [. S4 S+ W6 r  Z' n# {
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ! Z7 g) j. ]% G* \* A( S
  244.       @sp_flow += 1  
    . M: s; j  y0 d- o: H' E- n
  245.       if @sp_flow >= @sp_image.width - @sp_range0 r9 F! ^, _" u. T1 Y. w
  246.          @sp_flow = 0  
    ! V" C! ^& P0 D- \( f8 ^
  247.       end' u$ H/ q9 S7 N; a, B# ]4 t  z# q1 N2 w
  248.     end            
    / T0 C- _% a9 B7 ?( s8 U
  249.   end' R  ?( ^2 d( @  i
  250. #===============================================================================" m! L7 X" C; ?7 H- f) ?
  251. class Sprite_Character < RPG::Sprite: _* J' c* h2 R% _
  252. #-------------------------------------------------------------------------------: m6 h9 T0 M0 X* r6 R4 |, N9 d: ^5 z, I
  253.   alias :xas_emini_hud_init :initialize
    4 p4 N6 J$ U7 J9 d- Z2 \
  254.   include MOG
    ( e! o+ q8 T& K' h9 x. R! x
  255.   def initialize(viewport, character)! h- v( ~  g# z& s' r( E
  256.     xas_emini_hud_init(viewport, character); x" \0 ]* M0 a4 S5 {% ~) p
  257.     @viewport = viewport
    0 R, K( i( n: @0 W( q7 J3 ^
  258.     return if @character.battler.nil?& C& |* y9 t/ X  M6 p# S. w# I
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)4 Z; b# v+ J# T: z0 c3 a) r
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    - Q; _8 u6 F! [, M! [9 R0 Y
  261.     return if @character.battler.is_a?(Game_Actor)
    ; H9 Q) @3 X. p
  262.     @bars = S_Hud.new(@character, @viewport)
      b0 f6 B7 A) z1 D- A
  263.   end: }" K5 X5 G8 D8 x" h. G2 o
  264. #-------------------------------------------------------------------------------0 k6 E, @, D, [5 m& d2 B0 Q4 S
  265.   alias :xas_emini_hud_up :update" f  x, o6 a) f3 i7 o: B
  266.   def update
    / q5 F" l& H, a  i
  267.     xas_emini_hud_up! n# D1 ~0 [, J1 D2 }) M& k
  268.     return if @bars.nil?
    9 i# w8 k$ m% [" T5 l/ y$ Y8 c; Z  N
  269.     return if @bars.disposed?$ a2 J: n( L+ Y' m9 u7 A/ G# [
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs0 f4 W# p4 F0 A) k8 q
  271.     @bars.visible = (dis <= RANGE)5 h7 x0 j, T0 p6 ~# O& |. z
  272.     if @bars.visible( z( A& ]$ z% z# x3 F
  273.       @bars.x = @character.screen_x# - @cw / 4
    : a) x( X. X2 q# S6 v. Z5 L; T) k9 K
  274.       @bars.y = @character.screen_y# - @ch / 4/ z  @" q! Q" e, D
  275.     end
    0 n( R. }! w/ M1 l# Q
  276.     @bars.update& _. [8 T& H4 s$ \7 u  X: Q
  277.   end
    * c2 [1 V) k7 P3 q
  278. #-------------------------------------------------------------------------------. R( n5 z+ ?6 @/ W  y
  279.   def dispose
    . |% p7 Y1 D2 J0 e
  280.     super% }* ^- }. o; ~7 m
  281.     @bars.dispose if [email protected]?8 J3 L, {' |, x) Y! b6 {$ S
  282.   end: [- n  v+ q! j* B2 d/ \
  283. end
    7 L! F$ w/ M2 e0 [1 J

  284. 7 I8 z- {) t, o: b7 o, ]
  285. $mog_rgss_s_hud = true
复制代码

- }4 `2 Z- A( G$ M. y( b( t
& S. f+ A7 `1 B/ V3 |7 Q7 w( y, u
7 ^: |4 k; G9 c上面所說出錯的203行內容為0 b" R) V! U/ d, W4 P8 p5 B
@hp_sprite.bitmap.clear
$ N& A1 o4 V4 Y1 ^, N! }/ @; I9 ~/ A$ N
想知道怎麼解決/ F$ x2 ^- E+ c# P9 o1 T

, L, D  X. B" {3 i. `- Y該腳本支持3.82# K) ~( T* N, O
" ]& x& T" O* H5 @% b
下面是圖檔,要塞在Windowskin下
( {$ x/ B# T2 I
! H3 I6 S. c0 J S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
" @/ m7 E: H" X7 z
2 |, ]. v# d. P# D" Y
6 \. f1 r  k. A* b, I
% N! r4 F1 N) Q/ x
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适# r0 X) l' T. Q& x: n+ i
结果尝试刷新了一个已经释放的图形
  y9 x7 a3 R0 |4 n" X( Y, Z  K% a& `" A( [6 [

/ S" f2 T2 ?/ ]7 ^( b# K4 V# a; \0 y% D% R
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    ( T+ d( O( \6 \$ J: n) y
复制代码
不要后面那个条件貌似就没问题了。* F3 q1 e9 p) `; T& R2 N7 i3 Y

! j0 X2 x+ X+ x3 X6 y* p% J$ m
6 ~& P' t" J$ i+ N% H
( \# `3 K0 o% b0 P. o  ?1 B1 Y; X( k8 c( G8 O# |; v

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
6 L9 w/ Y, `% `$ b貌似是释放的条件不合适  |+ Z$ W4 K1 P. O: t
结果尝试刷新了一个已经释放的图形

# M5 m/ U4 s, i' T+ B把後面那個條件弄掉後,的確沒問題了- F  |  W5 F1 F
目前從關頭打到關尾結束都沒再彈什麼錯誤8 o6 a" g( G& ?$ q1 i% F: j' J
非常感謝
3 V9 i# [4 Y7 E0 c' V2 z, j, q& p0 ]
不過我是參照著別人腳本改的7 v3 V) C( `6 s
他寫的條件式也是那樣,但我用他的沒什麼錯誤# g& R* D) c4 Q7 m1 t% _  V8 T
不知道是怎麼回事2 n' g+ C5 ^; O- S2 L/ \1 v6 G0 M' y
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
# E; h3 P6 Z6 W+ }我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events$ e* k, ]; t  R( Y7 `: j' {9 L
嘛..这个数组吧..我在以前试写队友的时候关注过一点
( h, `' B7 M* L6 f2 o7 Z9 X不知道XAS内部对它做了什么手脚还是为啥,
: x- L6 }" @  P2 N# _总有那么一瞬间,没有被消灭的敌人事件也变成了nil' K- H' G9 n* i* ]

& s# t$ S1 Z. G- f! _5 }% k$game_map.events.values[@enemy.id].nil?
  O' [( F% q6 ]因此自然而然的返回true并符合条件把图形释放掉了8 e# n$ ^* M; b5 h
: g+ y) i3 r0 l8 K: V) |
LZ应该有注意到吧,
7 v! Q) f6 _0 Z6 r+ @我测试的时候发现报错前几帧,图形会消失,
* r! N8 B9 o: Q8 r" _0 N+ b应该就是“误以为敌人被消灭”了。
8 w+ T& G. f' ^3 G% b1 t: R. f
  }3 _3 ^5 K' N2 S! x受限于个人水平,至今无法找出$game_map.events的真相..: D. A8 I( Y4 F' m4 e

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 2 d$ q9 |9 `2 C# F9 T" d
$game_map.events
# S% S3 R4 i$ Q4 J) m' [嘛..这个数组吧..我在以前试写队友的时候关注过一点
) C5 }- U' l( Y5 t8 C7 a1 {不知道XAS内部对它做了什么手脚还是 ...

" F4 H* K( G5 S6 v' N) }9 }, ?當初我把那個條件式看了三遍,都不覺得他有什麼錯
! f& O- }0 X, h. b3 n. V原來還有這麼深奧詭異的事XD
- A1 [  X* y0 w3 Z, z6 \: F# m
# i7 m+ q/ e6 o" S( ]錯誤發生前的確會有圖形沒顯示出來$ C5 Y; d5 i( q7 h7 e; c3 |
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...; m+ h2 C  {% n$ ?+ u: n
沒想到居然是詐屍了XD
; v0 H: K2 P1 K! b- W. \7 s4 R7 e, V' ^: Z* L
不曉得3.91有沒有修正這問題...% N: W5 ~3 ^2 x1 \$ M% L/ w( F
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。& A, r: H3 T5 a( M

, t, X) x. T7 G的确# }$ E( o5 P  h8 ]) [  z# l) m
用惯3.82之后想去整3.91觉得压力甚大.., o9 c: x1 x8 ?0 _' |* W
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
4 @( V1 P- w$ M% I0 Y0 H! e3 B: B$ D) d5 D3 R" S3 v  I
然后加一个判断处理的。(我记得有一个disposed?)




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