Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
# i4 e6 T0 R  R: A! R會在每隻事件怪物的腳下顯示8 }) x9 U3 m; y2 w: F* g
問題是不知道為什麼
0 J  r$ Q/ I0 S& c( i有時打怪打一打會跳出
, l* r6 x8 X) V2 r' D" H---------------------------
. h$ o, p+ |+ F4 p+ |5 J/ b- UXAS
7 r1 C2 z+ ?! l---------------------------$ P" r6 U+ h5 a' ^
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
, |* d* @! v* i* _3 |' l
3 u; r. s& w, W7 U+ K- ?disposed bitmap
" g, E3 T3 v& ~0 n4 S. G! C) t---------------------------" B& r, A" s4 r# I; t" H
確定   / [; l' f  M& ^1 E% ?7 N% w9 ~
---------------------------
9 b$ q& M& Z; R. [( W; H
, ~- Y9 N! [  b+ {: y( m這是腳本
/ H# z+ Z( H5 T- v+ M6 H+ p. ?6 b& [8 J3 O4 c5 j' P4 P! ^
  1. #===============================================================================
    + j, N. E8 r0 E; z8 J0 y( {0 M
  2. # MOG - s Hud 1.0      5 }$ `) y" L0 p$ k' W
  3. #===============================================================================% _6 h  ~8 D2 J6 s. S9 o# _& ~
  4. # By Moghunter 9 _1 }2 v" h8 S. p: L
  5. # http://www.atelier-rgss.com
      K+ f! \' o! u
  6. #===============================================================================, q' [+ E" r% Z0 H5 [/ l$ W! A: t' d
  7. # Translated by Calvin624 4 o) z( z* O; A; c- [, }
  8. # http://www.xasabs.wordpress.com
    - ^* a) i/ _( p. _4 ^, E
  9. #===============================================================================  t* d0 N; F7 r/ Q& q
  10. ###############################-DESCRIPTION-####################################
    + w* K) L8 u1 E+ }0 p# O
  11. #===============================================================================
    ' r7 a  p7 f4 g) F" ]$ C: W
  12. # Personal HUD – displays the HP and SP below the hero.1 r: Z# L2 Z9 \! X$ ^  ?2 J( I
  13. #===============================================================================  {- }; D, }/ L
  14. #& x! D0 N, D6 s7 J9 g
  15. # Graphics required:  V% I+ H0 S, d; H* c
  16. #
    * G0 E2 J0 q- z1 b: c
  17. # S_Border_HP_Meter.png& L& f/ ?/ m$ T% R, z# J3 c9 w6 `
  18. # S_Border_SP_Meter.png( Q6 ]3 ]+ ^% I; O/ U$ H# O
  19. # S_HP_Meter.png* p4 `5 g+ L! E7 v+ z" c; [, u
  20. # S_SP_Meter.png. q( Y* M" R9 m
  21. #: d8 S+ u2 V( Y  H9 X3 G2 G
  22. # All images must be in the Windowskin folder.
    0 B* e. a1 l0 T
  23. #% P4 ?8 F0 L0 J' s$ C* B0 S
  24. #===============================================================================
    $ u0 p& \) z6 E) V: z" a% H
  25. module MOG
    ! j2 O6 Q6 x/ W  B5 j( n
  26. VISIBLE_DEF = false  
    ! ]/ Z, J- m4 B0 t( q2 Z& B* D
  27. # Show HP meter?  {$ o9 U# o2 H5 c
  28. HP_HUD = true& j' B) f  ]! _; n
  29. # Position of the HP border
    - c/ }# L; g1 p* F# e$ r) ]9 W
  30. S_BORDER_HP_METER_X = -2
    4 r6 c! l- @0 s8 T
  31. S_BORDER_HP_METER_Y = -2  
      L6 z3 k9 }3 f% R5 }* x
  32. # Position of the HP meter3 V$ J. A4 H! m- T
  33. S_HP_METER_X = 07 i7 _0 s. c) D1 F0 l; K9 x0 T. Z
  34. S_HP_METER_Y = 0" t& t& K) J6 E# o; Z
  35. # Show SP meter?
    / K0 F# S7 `5 X  x
  36. SP_HUD = true
      B/ }5 r, E5 v4 c9 b
  37. # Position of the SP border
    ) h0 @+ W. g; s/ g' |
  38. S_BORDER_SP_METER_X = 0$ G2 L. i8 J* d3 ]$ J& U4 Q9 N
  39. S_BORDER_SP_METER_Y = 10
    ; r+ _$ s5 U- e9 \: X4 M
  40. # Position of the SP meter& `0 ]; D* E- `1 x
  41. S_SP_METER_X = 0
    & |6 a% F5 ]2 g' ^% `2 n! e
  42. S_SP_METER_Y = 10
    , v0 u0 o# U: G$ J
  43. # Switch to disable the HUD
    0 c/ d0 x" R2 P% g; q/ O7 F
  44. DISABLE_SHUD_SWITCH = 5
    ' [1 i3 g" D. Z+ ]' B7 j
  45. RANGE = 20
    + k- m- R+ W( |% E( N
  46. end7 n' Q( N* _8 K
  47. #===============================================================================
    & c  w+ I% ]) e! a
  48. # S Hud! V; R- C+ U4 \+ W
  49. #===============================================================================
    $ u/ \+ e$ ~* V6 Z. O
  50. class S_Hud < RPG::Sprite
    ) t# [1 w4 o, V: X; M4 u: R' M, B
  51.   include MOG2 N, z3 d; t/ L% d+ T
  52.   #--------------------------------------------------------------------------0 {7 M9 l$ _3 U5 [6 B
  53.   # * Initialize, }2 A! f* t7 _3 c( O$ U( ~3 }5 H
  54.   #--------------------------------------------------------------------------
    , o) {1 o$ G# K* H2 Q
  55.   def initialize(enemy,viewport)) r$ }1 x0 i3 n# P* O
  56.     super(viewport)
    % y4 }+ U5 K8 m: |
  57.     @enemy  = enemy
    8 f9 w/ T0 W9 b! D, K% t$ V
  58.     @battler = @enemy.battler# i# l' M! n9 {
  59.     @old_hp  = 01 D4 T# N' }  l5 j
  60.     @old_sp  = 00 `% e- U4 G& N) ~4 X  Z: n
  61.     @old_vis = false+ Y: B( Y  R* O# r
  62.     self.bitmap = Bitmap.new(100, 100); ^' {$ v& ~% W3 ]+ S( o5 C
  63.     self.visible = (VISIBLE_DEF)#false
    1 `. R+ k4 c6 N# Y, l0 T, w
  64.     self.z = 1001 q# }  g% a. g% n0 O" s  O
  65.     #HP Border -------------------------------------------------------------------
    . n! I" ~" C0 x* H
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")) n1 v+ r. L) ], F7 j) [
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)6 L( h4 U# r) K3 O
  68.     @layout_sprite = Sprite.new7 ^, _0 O( x+ o* r) p/ D
  69.     @layout_sprite.bitmap = @layout_bitmap
    * n" k, h1 t5 B# [% u# v
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    $ M8 y: B4 a0 Z) d3 y1 e' c
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      ! J) @7 \5 E$ u% l2 O5 m6 p
  72.     @layout_sprite.z = 5001# {2 K8 @$ V: ~& R/ p" U
  73.     #HP Meter ---------------------------------------------------
    + {$ j6 k- P0 d
  74.     @hp_flow = 0
    6 j' J" |6 ]5 V4 F2 R' v
  75.     @hp_damage_flow = 00 C/ o7 k) C- r
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    7 N1 H: y1 c9 B* v! D& L
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    6 T5 j- i' v1 ~3 k
  78.     @hp_range = @hp_image.width / 3
    2 S! q9 i- v$ @6 u# h3 T, L
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  6 @% k0 m" U8 k& R
  80.     @hp_width2 = @hp_range / 2. b; Q8 g0 S0 U1 l6 Y7 a
  81.     @hp_height = @hp_image.height / 2
    4 r0 M4 v) {% J3 t2 S. S9 x
  82.     @hp_width_old = @hp_width- ]4 \8 V7 @+ C: |- L7 I
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)4 J9 J: R6 ^- }% T6 C+ e
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) # U2 J. B8 I, }3 D4 D7 n
  85.     @hp_sprite = Sprite.new, R+ K8 @; Q, d; d5 _  C
  86.     @hp_sprite.bitmap = @hp_bitmap
    1 a% R* t  i7 w! f0 e2 A, `
  87.     @hp_sprite.z = 5002
    5 T8 v$ h: ]- c  ^7 @* K2 t+ n
  88.     #SP Border -------------------------------------------------------------------
    8 L$ M3 I, C& q" ~8 {7 L
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")9 Q! w/ l3 Z& {9 S* {
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    , G( L' p5 j' h7 o: n8 p
  91.     @layout2_sprite = Sprite.new# O7 b; K: t) Z. S7 M. O
  92.     @layout2_sprite.bitmap = @layout2_bitmap+ K3 C5 _# v3 Y- T, `
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)' e  w$ W7 g) ?3 Z
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      7 c  k! W8 ^, P  W0 k' m
  95.     @layout2_sprite.z = 5001   
    # p( n$ \$ x* m8 }& {$ n
  96.     #SP Meter ------------------------------------------------------* y1 I8 Z# b  c. c; X
  97.     @sp_flow = 0- y: k) s" [/ P
  98.     @sp_damage_flow = 0) K3 W  `. I$ ]0 J( u9 ^* O. {& ]
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    ) ]0 ^9 C$ q/ o, X
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)' F' i9 b) A. S
  101.     @sp_range = @sp_image.width / 3) w3 Z$ M, E3 B2 [+ e
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  + ~8 S/ e" l/ E6 S0 P  y
  103.     @sp_width2 = @sp_range / 2
    ) t( O2 d1 E" ~5 k0 d3 I) Y
  104.     @sp_height = @sp_image.height / 2
    ) o5 W) w! R3 J1 L# a
  105.     @sp_width_old = @sp_width' q7 k0 l7 F+ d9 h% e
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)+ _9 ?0 ^: \3 O0 `% e/ j
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)9 @! }1 }  I( j* O( `  B! Y# r
  108.     @sp_sprite = Sprite.new
    ( F/ A- M+ B0 Q( h' D
  109.     @sp_sprite.bitmap = @sp_bitmap4 v$ @* |; A5 O" q$ s: c: _3 I
  110.     @sp_sprite.z = 5002
    ! \9 _9 L6 ^; B3 H/ J  A1 H/ S8 G
  111.     update
    1 Q% _8 C7 P9 d5 {& X7 B; \1 i0 z
  112.   end
    4 o  e2 p) m8 ~, |) {& f# }0 ^  L3 T
  113.   #--------------------------------------------------------------------------
    5 `4 L" Y- ^6 Y" j8 Q
  114.   # * Refresh
    - \0 X- w, @7 d$ S7 a7 ]
  115.   #--------------------------------------------------------------------------5 ^/ a* a, v3 _+ y9 m- Q( ?6 _! f
  116.   def refresh
    & j; l5 {# e  _8 u! o
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    5 U& M. _% q. }% `- o/ v
  118.     self.bitmap.clear. F/ O' J  O. _- i- x9 b
  119.     @old_vis = self.visible
    9 f' m4 v" D8 F- y' `# W
  120.     @old_sp = @battler.sp( O; W" G( L, q' i# G3 J: E
  121.     @old_hp = @battler.hp: Y1 P$ L: x2 {0 j# k9 k
  122.     hp_flow_update% |* S+ l7 ~( b2 c/ B' {
  123.     sp_flow_update
    4 H8 t8 i6 T0 n* [% c% {
  124.     hud_pos_update" h. [5 E+ t* i8 k- u/ Q1 P1 p
  125.     visible_update
    4 {4 X/ d2 }1 Z3 S* K/ e- Z4 R
  126.   end: h" n# O2 J! \- `1 w
  127.   #--------------------------------------------------------------------------+ h, O% E& P) i( Y8 |
  128.   # * Dispose# I+ S. p3 X$ R0 o/ @$ q
  129.   #--------------------------------------------------------------------------5 \$ ]& R/ u2 n" H% V9 ~5 J8 M# U# n
  130.   def dispose, a5 _0 F! `4 ?3 H) M9 Q* S
  131.     #HP Meter Dispose
    * v2 w5 g( e' I. \
  132.     @hp_sprite.bitmap.dispose
    . H! ~2 o8 _* s( A7 d0 Y' w
  133.     @hp_sprite.dispose+ f7 {8 E3 Q" S4 s8 R' {
  134.     @hp_bitmap.dispose3 z) G8 r  Y$ Z* h( ~5 M
  135.     #HP Border Dispose
    : e( ^2 v3 @# S- ?. a' n6 C1 ]
  136.     @layout_sprite.bitmap.dispose; ~- T! B6 B  ]
  137.     @layout_sprite.dispose8 r4 k  A) _* m. O+ U
  138.     @layout_bitmap.dispose
    6 g# ~8 C; `- ?9 i4 M! J* J/ {9 ]
  139.     #SP Meter Dispose
    ' \6 V# g2 Y, z$ ~" ?+ o9 b7 {
  140.     @sp_sprite.bitmap.dispose( g7 @+ f& w8 F6 w7 A: H3 X/ c
  141.     @sp_sprite.dispose
    " i/ q3 w4 Z5 f( {7 {, L$ E
  142.     @sp_bitmap.dispose
    1 }( \* i5 M: V
  143.     #SP Border Dispose
    ' A' A1 O4 m! U4 T! h: w" ?
  144.     @layout2_sprite.bitmap.dispose
    5 K$ h0 v3 J2 L' E* p2 A' p* i
  145.     @layout2_sprite.dispose
    % A7 d$ [- N. }# _& o6 O' f6 d
  146.     @layout2_bitmap.dispose( O9 p- V$ L, m) w# u0 H; W( V
  147.   end
    ; C2 l) y+ `" j' m, ]
  148.   #--------------------------------------------------------------------------; B1 _; H- P" X" y2 Y( v5 G4 ?
  149.   # * Update
    : X7 @. N0 h, L1 F" d: t! ]
  150.   #--------------------------------------------------------------------------, h+ M6 W' ~$ N$ F! _1 b0 }
  151.   def update
    4 i7 w  T7 b4 y% a
  152.      @battler = @enemy.battler 8 E1 _: X4 l* I) u6 ?
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    $ W! [1 k* p) ]5 {  X# p: a
  154.      if self.visible
    ; C+ g+ @  g/ ?0 j, ^. Y
  155.        refresh+ Z, x1 C3 A  B7 u" B$ o& k0 C7 k' L
  156.      else
    5 B* ?  |. Y; J. O8 C4 f3 x
  157.        self.bitmap.clear) P# B# W3 x# y6 y- U  k3 ]
  158.      end
    ; M( B: h$ A( I: s7 [
  159.   end  E6 x3 Z1 T0 U6 H: N7 J
  160.   #--------------------------------------------------------------------------
    - S0 `1 P/ P. ]$ v$ g1 ~( s4 {, M' \; o0 q
  161.   # * Visible Update7 G# B# ?( S8 B1 Z2 F
  162.   #--------------------------------------------------------------------------3 y5 N+ ?& w6 P7 X2 G: r6 j: M
  163.   def visible_update
    2 ^* k, F* q2 O& e- b0 S! }
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    + I) a  w' J2 t, A
  165.        @hp_sprite.visible = false, E; ]6 j& k: j+ f3 `- u- c
  166.        @layout_sprite.visible = false6 j) |/ x7 \! R0 J
  167.        @sp_sprite.visible = false
    * {% O  i0 d* `3 h/ F  r. u
  168.        @layout2_sprite.visible = false
    $ G  y1 `8 w5 S, x
  169.     else8 I; Q* ~1 o- T7 b# \& Q# Y
  170.        if HP_HUD == true& d( U- O6 }: t0 W
  171.          @hp_sprite.visible = true8 B& k& \& L9 L
  172.          @layout_sprite.visible = true' C* a* {$ l# g! ]2 ~7 u
  173.        else
    ( a( Z5 x3 }5 U' H$ @$ h3 g& \" J
  174.          @hp_sprite.visible = false) C& w" h( V. B2 l1 ]6 M: [
  175.          @layout_sprite.visible = false
    - H; c9 a0 W, C
  176.        end  
    * H/ f) ~! P9 m- ~, q5 v8 h& t
  177.        if SP_HUD == true) U* o1 c5 c3 l9 ?
  178.          @sp_sprite.visible = true
    ! ^6 ?6 m  X5 m7 y  J
  179.          @layout2_sprite.visible = true
    $ m. i1 [& j) B, w
  180.        else/ Z# z" _% ?# [8 P  }8 p5 B. H
  181.          @sp_sprite.visible = false, M) K. [4 Y; m  A9 o- W) r' k4 G4 A
  182.          @layout2_sprite.visible = false
    0 Y+ i' I5 |. d: b  m' t
  183.        end % y1 D3 P3 c, U! p8 ?7 @+ g5 A
  184.      end  ) l! X. j3 R4 {5 h5 `2 T2 a
  185.    end # Q& w/ V8 Q+ c6 T2 e# ^
  186.   #--------------------------------------------------------------------------; K4 J9 m! C  z' h: [
  187.   # * Hud Pos Update
    7 Y. `5 {/ Z5 f- v
  188.   #--------------------------------------------------------------------------# K/ N6 m. e% B# t; }
  189.   def hud_pos_update  n0 f# [4 @5 i
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    , Q: a+ F; j1 ^
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  * k4 f* n) S- Z( M- I2 \2 y! L
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    / R) N  _/ ?& ^1 H" [: [
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    ) Y7 n$ [2 P3 t2 j+ i
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X6 \/ W+ \1 N/ P0 a( \
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    4 s. M3 H! g9 @) m4 w  {8 ^; L% c+ h2 ^4 s
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    $ p: H/ M2 f' V8 {) {
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    * x" m- ~! O) d+ O
  198.   end  
    & g. t" M9 c9 F" Y- ?/ x3 S
  199.   #--------------------------------------------------------------------------
    . r' _' ]8 a- Z& o: O: B
  200.   # * Hp Flow Update" {$ G# M, m; ?8 ?' ]. l4 }; ?
  201.   #--------------------------------------------------------------------------
    + n. U5 x1 \( {7 r
  202.   def hp_flow_update
    % n- u% a8 o- N* G; w; V; m* ]
  203.       @hp_sprite.bitmap.clear4 V8 \" z  b0 N6 k$ |1 O% T
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  ' N- h* C/ i1 A! P1 |
  205.           #HP Damage---------------------------------. v2 G. j6 i: e# \! y( F  u
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1009 e3 r  r, [4 [; W3 n
  207.           valor = 0.5 if valor < 1         
    * o! a! }! @/ M9 m+ j* |' f, `  y
  208.           if @hp_width_old != @hp_width: O! B2 h, S2 \
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  % V" ]  a0 X* l1 M8 r
  210.           if @hp_width_old < @hp_width
    % f- H: O( d' g6 ?4 t3 {# G$ @
  211.              @hp_width_old = @hp_width
    . V7 E; B+ x- o; j, _) Y, r
  212.           end      
    # M& H! N' l6 P
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height): C- {; \$ [/ c8 |' J" I3 b- Z& L5 N$ W
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       " C& l1 k7 q( E5 x8 e/ S
  215.           end        * E( z6 @8 ?5 }& q
  216.       #HP Real------------------------------------
    5 ]' Q0 @& G* q! X, h  K+ @8 Y
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    + s2 @! F  C0 h) ?2 S( \. I' R
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          ; Z/ O; \" W  E( K: I6 g
  219.       @hp_flow += 2  
    ! y# V; B: e+ j3 K5 o
  220.       if @hp_flow >= @hp_image.width - @hp_range8 k8 c/ n! }1 b, {. ^! L
  221.          @hp_flow = 0  
      M, Y9 \9 Y8 y8 D
  222.       end" M5 d4 s, i6 z1 N/ |8 K5 I6 C
  223.   end   
    ; {& @  v" L9 H# P- U- ?3 a
  224.   #--------------------------------------------------------------------------
    3 P( Q& Z2 |) D( E. o, |) q/ G
  225.   # * Sp Flow Update
    8 F# e9 e; s: o! F" F+ I$ @6 E0 [1 Z
  226.   #--------------------------------------------------------------------------
    * g0 S2 P* k/ |
  227.   def sp_flow_update
    1 {3 }* y) @# j9 \2 \( I1 B
  228.       @sp_sprite.bitmap.clear+ ~& J% H) A$ a$ ]& b9 \, d
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp $ t; E2 V- k: X8 d. [8 e9 G) i
  230.           #SP Damage---------------------------------
    : j, P8 @& B( r: k% o
  231.           if @sp_width_old != @sp_width
    6 g; d, g9 a- a
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    4 V% S! l! L0 W$ s
  233.           valor = 0.5 if valor < 1              8 M0 ^" i+ a) [5 ^2 p3 p
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  2 P8 [8 p$ D4 I2 \# c
  235.           if @sp_width_old < @sp_width " f9 y9 ?8 f. l( z& _
  236.              @sp_width_old = @sp_width
    8 s: N% i+ o  ]) p" q% D: @2 @; X* Q
  237.           end      
    & h0 s- n$ D; T/ c6 h$ P. x
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)% o3 o3 d/ f+ D+ I1 `9 M9 u
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    6 E4 B: }0 _- e) `" o
  240.           end2 T/ {3 t* @3 Q& `0 q0 {
  241.       #SP Real------------------------------------
    5 r2 M% a* K+ e, A: c
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    % B2 Z7 C2 p  q
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect). [" J+ b9 ]3 M
  244.       @sp_flow += 1  - W) x# b, U! _* T4 M* {# p$ p% L2 m  \
  245.       if @sp_flow >= @sp_image.width - @sp_range
    3 p- z  ^! Y5 o0 P+ x
  246.          @sp_flow = 0  
    4 E3 z3 N4 ^; M9 g
  247.       end
    1 \0 V0 G% o) R$ O- y6 s
  248.     end            2 c/ a3 n; W3 |/ C0 i
  249.   end* d# R1 X% ?$ `% j. O
  250. #===============================================================================
    1 s0 V* e, H4 B
  251. class Sprite_Character < RPG::Sprite" N+ L$ C. l) z! Z: q
  252. #-------------------------------------------------------------------------------2 U2 `( h/ \% o, l$ e: \
  253.   alias :xas_emini_hud_init :initialize
    4 `5 O+ W/ E6 M8 D& G8 Q4 m
  254.   include MOG% ~+ h$ V- W; ^+ K3 s( L
  255.   def initialize(viewport, character)
    5 M" r* t5 C/ D( Y0 c3 O! u5 i9 q
  256.     xas_emini_hud_init(viewport, character)
    ! t3 q9 J% c" G7 R' }% M- c
  257.     @viewport = viewport
    ; N1 F& r! x, ^3 r6 W, y9 o
  258.     return if @character.battler.nil?
    : }+ i8 K# o5 Z# S2 a
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    ; {+ d$ X. a5 N; B  x
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    - N1 j; B, r7 _( b
  261.     return if @character.battler.is_a?(Game_Actor): p# R& k0 Y, }5 P# T# Q  x( n
  262.     @bars = S_Hud.new(@character, @viewport): F* n  I& b7 E' N3 d* q
  263.   end9 ?+ o% x' M7 p) v) \8 ^
  264. #-------------------------------------------------------------------------------
    - Q7 `2 ^% s& y6 o; A
  265.   alias :xas_emini_hud_up :update( N$ H; K  y/ ?/ I4 |6 `
  266.   def update
    ) v. ^! m- i7 T% D4 L
  267.     xas_emini_hud_up
    : o- Z3 }5 w# F% p9 s0 A: H
  268.     return if @bars.nil?# @/ Q( J) ~5 J+ {
  269.     return if @bars.disposed?; u" P. B6 h7 Q* M+ ]( [* d
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs( m) s7 x  t3 g" {/ U7 u* W
  271.     @bars.visible = (dis <= RANGE)
    , T0 B! n3 S6 Y) T4 G, }
  272.     if @bars.visible2 d3 p: k8 G" q) _
  273.       @bars.x = @character.screen_x# - @cw / 4$ C2 @' s) M$ u1 i5 L
  274.       @bars.y = @character.screen_y# - @ch / 48 @/ i6 E: W7 H% C
  275.     end
    1 F& I! [  s; I3 H; R  u
  276.     @bars.update! d7 F4 Q0 s1 N# A
  277.   end
    . l+ O8 H; O' {: r
  278. #-------------------------------------------------------------------------------) J5 @% f4 `) S- p. j% K) a+ u
  279.   def dispose
    , B, Q6 l1 d, S0 O6 N% h& x
  280.     super
    3 |4 }' }5 ^- ^
  281.     @bars.dispose if [email protected]?
    & z) y* T8 N; e  q- _& U5 Z5 h
  282.   end
    6 U1 V4 O7 j5 k3 {7 ^$ e1 s
  283. end
    9 j+ Y8 ~! K  R0 y  e

  284. 1 K; P4 y& ?5 o; k+ d+ V# S
  285. $mog_rgss_s_hud = true
复制代码
4 d4 \: `% H0 ~! v  j- \) a- v

7 |8 C' S8 Y1 D5 `% b+ P( W4 a; |* C3 c
上面所說出錯的203行內容為8 j. h! x6 s: C9 R6 }2 B/ C
@hp_sprite.bitmap.clear
$ W; h$ }" p8 z. _" c4 |& K3 p9 [# m- E8 e8 p+ C: r
想知道怎麼解決" S  w" Y/ o; j3 C# J+ m7 W% T3 f
7 w  O% x1 n3 S% g8 A
該腳本支持3.82
' C, u6 w0 n. z
9 ]$ o2 e6 q  c: m1 n4 l下面是圖檔,要塞在Windowskin下
5 z" J$ J% Z) ~
. e2 C% ]" f, e; t8 _ S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
9 V- A; p. B# |" D8 e8 y/ @) e) \+ b

