Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條9 V# h2 b) k; i2 B
會在每隻事件怪物的腳下顯示
4 Q" G; y! s- a+ o7 u: v問題是不知道為什麼, _9 Y' [* H$ b7 e9 C
有時打怪打一打會跳出' g* A6 z& E* ^" m6 j2 n
---------------------------
0 @# g7 H7 A4 S4 c: Z. r0 E% {- IXAS
$ f* n9 D6 U/ n% A" R2 p) y- Y7 A- Y---------------------------; z8 W; |- ]7 q/ s4 I9 Y, ], Y2 `
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
; y. S8 w+ c4 u: {5 q/ n! L% w6 c5 Y4 ^, {9 O- S* P
disposed bitmap
  L. }* A" J( v* o3 r2 ~---------------------------
6 p) x& T0 d. S$ l, S確定   
4 t( R2 U9 l0 W$ V+ o3 Y---------------------------/ a( c. u" ^  L
; S' g, ^+ V, @0 L& E0 X
這是腳本7 ?- J1 E* r% a, f; k

& D) m) z# C0 X0 D* t4 B. k
  1. #===============================================================================
    ' V2 \, P7 U5 K7 f# Z
  2. # MOG - s Hud 1.0      # z. M/ u5 I$ s3 M
  3. #===============================================================================
    , _+ }# B- Z, A1 r" R3 E! i
  4. # By Moghunter
    , |* n, k# Z/ c& I. @( {
  5. # http://www.atelier-rgss.com7 r* S% Y0 ]. g' }5 R
  6. #===============================================================================* i: U2 }% S# f3 k
  7. # Translated by Calvin624
    ( p+ `( F4 k: m, H7 h$ v6 F
  8. # http://www.xasabs.wordpress.com+ E7 d" f& p4 Q" I6 j+ a( _9 h
  9. #===============================================================================
    0 p8 Q8 ]) [5 r8 I7 S
  10. ###############################-DESCRIPTION-####################################
    ; d- l9 K6 s- x3 k- b
  11. #===============================================================================
    4 `- q, F0 T9 T3 \- q# D* r' I
  12. # Personal HUD – displays the HP and SP below the hero.
    # @" ~/ t: [) I$ N/ Y4 S5 Y$ B
  13. #===============================================================================
    ) i- C4 Q6 B3 s: _( l
  14. #  Z7 _( T% a+ {, W7 Y' B9 e0 h
  15. # Graphics required:, [6 J: L! N' ^2 P8 i1 o
  16. #
    & |. C+ c5 B/ x
  17. # S_Border_HP_Meter.png# x. o4 E# Y7 T, K
  18. # S_Border_SP_Meter.png! ?) g+ v/ c, J, Z) j9 D9 J
  19. # S_HP_Meter.png; P/ C6 v- N6 \7 w
  20. # S_SP_Meter.png3 ~- k& z: H9 I6 [; I2 J5 U; }
  21. #* s4 K. f; }9 F) y
  22. # All images must be in the Windowskin folder.6 I( ?: S, J( @- x( D. I
  23. #% f* Y3 b) a/ \( I! }* ~% o
  24. #===============================================================================: F( w: u: b) p! @  r
  25. module MOG& z* ^! B2 F# Z1 c
  26. VISIBLE_DEF = false  
    8 m4 d' H7 k# m6 y
  27. # Show HP meter?
    2 v) X) J6 ?- V% x3 f
  28. HP_HUD = true
    ) L( A' t8 h, [. r2 ]! v' C
  29. # Position of the HP border; \: W* r) F$ B( f: f8 F0 h% f6 L+ Z
  30. S_BORDER_HP_METER_X = -2
    # Q' b0 w7 i0 R! E% ^* m/ @+ b5 r' @
  31. S_BORDER_HP_METER_Y = -2  
    , t2 U1 @) r$ e  k( ]
  32. # Position of the HP meter
    5 t" y, n6 x! B7 N* ?1 c
  33. S_HP_METER_X = 0$ ?$ P8 e' V; M; c' c. a1 n: ~
  34. S_HP_METER_Y = 0  z& O: l, Z: B: C* T7 P% G
  35. # Show SP meter?$ B) p" E& g8 s' [" i8 m( h& o
  36. SP_HUD = true
    0 T8 G( H" @! B9 L" a
  37. # Position of the SP border
    2 l* V" {# g; |8 v
  38. S_BORDER_SP_METER_X = 0
    , F2 r7 W8 U+ f2 I# n# h# H8 N( r
  39. S_BORDER_SP_METER_Y = 10 8 i1 t. d( e3 ]5 k" Q2 Y$ [
  40. # Position of the SP meter  `- }# Z8 l6 I7 @
  41. S_SP_METER_X = 0
    " j1 S$ Q8 U$ r) ~+ f
  42. S_SP_METER_Y = 10
    ' k% Y5 {' S4 X4 @
  43. # Switch to disable the HUD
    6 k/ v* f* B; V
  44. DISABLE_SHUD_SWITCH = 5! K; y, G( ~6 l
  45. RANGE = 20# f2 u3 h3 U# U" w
  46. end
    ! ^1 j8 M$ [# L0 E8 Q! S9 f( [
  47. #===============================================================================
    : ]- S. t) ~8 z. Q$ S7 U& T
  48. # S Hud
    ; C3 Q# e3 m. Z2 \
  49. #===============================================================================: \& t1 m! Z7 I' K# j2 y2 z! z
  50. class S_Hud < RPG::Sprite8 }8 |. f& G4 P9 A4 P) t, z, ?
  51.   include MOG
    7 t) \& @- E) M
  52.   #--------------------------------------------------------------------------
    9 O9 g4 Z- s5 e: C, F; Z
  53.   # * Initialize
    . W% _" m9 o& F+ |0 R
  54.   #--------------------------------------------------------------------------) Y& H+ @# V) i4 l' w+ w5 N5 M
  55.   def initialize(enemy,viewport)2 H$ V) a3 G6 `9 D" m
  56.     super(viewport) # y$ S7 d2 N% ]1 K/ H, O8 z
  57.     @enemy  = enemy9 {: |& d' \: U9 X0 d& S- Y, u
  58.     @battler = @enemy.battler
    / P' q% A; g7 f! H1 E( G9 R
  59.     @old_hp  = 0
    2 Q/ w3 t- V# O* g8 Z( P+ b
  60.     @old_sp  = 0
      D1 y# p3 ~0 x/ n  u
  61.     @old_vis = false$ Q" h& q4 I$ T/ K" V- z
  62.     self.bitmap = Bitmap.new(100, 100)
    2 s/ o" N- ~/ z# Y1 |5 `  t. y
  63.     self.visible = (VISIBLE_DEF)#false! J, D% g$ J- O, V
  64.     self.z = 1008 v) t% E: W/ {, }* ?
  65.     #HP Border -------------------------------------------------------------------
    1 J3 F! s* N1 O+ U) b
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    + b/ K- K' e0 Q# w* t
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    3 }6 {; l' W" k! O
  68.     @layout_sprite = Sprite.new; z8 C+ F% S# o& p
  69.     @layout_sprite.bitmap = @layout_bitmap
    * f) g1 N4 ?& `
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    $ w6 G: W2 m! L
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    9 w1 o9 i! b9 O1 K$ Q
  72.     @layout_sprite.z = 5001
    ; p1 j3 }- d0 S2 s
  73.     #HP Meter ---------------------------------------------------
    : Z: V& B- L2 d
  74.     @hp_flow = 0" e: l; K0 z+ F( `
  75.     @hp_damage_flow = 0& u* H" Z8 b- B1 V/ r# y
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    3 G# U9 w6 G( G
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)2 H3 D+ j, `) Q7 |
  78.     @hp_range = @hp_image.width / 3" o4 }) v& b0 t  |) @' D
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    1 G. ^# V5 k( n' I1 u" b
  80.     @hp_width2 = @hp_range / 26 E3 P3 Y- C, N3 V) }" g
  81.     @hp_height = @hp_image.height / 2
    7 i+ x' m$ c7 C# B+ I
  82.     @hp_width_old = @hp_width* p& O! ?5 J9 P4 }
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    * D( N0 E7 i; R2 j( v4 [& k
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    ) I9 Y% O2 M# d3 i$ L
  85.     @hp_sprite = Sprite.new
      v* j5 k% i1 A$ B- i+ D, N
  86.     @hp_sprite.bitmap = @hp_bitmap
    7 c, ~. ?, u7 L# \. C0 n8 s1 {
  87.     @hp_sprite.z = 5002
    * \8 ^( j6 ^2 n' h; B. ^( @5 k) @' L
  88.     #SP Border -------------------------------------------------------------------
    ' x& {2 l& z3 k! j, p
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter"), O, q- k" S) Q" C8 f
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)( }8 z) m- i$ S! o5 V0 c2 F1 E
  91.     @layout2_sprite = Sprite.new) \3 }, o+ m( P0 F- ]
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    9 x$ i8 `. E; @
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)& C4 l, r8 ~( g5 {
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      ) h/ [8 c+ W( a' x+ y( N
  95.     @layout2_sprite.z = 5001    , p; t) }- Y, o4 y
  96.     #SP Meter ------------------------------------------------------
    + G# R2 c& e' P, T
  97.     @sp_flow = 0
    9 R0 Z* o. I- T
  98.     @sp_damage_flow = 0
    8 `3 j% \& V1 }4 w
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")5 [9 @' X* Y; m0 M
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)4 H; @( f6 F( i
  101.     @sp_range = @sp_image.width / 3
    9 b, E2 N: Y: z6 F; v
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    ' N1 G4 n8 ^# Z! J0 I/ T
  103.     @sp_width2 = @sp_range / 2' @: B2 U$ Z* [) b
  104.     @sp_height = @sp_image.height / 2) E7 D! {! o$ A4 s9 s
  105.     @sp_width_old = @sp_width( S3 P( O/ Y9 r- c) k* L& r
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)" e% o* A6 ~" B0 p
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)7 m0 w- A. @: y: b5 S
  108.     @sp_sprite = Sprite.new+ Q2 ~8 y  s# u; k# Y
  109.     @sp_sprite.bitmap = @sp_bitmap6 g( E# ^5 `* j1 C
  110.     @sp_sprite.z = 5002
    . z/ o! i; M- s, Z2 G/ @
  111.     update* N9 j& ^+ {8 i  H- {9 X6 B! {! d
  112.   end
    7 m' {+ ?) R% o
  113.   #--------------------------------------------------------------------------, y% l/ ?; q- H# E4 z% j
  114.   # * Refresh
    ( e5 i+ q, y5 z& ~. O/ Z
  115.   #--------------------------------------------------------------------------1 r, a( q/ h: [) `3 o  k
  116.   def refresh
    + k0 D8 O5 @; U  i
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    : Q. o1 T* @1 ^  O- C) N% }! P
  118.     self.bitmap.clear
    . [* Q2 _- r0 j$ N% I* V: s0 m
  119.     @old_vis = self.visible
    ; L4 a  N( d, Z4 f
  120.     @old_sp = @battler.sp6 t# v  e/ a4 P# C( ]
  121.     @old_hp = @battler.hp9 G: X2 P% O  j6 T
  122.     hp_flow_update% s. {. Y  V$ A+ o- x: i
  123.     sp_flow_update
    - T' J$ _0 Z' t$ y2 a2 f
  124.     hud_pos_update
      N. N. ~; ~& m' w8 _: \. D
  125.     visible_update
    ! q$ M# r5 w$ e- p" N
  126.   end, d0 I( Z, g$ W' T& E% W
  127.   #--------------------------------------------------------------------------$ H& i# i! o) V, d$ m2 v! N
  128.   # * Dispose
    3 e, m5 i/ c: ]! T9 }
  129.   #--------------------------------------------------------------------------4 _5 g8 y) {) u0 O7 s8 C# A
  130.   def dispose
    : K0 B3 z* h% f) G2 a& L
  131.     #HP Meter Dispose
    4 }5 H8 @/ W& m7 d8 A, s' U4 X+ \, M
  132.     @hp_sprite.bitmap.dispose8 B* v9 p; {6 X' x2 a
  133.     @hp_sprite.dispose
    - X$ e7 m% y2 x' k7 I' Q' _/ ?
  134.     @hp_bitmap.dispose
    8 I  l2 D9 O' w* p; d4 B
  135.     #HP Border Dispose
    ( \- d0 A- e, w' _
  136.     @layout_sprite.bitmap.dispose8 R% S3 |; k: U7 R& x3 b: E0 z; ]
  137.     @layout_sprite.dispose; e  Z; ]( R9 L. I6 H
  138.     @layout_bitmap.dispose" s& a5 K( _0 `( \
  139.     #SP Meter Dispose$ {  Q& A. E( d6 o! G9 V  r
  140.     @sp_sprite.bitmap.dispose) u7 w; c1 O5 E1 L
  141.     @sp_sprite.dispose$ d: K* P3 G8 L5 ~& ~
  142.     @sp_bitmap.dispose3 j" H- ^. T6 ?# \; j
  143.     #SP Border Dispose
    ; o# R$ P" i1 r' G- S
  144.     @layout2_sprite.bitmap.dispose
    9 h5 C2 C: y1 ~. k( J
  145.     @layout2_sprite.dispose
    9 x: |3 k1 p8 k8 R; ]) {8 I5 W
  146.     @layout2_bitmap.dispose. N  x- W( _8 K! r( {
  147.   end
    ; X# @# g0 U9 y/ S5 ?# ?3 C
  148.   #--------------------------------------------------------------------------
    ' C. ~  Z) E/ D9 u
  149.   # * Update
    - R1 C1 ]* x( x, g5 q
  150.   #--------------------------------------------------------------------------
    5 U# V8 I6 d9 l, \% t2 U- j
  151.   def update# Y  X& _( @2 s) F2 u
  152.      @battler = @enemy.battler
    ; n) }4 \( l! K
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?( o# _4 z* n: k/ E
  154.      if self.visible9 {/ z: w! A/ m
  155.        refresh# l1 u3 ?9 I: t: l5 }% V
  156.      else
    + k+ E0 o3 d) B
  157.        self.bitmap.clear( n4 t$ a# a: M3 D) e. i
  158.      end5 S: E( d7 W# [, N  q$ R
  159.   end0 Z( t: i$ Y" a, ]
  160.   #--------------------------------------------------------------------------
    " E4 c. r2 W7 a  u' P
  161.   # * Visible Update2 _: m4 m" k5 X* `& c* W: g! [
  162.   #--------------------------------------------------------------------------
    4 z4 t* }" V! H  v
  163.   def visible_update
    # d0 E+ {' ?1 \+ `2 @( P  b
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    ; W' U# O9 D  y! M
  165.        @hp_sprite.visible = false5 X' B4 m  E' v: `; R$ z$ j3 }
  166.        @layout_sprite.visible = false+ {( _5 [# f: E
  167.        @sp_sprite.visible = false
    - @6 i. E! V. q
  168.        @layout2_sprite.visible = false
    ( B/ \/ Q7 e, F6 E( q* j1 h
  169.     else
    # ]. x% Y6 n' q/ l- f9 n
  170.        if HP_HUD == true1 e' `& J" P6 n8 ?. Z
  171.          @hp_sprite.visible = true9 j1 b3 d/ \: f" M/ j
  172.          @layout_sprite.visible = true" j: x+ }5 }7 u- q) Y1 E+ l9 }
  173.        else' @+ m- W7 T' {- z+ K
  174.          @hp_sprite.visible = false
    / O1 h- A2 B& a# h7 m
  175.          @layout_sprite.visible = false
    ! F) {1 r& D+ G% V/ y% W
  176.        end  
    0 N9 I7 F' B7 a, ^
  177.        if SP_HUD == true# }0 {( h/ C7 s. H8 G/ n+ m' ~
  178.          @sp_sprite.visible = true
    $ _$ B# C5 R- e
  179.          @layout2_sprite.visible = true6 v2 x  P) q9 M) O/ t( E* v# Y
  180.        else
    " ^( F$ y! G  R4 P8 v' ^$ w
  181.          @sp_sprite.visible = false) F) ~+ `* x& v9 A" J# a
  182.          @layout2_sprite.visible = false
    $ i1 n) {% H$ N$ u, ]
  183.        end
    1 E5 L) v+ \: i5 B( r1 o$ W
  184.      end  
    ; _; ?+ K( z! C* i
  185.    end % c6 t! V9 U/ p, w% C4 [0 Z
  186.   #--------------------------------------------------------------------------/ X; \8 P. ?6 {" w* {. m4 G
  187.   # * Hud Pos Update4 F6 I" D/ ~; R1 x- g1 R
  188.   #--------------------------------------------------------------------------% `8 P7 ^2 n" a
  189.   def hud_pos_update
    1 f8 ?& _% n1 [& e2 c
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X9 F+ _9 T% o" K& V$ Z; k$ L! i: ?7 G4 ^
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    1 ~: }% h6 P+ Z
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X& G6 T) @4 K; F( y$ _! D. Z
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
      }3 B' [: }! D# |
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X9 _( v, y5 j7 t) p9 x
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  1 G% b8 M4 v, x, [) b
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    7 p8 ?) w9 u3 v! s+ L: K' u$ A
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
      s, o* r9 e$ g1 e  h4 V
  198.   end  
    / C  Y2 ~, B- H+ Z) c3 b5 ~( Q
  199.   #--------------------------------------------------------------------------
    ) W& C4 A! k1 _! q- o
  200.   # * Hp Flow Update
    ; r7 ?/ g7 F8 a& V
  201.   #--------------------------------------------------------------------------+ z/ [4 m. w  N6 U
  202.   def hp_flow_update
    , }: C. P- T- O: |4 G+ w9 `8 R
  203.       @hp_sprite.bitmap.clear' i- _( }6 S$ W* t8 m0 g* K
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    5 x( t6 g' ]/ Z5 A5 o
  205.           #HP Damage---------------------------------
    . W% w7 Z* @# {$ M7 \+ H
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100( a: n! a; B' A3 T
  207.           valor = 0.5 if valor < 1          & n' w/ x6 u. v9 k  r1 u9 |
  208.           if @hp_width_old != @hp_width  ?( c! a; A3 X$ e. b2 z
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    & m; v# C6 `4 z: `
  210.           if @hp_width_old < @hp_width
    + Y0 l  F% A6 k# X
  211.              @hp_width_old = @hp_width" z* x, H; i- j1 p' _2 K
  212.           end      ( G0 q' \; I2 F2 r$ `7 A, ]7 M
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)7 o$ x+ s- E( X! E  A5 K( d
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    ( a  _" Q4 b: T3 O$ i5 V8 D; @
  215.           end        
    ( y; h4 s, K+ p' b0 y7 b& `
  216.       #HP Real------------------------------------0 i/ V0 Y1 O  ~! V
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)* V8 a+ |3 B1 V" ^5 j
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    3 v4 a* N# d) e# v6 c, ^! R5 c
  219.       @hp_flow += 2  
    $ c! J" r- i) I) E
  220.       if @hp_flow >= @hp_image.width - @hp_range% l3 [) m! h6 P
  221.          @hp_flow = 0  7 f" N9 U3 u/ K8 ~4 o
  222.       end
    ( M' p/ x) N# K# j
  223.   end    , P8 I& i& i) z- q% G3 c, D9 R0 Y5 F
  224.   #--------------------------------------------------------------------------9 [# T6 h4 j! m- ?1 Z
  225.   # * Sp Flow Update
    2 Y& U4 n; J( E8 e
  226.   #--------------------------------------------------------------------------
    9 e! S# p7 g; ~/ ]
  227.   def sp_flow_update
    # B0 G( B; @. x* t# L0 k! L8 F
  228.       @sp_sprite.bitmap.clear
    1 e" ]( L, M& f) u2 V3 M+ G; q7 g
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp & f2 V! j$ o! _6 j4 x4 M1 k
  230.           #SP Damage---------------------------------
    ' W$ B; s& V" [7 |$ Z
  231.           if @sp_width_old != @sp_width
    ; {  `7 g5 X) ?
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    * e+ m2 ^# L" ]
  233.           valor = 0.5 if valor < 1              
    9 f7 D7 R' |+ Y/ x  {! D
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  2 w0 I& ^. w0 _  H! ^0 [
  235.           if @sp_width_old < @sp_width
    * F. [2 K6 e. }: y" ]
  236.              @sp_width_old = @sp_width
    : [8 G% f% f# v& g' n2 A  ]
  237.           end      
    * p# y! F2 F9 v$ R5 M  [8 A
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)/ R& d( ]- ]6 d* Y
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    2 g* c/ _& N9 w: p7 h5 k
  240.           end
    * O5 c( o& a# N9 o
  241.       #SP Real------------------------------------5 E2 C, S" Y8 u8 y+ F
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    8 P& i. K7 g7 q/ w+ U( Y
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ( u; Q) N' D% M8 @6 K
  244.       @sp_flow += 1  
    : D4 x4 |1 C% |# m
  245.       if @sp_flow >= @sp_image.width - @sp_range" r: Q2 e% @3 `0 S5 ^+ Z8 ^4 x$ `8 Z
  246.          @sp_flow = 0  
      Q$ ]( B* N" D& R& A
  247.       end
    , z# l( h; Y# s2 V+ K& x
  248.     end            
    , [4 S: `* S/ ]$ h; e- r. D# V; G
  249.   end- A2 c, v0 `/ n3 H
  250. #===============================================================================
    0 B) i/ M! f) V/ [' e3 C
  251. class Sprite_Character < RPG::Sprite
    ; a  c' ~  N" |; ]4 m  l7 T- \
  252. #-------------------------------------------------------------------------------
    8 y  A4 p  Z) Y/ P( E
  253.   alias :xas_emini_hud_init :initialize
    ) N& F- z. y" Q/ [+ _* I5 A1 m
  254.   include MOG  [* q5 H& E; c+ k+ i0 P/ X& ?
  255.   def initialize(viewport, character)! l9 c/ z2 R5 Y) {4 _6 b$ j$ O  Q
  256.     xas_emini_hud_init(viewport, character)9 k/ `% D& B  b& C
  257.     @viewport = viewport6 h5 C% I8 f( L2 o+ t$ b
  258.     return if @character.battler.nil?
    " L4 Y/ s5 O5 d# I% o* ^' j
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    ' M8 w- v) C+ o# \
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id). Z. D6 F7 z8 {9 y
  261.     return if @character.battler.is_a?(Game_Actor)
    3 @+ C: s8 E/ Y( Y2 Y) z
  262.     @bars = S_Hud.new(@character, @viewport)8 C1 m+ }# @7 \! A/ a8 f
  263.   end
    , B* ?. h, t* L: G! Z! m) E) c
  264. #-------------------------------------------------------------------------------
    : G1 F' G* _2 s
  265.   alias :xas_emini_hud_up :update
    . j+ e4 n$ J# q( R& T! ]
  266.   def update
    2 [# w6 K& Y; b! C) j3 }9 Y1 ?. e
  267.     xas_emini_hud_up
    - r, Z; \2 A5 K5 F- Z) D
  268.     return if @bars.nil?
    2 }. X+ c0 c) ]0 Y; v7 ~# y
  269.     return if @bars.disposed?; T2 p/ g: z, G3 F
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs/ y. N3 p+ g. j6 Q! n4 m& _5 f2 Z- E
  271.     @bars.visible = (dis <= RANGE)
    . u7 e  `0 ~. e: i3 i; }
  272.     if @bars.visible
    / a2 c% Y9 p4 p/ [. t
  273.       @bars.x = @character.screen_x# - @cw / 4" w. s1 P( F6 w: m$ ^( G5 }
  274.       @bars.y = @character.screen_y# - @ch / 4
      N: D# L* R4 G- U8 d0 @
  275.     end
    5 b! n& v8 Q9 U! U% V
  276.     @bars.update
    6 e( l6 t; ?# G1 o' B/ L6 V, o
  277.   end' g+ F; X- ~* W6 Q
  278. #-------------------------------------------------------------------------------
    4 V. Z2 J- V* A. }* t' S
  279.   def dispose" ?# I" X: }" ^- ]3 v% U
  280.     super
      H, k- ?6 z1 R7 B
  281.     @bars.dispose if [email protected]?2 r+ c# u3 |) ?
  282.   end$ p5 z$ k1 W+ X. I: d
  283. end; U8 W% K1 Y9 u+ y% l

  284. ; v, w% }: j4 E' E' v9 T
  285. $mog_rgss_s_hud = true
复制代码
' k+ l3 b! h( S$ ]2 N
* l5 D- j" J0 ~) l9 {- _; e
6 H9 Z: h( A& D9 H1 p8 d
上面所說出錯的203行內容為
* o6 P) ]' u- P@hp_sprite.bitmap.clear+ _1 T" P# B" Y- {

) d0 j; C, {5 n! k5 E8 }  N. ^想知道怎麼解決
) v+ h! o0 c1 r( O
# o/ e% k3 l. E/ T( d8 f5 r該腳本支持3.82
( w  O) H0 g8 {) D( V$ d  T) w8 p+ u3 k! T; I& A
下面是圖檔,要塞在Windowskin下# ?# x, H( U2 w* k  a4 `$ r
1 B" B+ K+ S/ I9 A& p0 E& E& I4 ]
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
  w' [) C9 d0 Q. e- R; Z$ d6 x8 b1 L6 o& N, p
