Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條/ u6 |7 n( l7 b% B4 J
會在每隻事件怪物的腳下顯示: m0 C" z, \4 E7 V  k
問題是不知道為什麼
# T7 j( G* U7 V& U" c, `' o8 z有時打怪打一打會跳出) |) o& @7 v9 ~7 t, Y
---------------------------
2 N! k1 u! B8 v0 \* Z" M( sXAS/ ^9 _6 C# I8 T) Q) P, n0 }2 z
---------------------------3 d: p) V/ |0 R1 D" V
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。" C0 m$ N/ k# M! I
: q* z6 f' C" h+ U( R- M
disposed bitmap* r& _, e+ L+ f2 L
---------------------------
( V. T7 D  C( {, d# w  d% t* [確定   
- g  T+ n0 {1 M* I+ N2 I+ v8 U) d---------------------------' S, {8 [4 o7 ^+ P. _
3 R2 p9 I- ?0 J& N' `6 y1 @
這是腳本
8 @  W9 x; G, G# Y0 e& G; t
: N: f( ]/ K; }0 m1 D3 I
  1. #===============================================================================3 Y  o0 \- F7 g4 x; B. e2 @- D
  2. # MOG - s Hud 1.0      
    ' o2 s0 H6 W1 q
  3. #===============================================================================7 L" V' Z( T7 i& X# a
  4. # By Moghunter
    * W# h7 V% r. s6 T
  5. # http://www.atelier-rgss.com3 B( s* b0 y( S% ]
  6. #===============================================================================
    3 m  p6 u$ m( R. V- F
  7. # Translated by Calvin624 : E% ~& P" f2 D5 H
  8. # http://www.xasabs.wordpress.com
    4 }& |3 a, h! S# d$ [5 U
  9. #===============================================================================( |0 a5 m/ ~6 A0 c; e8 n: s  O' w
  10. ###############################-DESCRIPTION-####################################5 {. m2 J3 x$ s( c/ i6 ^
  11. #===============================================================================
      |3 p- {8 O, i+ b, o
  12. # Personal HUD – displays the HP and SP below the hero./ x4 J1 V" [, I0 m0 n6 n
  13. #===============================================================================
    3 n8 }- I/ F! C9 s
  14. #! p0 m% m! {5 l" T& y( M! ?2 U
  15. # Graphics required:0 B% H3 e' h1 }6 X% _$ F+ Q% H
  16. #
    " U# g6 N3 G6 A. s' B! z7 Q  r
  17. # S_Border_HP_Meter.png, L& h& P3 T; A4 O! j4 B! `: B
  18. # S_Border_SP_Meter.png7 q4 ^7 g, P- {4 t: \) o$ \# z
  19. # S_HP_Meter.png
    5 n4 B( p/ A( W
  20. # S_SP_Meter.png- N# Z2 G. m' ]+ Y' I% Q# p
  21. #( \- c1 R. t& g* S1 Y  n! B6 u+ c
  22. # All images must be in the Windowskin folder.
    % A7 Y7 C& L# h; n: U( E8 B
  23. #
    & _0 u# ?7 k0 H+ T7 }
  24. #===============================================================================% z* G4 i& W+ C
  25. module MOG
    % U- }" d( E6 ~/ c& O
  26. VISIBLE_DEF = false  
    / g% g6 K4 E: t5 a. }5 V
  27. # Show HP meter?; H2 f+ B8 ]) q7 `8 \& g
  28. HP_HUD = true
    + f0 H) v# A5 q$ b: |3 _1 b9 `
  29. # Position of the HP border
    ) T* W- R- k! @
  30. S_BORDER_HP_METER_X = -2
    ) ]! t: _9 R1 q$ i; m" z
  31. S_BORDER_HP_METER_Y = -2  
    $ O; c# X5 r  W$ L; e, \
  32. # Position of the HP meter
    ) B2 C% X7 n: E: b  o/ k1 Q
  33. S_HP_METER_X = 0
    / b% z  E4 E2 C4 v6 A2 z; a
  34. S_HP_METER_Y = 02 Y0 W+ ^% Z2 C4 N
  35. # Show SP meter?
    , p5 A- [$ [' T+ t% S# V
  36. SP_HUD = true
    ( F$ B6 U0 d' h5 T1 q! |4 n3 P
  37. # Position of the SP border! r( @7 k' m8 ?+ j* i8 P) p4 R; E
  38. S_BORDER_SP_METER_X = 0
    / D6 N* v- E9 F0 g$ Q3 l
  39. S_BORDER_SP_METER_Y = 10
    ) g; g( ^3 H* {+ N: P" n
  40. # Position of the SP meter
    * C! }$ A) \" i4 C
  41. S_SP_METER_X = 09 n2 }7 b/ ~% d3 k8 ]
  42. S_SP_METER_Y = 106 [3 e4 r) p* b% ~  |' U
  43. # Switch to disable the HUD) p& l& B5 {" M; W" }
  44. DISABLE_SHUD_SWITCH = 5/ h1 Q: P" `+ i
  45. RANGE = 205 \: Y* g: L  t2 b: [8 ]
  46. end
    5 V' A, V1 t) j- \5 G; u
  47. #===============================================================================
    0 g- Q* C3 f2 P
  48. # S Hud9 G- Q2 B/ h- C. {
  49. #===============================================================================
    , V5 ?$ E, c# m/ V" F- F
  50. class S_Hud < RPG::Sprite% M+ U' N1 ?  }9 N- R  z
  51.   include MOG
    8 F" ]3 y8 y$ G+ F6 Q8 [0 W# L
  52.   #--------------------------------------------------------------------------' m0 l& V2 O8 _8 X# ~& X, P# q) Q
  53.   # * Initialize6 m7 \+ [5 }! o" ~& W
  54.   #--------------------------------------------------------------------------/ i# ~2 v& @/ p  T
  55.   def initialize(enemy,viewport)) u" D' [% Z" M2 s
  56.     super(viewport) ) i, L, a$ ~, x" d- M
  57.     @enemy  = enemy; ?7 t8 M+ \' C4 A" v. N# Z8 m. r
  58.     @battler = @enemy.battler
    6 i2 w% W# B  K4 H+ T# A# }
  59.     @old_hp  = 0
    $ u& T+ |) A9 p1 {$ C1 A
  60.     @old_sp  = 0
    ' k6 m. E% m/ ~' s
  61.     @old_vis = false
    . x% `; c( g0 ?4 V8 w& V
  62.     self.bitmap = Bitmap.new(100, 100)
      l5 o9 S; @, Y
  63.     self.visible = (VISIBLE_DEF)#false$ d3 e1 I& O3 f- y; |7 n
  64.     self.z = 100, B- z, o4 q' y: z7 l$ K2 Q: n! x
  65.     #HP Border -------------------------------------------------------------------
    5 _3 Y! _# B+ a9 W  P4 N. N1 W
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")5 p8 m) T1 y) v% @2 m& H# y
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    ( @, n& Z% j$ Y/ Y4 q' r9 o3 H
  68.     @layout_sprite = Sprite.new4 l8 P- W" y! s9 a# [
  69.     @layout_sprite.bitmap = @layout_bitmap
    + V( z2 J% m: C3 Y
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    & r9 i  Z( B  x; M; p
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      9 s9 I5 o" \' C: v( X9 g+ f; E% `
  72.     @layout_sprite.z = 5001
    & }' b8 b6 {8 k7 m5 S0 Z; p6 g. _
  73.     #HP Meter ---------------------------------------------------/ U& U; u+ S, B" J3 A3 R
  74.     @hp_flow = 0; U7 I7 ~" ?5 L' |* s1 t. Y
  75.     @hp_damage_flow = 0$ r9 ]2 X4 [2 }. i1 Q8 Y6 m& p
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter"), a- @+ m0 h4 Y9 f: G
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    , D5 B( J5 u  J4 W' h( H7 j& x1 v
  78.     @hp_range = @hp_image.width / 3
    0 P" m0 q6 x8 U1 S  w9 ^
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    ; ?! q$ w  v  Y, C
  80.     @hp_width2 = @hp_range / 28 K1 C4 F( |& R2 y5 z1 O, B' H
  81.     @hp_height = @hp_image.height / 2+ a/ m, q+ P" i/ ?# i/ M" i2 W8 m
  82.     @hp_width_old = @hp_width
      g' S8 |  e% a  A5 b% N
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    8 h3 G& f. T9 F5 C5 _% s( i3 [' B% l
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    - o% W( n" n. `( C9 e' W
  85.     @hp_sprite = Sprite.new# c- T* ?: S8 Z  `- j+ j! d
  86.     @hp_sprite.bitmap = @hp_bitmap) H9 h9 ?" M+ f% `
  87.     @hp_sprite.z = 50027 U5 N+ A% X7 |+ ]8 p
  88.     #SP Border -------------------------------------------------------------------
    0 `: K/ {: x6 @; A5 f, d
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    7 {6 A% S+ _; a3 F  C- M
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)# \: f* E1 @3 M
  91.     @layout2_sprite = Sprite.new; Q* }. H- U3 t2 N. B, C
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    # |* ]+ u' p' u- a) x5 A
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)1 j) o" X$ _: e' A, h3 X) _
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      ) C7 ?3 M* B, X
  95.     @layout2_sprite.z = 5001   
    * d& L% k* O) {6 Y% }6 f  d
  96.     #SP Meter ------------------------------------------------------$ k" |3 W  V1 O( t: A4 a( j
  97.     @sp_flow = 09 L  N4 m8 z6 i, c  }! X
  98.     @sp_damage_flow = 0: K) d4 B, v3 u- y3 ]+ w  _& P
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter"); F8 M( q) `% Q/ w$ ?% w
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)% x# e  _5 R0 U" Y. [
  101.     @sp_range = @sp_image.width / 3) `! N- ]; n9 p" k7 X# m
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  * S1 \9 o0 ]& r0 r5 L) i$ i
  103.     @sp_width2 = @sp_range / 2
    8 j! {& S* K4 |9 C
  104.     @sp_height = @sp_image.height / 2$ R8 j. M# l& v  Q7 ?& V
  105.     @sp_width_old = @sp_width+ z; A; w5 D1 z
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    3 O/ X5 K& y; E; b/ S' n! M
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
      |$ y0 @* M8 ?/ P! M7 ^7 i
  108.     @sp_sprite = Sprite.new
    ) Q" L) i7 G4 C
  109.     @sp_sprite.bitmap = @sp_bitmap
    + D8 J% \( U9 i( U* R/ @$ g
  110.     @sp_sprite.z = 5002# R5 g! o- a3 C( x* w
  111.     update- o9 |# l  Y& U3 N3 {( E; S
  112.   end4 J4 J% T1 x. t2 Z  B! `8 o. g
  113.   #--------------------------------------------------------------------------
    & e, F% W9 r+ C8 O% i
  114.   # * Refresh) g- ]  m6 Q6 c8 S
  115.   #--------------------------------------------------------------------------8 b# K8 o+ ?. R' g3 a- M
  116.   def refresh1 s1 J% J9 n7 I4 x+ _- g
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    # N& \" l  T( o
  118.     self.bitmap.clear+ z9 J+ c( R2 P+ q
  119.     @old_vis = self.visible* l" R2 J8 W8 o: K7 f
  120.     @old_sp = @battler.sp
    0 N# ]$ M' Y! u% z
  121.     @old_hp = @battler.hp
    4 v9 s+ Q% o  Z# E
  122.     hp_flow_update: a) P9 V3 o, b- J; O; }
  123.     sp_flow_update
    ' z% }  K( Y9 ]
  124.     hud_pos_update
    . t. B- L" G% [2 E8 w2 g6 n0 K: ?; F" ^
  125.     visible_update! B; d4 _5 ]- M: c( U1 L; N
  126.   end
    + {/ a/ \- [# W+ u1 f+ c8 y/ A
  127.   #--------------------------------------------------------------------------& s5 z" |. @4 `7 ~% o9 `3 s
  128.   # * Dispose
    1 i6 {  v" n5 |5 W$ G
  129.   #--------------------------------------------------------------------------
    ; ?2 c4 E" L0 x7 X' `
  130.   def dispose
    - h4 L) L8 d; {6 W
  131.     #HP Meter Dispose* d/ ?! {: U0 D8 A3 ^4 @& k* h
  132.     @hp_sprite.bitmap.dispose; n% Z( L& U% Z: z1 S
  133.     @hp_sprite.dispose6 d) b) w7 d$ j! _7 l  _  i
  134.     @hp_bitmap.dispose
    5 Z; |  D" |: f
  135.     #HP Border Dispose
    & G+ |! ?: [9 ?8 x4 g6 y
  136.     @layout_sprite.bitmap.dispose( s( N6 }: z# I* c
  137.     @layout_sprite.dispose
    & D  ?$ n% P% `6 X% U. A
  138.     @layout_bitmap.dispose! N2 X0 T! O7 r% v# J8 ?% V
  139.     #SP Meter Dispose7 }7 P+ o, j" y1 y5 @0 g5 m
  140.     @sp_sprite.bitmap.dispose2 z: f1 h; {* z' Z
  141.     @sp_sprite.dispose
    + n) [" o1 O  r/ J, J
  142.     @sp_bitmap.dispose
    9 s1 `* ?4 D) M. ~
  143.     #SP Border Dispose
    6 h1 z9 {8 l! y+ y% N' c; D
  144.     @layout2_sprite.bitmap.dispose
    5 y* I! m* f, c% ~' n
  145.     @layout2_sprite.dispose
    - @7 a' N. d) ]4 n$ H) Y* ?
  146.     @layout2_bitmap.dispose8 a: v* t: X* @$ n/ U4 H" Q& m
  147.   end( E5 N/ f! \# [1 B
  148.   #--------------------------------------------------------------------------
    5 X8 V/ F* }  c+ c( N
  149.   # * Update- q: j0 [# X7 M2 A. t& ^- I! ~' z
  150.   #--------------------------------------------------------------------------6 L+ U5 o; Y" o/ u( g
  151.   def update: k3 m3 i& b$ Q% h3 ?6 N6 e& _* c
  152.      @battler = @enemy.battler 3 Y7 s$ D6 ~% C1 j
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    $ G  o  x' V' V8 b( j
  154.      if self.visible6 ?( L9 P8 S& v; M% A. u8 M
  155.        refresh) n9 \2 U: R% P  r
  156.      else
    ' |2 h, k# F  |5 a" _! h
  157.        self.bitmap.clear
    ( `4 c0 R" ]' M+ q; d0 |. T% W
  158.      end
    : z+ {3 T& x0 e8 r0 A0 f
  159.   end! m( t0 q) A1 |/ u7 e1 ^
  160.   #--------------------------------------------------------------------------. p$ I  P7 P7 F5 _! n8 \
  161.   # * Visible Update
    ) K7 ~' v. E! V  D$ c: h6 j
  162.   #--------------------------------------------------------------------------
    , x+ s" y9 g4 q( o$ I' x. |
  163.   def visible_update& `( j' ^% j7 r7 K1 T( R$ c
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true8 A+ M! C# G; j& B
  165.        @hp_sprite.visible = false
    , h" \1 d8 [& o! s
  166.        @layout_sprite.visible = false  h% B' i5 R: `/ f+ ~2 m* D
  167.        @sp_sprite.visible = false
    & u5 ^+ O+ i7 w
  168.        @layout2_sprite.visible = false$ q! x8 r5 s  H- o# z
  169.     else
    3 J% d2 r; M/ n
  170.        if HP_HUD == true
    6 K' Q  T2 h: V' x
  171.          @hp_sprite.visible = true5 ?' {* e7 ?0 @1 l
  172.          @layout_sprite.visible = true
    - |9 ]/ O3 ^+ \9 E$ ~
  173.        else2 `  S" z4 D" G* u  s' J$ B' o
  174.          @hp_sprite.visible = false2 o* l$ _$ p7 ]) R
  175.          @layout_sprite.visible = false
    4 V2 n5 u. J3 @/ u( t6 i" n/ H
  176.        end  7 t7 p( x3 h. {
  177.        if SP_HUD == true
    # g8 m0 q3 C! Z( \1 y# O
  178.          @sp_sprite.visible = true. p3 `/ Q) |# c" Z/ f8 @
  179.          @layout2_sprite.visible = true
    2 p1 W9 K& R, G  K: S$ k& I
  180.        else
    - Q) i' [9 |0 |' u' W
  181.          @sp_sprite.visible = false
    + |: g) m8 S0 j0 M$ X) S
  182.          @layout2_sprite.visible = false
    : z3 t& W6 W- o
  183.        end ( `2 n5 n. g( F6 f# T
  184.      end  " [% s( D1 H' I% c/ @' y
  185.    end + a: V6 g2 P: r( m
  186.   #--------------------------------------------------------------------------& m9 D7 B0 f) U- g  d4 \- b0 m/ C
  187.   # * Hud Pos Update8 R4 i; D/ ?3 u# a5 [* _; j
  188.   #--------------------------------------------------------------------------1 r' p: Y  s3 C
  189.   def hud_pos_update
    % F" m6 \) h# v$ R
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    % F6 ~' S% @/ |! c
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    , y9 c, \* i! F' _" g! u3 S
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X; _! r! h) q- P: }0 Y6 D, L1 K
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y ; W  S" r5 K/ s1 z+ n5 {; _
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    ' y. w0 k; J# E2 `' g- }/ h
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    3 K3 x  ?0 j2 ]0 _8 x5 d
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    + h( f7 m& Q8 G$ T5 m; E5 ?
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    ) r+ u. W, z& m" A0 Q& c  x" d8 P
  198.   end  2 ?9 H& p5 w' e  ^
  199.   #--------------------------------------------------------------------------
    9 N" a# Q% y/ U& b5 B+ P
  200.   # * Hp Flow Update( Q8 b2 Q6 G/ N" l
  201.   #--------------------------------------------------------------------------
    8 Y( r1 S; o, P2 S. T
  202.   def hp_flow_update; p( o9 ~2 G& p0 w) ~1 ^$ R
  203.       @hp_sprite.bitmap.clear  I7 o+ D$ q+ x6 i5 I5 z
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  1 N2 a1 a. Z7 L0 y4 O
  205.           #HP Damage---------------------------------& F2 h* q! j$ p( x" w. \+ R6 {, }6 s
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    0 U  v  L5 H0 r9 w+ C
  207.           valor = 0.5 if valor < 1          " J0 N/ B7 v: U3 K  H
  208.           if @hp_width_old != @hp_width5 V8 o' p9 o, p% b0 B
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  8 L! g* ~( P6 O7 U9 ]% N' y4 q) A4 q
  210.           if @hp_width_old < @hp_width
    ) P9 Q/ _1 ]0 g0 q5 [8 o! p
  211.              @hp_width_old = @hp_width
    : S# ]' j" h+ B% w
  212.           end      3 X/ x8 ?  L( Q) v; G9 k5 J3 C
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)5 T$ J4 T4 E/ y2 [: l
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       ) z  t! w! A6 j' x$ n
  215.           end        
    . ~4 i. o3 n0 f; \2 b
  216.       #HP Real------------------------------------4 ?- [9 l; a- i0 v/ |
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    + q3 Z6 O5 k* q8 D& ?
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)            T/ m) h6 k$ t0 B
  219.       @hp_flow += 2  , {2 u) K0 q- ^0 t% {
  220.       if @hp_flow >= @hp_image.width - @hp_range
    " y( }& P9 h9 b* k% g) c
  221.          @hp_flow = 0  
    $ i+ I4 N0 \, K& O5 |9 }
  222.       end7 D( m5 _0 M0 Q. F) Q, [
  223.   end   
    # p$ {# p7 E* I- p/ ^/ X1 [
  224.   #--------------------------------------------------------------------------
    " A& K% l! C4 t% y0 ~# f
  225.   # * Sp Flow Update/ q  `1 f4 M4 b6 ?2 l2 O: i7 z
  226.   #--------------------------------------------------------------------------
    , U4 z: e" z% ?$ z- @5 d
  227.   def sp_flow_update
    4 m4 y& F+ Q/ T6 a8 q' b9 v$ n* z
  228.       @sp_sprite.bitmap.clear
    / G5 N% k# [3 [- f% c9 C. M
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    6 o' J) O& U, E" M  E* A; V
  230.           #SP Damage---------------------------------
    9 F) p" |4 \" z! ?* _, A4 p. L3 W
  231.           if @sp_width_old != @sp_width4 l8 P8 l4 N) d  u# s& u8 k, r: s% J
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    2 N& w/ p) T+ w( C: G
  233.           valor = 0.5 if valor < 1              
    3 c/ N$ m' }" b. J( O- T# U9 L7 y. Q2 q
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  ; r4 @' _6 N: a) g& S9 p* x1 i
  235.           if @sp_width_old < @sp_width
    " r% m+ @* R/ y: n5 ^+ R( U
  236.              @sp_width_old = @sp_width7 F- e4 s9 @# V( Z
  237.           end      & J& |# V/ D3 U' @" H/ _
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    . l+ \  i/ {4 h  e
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    ' b/ S# g1 \; a( Z4 }4 |0 f
  240.           end
    ) A! B3 C$ c. g! ~, @# M" u" o
  241.       #SP Real------------------------------------
    7 ]$ N9 C4 R1 o7 L
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    / J% c' w( J( k" {
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)2 W6 o$ R1 h1 K7 {9 X9 c, x6 {$ }
  244.       @sp_flow += 1  
    2 k) S  P! i5 n% ^: r6 y  B' J
  245.       if @sp_flow >= @sp_image.width - @sp_range) h* K+ P$ n7 F4 R/ x0 \# ?
  246.          @sp_flow = 0  
    ( A' u0 k. |% f2 d
  247.       end
    + N( s8 ]5 ]0 Y
  248.     end            # v1 d6 [$ C8 V" M* _
  249.   end
    4 s' k9 a0 c# m: Y* P5 ~6 y
  250. #===============================================================================# f6 d/ n1 i0 O% u
  251. class Sprite_Character < RPG::Sprite" ?# n$ [1 b3 o- c
  252. #-------------------------------------------------------------------------------
    5 M2 w( a8 X- F$ B3 q- d1 C
  253.   alias :xas_emini_hud_init :initialize
    0 [. k5 m2 e& [  Y" G
  254.   include MOG
    ) r$ W4 x7 `* r9 J6 J' E9 g
  255.   def initialize(viewport, character): E# k, r3 M9 m0 Y% d# S$ j2 I2 Z3 K% i
  256.     xas_emini_hud_init(viewport, character)
      \; X/ w9 ]/ [* {5 b
  257.     @viewport = viewport
      w" \' |7 \. s& f. ?* J  ~5 o
  258.     return if @character.battler.nil?8 Q) h3 y) f2 r! z/ U" e
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)2 L8 E; ]& e7 k" N' E& q
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)5 S/ m# ^0 u; R/ g/ Y
  261.     return if @character.battler.is_a?(Game_Actor)/ f& S" K. B1 \9 I# Y. Q
  262.     @bars = S_Hud.new(@character, @viewport)" @0 i" G: a0 V* |' e* Z, q; b2 }
  263.   end
    # X# b" b# T) n, }
  264. #-------------------------------------------------------------------------------$ \/ B* ^7 ?  n
  265.   alias :xas_emini_hud_up :update
      j7 N; {! x3 k  V
  266.   def update
    9 ]) f! O0 b" e
  267.     xas_emini_hud_up
    1 E( `/ I; H# `$ g8 h
  268.     return if @bars.nil?
    / x0 E9 p# w& X7 }8 u6 m( J2 o
  269.     return if @bars.disposed?
    7 |7 z3 v9 L. Z; m( a6 q
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs+ Y; k+ u2 z6 K
  271.     @bars.visible = (dis <= RANGE)
    4 R+ w4 m0 u9 A/ T5 |& k/ u7 e
  272.     if @bars.visible. C9 R+ e8 I9 I, v; m, ?' x2 R
  273.       @bars.x = @character.screen_x# - @cw / 4
    + _; j$ X9 {% N/ B" B4 S
  274.       @bars.y = @character.screen_y# - @ch / 4% ~- ]3 M+ m  Q2 G
  275.     end
    6 q5 s, w9 Y8 P7 H0 V
  276.     @bars.update4 Y% T5 B6 A6 l- c# q
  277.   end4 G' x! j- V" H0 G
  278. #-------------------------------------------------------------------------------) ]: h' b; g$ @: e
  279.   def dispose6 R3 I7 ~+ t7 c1 v1 ~# ^) i
  280.     super
    * U9 g! ~. e$ T& R8 B9 W
  281.     @bars.dispose if [email protected]?
    & K, s, ?' w1 [- v/ q8 B" G8 t+ S3 M! S5 F
  282.   end7 \+ T- w$ K4 W' L
  283. end
    2 N: Z; y9 f. Z2 q' ^( `* y
  284. . ^# m, {1 F+ S; ]9 [
  285. $mog_rgss_s_hud = true
复制代码

; \. E' i# G. R1 o0 @
" p$ H% x8 ^+ @* K1 J% z+ A
# ~$ Y( ?& U8 g5 k* j8 V  q上面所說出錯的203行內容為
/ t' x- y. J) y: d( t0 d$ M0 _# G@hp_sprite.bitmap.clear
" ^+ v/ m- R1 b: J% G
' w$ j) c( m' p2 J4 j* s想知道怎麼解決+ l9 [6 g% T' M- h+ o; I, q
( V, K; h' q& R: [& l
該腳本支持3.82
7 H8 x  X# g' L2 ^2 J( S0 a
& a: U7 e# v5 O3 {% S8 \下面是圖檔,要塞在Windowskin下
- C3 I3 ^( R6 N7 H( l- x. I8 o! g" [$ R  F2 V9 g6 v( Q. I
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 9 `: H; `/ d: H; q

1 ^; P3 F3 f0 _  g8 h
, b& _' R& R% _6 X$ L
+ H0 r* H# J" q  D* ^: ?! Z
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
3 ~& N( d2 a! W& c1 N, |$ Z结果尝试刷新了一个已经释放的图形
" {3 Q0 k/ Z; ?6 G
$ `$ R! }! w2 i; Y) W2 |, [) D8 p+ [* Z1 V- N/ J
7 @; a. v; p( ]; [5 {
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?6 `0 f' s) x: x/ n; ~: j
复制代码
不要后面那个条件貌似就没问题了。
- Q' U) }8 O; ?# x; |
3 h6 n3 O. V8 Z. i, T% J1 v8 Q: l1 ]2 x* K6 ]
; S9 ]8 b; |# u9 W" A. @/ j/ A

8 m# p) l5 Z3 ~, t
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 # d- K% Y) m2 f, z4 {" m
貌似是释放的条件不合适9 V0 R* e9 t6 f4 ~  l  @
结果尝试刷新了一个已经释放的图形

, m' n9 D9 d$ T4 t' D. o+ p) F把後面那個條件弄掉後,的確沒問題了
- A! w5 a$ L; @8 H$ u/ n3 F2 @' B目前從關頭打到關尾結束都沒再彈什麼錯誤
0 _$ s" w! m- A4 d! }1 t. }非常感謝
0 p& @' Y6 o) _  {( J  O4 Z/ x7 P* l; ?5 [! M
不過我是參照著別人腳本改的
$ V! L& u  m' ~1 L他寫的條件式也是那樣,但我用他的沒什麼錯誤
! z/ u. I% R6 @7 ?- C不知道是怎麼回事
( T( R; m- ?$ ?1 c是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
. ^/ R2 h7 T* `3 u+ z4 f我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events! k( _& l3 s+ \, |1 n3 M
嘛..这个数组吧..我在以前试写队友的时候关注过一点
3 X- I( y: o0 b+ s) S, I6 _不知道XAS内部对它做了什么手脚还是为啥,
" h) g1 \* w. n1 }7 L7 k4 P总有那么一瞬间,没有被消灭的敌人事件也变成了nil
/ ]/ O0 O% W- @* D5 I
( J# E+ P/ F  X* h$game_map.events.values[@enemy.id].nil?
- o9 p* a3 S6 K' L* p7 J- F1 I因此自然而然的返回true并符合条件把图形释放掉了8 ^0 ]! X# H0 F
3 V; ]; @; a; u7 D
LZ应该有注意到吧,
( {4 t% M7 j" i1 u& X& |我测试的时候发现报错前几帧,图形会消失,2 d  N2 b* i7 b+ X0 F' `; Z
应该就是“误以为敌人被消灭”了。- `4 C; ?- j: o4 \3 o* y

3 ?# P5 E, j. e2 w受限于个人水平,至今无法找出$game_map.events的真相..
7 M- u' Q" R2 h6 v: G) ^
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 0 q9 h% ~! u; q% ]( t) c% z/ Q
$game_map.events
# N# f, f$ b$ ~; C; u嘛..这个数组吧..我在以前试写队友的时候关注过一点
7 _' J$ L2 A5 i1 Z. }不知道XAS内部对它做了什么手脚还是 ...

4 [2 z0 X$ h! F當初我把那個條件式看了三遍,都不覺得他有什麼錯
5 o) M4 j* ]/ j) ]5 L5 L$ q# G- v原來還有這麼深奧詭異的事XD! [1 S% E5 H9 U5 m( R9 q2 B
( D/ G- ^: K# p
錯誤發生前的確會有圖形沒顯示出來
6 U1 e) _1 }) F$ X不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
' m+ m. J7 X6 _7 p# R沒想到居然是詐屍了XD  R( I+ p2 Z& j$ @
- U. M. }4 B2 Y* t  J7 R, i
不曉得3.91有沒有修正這問題...
* |6 b9 o' i6 c! t不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。/ G: Q! Q3 K& Z7 E/ [0 P0 I( q

& m- k) ~5 A  b的确
2 K* g7 Q+ `. ]( v- d2 B7 |用惯3.82之后想去整3.91觉得压力甚大..
- N$ u  A" D: h* Q$ t5 S干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
* ^7 j5 a3 i& B% O5 i. C; ^* w9 c% A! d
然后加一个判断处理的。(我记得有一个disposed?)




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