Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條! A# l' p" @; W
會在每隻事件怪物的腳下顯示
( H9 R& I( ?& Q4 D, S問題是不知道為什麼
5 r5 y, c) M4 B) j- G) Z有時打怪打一打會跳出7 L$ j$ D( m0 ^  N7 J
---------------------------
& Y" E5 {* Y. h5 z$ K# u- k3 kXAS
4 }! q, l4 x' u  e4 R0 l---------------------------# r" v% P' X1 R* v. u3 |# }
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
5 D/ i8 f9 K4 y" |5 M8 S3 X) Y9 I: n+ P4 U
disposed bitmap
; w0 O2 W, _. o1 M---------------------------
- z. }' X+ R: n' @% ?0 d確定   
) {; [0 X% f: ?: O3 i---------------------------
! d" i" A- g5 ]1 w4 A: x/ C6 S/ y- l# l" r: y* R. w0 c
這是腳本
$ [0 j) Z" ]. a  t* z: f
- _. x8 P4 `/ p0 T9 D, H5 f
  1. #===============================================================================
    - s% C" @' a; i- B* v5 L4 u
  2. # MOG - s Hud 1.0      
    9 B" T! C! P4 ~: A/ R2 O% V
  3. #===============================================================================
    + V) R: t, p; u1 z, L% D6 g3 D
  4. # By Moghunter
      ^1 V2 O+ @8 y% l" N/ D- J
  5. # http://www.atelier-rgss.com2 d. z% k, b; v- `2 y
  6. #===============================================================================
    " X# X9 d( [3 k& A
  7. # Translated by Calvin624 7 ?4 Y# G( ]' C# C0 W* M2 H
  8. # http://www.xasabs.wordpress.com
    ; G5 a, m! x/ J4 u+ w
  9. #===============================================================================
    ; k; U9 S' n# y/ R* J! X  p
  10. ###############################-DESCRIPTION-####################################
    / V: m6 [& Y' k
  11. #===============================================================================( C, D# p- v1 N5 M
  12. # Personal HUD – displays the HP and SP below the hero.
    . I4 y0 b- D5 a% L0 p
  13. #===============================================================================; r& Y: X: p7 n% R) e) u* y; j! _
  14. #  J+ ^2 T! L9 W: D4 {3 g
  15. # Graphics required:
    7 b; s: k% b" H
  16. #
    $ `6 z/ t  D  E3 [0 ?
  17. # S_Border_HP_Meter.png
    % m1 u! m) u0 G& D9 G! u
  18. # S_Border_SP_Meter.png
    ' q# P! z0 H( I8 `1 m! I
  19. # S_HP_Meter.png
    * A: F1 ~  N5 ]6 C4 X
  20. # S_SP_Meter.png
    - v1 ]$ `* g* h
  21. #
    4 r$ A& H& m2 z: j4 w
  22. # All images must be in the Windowskin folder.6 v$ z$ Q6 k) f) l2 Z
  23. #
    6 p7 s$ N. U1 B+ h4 Z+ E8 R
  24. #===============================================================================
    " F( H3 ?+ U7 A3 i+ S9 S: {
  25. module MOG
    1 j. g6 ]7 z0 b) g% C, X9 P
  26. VISIBLE_DEF = false  
    4 t* V: v7 h: I
  27. # Show HP meter?
    2 I2 c" |/ p- A: o9 Q; C0 Q
  28. HP_HUD = true4 J/ z, s2 M5 z$ f) X" [7 W( y2 i
  29. # Position of the HP border
    % Q. N$ ~2 m7 p6 }% \% L- W. Z
  30. S_BORDER_HP_METER_X = -2
    ) Z* W8 U0 Y5 u6 Z. E9 E& P/ Y
  31. S_BORDER_HP_METER_Y = -2  
    - w" j  J1 `1 B& ~, J
  32. # Position of the HP meter( ]9 d8 J! [. x# a' v' E
  33. S_HP_METER_X = 05 t- D/ R# D- K" J% |( G- H5 T  D
  34. S_HP_METER_Y = 05 x8 `) {9 m8 Q
  35. # Show SP meter?2 z, y) P. ]# z' t# u$ v- q! x
  36. SP_HUD = true
    / z6 [# r, R- D6 Z) D" `" c
  37. # Position of the SP border4 S! M7 d$ x3 G6 `
  38. S_BORDER_SP_METER_X = 06 L; {9 l- N4 v0 h  W. U
  39. S_BORDER_SP_METER_Y = 10
    % g2 L, O9 |$ y5 q
  40. # Position of the SP meter' U, Q0 u+ S8 C8 L
  41. S_SP_METER_X = 0, m; b9 m$ M" \- c
  42. S_SP_METER_Y = 10% q8 U! U7 h7 k8 D  S
  43. # Switch to disable the HUD
    ( X% j# Z8 b+ k" C% }; \" ^; q
  44. DISABLE_SHUD_SWITCH = 5
    " S( M, C7 z& ]! w8 ]2 l8 i
  45. RANGE = 20" X4 E" J9 X8 ^. _9 \
  46. end
    & a/ x7 j9 B# ^- }* f
  47. #===============================================================================8 A/ t5 [. |4 {* U2 R
  48. # S Hud
    0 L( M1 @' [' o0 \
  49. #===============================================================================$ {6 u. v4 e5 [5 l! D
  50. class S_Hud < RPG::Sprite/ H! {" x: P1 l8 x5 v: p
  51.   include MOG' H/ j( V. j& p+ w* L& L+ G6 q
  52.   #--------------------------------------------------------------------------! }; f6 u0 z$ l  X% Q. e: b2 _; D3 B
  53.   # * Initialize1 p+ K( q% Y- k; V3 G1 o7 r, @8 X
  54.   #--------------------------------------------------------------------------% ?7 e0 p. A$ `, I
  55.   def initialize(enemy,viewport)
    / R& ]0 u2 K9 }$ i
  56.     super(viewport) , H  P, R' x4 Y5 h' p2 e7 G' w
  57.     @enemy  = enemy- f/ y& n, O7 j) J- u5 z
  58.     @battler = @enemy.battler
    . t! x( `8 a* C
  59.     @old_hp  = 0* D  y3 N/ V3 V5 x
  60.     @old_sp  = 0) `8 s# w6 D9 Q/ U  `4 b- J' S; a1 |
  61.     @old_vis = false
    ( e' K5 y; w9 k7 o: ]4 d
  62.     self.bitmap = Bitmap.new(100, 100)3 `$ l  d' I. y; R- W  o5 u0 N
  63.     self.visible = (VISIBLE_DEF)#false6 u$ M: [4 w3 n+ Q, F1 @" i# e5 |
  64.     self.z = 100
    2 F) i$ K. X' |$ C9 T, E
  65.     #HP Border -------------------------------------------------------------------
    9 a, k0 T8 Q2 x4 V6 C7 j
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    # X8 j" N& [. M& R9 l) o+ a' S
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)/ W/ g/ W( C' Z- \$ d/ U7 D9 j
  68.     @layout_sprite = Sprite.new+ a5 `5 z, M. p9 @# s/ ^1 D% ^
  69.     @layout_sprite.bitmap = @layout_bitmap
    % U0 y  H! h/ B; P% Y/ X- Z% L
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height): v$ v; D3 m7 C& S* Z. J# i
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    + ^( @& x7 }0 a, B* m7 l
  72.     @layout_sprite.z = 5001, F% u) n7 ?% l2 \( l4 f) @/ V! q
  73.     #HP Meter ---------------------------------------------------
    + M6 |/ ^1 L! i& U# W' L
  74.     @hp_flow = 0# K- o8 k) F5 q5 r. l3 Q3 e. [
  75.     @hp_damage_flow = 09 E5 P+ Q3 d0 s8 E* T7 B
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    , ?5 r2 T( t& z' b/ i: h
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)5 g$ Y+ q7 m, |, ]  `. J( s
  78.     @hp_range = @hp_image.width / 3+ |) k7 \4 c9 @! }( N; y+ N& m
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  3 ~- b: D  `) l% d* i
  80.     @hp_width2 = @hp_range / 2
    4 c6 t* n  y8 Q( I
  81.     @hp_height = @hp_image.height / 2
    8 ~- X. |$ K+ [% J" W  s* u, o$ |5 \
  82.     @hp_width_old = @hp_width
    9 r8 r, `7 B6 K% ^3 z
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    9 O# t0 c* Q  b0 d3 |; K4 Z
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    ' \+ m2 H% d/ u3 Z1 \6 S
  85.     @hp_sprite = Sprite.new) j, Y1 f& Q& k$ k1 q+ v; V
  86.     @hp_sprite.bitmap = @hp_bitmap
    . H% y8 I8 J* a0 V5 S' q
  87.     @hp_sprite.z = 5002" x# R: ?# V. A6 {& T2 s% y
  88.     #SP Border -------------------------------------------------------------------8 V3 e2 I* {9 H9 h
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")) z# D8 _; @) }
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)- s0 H, ^, Y; ]0 t8 }* K& d0 E; S
  91.     @layout2_sprite = Sprite.new
    * @' A/ k$ s7 ~. M
  92.     @layout2_sprite.bitmap = @layout2_bitmap  Z6 ~% O7 u; O1 I& p7 f
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    ) U6 v3 _- U# c' ]
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    & I4 l# `6 K" g  W& D  ~5 }& c
  95.     @layout2_sprite.z = 5001    ; D& j8 G2 d' V( q
  96.     #SP Meter ------------------------------------------------------
    3 S; \2 ^# G: @% w; Z4 W. A$ G
  97.     @sp_flow = 0& Y8 a. |0 ^  q& ~  h2 Z; \) K
  98.     @sp_damage_flow = 06 K( t7 x6 P; n7 J. y7 [" J- r: g; ?
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    % o  ~7 t5 a' H' Y& r& [( T
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    $ V- o; f7 w3 ?. C8 ]& p& l& w
  101.     @sp_range = @sp_image.width / 3
    & v) W* H7 }8 N/ O8 J6 o% M
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  & y/ d: u2 P' x
  103.     @sp_width2 = @sp_range / 27 w2 T  @: w9 V! f
  104.     @sp_height = @sp_image.height / 2) J; D# E1 L# N/ \- \
  105.     @sp_width_old = @sp_width% c% {6 X6 O9 k6 S
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    2 h5 x) j# d9 s, {7 r1 m3 G
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)7 _3 x. k$ l! {; n: @$ r: R+ N7 k
  108.     @sp_sprite = Sprite.new
    $ d7 Y- F9 E5 p7 J$ f& H% X
  109.     @sp_sprite.bitmap = @sp_bitmap
    ' F( {1 N# `6 }; w( ]2 P/ U
  110.     @sp_sprite.z = 50026 U. O$ C. k( U4 F
  111.     update
    ( w9 e' J' ~& y
  112.   end
    , f& S# D1 N0 l4 J- W- o+ i3 y" ~
  113.   #--------------------------------------------------------------------------
    # Q9 v+ S7 b  V* e; w; }
  114.   # * Refresh6 H6 T* O- |0 S) s$ S3 {
  115.   #--------------------------------------------------------------------------
    1 P/ s$ h# Y$ E  b7 b
  116.   def refresh
    0 x' g+ W0 g: m
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    + I6 ~. h  U5 G: P  T" x/ e
  118.     self.bitmap.clear# J" q8 g7 V& ?2 r  {% w# X, I
  119.     @old_vis = self.visible
    ) ^( ^" k8 w2 U3 [  H6 L
  120.     @old_sp = @battler.sp
    3 i& U6 n* h, G0 u& E2 r
  121.     @old_hp = @battler.hp
    ' Q3 H* ?) N0 P0 v( h3 E5 k+ ~4 p9 t
  122.     hp_flow_update( ~6 h, b) g0 o. f! U4 s1 ?
  123.     sp_flow_update
    3 X' [; p2 P; a9 P( x
  124.     hud_pos_update0 j$ ?' q8 C+ m4 m' i6 \" s# D  x; o
  125.     visible_update
    2 W, D: r$ r& i* U6 p& b2 z
  126.   end
    5 v& I8 F0 X6 [
  127.   #--------------------------------------------------------------------------9 K. q0 @5 H- O9 Q: h8 _& L* w
  128.   # * Dispose, M- ^8 w6 A3 i  l. y/ h
  129.   #--------------------------------------------------------------------------: t8 {5 s4 D9 p' k% ?1 J
  130.   def dispose
      o* A9 R0 a! Q+ Y+ F7 j0 J5 q
  131.     #HP Meter Dispose: Y  h8 A& X/ r% d
  132.     @hp_sprite.bitmap.dispose
    ; K1 S  z2 A) U8 y; y4 E! W
  133.     @hp_sprite.dispose
    0 n' B+ }+ z2 [$ S6 w: f5 d
  134.     @hp_bitmap.dispose( b0 }4 w/ a( E( R
  135.     #HP Border Dispose. _# Q, @( V5 t4 O4 ?5 S/ R6 \0 a
  136.     @layout_sprite.bitmap.dispose
    + H9 T$ d- B' b; t, ^
  137.     @layout_sprite.dispose0 l3 r8 O& v" Z- w+ f
  138.     @layout_bitmap.dispose
    ' r+ r' g  j' D5 M/ Y) z
  139.     #SP Meter Dispose
    ) X( ?$ T7 K5 c" n3 ?4 k+ A3 s6 o
  140.     @sp_sprite.bitmap.dispose
    6 D; `8 |: b7 E" Z# B# Z( C
  141.     @sp_sprite.dispose) l/ F1 R0 Y: c! m, r: \' B
  142.     @sp_bitmap.dispose" O" ^3 a# X2 O4 p: Q
  143.     #SP Border Dispose
    + B2 U9 T( O  w) X
  144.     @layout2_sprite.bitmap.dispose- f/ |7 f& _7 U7 x$ v5 r
  145.     @layout2_sprite.dispose
    7 P0 U! t) {& \( Z3 r, g+ d
  146.     @layout2_bitmap.dispose$ f: A( c5 |& E; d& r. a. {
  147.   end! ]2 ?$ v. ?" O/ e( h
  148.   #--------------------------------------------------------------------------
    ! t3 `2 t" s8 I" {+ z5 Z4 T) ^
  149.   # * Update7 g4 b8 W0 a3 a  G4 _
  150.   #--------------------------------------------------------------------------9 W  Y2 H; z' I5 G2 I$ D
  151.   def update
    7 X! ]" x9 P8 n
  152.      @battler = @enemy.battler % W1 `: \( u* m. f
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?( B8 ^' @: P, b: o$ F0 D7 W
  154.      if self.visible8 q0 b9 N  s- l' N  c2 E
  155.        refresh
    % W- ^  u7 `' Z& }
  156.      else2 j, q! f9 w/ |7 a. Y9 ^
  157.        self.bitmap.clear# U7 D: A1 b3 H; D9 ]$ S+ y2 [: G: {. K
  158.      end0 S1 J& s' K% C4 K2 {, l% P
  159.   end
    : y4 L$ k3 r6 F- v  I2 P
  160.   #--------------------------------------------------------------------------2 ^1 v+ ?, ?9 O$ x  A) i& g
  161.   # * Visible Update( Z( {. D8 Q$ c
  162.   #--------------------------------------------------------------------------
    / R$ W3 l- `# ?4 x% C0 |+ E3 `
  163.   def visible_update. F! `( Q  d6 X) c! e2 A, X
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true. {$ J! _8 {9 Q' _2 k% @9 i0 G
  165.        @hp_sprite.visible = false# p$ Q( g5 |$ q
  166.        @layout_sprite.visible = false6 U, N8 L% A! W, ]' S
  167.        @sp_sprite.visible = false( P8 ]  u( m8 S3 E& a) o
  168.        @layout2_sprite.visible = false. i! A5 v1 e, ^( R$ O7 `
  169.     else
    4 S  }5 O& i- ?6 q8 O& k5 I
  170.        if HP_HUD == true
    " c. N$ N* s/ K, R; C3 m
  171.          @hp_sprite.visible = true
    $ v1 ^4 g9 p* n1 [& H" V
  172.          @layout_sprite.visible = true9 R( a  Q( W4 Q3 o1 T& c
  173.        else3 M" a  }- O* K2 R1 h
  174.          @hp_sprite.visible = false8 i9 p3 ?5 I* W5 ^8 v( O
  175.          @layout_sprite.visible = false
    9 e2 {3 s1 A% d
  176.        end  2 L/ K' Q" Z9 J" k) G
  177.        if SP_HUD == true: Z/ T- Z, `* ?$ m
  178.          @sp_sprite.visible = true
    " y7 j& J3 ]: K% A0 Y% K* Y% |
  179.          @layout2_sprite.visible = true* T% U  ~( O3 |3 i5 b; g: n2 h' o
  180.        else
    9 Y* h4 X; V& A2 {2 P* t2 g  g
  181.          @sp_sprite.visible = false
    9 T1 j' B) n; ^% P/ x& P  r$ l
  182.          @layout2_sprite.visible = false( M4 r& O9 _* n/ u# s
  183.        end - \( r1 K: o8 S1 o  a
  184.      end  
    ! Y/ C& B1 V  c  R, |: P% N4 E1 j
  185.    end - O. B2 y7 R1 z$ ^
  186.   #--------------------------------------------------------------------------4 j1 U! G/ Z/ e) ^; Y
  187.   # * Hud Pos Update
    5 s! T1 L4 h  A6 I$ w; v
  188.   #--------------------------------------------------------------------------
    . H. \: g& S6 v3 D  F
  189.   def hud_pos_update9 \( w+ f& K( D8 E! A
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    9 B; b0 C0 m: B- W8 l& A( G1 Q
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
      U4 O" D3 G, ^6 u7 Y! t
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X2 \0 p8 w3 w) Z# C
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y # f2 P0 N1 N6 _6 U* {: _
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X9 e: s1 I; R# E$ x
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  6 A2 k# Z3 r# x# q. Y
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    4 i: n/ b% |& G! p) z( X3 e
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     . T% a5 Z1 f: j$ I
  198.   end  6 W' f) |* k1 b+ M1 U* P$ y
  199.   #--------------------------------------------------------------------------
    $ V. a0 S) V- D, J( q& M
  200.   # * Hp Flow Update$ Y: C( p! \3 x+ w8 b! R
  201.   #--------------------------------------------------------------------------/ g  h6 N( d: \# k6 v
  202.   def hp_flow_update
    3 q. r5 n6 _: D2 J8 C$ K# C5 X
  203.       @hp_sprite.bitmap.clear1 X; H. C1 b- ~
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  6 P2 o+ T) e: \$ ]' ~" N5 e6 w1 q
  205.           #HP Damage---------------------------------
    6 E; s$ L/ M) k( n! i6 x
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100! y- A! T$ D5 I! ?6 g
  207.           valor = 0.5 if valor < 1          4 `3 P+ X8 [" Z$ Z% U
  208.           if @hp_width_old != @hp_width
    $ I& i2 A) m# C# S# V( v" B3 [/ F. T
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    7 s* t- C% g: Z) @1 b
  210.           if @hp_width_old < @hp_width 2 J) ?1 [0 d/ a3 P7 X
  211.              @hp_width_old = @hp_width+ D# ?1 T2 z4 g
  212.           end      
    . c; Z, b% j7 U$ k7 P1 D' h
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    9 s& E- @: V4 ?) @! ~
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    2 v0 S! l4 m6 x6 i1 U  `, w" e4 D
  215.           end        
    0 Z: }. K- @, w* ^
  216.       #HP Real------------------------------------9 L  T, }6 a/ y
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    : A, G- C: {" I
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    + J% m( c' X- z) s/ |
  219.       @hp_flow += 2  " A* w( {/ z* v/ U& @1 z$ v
  220.       if @hp_flow >= @hp_image.width - @hp_range/ x1 X! ?2 N0 m* O
  221.          @hp_flow = 0  ' x# R$ f+ q% E  z
  222.       end" t4 D6 ?; s9 o2 p6 }0 T
  223.   end   
    * _7 {& Q  s. h, P1 z) {( a
  224.   #--------------------------------------------------------------------------9 B# ~- d! Y: A# w2 m/ C) `  L
  225.   # * Sp Flow Update
    9 F+ H; u, q! `+ N
  226.   #--------------------------------------------------------------------------+ J4 ?% h: @3 \8 r
  227.   def sp_flow_update
    + i' u  h, _2 k/ @& w. `
  228.       @sp_sprite.bitmap.clear
    ) {0 |( I" [- O4 @' G" |- ~
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    ' Y1 b* w1 Q: N
  230.           #SP Damage---------------------------------
    % l$ v- Y- x$ j. H+ A
  231.           if @sp_width_old != @sp_width& Y, Q, W1 N3 t- r; ~
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100, v, y9 E; S6 B; `+ Q5 }* Z
  233.           valor = 0.5 if valor < 1              ) c) U  A1 e4 X+ ]3 F* O, U0 T
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  5 |0 ~" T4 Y' H7 f
  235.           if @sp_width_old < @sp_width - M0 v" ?- x' ]2 N( L: R) A, N% }
  236.              @sp_width_old = @sp_width, z6 y, `; W. f
  237.           end      
    1 h  N+ v. f9 e
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    # L) w" a$ K3 D" l
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    3 x# I- U3 r8 T0 j. R8 q
  240.           end% H5 L  y+ f2 }1 H! H/ u# {
  241.       #SP Real------------------------------------
      a: T) P- L, s; N& z+ q5 w* e
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)0 x: K) L2 U' G+ i! d, O. O
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    2 K8 U7 A( G% }  E2 ^
  244.       @sp_flow += 1  
    % [% e+ X8 J2 J1 X5 n; j
  245.       if @sp_flow >= @sp_image.width - @sp_range
    . @0 z* M7 n- _( C; K2 T
  246.          @sp_flow = 0  
    5 L& @4 g6 p; _+ J0 x- w
  247.       end, V, z2 N2 }% ~# b7 \# S6 L  D
  248.     end            . G# Y" P  L1 M; P( \" o9 D0 Q/ e
  249.   end( }/ l+ j& k! S2 y7 h
  250. #===============================================================================2 x. p/ i( o% T4 N+ F6 ?
  251. class Sprite_Character < RPG::Sprite
    . L/ Q( m. G% L) y9 o. @
  252. #-------------------------------------------------------------------------------
    $ ?. C+ n1 e0 U8 i5 {& ]( Z
  253.   alias :xas_emini_hud_init :initialize1 S, W3 V" n( I2 V5 _
  254.   include MOG
    6 D3 x, z. p  `' }2 o  ]
  255.   def initialize(viewport, character)
    9 L, ^: w) i  |+ g1 E
  256.     xas_emini_hud_init(viewport, character)& X( R5 M% m0 \( }
  257.     @viewport = viewport
    ( [! F$ [. C! o2 R' K8 H
  258.     return if @character.battler.nil?
    0 U7 Y; T3 N3 g! \/ _
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    - d8 c% n1 [% l* y
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    2 _1 j  i% m6 T. m
  261.     return if @character.battler.is_a?(Game_Actor)
      M. b) D) I% E3 {
  262.     @bars = S_Hud.new(@character, @viewport)0 k( X' h. e0 M; {3 ^
  263.   end, t: O+ m7 Q" Q- @' J1 _
  264. #-------------------------------------------------------------------------------
    " O( e# ?! Q- q9 p7 a( V
  265.   alias :xas_emini_hud_up :update! {( ^9 A3 P! D2 Q
  266.   def update
    " e" m. P# \- f. E( T
  267.     xas_emini_hud_up
      @: g1 E! J5 ]. q2 u' Q4 ]
  268.     return if @bars.nil?" Z9 E4 p( l& e+ {, U5 Y
  269.     return if @bars.disposed?
    " Q) j! T2 c. m* I3 T
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs; F  i& z3 c! J& j1 z. I8 i* m
  271.     @bars.visible = (dis <= RANGE)  }& Y' J5 V( N) B: Y4 Q
  272.     if @bars.visible- r7 G" g# O; x9 x$ ^4 e
  273.       @bars.x = @character.screen_x# - @cw / 4
    ' n; G# o7 p+ X1 i$ M) t. p4 @5 s
  274.       @bars.y = @character.screen_y# - @ch / 4
    : S. }& n- s3 I" m* {
  275.     end, }5 t. K& D& D; i) Y/ L
  276.     @bars.update  M+ a8 U9 b* {4 p
  277.   end
    - T# G+ [& n! M. u, W
  278. #-------------------------------------------------------------------------------
    * m' T+ J; {- Z, O# L) y' K
  279.   def dispose# a3 R$ k3 _7 T$ F( q9 n
  280.     super4 r  {" n% G! |/ C- ?
  281.     @bars.dispose if [email protected]?
    3 P8 m( y" u, e4 `
  282.   end
    * G' N. ?9 @- A
  283. end0 A7 I  A# o0 `+ K$ A# H& V

  284. ; ]6 C' C9 P% u; l& Q! W
  285. $mog_rgss_s_hud = true
复制代码
0 G7 H- k% H7 [4 r! q$ e- w- a1 j# d
6 v& Q. V' u% m: f5 i; c

) o* p5 C; j- `' Q" H上面所說出錯的203行內容為/ H4 l( I8 K/ \) u* p$ t6 G
@hp_sprite.bitmap.clear8 _1 `( ~3 S# J# U( H6 U0 f
: X- o/ L! |! K5 I# p% g# f
想知道怎麼解決
9 C, |9 N) q) R+ E8 u$ S# D  B4 K) j/ r* G7 U/ c% }1 q, N
該腳本支持3.82
1 v( j9 Y3 x0 T6 N, X: X. F6 |' x( b7 J6 F9 |: O3 l; a
下面是圖檔,要塞在Windowskin下
4 s) E7 X( p! y# ^' `! I% @. s6 F; d6 w
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
9 m& u) y. E9 {5 H7 v
0 h# R2 j0 ?2 a, q3 H0 U4 Q# u
- X  e8 u0 f5 T
) \, U! U2 P4 U% ]  L( F
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适- Y6 m; E8 z( k, X
结果尝试刷新了一个已经释放的图形
; g- Z( j: ^% [! u
  b  j# E* _2 x) |9 J' \9 ?8 m  K  {: }8 J+ L4 H

2 c3 H& d* N5 `+ b0 f, u, P% Z9 e, {虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?/ a5 T2 I  c9 |# K' k/ F6 I
复制代码
不要后面那个条件貌似就没问题了。
- k& b  ~8 p& C6 ?, B' D" x
$ A- Z- g' I: m$ m
- ~) N( Q, j! W, l4 V& o ( B% {5 L- @$ q, a
9 ]( g* `% X4 u+ T6 |

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 2 G' V, K- V6 r- y  R0 ~, [, s8 ^" ~
貌似是释放的条件不合适
3 }8 r' a, X3 F. F+ D结果尝试刷新了一个已经释放的图形

5 i# q+ ^# ^- l" ^把後面那個條件弄掉後,的確沒問題了$ |3 N3 x) u8 I" @, {# y
目前從關頭打到關尾結束都沒再彈什麼錯誤
8 N" `$ x9 f8 A) ]7 k2 o非常感謝
& E0 x% W4 C& _
/ M% ^8 W8 T5 Y8 `6 R不過我是參照著別人腳本改的# I6 L+ Y& p! g6 I& W
他寫的條件式也是那樣,但我用他的沒什麼錯誤
* T, U& w6 V* s4 O0 m, o' z不知道是怎麼回事
, K. G& b9 {& l8 _) t8 |, ?是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的% g/ a9 E# {% m8 E, l6 h
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
8 p6 N! V; x2 J7 |嘛..这个数组吧..我在以前试写队友的时候关注过一点
# ~4 h' M$ u/ _% _6 F3 N7 Z; x& e1 C不知道XAS内部对它做了什么手脚还是为啥,
3 z) w5 a$ y+ [! g) a4 k% m+ e/ z总有那么一瞬间,没有被消灭的敌人事件也变成了nil5 ^5 J7 M4 U, B; {' b( P

6 x6 l# b4 D6 q$game_map.events.values[@enemy.id].nil?  x* a' u1 y  h& _
因此自然而然的返回true并符合条件把图形释放掉了5 g- V- n6 _' [( a1 `3 D5 B

8 m/ X2 [  J! z9 u0 k' |LZ应该有注意到吧,
/ k! ~$ J  C3 [我测试的时候发现报错前几帧,图形会消失,
3 z. s/ @5 e# _! E2 {+ a; I应该就是“误以为敌人被消灭”了。* B; V3 W( v5 [' N, ]
; v6 f9 U1 l" u3 {* x9 t0 \/ X
受限于个人水平,至今无法找出$game_map.events的真相... R- ~' ^$ D& M/ l0 ?2 {4 p/ b

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
( c+ s3 u' m+ @5 N1 [& P$game_map.events( f& A( u( y# e8 m0 ~3 h
嘛..这个数组吧..我在以前试写队友的时候关注过一点' t; H; U. d* u/ O  y" H5 o; h5 Q
不知道XAS内部对它做了什么手脚还是 ...
  |+ ?  N+ g1 O) h' X
當初我把那個條件式看了三遍,都不覺得他有什麼錯
/ p; C4 n4 w+ h4 s/ W2 o% x原來還有這麼深奧詭異的事XD) R' m6 W8 P( L& O3 R; ?
# [% g7 ~! B3 `# q! p* l$ [7 Q
錯誤發生前的確會有圖形沒顯示出來
+ `' a8 n9 n+ z不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...' ^! S( i4 s# |1 L6 S: o9 s0 p9 ^/ C
沒想到居然是詐屍了XD
& B7 I) w+ l+ }9 B: M8 I8 v: M- f) }8 z
不曉得3.91有沒有修正這問題...$ y0 s/ r/ I' r
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。' l. ~; T) r, b" a6 }! I% R2 ]$ j

5 y% W4 q) Z5 ^) j: m; f的确
4 L9 N5 l9 M  B9 o1 A7 I用惯3.82之后想去整3.91觉得压力甚大..
7 \3 a) N$ c0 A. X4 t干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。9 W# M( a, M" S( T7 ]$ f* s
9 T& |1 b, H% S3 q
然后加一个判断处理的。(我记得有一个disposed?)




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