Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條$ k: u/ }' D3 S: V$ A5 Y
會在每隻事件怪物的腳下顯示
$ T, f6 M& d( M/ u問題是不知道為什麼
1 I2 \" k* z' J" _2 z. r有時打怪打一打會跳出7 x% H% S0 m0 Z! t$ M; n' P6 O
---------------------------
. @" \  I6 [- U" r$ LXAS
1 l0 B: k6 X  ]" ]! m---------------------------, R# v- `) G. V
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。* B& t' ~+ U% Q; c' e

! H5 z! ?; }# }. {8 k/ |disposed bitmap* `, S8 a* i5 x' n$ K( ~( W
---------------------------
8 Q, h% j  s2 S" J確定   
  j0 w3 `$ x3 m---------------------------
" |: I1 c7 I3 \6 P! N
; t" d- O9 R( z  b4 p) W這是腳本9 Y. h+ ?' k3 n5 U, d0 `9 o  e

, R! r+ L! F3 o: C
  1. #===============================================================================
    8 F# q+ G4 i- i7 ~; `, f2 U
  2. # MOG - s Hud 1.0      
    " H* Q, g0 B' k6 x1 a' s9 Z+ j- a
  3. #===============================================================================6 q+ p" g! t9 i& Y# H2 X+ M
  4. # By Moghunter ; _" C& G6 \2 C/ T/ t; x
  5. # http://www.atelier-rgss.com
      J0 y1 D. g) f2 q1 @. I. [
  6. #===============================================================================8 r3 }& z  }5 Z* \  n) H: i
  7. # Translated by Calvin624
    4 o! {/ F! a3 J- w  U
  8. # http://www.xasabs.wordpress.com7 _! |3 x4 _5 w" h& o
  9. #===============================================================================
    5 u: l* i! r; p; m) _
  10. ###############################-DESCRIPTION-####################################0 x5 U9 k& |: m2 o
  11. #===============================================================================
    1 A* F) ^3 O6 W% n" g
  12. # Personal HUD – displays the HP and SP below the hero.
    * ?: \7 j* o. f' A
  13. #===============================================================================; O, y5 W( M( G; ^9 H6 }
  14. #
    % \6 P$ ]3 w! M( b& s
  15. # Graphics required:
    0 `( c7 z7 y4 j# s0 Y* `
  16. #
    , B" Q) s. F0 v( \7 h5 c5 f
  17. # S_Border_HP_Meter.png
    ) }, B5 u: f4 U4 W1 C) x
  18. # S_Border_SP_Meter.png
    , C- i' j2 t3 d1 u
  19. # S_HP_Meter.png  j  h- c' ^, o/ b3 X4 Z5 C  m7 J
  20. # S_SP_Meter.png7 |& ^) G$ x/ h9 v4 `! ^7 \& Z
  21. #0 k+ I7 O$ U" K9 o7 z' d
  22. # All images must be in the Windowskin folder.
    1 C( Q4 Z1 G5 y) K
  23. #
    % P) F8 M7 [" d; \$ c
  24. #===============================================================================
    " Z3 O  B& s. I% I+ U8 o( v
  25. module MOG( i* {3 |$ z7 A- O4 i1 S, W8 H! b1 F
  26. VISIBLE_DEF = false  
    / X) r) N% {' ?6 v' ?. R9 M# D" ~
  27. # Show HP meter?' L, y0 K1 k2 B: L
  28. HP_HUD = true
    $ z9 E$ z; V! H5 x; H9 h
  29. # Position of the HP border
    $ Q' G1 W; A% G2 E- q: I# X
  30. S_BORDER_HP_METER_X = -23 M  r" e8 ]. N2 y, q/ J
  31. S_BORDER_HP_METER_Y = -2  8 T. m0 |& I& {
  32. # Position of the HP meter; ]) \$ O6 q3 h0 O
  33. S_HP_METER_X = 0, |2 T. I/ Y* A' i4 M, k2 ~. V
  34. S_HP_METER_Y = 01 S% c' c' y; K: r* x1 c1 C
  35. # Show SP meter?
    ; o9 N. p: \4 `3 l. i4 }
  36. SP_HUD = true
    ; I, Y( a. J9 _
  37. # Position of the SP border" `7 c3 t$ L; o* ^" E
  38. S_BORDER_SP_METER_X = 0
    $ _3 A& }- U: Y) `0 m4 D/ i. k; X
  39. S_BORDER_SP_METER_Y = 10
    1 G, L9 T7 x# ^; u
  40. # Position of the SP meter
    9 l8 F& y" Q0 X# T" H. h) P( v
  41. S_SP_METER_X = 04 q0 R4 K" I6 ]0 m( h" C0 z
  42. S_SP_METER_Y = 10; q, U& |; ^; f# D, Z# q  l
  43. # Switch to disable the HUD: q& ]# B# i( C. ?4 v8 {
  44. DISABLE_SHUD_SWITCH = 5+ f4 a$ K5 k$ c4 c* i9 z7 k0 m4 n
  45. RANGE = 20
    , [7 s3 S' s7 L$ u
  46. end+ E& O, g. u3 y+ Z* m
  47. #===============================================================================! g; n9 V6 }$ Y  [# A2 m
  48. # S Hud
    9 H7 U5 t/ b4 [
  49. #===============================================================================
    4 l1 r* ?9 J4 }* c: \8 q# j
  50. class S_Hud < RPG::Sprite
    , b+ O  u8 ~+ f' I0 c0 r# M" r; q
  51.   include MOG
    ! h1 N6 y! A% _) ?
  52.   #--------------------------------------------------------------------------
    3 a* v4 W3 Z; P2 u1 f
  53.   # * Initialize2 @+ f- k8 I% D5 Q) ]! |: F
  54.   #--------------------------------------------------------------------------& j7 Z' |: p0 [2 }
  55.   def initialize(enemy,viewport); B* M3 E2 t! B( S2 g0 u3 b
  56.     super(viewport) + \( A2 z- m7 A/ o1 i
  57.     @enemy  = enemy
    8 s0 P1 t) x8 L8 V
  58.     @battler = @enemy.battler
    * e. x2 V" F3 a6 S) ?  V4 A, L
  59.     @old_hp  = 0* E, B* G. K0 q% j% o% N
  60.     @old_sp  = 0
    , V$ t5 @- U7 D: y& D
  61.     @old_vis = false
    5 A$ k3 Z$ X. R7 W
  62.     self.bitmap = Bitmap.new(100, 100)( v5 p. x1 p" |+ b
  63.     self.visible = (VISIBLE_DEF)#false' }% H0 s: B3 H; @6 f/ R
  64.     self.z = 100! H* ~7 d& z: Y& T
  65.     #HP Border -------------------------------------------------------------------- ^0 k. f0 w  Q4 o+ D
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")8 i5 [2 z7 L3 u( l0 D
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    1 ]! O! m& l+ J. i5 F; O
  68.     @layout_sprite = Sprite.new- W+ U8 }* r2 \( z& {
  69.     @layout_sprite.bitmap = @layout_bitmap
    & n$ i6 e6 q, \1 ^- M
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)) u& c/ e/ z' Q9 O* L. o8 L
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      2 n, m* @) d8 l/ F! P" J
  72.     @layout_sprite.z = 5001
      n0 M1 U: v+ u
  73.     #HP Meter ---------------------------------------------------
      @  O2 m1 M6 w8 S
  74.     @hp_flow = 0- e6 j0 o7 [: k8 D; v2 J" J
  75.     @hp_damage_flow = 0& ?. p7 `0 f  F" Q# ~8 U
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter"), O: t8 l# p5 s" Z6 m
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    5 U: \& _/ z$ l, f* |( @
  78.     @hp_range = @hp_image.width / 3$ j4 Z# o9 q& m2 A2 E3 Y6 E
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  & R# g! e+ Y8 k$ f4 X
  80.     @hp_width2 = @hp_range / 2
    $ U) v' B6 o7 u: N. e- V: q0 i9 a
  81.     @hp_height = @hp_image.height / 2. Q8 J7 r' ]( E$ J. ^3 I& k: I5 x
  82.     @hp_width_old = @hp_width' }8 f; S/ t6 ~8 Z4 I3 O
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)9 M  G, v; Q! ], j5 Z
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) $ H; Z1 ~( L0 ~
  85.     @hp_sprite = Sprite.new
    ! S) B7 G  f; d5 m$ U; X! @
  86.     @hp_sprite.bitmap = @hp_bitmap
    : y; X# D6 c: C2 |7 o0 ~: {3 X6 q' l
  87.     @hp_sprite.z = 5002" ]# X3 H5 _* }
  88.     #SP Border -------------------------------------------------------------------
    # d  [' \6 N. `. E
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")5 w3 Z9 L2 D# N. p- w9 f
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    9 g/ V3 Y1 |! |" D& m1 ]
  91.     @layout2_sprite = Sprite.new$ {, @' L4 C$ [5 s# l3 s
  92.     @layout2_sprite.bitmap = @layout2_bitmap& m7 {% q) {2 ~
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)2 W+ a0 |7 w' H* i" F
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      ' U6 C! \* q8 W9 x0 O
  95.     @layout2_sprite.z = 5001    * ]; m- f* z5 _$ t; _2 j
  96.     #SP Meter ------------------------------------------------------
    , N5 z1 G% Z( J2 j
  97.     @sp_flow = 0
    % F5 H3 a# ^4 M. U$ m8 D! B) Y" @' q
  98.     @sp_damage_flow = 0  y$ K) @; r6 G9 C! n9 \, i& o* J
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    # C: t2 d3 F( Q* |3 D% i$ h7 D6 U
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
      P- n& X! N% n+ o8 ~8 v
  101.     @sp_range = @sp_image.width / 3
    " r0 q5 M# Z2 d* O' L  F# ]
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    ; A; Z; n) ]9 w$ A. }& r
  103.     @sp_width2 = @sp_range / 2% n" t6 B  H( Y# |
  104.     @sp_height = @sp_image.height / 2+ ~) Y8 G; w4 R& c
  105.     @sp_width_old = @sp_width7 v) Y' u$ C- P" o; i5 M
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    : s/ ]8 }3 r) \/ R
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)" \3 U8 ~2 I- V/ D8 N; c
  108.     @sp_sprite = Sprite.new- m0 U2 o+ w( B3 Q; z/ O/ L2 _
  109.     @sp_sprite.bitmap = @sp_bitmap
    3 @9 R3 V* p2 @
  110.     @sp_sprite.z = 5002
      j, w7 E. X: z8 b, U
  111.     update1 g- _8 R7 T1 j, _; t$ }6 E
  112.   end
    : C2 I9 z. x# y3 j2 a; f& k
  113.   #--------------------------------------------------------------------------2 N! a, R* x: w
  114.   # * Refresh
    9 A. j# n" _( w  |! D6 D; E
  115.   #--------------------------------------------------------------------------! |/ ]' ~8 r& f3 I8 i! N7 y
  116.   def refresh
    ; U' B3 J7 v' T0 G$ O0 ^
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    ( S4 p; W3 X0 g5 g, q% J
  118.     self.bitmap.clear
    3 E$ ?% h- s% X  {" y
  119.     @old_vis = self.visible
    % q  d4 C) E9 }; A9 f; V
  120.     @old_sp = @battler.sp4 x3 g3 G" n& x
  121.     @old_hp = @battler.hp  J$ B& J2 ~! z& a, {
  122.     hp_flow_update5 K% x2 V" l) }" e, J
  123.     sp_flow_update7 S9 F' S5 K) ^  ?* J
  124.     hud_pos_update& l1 Q; g( b: w6 k( s+ |/ y
  125.     visible_update1 h/ G$ k5 g. f- }& i/ ~) Q
  126.   end
    3 g3 L% S( Q/ g+ z& A# `# ?
  127.   #--------------------------------------------------------------------------
    ! _8 \0 K& x) ?( l; R9 P8 ]9 i2 i0 c
  128.   # * Dispose
    $ ~' L* E6 [) u! n# z. A0 ]9 G
  129.   #--------------------------------------------------------------------------
    6 b8 {4 n# U% J5 }4 f- |: C) Y
  130.   def dispose3 J8 C+ h' y- n: ~4 F4 ?+ p3 l9 G
  131.     #HP Meter Dispose9 ]& ?3 F& r5 J
  132.     @hp_sprite.bitmap.dispose
    1 r; k/ W' z  P) x, n" h7 O
  133.     @hp_sprite.dispose
    ( U6 O5 k( X; t) Q) z$ d% c
  134.     @hp_bitmap.dispose
    ! f3 y/ l- ~9 R, g, Y6 T( z
  135.     #HP Border Dispose
    % X/ @# C- _: `" J: g$ p5 J  b
  136.     @layout_sprite.bitmap.dispose
    & T# c6 D7 B) Z% k
  137.     @layout_sprite.dispose9 Q. I* Q: H1 G5 W
  138.     @layout_bitmap.dispose, [8 s6 G+ K2 b! p0 Y4 i
  139.     #SP Meter Dispose
    " ]) ^/ N0 R6 q
  140.     @sp_sprite.bitmap.dispose
    9 P/ C- @; q6 W0 K
  141.     @sp_sprite.dispose/ B6 @6 r$ e9 R6 y; T3 g
  142.     @sp_bitmap.dispose
    $ a1 _' a0 m' [* d' X0 r* `$ v9 P3 ]
  143.     #SP Border Dispose! c4 T; ]4 R0 z1 Z9 r0 o6 E+ [8 ~8 B% H
  144.     @layout2_sprite.bitmap.dispose. J, M- c  P5 l0 R# n
  145.     @layout2_sprite.dispose
    0 T* d1 w0 S4 j! t* J
  146.     @layout2_bitmap.dispose* ^/ O5 g& P: i, c0 m
  147.   end- a+ g* B8 @# x" g6 q
  148.   #--------------------------------------------------------------------------  A  g7 p4 ^* w- T4 e3 o
  149.   # * Update) D! m1 c9 e+ [
  150.   #--------------------------------------------------------------------------2 E  V# b3 Q! U5 Q% u3 k
  151.   def update% H; ]6 P6 C8 g
  152.      @battler = @enemy.battler
    $ }% B- \( @8 b, U# k" e/ p
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?& ^) o9 }$ a) C
  154.      if self.visible
    ; b; k8 r3 [$ d6 A4 \+ Y1 e3 V
  155.        refresh' I* W5 Q- @4 S* ^" W
  156.      else' p2 @0 R' T$ \5 q
  157.        self.bitmap.clear% G+ L" R# x7 M9 e3 X
  158.      end9 H) i0 \+ k" m3 V0 S
  159.   end% s9 H: T4 E0 x; d
  160.   #--------------------------------------------------------------------------
      _# F5 p3 L1 C) w3 [4 E
  161.   # * Visible Update
    7 B( a- `+ e, D
  162.   #--------------------------------------------------------------------------
    . O* E; Z$ j3 K: ?- r
  163.   def visible_update
    2 f$ [# A  y6 K4 G$ W8 O& H
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    ; `$ x& W9 L2 z- n
  165.        @hp_sprite.visible = false6 \% w8 r$ y. s. Q% L& ]. o9 h
  166.        @layout_sprite.visible = false% L/ v8 E( I$ b- a/ G+ L* |% w
  167.        @sp_sprite.visible = false1 {3 q: E8 |7 z; D! p- T) j
  168.        @layout2_sprite.visible = false4 N- u: m, F" \- ~3 I
  169.     else
    ! J4 O* j; }# W! z0 S$ G
  170.        if HP_HUD == true
    : u, i2 _  S! P- P1 ~. o# c
  171.          @hp_sprite.visible = true
    / C3 q0 M2 S. u
  172.          @layout_sprite.visible = true( ~. x' _, l+ l
  173.        else
    6 j! A3 T0 u; b* M% `6 L: K
  174.          @hp_sprite.visible = false
      M9 [/ F# h' F' X9 b$ N; k* l5 p6 t
  175.          @layout_sprite.visible = false6 p$ {& |) [& K1 r! p: f4 T
  176.        end  
    ; P# l( O3 @+ A4 y, g2 k
  177.        if SP_HUD == true
    ! e% {" g  f$ h! b6 u
  178.          @sp_sprite.visible = true
    4 F1 E# V# z4 L$ s- B# F, G$ p
  179.          @layout2_sprite.visible = true# J; j+ X/ n; j# ~9 Q& L8 K
  180.        else( V- ]  f7 [, w4 A9 {+ I' [+ j
  181.          @sp_sprite.visible = false
    $ P- j7 M, a! V( N( d* d1 ?/ T
  182.          @layout2_sprite.visible = false, k. X7 _7 `+ _' r: `5 Y
  183.        end 7 {+ \! H  }4 Y
  184.      end  
    0 J, b. w1 g& V2 {  r
  185.    end ; S- I& H6 `  H" R" c+ L8 W4 }
  186.   #--------------------------------------------------------------------------
    1 o4 [$ l! u% |/ X9 w/ _& ]
  187.   # * Hud Pos Update
    3 a3 s# z. \5 E* s; z' w: O
  188.   #--------------------------------------------------------------------------7 A6 W1 p2 {7 t4 X* t
  189.   def hud_pos_update- h8 l% w  L, B2 f- H
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X! ~& L7 L* z/ B0 m: z
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    . S4 T" H7 g  E# m* V
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X! J" C4 L- m/ \( L: H6 I
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 9 E/ ]: _; k. v/ m( r
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X( @1 K" q' `# D+ P' @9 ]1 `
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    . ~" K1 [$ {( m  @( r0 O; p3 o% `" ]
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X+ m# E  o$ k, N# Z$ e
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    0 ]9 Y+ K5 y# }
  198.   end  
    # ?. _  i( L; P  v) j: W/ ~
  199.   #--------------------------------------------------------------------------
    , ~; d2 y# a0 f& F: R
  200.   # * Hp Flow Update
    0 R' S, d8 P$ _5 c; p3 \( l9 V
  201.   #--------------------------------------------------------------------------
    " d& I( Y: ?+ l$ |$ V
  202.   def hp_flow_update; K) d  S) y1 R" H- R6 @
  203.       @hp_sprite.bitmap.clear. j* Z2 _2 ~+ a0 }  W% G0 V
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    ( [9 B3 p: n3 i5 o. G% o
  205.           #HP Damage---------------------------------
    ' ^, K; @' \  v+ S1 X9 u
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1007 I1 M# K% ^& {# q8 u3 ]
  207.           valor = 0.5 if valor < 1          0 S' z8 @# ?" Z
  208.           if @hp_width_old != @hp_width' ]  M$ U, J5 S  l& f: y, z
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    9 M: B0 @) i+ |' j' n7 i% P2 _
  210.           if @hp_width_old < @hp_width
    & `1 y  o- g: }, f7 K( h# \5 s' F
  211.              @hp_width_old = @hp_width5 i) ]* }$ @' s1 t6 L4 p2 W, [
  212.           end      # P( _# L& N4 i9 w0 I
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)9 c" p8 Y, h- W6 G5 a
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       6 A' f/ P" y5 |" b1 r+ g! r* A4 y
  215.           end        
    ) ]* b! y& ^2 W
  216.       #HP Real------------------------------------% t; {5 `* ]8 C  y/ R  _. r
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)- Z8 b; ]4 Y  A+ O& l7 h% l0 j
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    $ B% A) p, H. R2 a  s0 A
  219.       @hp_flow += 2  
    4 `& D9 |1 Q+ w. R
  220.       if @hp_flow >= @hp_image.width - @hp_range
    8 x4 T. {# c- j& m
  221.          @hp_flow = 0  
    ; b; W- ^: ?! z( Q' y0 T
  222.       end
    9 E$ O9 s3 `7 T/ b' _5 m, y
  223.   end   
    ; ]- x5 R/ k2 _/ E1 F
  224.   #--------------------------------------------------------------------------" I, ]9 s$ j5 o* S' R
  225.   # * Sp Flow Update- i* u: K! s) k7 ?1 d
  226.   #--------------------------------------------------------------------------/ k& E, j7 Z3 x2 V. H0 ^
  227.   def sp_flow_update: _) u' I5 a0 |" ]: T7 |- G" W' w% \
  228.       @sp_sprite.bitmap.clear) p2 S- P, }* `; O
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp & t3 _/ V0 `2 x1 J, Q( U! I
  230.           #SP Damage---------------------------------, V2 X. H7 x( t2 h) y1 ~4 ]
  231.           if @sp_width_old != @sp_width5 R& O& _! t3 @: j$ D5 B6 v' \
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    ' F" ^4 }, I! x0 P- i
  233.           valor = 0.5 if valor < 1              
    3 W4 _* U. T2 ^* E& u, a* }
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    ( f  m, c) B9 n1 l  ]
  235.           if @sp_width_old < @sp_width 4 ?, w! [; e3 e6 r3 w
  236.              @sp_width_old = @sp_width: C  }! m) H: O1 m: x' e& {# ^) Y
  237.           end      : \( @3 V7 h9 u) o5 U$ [
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)9 i; K9 W; S: Q/ l4 d
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) / T, w6 t% w. D+ o( Y
  240.           end
    ; C  ~; {( S- j* s& k" S
  241.       #SP Real------------------------------------
    ) e2 X, W: r0 g( k! X, ^
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    1 P0 F4 t( e% \4 N2 i$ u" M' d1 X
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    8 e$ G5 m% r$ T0 f: s1 V
  244.       @sp_flow += 1  
    6 r! N; @3 T8 {" _: G" A/ n
  245.       if @sp_flow >= @sp_image.width - @sp_range
    7 k+ }" ^) X! R6 Q6 q, x4 p
  246.          @sp_flow = 0  1 [9 S: B! r4 G+ P+ n6 W+ Y7 g
  247.       end
    8 P9 x( T/ O: L6 i) @/ g! a3 t: I3 k
  248.     end            : T# e% }! m7 \
  249.   end
    ( m0 U5 h. S" s7 h5 m- v1 k( ]
  250. #===============================================================================- d% w5 N! p' Q8 N# q
  251. class Sprite_Character < RPG::Sprite; ^4 h0 ~( p# s# T
  252. #-------------------------------------------------------------------------------
      w1 Z3 G; G# r( e. {0 M
  253.   alias :xas_emini_hud_init :initialize
    , H8 b: }$ A' c, T" c
  254.   include MOG
    ' W7 I# ^( t0 k( V% E5 k- G% R: h
  255.   def initialize(viewport, character)
    & b9 g6 n; @8 L/ C, P$ D: ~
  256.     xas_emini_hud_init(viewport, character)9 h" v- [4 o0 T6 [- O7 v) s1 R
  257.     @viewport = viewport6 ]  W# A. x1 t+ V$ E/ @% ?: u
  258.     return if @character.battler.nil?/ I& n4 n3 r: M4 u: m3 `, n0 g
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    0 G8 i5 |( B: E; K2 b$ n( G* N
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    0 {! t1 u  n  {& U5 v
  261.     return if @character.battler.is_a?(Game_Actor)- T3 e' e: }. Q1 j0 {; b( O' n( B+ Y
  262.     @bars = S_Hud.new(@character, @viewport)
    4 F# K& H9 Q+ d9 u) |, K
  263.   end
      C4 T2 Y& g3 m; y" A/ e# ?4 q
  264. #-------------------------------------------------------------------------------
    7 k$ _# g' R/ M/ B5 s5 z
  265.   alias :xas_emini_hud_up :update
    $ U8 I% q1 E+ l  ?) W% p
  266.   def update( i& i" X5 Z6 e
  267.     xas_emini_hud_up
    & Q( H3 G7 H+ }: U. r
  268.     return if @bars.nil?
    ) ?* C1 U8 t/ p  k
  269.     return if @bars.disposed?, n9 o8 P# ]$ f# V
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs& `, I. K+ u5 ^# ~2 e
  271.     @bars.visible = (dis <= RANGE); V) y) v2 w  _$ f
  272.     if @bars.visible
    & o4 l! ^6 K. x0 n
  273.       @bars.x = @character.screen_x# - @cw / 4
    6 E' T5 B* l2 G8 g- S' X& \$ F
  274.       @bars.y = @character.screen_y# - @ch / 4, _0 ~# W" m! M! N
  275.     end
    8 O# R2 Z; j# O8 X( K: Z
  276.     @bars.update, d. x& s9 E) y, N
  277.   end" J5 f4 P9 b- O2 x. p. m; J
  278. #-------------------------------------------------------------------------------+ {4 o  q; ]: ~! ^, u% d* U
  279.   def dispose8 s) S9 r, M9 {8 a3 J
  280.     super* [1 f3 P4 ], _1 O: F. K7 @
  281.     @bars.dispose if [email protected]?+ F( [; |* Q" ?& M7 y, n
  282.   end- Y/ k/ x+ F: u$ O1 ?( K
  283. end
    2 _" h6 e& }0 x3 k
  284. 5 |& u; U( l5 A& [$ T3 w
  285. $mog_rgss_s_hud = true
复制代码
# p8 |" a) k( A6 C( D8 |+ l  Z
/ ?* H& p# a  o$ W! }
) ~% Z7 c' B- p2 S
上面所說出錯的203行內容為3 ]# u. G, }% Q* K
@hp_sprite.bitmap.clear8 p. ?. \9 G% q7 @& v, Q/ u
  }5 v7 w6 M& m$ V
想知道怎麼解決& A6 m0 H' R7 ?$ U+ k
5 Q! c* M3 s, s! P
該腳本支持3.82
. V" c. \. |0 Q+ H' S4 ^- A  s8 o
下面是圖檔,要塞在Windowskin下* d& S9 F4 |" c1 D  s
# v# A) G* j; W$ h4 b/ h
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
( r6 H$ a  F  G0 R8 K5 f6 }3 Z/ q/ q. m
9 g; L) P3 A# P1 ^
& r: t/ k( j. ]6 O4 F- k

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
: F& A- G8 J3 c2 B9 t5 Q结果尝试刷新了一个已经释放的图形
+ K% Z4 H3 ?- ^7 ?0 n3 f- L
5 p# l! M: B) e
3 ]9 ~& S+ W+ s0 j0 L. F6 ^" Y, z2 A2 F% j
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    ; `4 I8 d) j7 S0 Q& i# E
复制代码
不要后面那个条件貌似就没问题了。) h# ?$ n6 S3 [$ K3 X# X

) V% o3 y' N+ A5 d# t. j8 O6 D5 v, q* T" W' ?* L. k! O, E  R

/ J, U5 D4 z/ S8 T5 U6 l) [
: m, {$ b- K8 D
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 & @6 k! R5 e( v! B1 r0 \+ k8 X/ o
貌似是释放的条件不合适# P$ N4 C& U0 E' [9 H/ c
结果尝试刷新了一个已经释放的图形
! z3 o6 u+ ]9 W) U
把後面那個條件弄掉後,的確沒問題了7 H/ c8 h, ]- b% g
目前從關頭打到關尾結束都沒再彈什麼錯誤
8 M6 A! L% s! _; |1 H- a) V) `, u非常感謝  b  m% N! U1 `3 O( A

; }( c; ]& M: S不過我是參照著別人腳本改的( }6 E% P2 V: C: N7 L4 L! P+ v4 m
他寫的條件式也是那樣,但我用他的沒什麼錯誤; k5 K4 @+ ]5 t) n4 k0 A" B' {3 U
不知道是怎麼回事- {+ J& o! H/ X2 @5 P& V0 c
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的* Q8 d1 E: h$ w, g+ G1 v2 k- S% w
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
! r4 [- O" A% G% H7 E* S嘛..这个数组吧..我在以前试写队友的时候关注过一点/ A" a8 a6 S4 s1 x0 `4 H* [
不知道XAS内部对它做了什么手脚还是为啥,
. B$ [% t; i9 q3 k* g, o总有那么一瞬间,没有被消灭的敌人事件也变成了nil
( s; a" \6 y) x. E3 K" K0 q5 d# i& E) ?; @/ @9 W1 T* x
$game_map.events.values[@enemy.id].nil?
5 H9 K9 f- n# I' z因此自然而然的返回true并符合条件把图形释放掉了* d! T3 P* c7 N2 ~' J$ S6 s' j/ q

- I- W  Z, [2 @LZ应该有注意到吧,/ n4 x3 V5 j! y, @
我测试的时候发现报错前几帧,图形会消失,: T8 {" Z+ a/ `& E2 z, m5 }
应该就是“误以为敌人被消灭”了。
( R# T" N* t+ P- L9 I. ~9 Y7 @+ I/ S% N2 T- b
受限于个人水平,至今无法找出$game_map.events的真相..
5 o- w8 j' ]) A+ k2 l
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 ' ?1 o7 V! @3 J9 V
$game_map.events, D! I+ Q' f4 O. ?4 B( B. u
嘛..这个数组吧..我在以前试写队友的时候关注过一点
- L4 n' s# u: V- x( @不知道XAS内部对它做了什么手脚还是 ...
  y0 j8 g+ L4 E& L* S
當初我把那個條件式看了三遍,都不覺得他有什麼錯
$ a% Q' ^+ c; C2 V* C原來還有這麼深奧詭異的事XD
1 O$ O* j  ]# z
  p3 L- u  s6 h錯誤發生前的確會有圖形沒顯示出來4 z. u" D+ n9 I8 B. L1 N: i
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...2 F5 u3 @7 O& p
沒想到居然是詐屍了XD
# T) Z$ L) Y! J' r* F! t% ?# P/ ^; @# x
不曉得3.91有沒有修正這問題...
2 Z# W* D% y" D# ?; Q不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。4 a& Y) P* W( J6 t: @0 i) e
; u: e1 v! u/ y
的确
& x+ m; f# \; c$ @; D; [用惯3.82之后想去整3.91觉得压力甚大..
& C2 b) q! U0 [% x5 w干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
9 ?+ b! _- a$ Y! K- r- J- I. e9 x  m; o$ x+ S. [
然后加一个判断处理的。(我记得有一个disposed?)




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