Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條7 C( I( [; f: t  {* `. L
會在每隻事件怪物的腳下顯示0 b) b' S, T+ E$ l% a$ O9 x, H
問題是不知道為什麼
& j0 v: V) j* o& k7 \$ L5 Y9 m有時打怪打一打會跳出
0 z( A1 l! L6 {$ {; P# J---------------------------
2 T7 O3 a* Y0 o& J5 aXAS
* i3 Q5 Z4 ~; x1 l---------------------------& z* a3 M9 S7 A: p; p
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。" {( ]% u: [6 `$ ?8 p2 O. o
* M3 C8 M* k# e8 O  Z3 j
disposed bitmap
2 W9 s7 `: V8 d3 G0 K---------------------------' @  b7 |8 v3 o+ o. l6 D' v
確定   / A# ^! M! j; I" Y; A
---------------------------
: N* e" F! s5 T& ^! l. ]& @
2 g2 L, g7 j( U這是腳本- O, G! `, P8 U  z

+ V3 u8 e; d$ x, A, b# ]6 u- w
  1. #===============================================================================; d) v- W* y7 ?5 ^0 {
  2. # MOG - s Hud 1.0      
    1 f/ o+ N) Q5 ]3 u/ U
  3. #===============================================================================, n# w& }% ]+ f- y
  4. # By Moghunter ( g! S6 p9 r" h- j8 \
  5. # http://www.atelier-rgss.com( r$ B( }" U9 {+ B4 k* M6 G: Y1 g) W
  6. #===============================================================================
    0 l/ `! ]" _( B
  7. # Translated by Calvin624
    0 B9 F; g* [' n; ]% m, }. u) A# t
  8. # http://www.xasabs.wordpress.com% K6 U5 g( w6 e% a; {
  9. #===============================================================================
    4 J+ e  [7 ]8 {1 t7 _
  10. ###############################-DESCRIPTION-####################################! k  o3 b' `. ^% A3 [3 D8 `. X; N" U
  11. #===============================================================================
      F! ~4 k6 F5 i% Y6 t
  12. # Personal HUD – displays the HP and SP below the hero.3 h+ z# }1 b8 I# a9 p8 k, c' n$ Q
  13. #===============================================================================
    ( H& o! w1 G. J. O9 i. |9 P+ b( @
  14. #
    5 P& A3 E/ u  U
  15. # Graphics required:
    : M( C; i5 ^9 a  B( `( {' `
  16. # & g2 ?# |0 s4 S6 D0 A
  17. # S_Border_HP_Meter.png
    7 @+ q8 M" b8 U
  18. # S_Border_SP_Meter.png9 p- i, t; n4 @3 [' z
  19. # S_HP_Meter.png# s& M; A) L/ ?: P' Q
  20. # S_SP_Meter.png
    5 n3 Z' y$ }8 C; q5 q# J( Q5 y3 `- Z
  21. #& x: }( l1 M5 ?. ~8 @& T2 y
  22. # All images must be in the Windowskin folder.
    5 b6 I7 Q$ a7 B9 [& ?4 J9 L
  23. #
    0 e/ d4 y+ r2 w& _
  24. #===============================================================================! R1 H9 R/ |; Q+ z1 E+ J- U9 D
  25. module MOG4 c5 u: h0 m& h
  26. VISIBLE_DEF = false  
    * _0 J! m3 G0 @3 r/ h
  27. # Show HP meter?
    + _5 n) J# @5 h+ I' w  }/ M
  28. HP_HUD = true
    * s3 j# ?0 J+ ]8 _& \
  29. # Position of the HP border
    / Z1 d& i+ ^; j: t/ Z# k
  30. S_BORDER_HP_METER_X = -2. `  M0 l6 h6 J
  31. S_BORDER_HP_METER_Y = -2  2 q- q4 j, }) F( s5 x( f% P* }
  32. # Position of the HP meter
    $ C8 K8 n5 g4 z5 L- R! G  D* P1 e
  33. S_HP_METER_X = 04 l5 U7 J+ r3 l" j# l
  34. S_HP_METER_Y = 0% {8 S5 n% F3 g! ]7 r9 ~1 S
  35. # Show SP meter?
    ) z5 p7 k( S- n$ Y$ f- ], M2 q& Z. ]
  36. SP_HUD = true; h+ p% w, l7 {- y9 N4 a1 b
  37. # Position of the SP border, \. Z% I. E/ W* m' n9 z. Z
  38. S_BORDER_SP_METER_X = 0
    2 |9 ?) K; x% d$ K4 i) P: W& V4 x
  39. S_BORDER_SP_METER_Y = 10 : ?9 F; p# d2 B% l7 @
  40. # Position of the SP meter- r" |9 i4 Z8 g; \/ i4 U# X) I
  41. S_SP_METER_X = 0
    4 G1 s8 U  x! _+ B# i' L* u1 B2 P) J
  42. S_SP_METER_Y = 10& E5 @1 O/ x1 L3 q6 U8 j
  43. # Switch to disable the HUD
    / U4 h2 I' R! c
  44. DISABLE_SHUD_SWITCH = 5
    ! w+ `6 A. ?+ R$ U
  45. RANGE = 20
    ( H( m0 {+ [" c/ e
  46. end7 V. g  G. |) H+ x/ N" s. n( S+ J% d
  47. #===============================================================================; n# I5 `* C0 h; l+ k) w9 S
  48. # S Hud
    $ q  _6 e* ?# J# Z
  49. #===============================================================================' [* {7 a# g% o4 x9 _
  50. class S_Hud < RPG::Sprite
    + U; F4 q5 {! m4 @2 z
  51.   include MOG# _/ ^  k* y" g4 J
  52.   #--------------------------------------------------------------------------' H- c# |/ y1 y5 \% T  O
  53.   # * Initialize: t  b- ?( V' [6 V+ H# w
  54.   #--------------------------------------------------------------------------
    6 O  d; B0 _! m2 x& A7 J9 o
  55.   def initialize(enemy,viewport)
    % u/ @5 x: z9 y( u( R/ @% F: v
  56.     super(viewport)
    5 f  j6 M5 Y/ W; d( ?5 P
  57.     @enemy  = enemy, @' Z4 z6 d2 E/ W% o" j1 {
  58.     @battler = @enemy.battler) ]! |( V  y. O, c8 L/ b' i. Z
  59.     @old_hp  = 0
    % F5 ]: V9 {1 A- u; z; h0 ?
  60.     @old_sp  = 0
    ) L4 V# X( K6 _3 |( I# R. e; s  Z
  61.     @old_vis = false- h; d" h5 `3 f  c
  62.     self.bitmap = Bitmap.new(100, 100)
    ) ]% G' |+ t+ R3 t
  63.     self.visible = (VISIBLE_DEF)#false7 o2 r! c' E% H
  64.     self.z = 100
    9 r/ t: i8 L: i( K
  65.     #HP Border -------------------------------------------------------------------
      p2 A4 k7 k% z2 K+ {
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")' [/ W1 V4 {# n4 J* i4 L* G
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    6 `! V/ t8 T) N+ A
  68.     @layout_sprite = Sprite.new" i: ~) i" Z% G4 N- {! G' i
  69.     @layout_sprite.bitmap = @layout_bitmap) R7 J! S. V: d2 Z
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    & u% g6 {" A3 C# O+ B6 I/ r
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    * P& a  t+ [9 c+ N. r
  72.     @layout_sprite.z = 50012 l- t8 F" {/ L+ ^+ R% |) ~
  73.     #HP Meter ---------------------------------------------------! V* I3 d, {$ N/ Q
  74.     @hp_flow = 0  r3 p7 F" J' U( G
  75.     @hp_damage_flow = 0- x& c' f" V5 b& ?* q
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")0 |4 Z4 B7 X9 W/ g6 F( ~5 ~7 b& N
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    & T4 \& a7 u$ ?! M0 N+ ~
  78.     @hp_range = @hp_image.width / 3
    5 R5 v! p, x% d/ q
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    / |& q, h, Y, c3 X1 K. U
  80.     @hp_width2 = @hp_range / 2
    2 H9 H( P3 A/ {" b9 I
  81.     @hp_height = @hp_image.height / 2' c0 G" Z2 m) [: _
  82.     @hp_width_old = @hp_width
    , n" n+ X* _% h0 r3 H- o
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)$ G0 w. b/ V/ s! k' L
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    8 B0 D$ U. q4 d3 u
  85.     @hp_sprite = Sprite.new
    3 n/ t( C+ R; G7 S1 u! E7 m$ _
  86.     @hp_sprite.bitmap = @hp_bitmap
    ) H$ D9 Y9 n& C  ^* v+ ~( r
  87.     @hp_sprite.z = 5002
    # Q* B+ B9 q( R+ |$ S" e
  88.     #SP Border -------------------------------------------------------------------0 U' S! F1 J$ d5 h
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")  Z% a: q: _( `" r1 y' E* G6 q# i
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    ( u7 D' w4 ^, ^/ ?
  91.     @layout2_sprite = Sprite.new. O. H8 Y% N' Y  a5 b1 }
  92.     @layout2_sprite.bitmap = @layout2_bitmap
      w' h( r: W" P( ^
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)! x/ J! @3 _  m: N- p9 i
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      - A. b1 v4 |) b5 M# b/ v! C
  95.     @layout2_sprite.z = 5001    8 t5 J3 b7 p( d% }+ w9 _/ K0 m
  96.     #SP Meter ------------------------------------------------------
    - U, @, B2 v1 e) O- o# I
  97.     @sp_flow = 0
    ' h$ V% ^! _- G- }& n1 l9 K
  98.     @sp_damage_flow = 0
    & {  E9 S: G( x* n' o' c0 M: ?
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    9 b6 M, t  x' p1 |# n% i& }  O
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    - i5 Y2 V6 l& j0 e! J
  101.     @sp_range = @sp_image.width / 3" h- v5 f0 O) `# Q8 T0 o+ P3 @% t
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  4 x/ F# J( l: z4 A
  103.     @sp_width2 = @sp_range / 2
    % F$ Q+ T) w1 Q6 O. L/ M- \, q
  104.     @sp_height = @sp_image.height / 2
    3 t. u4 i5 W2 v* `: `
  105.     @sp_width_old = @sp_width
    1 a" |- ^- M$ p. j: r5 J
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    ' R3 H% X4 f* V
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)* [4 N7 p4 N1 w$ `+ Q0 I; u8 `5 w
  108.     @sp_sprite = Sprite.new
    # H6 Q. V8 ?! C; a' e
  109.     @sp_sprite.bitmap = @sp_bitmap# w1 Y. B. V% |% J' h  p
  110.     @sp_sprite.z = 5002
    5 M% o3 {  s2 N8 D; z+ e. ~
  111.     update5 K9 G8 `5 }$ @8 [& B
  112.   end( i  K/ P# u9 }5 i. Z$ Y! d
  113.   #--------------------------------------------------------------------------
    % r  X1 a2 A& X, h9 F+ i( C; P
  114.   # * Refresh4 d4 A* ?8 F5 q! _3 r. |
  115.   #--------------------------------------------------------------------------$ {7 V: D% e5 L, d
  116.   def refresh9 T) {, B1 H$ \; r
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    / x$ T8 n  w/ m( _
  118.     self.bitmap.clear+ h' ~% m5 ^* n
  119.     @old_vis = self.visible
    ; u' R9 {- `! K8 ~4 m/ k
  120.     @old_sp = @battler.sp
    . i1 N; D4 i3 G0 k
  121.     @old_hp = @battler.hp) W5 d/ h9 ~& ~# l+ E: S" V
  122.     hp_flow_update
    / X4 g+ d6 L. a, Y  s3 v' G0 l4 U
  123.     sp_flow_update; I2 S6 r9 m0 Z) d! Q% {5 a
  124.     hud_pos_update; F" l5 ?0 S8 e! h5 J3 x: I
  125.     visible_update9 S0 K/ L5 h$ ?. l* d" k5 @
  126.   end
    ! e6 `" p4 Y& x7 f
  127.   #--------------------------------------------------------------------------
    8 W  ]% \2 a+ b
  128.   # * Dispose
    ( W' d5 J2 A2 f* G
  129.   #--------------------------------------------------------------------------
    & V7 E7 s' L: O7 E
  130.   def dispose, r4 A% w5 X: D5 i! E
  131.     #HP Meter Dispose7 C7 }$ h7 z/ Y( a8 O* M1 {8 r5 e- A
  132.     @hp_sprite.bitmap.dispose0 |3 U1 y8 m3 ~& B) J8 t3 v2 g" L; z
  133.     @hp_sprite.dispose
    . R. H% h' h3 E5 X  N% L/ X8 T$ @
  134.     @hp_bitmap.dispose( L% U0 L" R( g8 g2 d
  135.     #HP Border Dispose
    6 N; J* I& H# V5 x$ k
  136.     @layout_sprite.bitmap.dispose
    $ f) }( J% R- x6 N. d/ w' n/ _9 Z
  137.     @layout_sprite.dispose
    " V' {; @: G3 Y$ n) q" Z
  138.     @layout_bitmap.dispose8 Q6 `  p& k% G0 R
  139.     #SP Meter Dispose+ T! }0 ?7 o* b1 c# Y. k7 N
  140.     @sp_sprite.bitmap.dispose4 R: q! h" Z+ `6 K+ S" r
  141.     @sp_sprite.dispose" D) q. Q4 `$ R* X7 l" \$ `
  142.     @sp_bitmap.dispose# |2 q) q: n  s5 l9 ~/ n
  143.     #SP Border Dispose8 q' |5 T8 \- c  S, \8 P; x
  144.     @layout2_sprite.bitmap.dispose, {( r# E- B. s) K  p0 a2 z0 X" V
  145.     @layout2_sprite.dispose4 o% Y* O5 W5 U/ X
  146.     @layout2_bitmap.dispose
    9 u9 e( [: P; u# M: n; I) Q% ~/ ^' u
  147.   end! Y, M! a; Z$ v$ ]( r$ d6 k
  148.   #--------------------------------------------------------------------------
    ! T) y, k6 i( V) L# w
  149.   # * Update5 {) c* V3 F& v) g! i4 Y
  150.   #--------------------------------------------------------------------------
    % b/ Y" U# r. j4 \: T# J: I* w9 t* j
  151.   def update/ A5 S/ I. Q" [* p8 u. M1 `
  152.      @battler = @enemy.battler   G2 x, f3 _) v
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?  M/ K: T/ o$ D
  154.      if self.visible
      }$ X0 U1 E" q* ]" `0 J7 I
  155.        refresh3 d+ W5 i2 P: r/ o. ?/ G' r
  156.      else
      U* T9 Y8 l: v5 [5 p* h
  157.        self.bitmap.clear: n  d" l7 ]& E1 g) N! ~
  158.      end- ^0 k( l$ x1 z* s
  159.   end8 A# W, O7 l9 R* J9 O
  160.   #--------------------------------------------------------------------------& D8 p" Z' ^5 N2 `
  161.   # * Visible Update
    7 O. m9 }8 W& K* z4 z1 `- Z
  162.   #--------------------------------------------------------------------------
    ! Q5 x2 e& H4 j  M
  163.   def visible_update
    ! ^$ `5 z* m3 X" e! z2 i
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    9 `! T5 V9 E; q: u& N2 }& U( S
  165.        @hp_sprite.visible = false
    2 X, a9 `- Q2 _& j
  166.        @layout_sprite.visible = false* ?3 G  V. l3 u. w# Q, B
  167.        @sp_sprite.visible = false0 J& L" Q( ^+ Y: {2 o* ?6 X% ]
  168.        @layout2_sprite.visible = false
    " a6 O! R6 V' L8 J( Y5 x* E  G: |! {
  169.     else
    2 q, |5 C+ e* J8 Z7 ^
  170.        if HP_HUD == true5 ?0 j. r3 {8 R$ e/ L, X% W
  171.          @hp_sprite.visible = true9 I% Q! A8 g* }4 r2 t; h8 F
  172.          @layout_sprite.visible = true
    4 Y1 D4 p& H; E! D
  173.        else' q0 Q* z  a3 L6 x6 h
  174.          @hp_sprite.visible = false0 \  F0 P/ J$ i; E' i
  175.          @layout_sprite.visible = false
    % U- I8 ?7 }1 S2 \( v& H8 M
  176.        end  % p+ s+ z# f: o  L  o3 P! I- @: I
  177.        if SP_HUD == true1 a# M! [6 S% A' [- j3 Z3 m
  178.          @sp_sprite.visible = true
    ! m# Q2 q* P; N4 o+ I. M+ a
  179.          @layout2_sprite.visible = true4 J$ a' d, b. B# X+ e: j' o
  180.        else4 X0 n' u6 _* }' R
  181.          @sp_sprite.visible = false
    ) D( y0 Q5 O  Z- A, D# F! |
  182.          @layout2_sprite.visible = false8 C- U4 d3 \4 Z6 Z
  183.        end 7 `* M8 W9 v! A# p, ?
  184.      end  $ A3 B# V# P2 ^. `: K
  185.    end
    ! e! b, V3 a6 ]0 O/ `* e4 j
  186.   #--------------------------------------------------------------------------
    ! O: V% H7 A0 V  b
  187.   # * Hud Pos Update' S1 t# a+ [3 B/ g4 v
  188.   #--------------------------------------------------------------------------; R9 S6 V$ N% C- Y! G- S
  189.   def hud_pos_update4 S8 w! x: I# b  n! w. ^- w
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    7 N3 d8 V0 o2 u" u6 q' M9 e
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    # }% a, U( O) |
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    0 |8 \# ~; i. g4 T6 l' g+ i( n
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    , m4 b( T% `. H) n/ D7 f
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    9 W$ U8 o$ J, W: Z2 J
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  ' o' R$ O" `. y  V3 V
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X! c: i# G3 j* g: J6 x- \
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    # O, Q: K+ x/ g* k' [! F
  198.   end  - }- P! Z$ J0 P2 ^. f
  199.   #--------------------------------------------------------------------------( ?) g1 }8 T5 ^; p4 u, p# k& j
  200.   # * Hp Flow Update
    - Z: N) [0 ^* b" Y* `- P; m$ A
  201.   #--------------------------------------------------------------------------
    ) A( Z8 T# B3 A* }5 o2 O  i
  202.   def hp_flow_update6 T: \- V& J) J: v, H8 f3 n0 V( u
  203.       @hp_sprite.bitmap.clear7 N2 Z+ [# t1 r/ d
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  ; q1 O8 y0 G% W1 U; w3 V
  205.           #HP Damage---------------------------------$ E2 D: j- D1 A% s5 ?2 C& }
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    ' U" _9 n$ B" J: ?
  207.           valor = 0.5 if valor < 1          ' C- \" r2 _! j  E: P3 L+ P0 Z! c
  208.           if @hp_width_old != @hp_width5 |: E, W2 f: m; X6 O0 s/ z
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    ( h3 W8 e& |1 W* N) a
  210.           if @hp_width_old < @hp_width 9 N) Z- V. u: \9 M, y( D
  211.              @hp_width_old = @hp_width( C1 Z$ K2 D2 C0 g5 c! W1 a
  212.           end      
    7 o. ~; X. e4 _8 U2 p) p
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    ; |) _+ D8 J5 ~8 M4 d
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    5 _/ Y) n$ s( |* {3 Y. x
  215.           end        3 J( {1 i, ]' i. [
  216.       #HP Real------------------------------------4 K  c/ ~6 C& T: l
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    0 r& y- o9 e! b+ ?- I2 F/ C
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
      }" H1 F* a5 _# P3 u
  219.       @hp_flow += 2  
    : A% i+ f6 k' |, }! X4 I. |; t
  220.       if @hp_flow >= @hp_image.width - @hp_range# r2 U6 F+ |# Q, Q8 c
  221.          @hp_flow = 0  " L6 r& L2 x- x' S1 K
  222.       end
    7 h/ g3 x/ f2 d6 o
  223.   end      n* m  {6 `6 z" I
  224.   #--------------------------------------------------------------------------6 f- {2 ?' D. Y3 P
  225.   # * Sp Flow Update
    / b# X( P' k( n: J" @, q
  226.   #--------------------------------------------------------------------------
    0 B% W6 Y: G# F' r
  227.   def sp_flow_update7 W' M: B" ]  [& u
  228.       @sp_sprite.bitmap.clear
    7 m  L! ?( u' i* O/ N) i
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    6 u2 X$ Z) d" O
  230.           #SP Damage---------------------------------
    0 B9 b, ~4 x6 |
  231.           if @sp_width_old != @sp_width4 y( K. \" I$ y+ u
  232.           valor = (@sp_width_old - @sp_width) * 3 / 1006 u# M# d, S4 J/ v! J' \; {
  233.           valor = 0.5 if valor < 1              
    / T6 }/ L# S8 W
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  $ O; w2 {3 k1 [( y; N7 p' d+ q
  235.           if @sp_width_old < @sp_width
    7 }) T  u6 u. j9 }4 r% q
  236.              @sp_width_old = @sp_width, c) H" I& h0 M$ c9 t' m( I5 E
  237.           end      - @* F$ f0 j$ a) G$ c0 C$ Q
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    0 e. y! c. i/ R
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    % s7 V" f7 t8 D6 c! a  }
  240.           end* ~+ E0 }# {( [  ]
  241.       #SP Real------------------------------------
    : @7 J3 w: c  T0 d
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)/ a5 v5 i4 ]9 f" t3 \, H) B
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)5 {8 K' j9 Q" L
  244.       @sp_flow += 1  
    + K6 T7 D& P+ J( {
  245.       if @sp_flow >= @sp_image.width - @sp_range1 `# x% I: N, R( L
  246.          @sp_flow = 0  ! Q1 }$ W6 X5 B: `/ X
  247.       end
    , M* ?8 t& b' G. a& x
  248.     end            0 f1 f* t: G: t
  249.   end
    ' w- t) b7 c, b- o8 A, e, \* w
  250. #===============================================================================
    " L, K! V3 _7 v7 d; t5 W
  251. class Sprite_Character < RPG::Sprite
    + p8 _3 ^# @7 o, r3 y2 U4 H
  252. #-------------------------------------------------------------------------------: N* R9 B* d5 H8 M
  253.   alias :xas_emini_hud_init :initialize7 l- R7 M$ {  j) X* R6 ~# }
  254.   include MOG
    & m; x& ?' U8 f  R
  255.   def initialize(viewport, character)
    8 M) s7 w5 X' y8 A% o$ h9 U: t
  256.     xas_emini_hud_init(viewport, character)
    2 P! |, z/ j$ |1 h% C
  257.     @viewport = viewport+ Z/ \# y) \* S/ P9 Q0 D
  258.     return if @character.battler.nil?2 T5 H) \5 D* L8 A0 b
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)$ H1 S* f. t% g4 N3 N6 C
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)( N: D7 Y- w0 K! S4 }7 u7 Y+ i
  261.     return if @character.battler.is_a?(Game_Actor)
    5 U8 H9 Y! c/ s) K
  262.     @bars = S_Hud.new(@character, @viewport)
    * w- O( i! w' e8 o' P5 c/ }) m
  263.   end
    : U/ ~$ G2 t, X  {8 R
  264. #-------------------------------------------------------------------------------( _2 K( K* }  v
  265.   alias :xas_emini_hud_up :update7 N% W9 I: V. l6 O( y, W
  266.   def update* c# k. r3 t2 z0 [- n
  267.     xas_emini_hud_up
    0 x: d# |$ }# l9 n' ]  U
  268.     return if @bars.nil?
    9 L- E% x  o; g# x+ }7 H( a
  269.     return if @bars.disposed?
    ' [9 W- ~% `, P% `* d7 e2 s
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs: ^4 J5 W* }, k4 H
  271.     @bars.visible = (dis <= RANGE)
    7 G9 C4 b- |( K! t0 H$ v& z
  272.     if @bars.visible% ]% R8 q/ I$ D0 W
  273.       @bars.x = @character.screen_x# - @cw / 4
      J  R% p; D; Q9 t# J
  274.       @bars.y = @character.screen_y# - @ch / 43 Z) H; F  n3 `5 Z; |/ }
  275.     end3 N) u- O8 r" M: k5 x9 Q( E  t
  276.     @bars.update+ z$ K0 J1 @$ u" ?' t, x
  277.   end
    3 M( M" w- g: E
  278. #-------------------------------------------------------------------------------
    , O) f4 e' K+ D( g1 y6 C
  279.   def dispose. K1 p! A9 L, {! \( h. P% Q; O
  280.     super7 |' i$ d" J5 c) x- T
  281.     @bars.dispose if [email protected]?
    9 E& `1 ?! c! ~7 Y
  282.   end9 I7 v0 S' S3 Z
  283. end
    2 k; Z, p1 E* T4 Y
  284. - J  A" |" X0 U* c
  285. $mog_rgss_s_hud = true
复制代码
( _/ V8 |( R1 L" q8 b7 g& `
+ \' }* l( A! H' F) a, @

( X  K# z) ^4 J# P- a- Q上面所說出錯的203行內容為
  L( ^0 p& Y; B9 ?! ~+ `5 R@hp_sprite.bitmap.clear
0 l  f7 I4 R' G! ], h3 Y* i) g5 p
4 J) O) t2 h5 s+ K想知道怎麼解決: y3 q$ ^. {7 `9 E: u
" d2 H- O( \0 f
該腳本支持3.82
) z1 z  a. b' j5 T) z
+ a/ L4 Q9 ?) c5 q0 q4 k: e下面是圖檔,要塞在Windowskin下- C2 p% \3 b( ?" q" n
) [* z) |$ j, Y' j9 Q
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
9 K/ R; n, D7 O& P7 H1 ^! H& V! R# h9 D/ _
' N" v* i0 n. a" P. W

3 ]: D' A/ x/ z) v( L! S9 }
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
1 `7 x8 i0 q5 e$ F  a8 L! b$ ], ?结果尝试刷新了一个已经释放的图形; |3 R' t( n% G+ I' q; q, n
- S) f3 t9 m" L7 o; W4 _5 x
0 P- s3 Q5 D0 n6 [' Q  G8 E9 M6 `

: z6 T( H* u" b7 C虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?. w% S3 [0 b3 V( G- Y/ ]& g+ P
复制代码
不要后面那个条件貌似就没问题了。! _3 U4 y4 m1 {% Q0 k& g6 i8 h
4 \. T  J# V7 d4 O6 @% {1 m
* m% U+ T! Y! y
7 K& M. R2 Y  z6 t% B: W0 [

& d9 f) ]# T, |2 Q' m
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 ; m! M7 {7 o5 l! j) N
貌似是释放的条件不合适
. k: [, y+ G5 Q/ w) M: v& [结果尝试刷新了一个已经释放的图形

7 [+ Q6 j" j; ~0 z/ z把後面那個條件弄掉後,的確沒問題了
% ~( h3 L9 ^3 H目前從關頭打到關尾結束都沒再彈什麼錯誤
& \. z2 O) C( ^/ n非常感謝
2 Q( Y1 m4 N. `" R" {* S6 r5 b/ k4 F' c* N# I0 i. f* b
不過我是參照著別人腳本改的- X% R# w' I& `& X, X! c9 ^
他寫的條件式也是那樣,但我用他的沒什麼錯誤
. K2 R) ]/ J0 r* o" X0 Q不知道是怎麼回事
. E* k6 T2 Q2 z7 Z8 P是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的$ m0 J# U- y6 g1 u' c
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
, u! R) G) L. u* E* O嘛..这个数组吧..我在以前试写队友的时候关注过一点
8 k  R3 N, j% r! l$ a不知道XAS内部对它做了什么手脚还是为啥,
- v. s5 F6 u) K$ g3 i! N. Z总有那么一瞬间,没有被消灭的敌人事件也变成了nil: a9 E( a' y) @7 g! P
) X2 }. j, V+ j! h- j0 u( ]: ?
$game_map.events.values[@enemy.id].nil?& s$ O$ r& O- n( f9 H* T
因此自然而然的返回true并符合条件把图形释放掉了5 c4 n/ L5 v% T

" N" Y! H7 u0 Z& J2 o1 C. n* K' ELZ应该有注意到吧,
& P3 a* j) x4 N4 |, ^我测试的时候发现报错前几帧,图形会消失,; z; D9 P5 X3 r3 l' I' p/ h2 b  Y7 ]
应该就是“误以为敌人被消灭”了。# s' T. B& r8 D7 I- @* p& P
# I$ \" a  H* y
受限于个人水平,至今无法找出$game_map.events的真相..
' M) K0 Y) }  ~) x/ X0 y* r2 s
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19   Z, S! \" u* [* q7 U
$game_map.events0 M$ o+ R: i& y) \4 D6 @' K
嘛..这个数组吧..我在以前试写队友的时候关注过一点
1 v8 E) R  R1 O- h1 u! ]# v不知道XAS内部对它做了什么手脚还是 ...

* T4 o$ ?: O  e  @# C! @1 B當初我把那個條件式看了三遍,都不覺得他有什麼錯* ~! {* h& \- I% A
原來還有這麼深奧詭異的事XD( r, a2 b& }3 u1 {" x: m* |5 ?

2 f& j( v$ z) g. l* n* d錯誤發生前的確會有圖形沒顯示出來
* C6 }! v# Q. |1 r. @( q! p不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪..., M. e+ ^! F% x! Y+ p6 {; W& k+ u- w
沒想到居然是詐屍了XD. j1 w. u# j# j
; _4 L0 H" X& C8 ?
不曉得3.91有沒有修正這問題...% o9 n: a4 b1 K# o  Y" t
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
; R5 D4 {: w9 q& r  C, E; Z3 s% [+ p
$ L. n7 C& u4 Q& F. u4 i8 o5 t的确
1 W. C- w1 S  y" i' F# B- z用惯3.82之后想去整3.91觉得压力甚大..  V# A1 ^" V8 P- I$ r% Y( y* C
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。1 E4 w- e, W+ X8 ]
. z1 E1 p) {" z, T% M, b! k
然后加一个判断处理的。(我记得有一个disposed?)




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