- u1 v3 m& z2 Q/ ^, p* c" T6 K3 ?6 X0 g: y

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适8 o9 J3 h5 w! }6 y, ~2 ^
结果尝试刷新了一个已经释放的图形
+ a4 q) G4 `: P4 K' w
# H) x- }1 N3 X- d4 N! u
' C. g5 X  X1 \/ P( H7 ]6 X1 e9 q, p  W( b& X& N, P- Y
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?8 v2 G; d7 w2 y7 Q5 G
复制代码
不要后面那个条件貌似就没问题了。' b9 j9 y4 ?  x2 g1 B

7 G$ ]" W( O8 A9 Z" u, x+ O0 d  w9 g0 C2 R. A
' R0 V4 Y/ A6 k0 m, m
* r9 b# j3 P! A, `0 x! B

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
% b* I# m, K. N8 w3 U7 u. p* {貌似是释放的条件不合适
4 j$ w4 ~6 ?) \0 P# H9 x* U1 f结果尝试刷新了一个已经释放的图形

) q9 f! \3 t+ p& D+ M" p把後面那個條件弄掉後,的確沒問題了+ ~! I: `. V& B
目前從關頭打到關尾結束都沒再彈什麼錯誤/ a8 d1 M, J, u# H+ g3 x
非常感謝
$ O( S6 P- P# {5 M! e: {
3 z% Q  f1 ]' G& |& H/ B4 T' E不過我是參照著別人腳本改的
; N7 @2 |; g6 Y% l' P# ?9 A他寫的條件式也是那樣,但我用他的沒什麼錯誤& U* \9 O* b. V7 k. J
不知道是怎麼回事' N8 h# X- k7 w
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
/ }! Z4 [8 X) ?6 q1 g1 `我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
# v) z* W7 I( A! Z嘛..这个数组吧..我在以前试写队友的时候关注过一点" ^$ h, x( g5 f2 f+ _
不知道XAS内部对它做了什么手脚还是为啥,
9 }  t  S3 w- O* B$ h总有那么一瞬间,没有被消灭的敌人事件也变成了nil/ _6 |" N- d& g7 {7 t

; u# o. u. f6 m& J* C+ u1 l! R$game_map.events.values[@enemy.id].nil?0 z& \: _, A; G+ F
因此自然而然的返回true并符合条件把图形释放掉了! k$ g; y6 y, b* ?& ^% w
4 y# m5 _, ]' y- t
LZ应该有注意到吧,4 w( {& C* [* T
我测试的时候发现报错前几帧,图形会消失,
/ A7 m3 k% f  |应该就是“误以为敌人被消灭”了。3 {4 r% r+ {' E
, s% B3 O( o. R3 O/ l* J4 G; z' y
受限于个人水平,至今无法找出$game_map.events的真相..# I2 v" P/ w+ y7 u

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 , S; i; c5 r" B5 l  v( x6 H2 F0 T
$game_map.events
9 Y& H  M. E7 q嘛..这个数组吧..我在以前试写队友的时候关注过一点
' f3 t+ ?6 z4 q" y+ _" ?; I5 x; I不知道XAS内部对它做了什么手脚还是 ...

8 `& Y! ?* u/ k- g/ L當初我把那個條件式看了三遍,都不覺得他有什麼錯
) r7 a9 |! h- K5 w0 ~' b1 P8 y4 k原來還有這麼深奧詭異的事XD, @1 S* h# f9 u- g% U  j2 A- Q
* A2 x6 m8 [6 a
錯誤發生前的確會有圖形沒顯示出來
" f- K: f* h: |' w  Z不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...8 Q; c3 {, [4 F# f% I
沒想到居然是詐屍了XD% @- R1 w* R- U' x3 D
* y, P5 [. e: m# e& h8 C. \" o. ?
不曉得3.91有沒有修正這問題...6 w: Z$ [9 m) C' y1 o
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
1 G* y, e+ R* ]+ B7 ^: K2 L" w
- N8 |1 j" q( V' {的确
  O2 J2 ]6 X/ `( p2 G/ I/ x1 f3 j4 _用惯3.82之后想去整3.91觉得压力甚大..
0 F) w4 B: K7 q/ E1 d/ S干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。2 c% T/ ?# P) O/ a* s$ H# x" t# p

2 q, i$ B/ B3 A( L" v4 Y然后加一个判断处理的。(我记得有一个disposed?)




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