* q0 {* \0 w& m: {# _5 T
2 ?' g2 c; ?) p& c! [* s) [  ~

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
- H; L/ L/ o. X4 g& J结果尝试刷新了一个已经释放的图形6 }* Q+ B6 F, B. P% T5 s2 K! Y& `* k

3 I9 {0 G3 {6 }% p$ L! F- z$ L8 T3 A9 I: A

0 n) y( R8 F, z: I+ N% A3 q虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?( T5 s; }+ h( [3 i5 j! l5 G
复制代码
不要后面那个条件貌似就没问题了。6 Y" l! h" {5 @
0 P' j' w6 \0 }6 e* R8 i

- C  N5 f4 X0 h" Q : w! T* T) {/ T4 {9 L
% Q# m! G8 e" K0 W- Y

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 2 Q' w( y0 H" |; w8 \
貌似是释放的条件不合适
! W4 ]+ F) o7 f% l4 Z3 r结果尝试刷新了一个已经释放的图形

  H# u% y. i% M$ q% p把後面那個條件弄掉後,的確沒問題了
" @+ p( L: c6 F8 o) |+ K, |9 o目前從關頭打到關尾結束都沒再彈什麼錯誤
, ?5 b, _/ e, T$ B7 j+ ~& u非常感謝
) ^; ]4 O& B( d7 b1 ?7 N. l
( h' t& K; K  j9 _  X不過我是參照著別人腳本改的
$ H0 K& y9 r% `% L! i1 x" O8 k他寫的條件式也是那樣,但我用他的沒什麼錯誤
8 [8 i, k1 m2 z& l. y: p5 V8 Q6 m不知道是怎麼回事
% X- Q/ V6 X2 D/ c是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的: g9 ~& W4 q0 L6 K: H
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
* i- p7 C/ \. h$ Z; l7 W% N嘛..这个数组吧..我在以前试写队友的时候关注过一点7 C( W* h9 e; `% c
不知道XAS内部对它做了什么手脚还是为啥,
0 B6 c5 a6 R1 u总有那么一瞬间,没有被消灭的敌人事件也变成了nil
% R  Q- Z/ k' M' M! }
0 P$ }3 O+ i* D& z( M$game_map.events.values[@enemy.id].nil?
# g0 X  M6 F% i# q7 ^因此自然而然的返回true并符合条件把图形释放掉了
! m! E4 |4 S$ p( `: E/ i' ]1 ]! `1 ?5 W, D9 ?$ s' v
LZ应该有注意到吧,; T5 \: F% |  V* I% G
我测试的时候发现报错前几帧,图形会消失,1 j2 V: [, @0 Z6 Q
应该就是“误以为敌人被消灭”了。  c0 `: _- [$ l$ Z7 D3 p; Z
; Z5 f( I, X6 b8 c* l. I6 u
受限于个人水平,至今无法找出$game_map.events的真相..
+ B9 C( a  |+ y) W" D" L/ q; x
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 . {$ o) V+ y' H( O8 r: ]3 Y0 p. @
$game_map.events1 @0 n4 b, T% R
嘛..这个数组吧..我在以前试写队友的时候关注过一点3 }' S* u% e3 s! b0 Y; A
不知道XAS内部对它做了什么手脚还是 ...
* n8 @' y& g# L
當初我把那個條件式看了三遍,都不覺得他有什麼錯
+ Y8 J  J" p0 i8 W+ {原來還有這麼深奧詭異的事XD
3 W( G5 ^' ]" l& m, v$ O- K7 }, S* k0 Z; X) e4 _# z! P
錯誤發生前的確會有圖形沒顯示出來
5 s* G5 ^8 |+ P, F1 N不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...5 Y' W% i; ?: R- p+ w
沒想到居然是詐屍了XD3 t0 r) }, b& Y. Z/ V

/ x& X8 M0 f4 q8 ~" B8 @不曉得3.91有沒有修正這問題...1 c: `1 T0 t3 s6 k  u. {& z! T, G
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。" G& K, J$ p2 s" B: I

+ O# k3 x3 m. U$ u5 F的确" X" ~. _* b2 N( f6 |
用惯3.82之后想去整3.91觉得压力甚大..
7 W1 R0 E/ n9 |( h; B干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
" J! t, s' a& n. \. b2 y! E( e1 @2 ]+ k3 |+ z6 W  v0 o+ S
然后加一个判断处理的。(我记得有一个disposed?)




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