Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條/ \3 w) h4 [$ g$ R: ?8 Y
會在每隻事件怪物的腳下顯示6 p% C: V! o  j8 d$ z
問題是不知道為什麼
7 r. B* P: y) U8 s/ |4 z( I% {6 l有時打怪打一打會跳出* \1 z, C2 e% J( ~! ]3 \
---------------------------( I0 S& Q8 o- }6 D" m, ~
XAS; k) |5 @0 p! ?* ?# Q7 {
---------------------------! m  p2 B, t6 T* }, k
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
8 ~4 J1 A7 M, ^/ z+ j/ {) U6 {+ D/ M$ I( ^$ w
disposed bitmap* D+ T  u$ r" }% U7 f
---------------------------5 p1 I* F4 v/ x% f0 `" X- l; A% d
確定   
9 F5 u( m0 Y& r3 Q0 q, S---------------------------, a7 U& q* ^- p; \9 k

0 _7 ?9 I) o& ]( s1 ^* q/ [+ R/ ]$ a這是腳本
- ^4 b1 Z) o& {6 L
, `  k% p! k0 O# Q/ y8 _
  1. #===============================================================================2 _5 _9 q# X. }) q
  2. # MOG - s Hud 1.0      ' F1 z/ l, ?8 X2 D" R
  3. #===============================================================================
    2 s2 r. S3 r$ x! v8 V, C. E0 E$ S1 G$ b
  4. # By Moghunter ( H/ K, L$ Y/ \# t6 s
  5. # http://www.atelier-rgss.com
    % q) F( p) A/ D1 L  _
  6. #===============================================================================6 [  f# ~0 @7 d/ [" N% z7 A' ~
  7. # Translated by Calvin624
    $ H; E  W5 h( k9 J: W
  8. # http://www.xasabs.wordpress.com, F' `7 v# |! V
  9. #===============================================================================- M. I, R+ t5 t& N- E
  10. ###############################-DESCRIPTION-####################################: l' u: w9 E9 R) h5 Z* Q; M
  11. #===============================================================================
    * u, Z$ u9 g6 ^0 d" H6 L
  12. # Personal HUD – displays the HP and SP below the hero.
    & d& T0 g/ C0 ~; K! A
  13. #===============================================================================
    ; N! k. D1 H* t( i: i* X  U  f) F9 X# u! b
  14. #+ R: }8 n" S! m5 Q
  15. # Graphics required:% f& {5 c* J* J0 z2 O* i
  16. # + y: m! k: e7 k( ^% L+ X9 s" P
  17. # S_Border_HP_Meter.png
    ) `+ d3 S7 n) i% P6 {
  18. # S_Border_SP_Meter.png
    ) o: O' }4 R+ D  B
  19. # S_HP_Meter.png" T/ v  Z1 U7 D4 N9 U5 O' E' n
  20. # S_SP_Meter.png
    ' Y( t" w6 G$ {- y8 x# i3 N4 |
  21. #) r  C, ?  [6 k, w1 ^3 p5 a
  22. # All images must be in the Windowskin folder.0 G* g% ]9 ]4 O" X9 c
  23. #
    ( Q# V. V( O- E
  24. #===============================================================================
    2 U& A. y. h6 f( o" _+ J" Q
  25. module MOG9 w4 E& i6 M. w' s* e2 J7 \) I
  26. VISIBLE_DEF = false  2 P6 \: m9 @. b+ u: h: L3 U+ {) W
  27. # Show HP meter?! u& Y1 z) l! ^3 |6 h
  28. HP_HUD = true, \0 p' Q3 t0 k
  29. # Position of the HP border
    ; l; C# _* r( M
  30. S_BORDER_HP_METER_X = -22 [: D2 ?! z3 I/ k4 \" _3 Y
  31. S_BORDER_HP_METER_Y = -2  
    4 n; ]+ q  z7 d- j* i5 \2 H
  32. # Position of the HP meter
    5 O2 Q8 q/ r/ [. p# q0 @* h' w! q
  33. S_HP_METER_X = 0
    3 `, c8 o) _& }
  34. S_HP_METER_Y = 0; h7 ?$ }* \  r, ]0 P
  35. # Show SP meter?
    2 s. L" U! C' H+ z$ F" t+ u+ V
  36. SP_HUD = true
    ) X3 k8 o$ n/ u  i
  37. # Position of the SP border
    3 S' M! U8 u2 K8 J
  38. S_BORDER_SP_METER_X = 0
    3 I3 J  L: ^1 F0 Y0 k: K. |- o+ H
  39. S_BORDER_SP_METER_Y = 10 . W, S- J) `" ^# [) _9 D: D
  40. # Position of the SP meter
    7 W# e& V0 @) w
  41. S_SP_METER_X = 0
    # |; c  S! i$ ?7 Y+ N2 b" ^
  42. S_SP_METER_Y = 10
    ; c7 Z4 g, F. |1 G- d
  43. # Switch to disable the HUD) ]$ o5 I: V5 N6 i
  44. DISABLE_SHUD_SWITCH = 5
    ! X9 u1 i* I7 h& z- r0 n% |
  45. RANGE = 20; S8 w9 S2 O. m; \3 l
  46. end
    - w* A9 v. z" J# n
  47. #===============================================================================! l6 q$ h3 ?7 V8 W- i! S
  48. # S Hud
    9 {) W0 @$ T3 |
  49. #===============================================================================
    # g9 [) f& r3 g! L3 d/ Q
  50. class S_Hud < RPG::Sprite$ ?7 j5 w5 @4 z  E) U# f& R* B
  51.   include MOG
    ( H+ D8 N6 ^! u. ]1 p. `7 X+ p
  52.   #--------------------------------------------------------------------------" h+ i1 O( }( |7 A2 T
  53.   # * Initialize
    $ G& E+ g" h' Q9 m* z
  54.   #--------------------------------------------------------------------------
    + A) l6 t; ?7 s& n
  55.   def initialize(enemy,viewport)
    1 o8 s. K4 U9 i/ o
  56.     super(viewport) & @2 @+ t% S0 |4 c. X8 |) M% l5 r, b3 j
  57.     @enemy  = enemy
    ) j) M  _2 O! @3 T
  58.     @battler = @enemy.battler
    * x2 B; d# d( {8 ^$ \2 i9 A/ R8 J
  59.     @old_hp  = 0
    & u* ?8 [6 {- i4 |, D
  60.     @old_sp  = 0' r& x3 o$ c2 [
  61.     @old_vis = false
    1 e' w( V  ~& F. d
  62.     self.bitmap = Bitmap.new(100, 100)- w9 O" i7 F" j
  63.     self.visible = (VISIBLE_DEF)#false- i" C$ W4 Q# A5 c
  64.     self.z = 100
    ; s: f' {, Z+ ]4 _, S4 S
  65.     #HP Border -------------------------------------------------------------------! v9 N+ Y4 B1 N# v. a' `1 ]+ K
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")# Q+ {" \- V, y$ ^0 j# i
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    2 Z: F6 K2 a9 v6 J
  68.     @layout_sprite = Sprite.new# l' L! n9 v' F+ k
  69.     @layout_sprite.bitmap = @layout_bitmap
    4 v9 x! [* K0 [+ |! ]) F7 k$ B) j3 ^3 X
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height), W7 W- z2 o2 r9 F/ m
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    5 b/ J+ Z- b& x0 s! d0 z
  72.     @layout_sprite.z = 5001
    8 l2 P8 t9 @! S/ Q& W* L" W  W& Z
  73.     #HP Meter ---------------------------------------------------
    3 O* `' ~8 G( {! T3 G% S
  74.     @hp_flow = 0
    5 e: u+ [, w) a( H5 F7 d
  75.     @hp_damage_flow = 04 [3 w/ E$ Q2 x, M# `& R
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    : ~3 A) Z, R, j8 t3 k' c, K
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)/ D  k4 |. }7 R2 A
  78.     @hp_range = @hp_image.width / 3
    0 K8 w) G! S7 g' \2 Q! l( o  n
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    + g# c9 E: C* u" @6 l
  80.     @hp_width2 = @hp_range / 2
    $ ?8 \+ `; i5 q
  81.     @hp_height = @hp_image.height / 25 x, q9 U& {* f9 X  I" @/ F
  82.     @hp_width_old = @hp_width
    " q0 |% C% V9 x0 p4 I9 M2 Y
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)/ E% T9 i7 u8 f2 Y9 _
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) $ k  a7 y6 E. w# A
  85.     @hp_sprite = Sprite.new0 r9 b1 }# D. W$ R' V
  86.     @hp_sprite.bitmap = @hp_bitmap! G7 X1 t# ^) Y1 T
  87.     @hp_sprite.z = 5002
    0 ]1 Q" P! p. `+ T, }2 u
  88.     #SP Border -------------------------------------------------------------------+ }. ~+ q6 N7 W& c1 m
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter"). S% J( ?" v4 H/ u
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    # O8 b$ p2 k% z1 N
  91.     @layout2_sprite = Sprite.new
      c2 ?0 v! E6 t/ z
  92.     @layout2_sprite.bitmap = @layout2_bitmap) q% f5 n) a+ J0 b
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    # s: T, T! ^+ O) _% }
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      ' |/ X2 x( d0 ]* [1 D8 \
  95.     @layout2_sprite.z = 5001    4 T7 ?2 J6 y8 r& h, c
  96.     #SP Meter ------------------------------------------------------
    1 e+ z6 v! x  v3 @0 Q  u  Q4 a. p
  97.     @sp_flow = 0
    + R7 ~7 s4 t) e
  98.     @sp_damage_flow = 0
    * z' S5 d7 x* u( ~5 p4 D3 R" M- [; a% |
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    / g- t+ M: N0 u* @+ K" a* ]
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)# ]6 J$ U: \; J# K# o. Q7 C9 u$ U
  101.     @sp_range = @sp_image.width / 3) \0 n8 g" [, p% }
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    : ~1 B8 M5 ^, ?, z# ?; z
  103.     @sp_width2 = @sp_range / 2
    8 t3 l* ^- G: |1 t  `2 |( A
  104.     @sp_height = @sp_image.height / 2
    7 m' W* I8 e! U# R- W) i. U
  105.     @sp_width_old = @sp_width
    ' o4 }7 Q# T- g2 c
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    ) T" A: N. i4 {2 w# l8 M: L8 U. f, V
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)7 I/ u6 P; e7 F  q
  108.     @sp_sprite = Sprite.new3 Q0 b/ |) Y: x# I& d2 U( r" |
  109.     @sp_sprite.bitmap = @sp_bitmap
    + u* h" ?5 \8 ?# [4 Z4 C3 J: P! I
  110.     @sp_sprite.z = 5002& p& Y( |3 ~# }6 e
  111.     update* O& e  R" Z: c- S
  112.   end( P- e% F, w3 |- a1 A5 F+ \
  113.   #--------------------------------------------------------------------------) {( L, r3 V" Z" R3 V( ^& ]
  114.   # * Refresh' A' V3 E1 X( G4 `2 X, @; I
  115.   #--------------------------------------------------------------------------- o& d* x# [4 X9 @6 t- |
  116.   def refresh/ ^$ q: E* L, V- }
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible# Q& D0 P& ^! s0 o* l8 r* {4 z3 z
  118.     self.bitmap.clear
    ) B  G8 C5 D( v1 m9 i& {
  119.     @old_vis = self.visible
    * B1 |( `% M( `
  120.     @old_sp = @battler.sp( {0 s3 [- h5 E  w
  121.     @old_hp = @battler.hp
    % y8 J5 o& H: M: k
  122.     hp_flow_update" f; P  f4 I6 [6 m& ?1 w4 r1 J
  123.     sp_flow_update0 j! ]$ M% \7 m2 @
  124.     hud_pos_update# o$ R% Y% V: g3 y$ r) V; h2 p
  125.     visible_update( d* z+ ~# m3 v
  126.   end- y+ [; i4 }3 s" z0 I6 j" J4 E  e
  127.   #--------------------------------------------------------------------------
      Q+ k6 J9 S% r7 t9 B* c
  128.   # * Dispose
    ' F" S% w* {1 o3 x( f* P/ d
  129.   #--------------------------------------------------------------------------
    , l1 l" m! X% j0 \+ E
  130.   def dispose
    * J( Z9 z2 f5 e& T
  131.     #HP Meter Dispose
      t% O$ w, }* ^* E5 Z- b
  132.     @hp_sprite.bitmap.dispose& W' l. y/ z) r" x) Q, v/ c
  133.     @hp_sprite.dispose
    $ _) w; G; n$ h( r
  134.     @hp_bitmap.dispose+ n- G4 ]6 n1 Y# B0 [* C
  135.     #HP Border Dispose
    * @- i, @! L: m- G$ t) ]
  136.     @layout_sprite.bitmap.dispose
    ; L1 d( O4 D# Y% ~1 t( I
  137.     @layout_sprite.dispose; ~7 W$ N8 z, X! y5 v
  138.     @layout_bitmap.dispose  `( i0 w9 _) }2 I+ L$ }
  139.     #SP Meter Dispose! g' p& s; V- g! a
  140.     @sp_sprite.bitmap.dispose
    2 V5 H3 l. y0 q8 h% Z5 f
  141.     @sp_sprite.dispose- |6 R7 _( a# z' u8 ?+ ~+ p3 W
  142.     @sp_bitmap.dispose
    $ `+ h! ~/ z! _) @# w9 C/ Z( H# k
  143.     #SP Border Dispose
    # p6 @* `* S8 w$ X1 H3 V7 Q
  144.     @layout2_sprite.bitmap.dispose, Y4 s- g2 F+ j0 g) h8 ?) r* h2 o
  145.     @layout2_sprite.dispose! J& X& n; |% b8 J, ^  L
  146.     @layout2_bitmap.dispose. e( i1 e' k# u
  147.   end
    7 q$ o: Y2 Z3 C. K* }# d
  148.   #--------------------------------------------------------------------------
    ( q2 L5 o$ z- b7 J! k7 N0 x
  149.   # * Update
    9 p$ |! \: I+ `* H" v
  150.   #--------------------------------------------------------------------------
    * P, J  ~6 ]9 H, a5 p9 W+ `
  151.   def update* g" }* W  O6 ]6 }. w7 N7 N
  152.      @battler = @enemy.battler
    3 }% n* C- N: i- J2 z4 N/ z
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    ! \1 n2 m: c0 r& i1 t2 S- ?
  154.      if self.visible& z+ ~4 n9 u  K
  155.        refresh
    1 i+ K. R( y$ c" X
  156.      else
    ! Z/ s+ m0 m, M
  157.        self.bitmap.clear
    " K* t8 J6 r5 `; U4 {; d
  158.      end
    ! ?% U* d/ N5 @8 \9 x1 i
  159.   end
    ! @6 j5 q9 {9 e6 Y/ c1 N0 p, u
  160.   #--------------------------------------------------------------------------
    4 U  H; |# F# e* E
  161.   # * Visible Update0 d; Z. t1 P6 z' g% H2 v* _
  162.   #--------------------------------------------------------------------------
    & Q) B8 t7 V$ ?7 v3 D
  163.   def visible_update
    ! e  ^& h4 a1 n0 x  w
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true5 {6 ?6 A) ?, e8 j9 g4 B
  165.        @hp_sprite.visible = false5 T8 ]1 Y5 w+ r, p2 z# ~
  166.        @layout_sprite.visible = false* Q, h6 P! I8 k: Y; X. q/ ]& F
  167.        @sp_sprite.visible = false
    # B. K  R9 o( W1 b! @
  168.        @layout2_sprite.visible = false7 h& `7 Z# _  u& I5 P6 ~2 W2 [4 B
  169.     else
    : [5 ?: U8 V6 w
  170.        if HP_HUD == true8 P. V4 ?0 H$ H- ?5 h# @. A
  171.          @hp_sprite.visible = true
    * q/ U# f7 s& V0 u. R
  172.          @layout_sprite.visible = true, k1 U/ y1 K5 \( v' z/ {/ C7 I
  173.        else7 Z* q$ R( k( s* A' D0 T
  174.          @hp_sprite.visible = false% V; X% w& o# p- k1 M
  175.          @layout_sprite.visible = false
    # e6 z5 x5 R0 w+ Y# {, S4 a
  176.        end  
    ; j" H! u8 d! |. Q8 {2 w
  177.        if SP_HUD == true$ }6 I8 L; R. b
  178.          @sp_sprite.visible = true2 D* }& [  }0 v1 c1 H! B, y! h
  179.          @layout2_sprite.visible = true
    + F8 o$ T5 U0 v
  180.        else
    4 S0 u/ h$ a+ r8 o
  181.          @sp_sprite.visible = false
    8 J3 }/ E6 F5 |3 }. f8 @0 `& n! x
  182.          @layout2_sprite.visible = false  }7 Z0 q+ a: T5 F8 f% P( E
  183.        end
    ' J$ l$ L4 S" H3 S, D
  184.      end  " a" R' ]9 i' c0 }- F
  185.    end + j1 H) k, H! O/ g
  186.   #--------------------------------------------------------------------------
    & e# T: E3 n: S" R2 P
  187.   # * Hud Pos Update2 z  [: a# b0 w+ ~1 C( k, m* R7 [
  188.   #--------------------------------------------------------------------------: n- o: n! a9 \, l
  189.   def hud_pos_update9 }; V8 R' a# F) v* x5 ?: l
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X8 e, k' V: j) o% F& S
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  9 V4 E; Q5 p0 ~, S4 d2 ^
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    % O! l7 M9 T8 N! ~8 S
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 8 L5 B8 T& b- r
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    8 u+ z2 m3 E: n( S8 @' [" E
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  1 V& `/ e3 [8 |+ |( \0 _
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X* d. W3 I6 n& E" g' i% t% s
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     # n6 U; y# v6 Y( W
  198.   end  
    0 z, [8 d0 ^' s+ A( D1 V, t% B
  199.   #--------------------------------------------------------------------------
    - o6 @) X1 @0 o, z
  200.   # * Hp Flow Update& y( w2 ]5 |1 N. }% f5 S; ?
  201.   #--------------------------------------------------------------------------! G) l3 T) A( v2 y- a
  202.   def hp_flow_update
    3 \* F# S" y, q7 v' \
  203.       @hp_sprite.bitmap.clear: K+ _+ R. b. d2 w5 t! }
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    $ e" u2 U' X( v; g: G, [8 w3 c) U
  205.           #HP Damage---------------------------------
    9 s3 b  l$ b1 J. D: D& S8 @& ~3 s: I
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100& P7 \  o. [% K( v' S2 e
  207.           valor = 0.5 if valor < 1          7 i* P$ z1 p9 y8 [" k  R/ N% M
  208.           if @hp_width_old != @hp_width" i9 P, t& B, X4 i
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    & V5 P4 D& \0 a
  210.           if @hp_width_old < @hp_width
    ) @- q" ~- {/ P( \# P( n/ d
  211.              @hp_width_old = @hp_width
    ; j; u+ J! {' _1 k" P; J# R: m
  212.           end      
    3 G1 B- H6 o1 N' V# Q( q
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height). ~* y& W( S* k$ v* \& x
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       6 M; M. r' B: U
  215.           end        
    7 M( Q# ^& `/ v
  216.       #HP Real------------------------------------$ c% M& f9 p3 c
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    2 K) S+ z# E6 X3 a
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          $ c. A$ ~2 @. U
  219.       @hp_flow += 2  
    - f6 b- m$ Q7 u0 J
  220.       if @hp_flow >= @hp_image.width - @hp_range
    3 m7 p& H7 V. u2 V
  221.          @hp_flow = 0  
    7 k/ @6 E3 k& N
  222.       end, H( _( x/ o0 j
  223.   end   
    1 @2 e6 P2 [! x0 o7 Y
  224.   #--------------------------------------------------------------------------$ A; w8 e5 P/ j8 [4 X. u2 n& C0 v
  225.   # * Sp Flow Update
    7 C" X9 t* h1 m0 A- U
  226.   #--------------------------------------------------------------------------
    4 A- i8 j& Q) K3 j) P% y
  227.   def sp_flow_update
    & S; X3 ]( s, E+ \( U2 f
  228.       @sp_sprite.bitmap.clear
    : t/ H* T" ]0 M1 ?$ f' I; D' b" G- v
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    0 G2 V9 F" [' z% e: ?1 l
  230.           #SP Damage---------------------------------
    3 P3 Y% x+ `6 X' V& T% k9 @0 C, Y
  231.           if @sp_width_old != @sp_width
    ; G) A+ }4 m9 N* S) t
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    # p9 ]! n2 X. Z4 E4 q$ S7 C
  233.           valor = 0.5 if valor < 1              % ~9 d# S0 [9 R4 y# \
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  ' a+ _% c# T( u8 A& @7 }
  235.           if @sp_width_old < @sp_width
    1 Q% E, z- U6 f4 L% n: h
  236.              @sp_width_old = @sp_width6 t) ?- E0 P+ E
  237.           end      ; x4 z* O" |0 C* J6 E9 G) J
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height); t$ |6 i3 `8 \9 l$ E
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) 4 m/ B9 V" ?& Z& [) E0 }
  240.           end/ _# i: g* n# c: M( V
  241.       #SP Real------------------------------------, B# L" ]  G1 Z9 m/ J! @
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)+ G/ Y* l/ [% B8 {; L" B- B
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)( O% Z2 r# t; X/ O3 K; H
  244.       @sp_flow += 1  + j0 K; Z2 b$ I: I% L: `3 s, {3 a" M+ U
  245.       if @sp_flow >= @sp_image.width - @sp_range- r9 p  }9 w4 @9 o! p6 w7 ]
  246.          @sp_flow = 0  
    * Q; v/ G* \0 N% ]+ k
  247.       end# B& }+ h6 u) d  u: S2 N: i5 [
  248.     end            
    - h. @( @- d7 A; F3 D1 Q
  249.   end: S5 ?% @& e8 u7 m8 J
  250. #===============================================================================
    ) ^# ]: n! q! `. r; o
  251. class Sprite_Character < RPG::Sprite! ^; y) w7 m6 R
  252. #-------------------------------------------------------------------------------
      T8 p' K; e8 W, S
  253.   alias :xas_emini_hud_init :initialize5 S! r( z; W$ l  b
  254.   include MOG# U5 G2 ^7 w6 |
  255.   def initialize(viewport, character)9 V* i1 _/ ?6 Q! `6 \1 }+ x
  256.     xas_emini_hud_init(viewport, character)5 O  I( U6 s' e* e2 W% N
  257.     @viewport = viewport
    ' P. c* y5 v% R2 L3 M
  258.     return if @character.battler.nil?/ a3 W  d. \* X( i8 r9 h  a7 q7 T
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)" I- z' I- }5 }- w# N
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)) `" |2 L$ _. j9 f: w
  261.     return if @character.battler.is_a?(Game_Actor)) L0 j- r' z: ]- c7 [, z
  262.     @bars = S_Hud.new(@character, @viewport)
    ( v! w. f4 C% a/ n& n$ @" k) L" t
  263.   end
    : ^; i" M- ^) b/ u& o! m$ U5 A$ s
  264. #-------------------------------------------------------------------------------
    ( d5 m5 i2 U; q% v
  265.   alias :xas_emini_hud_up :update  w% e+ a, z3 t+ K! L/ b% H
  266.   def update
    9 h, Q7 y. X( _
  267.     xas_emini_hud_up
    - ]! r& ~! ]' c. M5 a
  268.     return if @bars.nil?; S' k( C/ v5 D7 ^7 G0 x
  269.     return if @bars.disposed?
      A# b! ^& q! g7 S8 W# C# l
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs$ ~+ `+ ~  F4 V: d8 T
  271.     @bars.visible = (dis <= RANGE)
    7 x+ {/ B" H' w' W( `: U* o8 U
  272.     if @bars.visible# r: q  {3 J3 G- O1 N" ]
  273.       @bars.x = @character.screen_x# - @cw / 4; t* J2 U8 _7 _1 @$ @0 w4 {+ [
  274.       @bars.y = @character.screen_y# - @ch / 49 a( E" M' @9 U' x: B6 p# y& i
  275.     end" z% r2 c; H( V% y. u9 w# Q- X
  276.     @bars.update) q5 ^) U) \8 |0 {) I; i' E4 ?
  277.   end! @+ b2 f& H, Y+ g
  278. #-------------------------------------------------------------------------------7 K# t% h' J' p/ s# [
  279.   def dispose
    * X5 k3 K% o8 e: v. F& o
  280.     super. I6 `7 c, H# u! o( l
  281.     @bars.dispose if [email protected]?
    + K6 B' Z3 `4 ]5 `0 g
  282.   end
    2 Y1 P+ `( A8 Z
  283. end* j; ^; r0 }/ r5 S) }; C
  284. . i7 u$ j' P1 V0 M8 q4 w, N' w
  285. $mog_rgss_s_hud = true
复制代码
: p. ?- S7 Q  f+ V

4 X& C- h( L9 y6 K1 i4 t) K: F9 N# O5 d% H2 v6 M
上面所說出錯的203行內容為
2 z3 W  S7 L9 j@hp_sprite.bitmap.clear
8 f, u  _. ?- c  q
# x4 w$ T# S" W: }想知道怎麼解決
7 ~% k1 r0 C, \3 B; b* T
4 H7 a( m1 }& w4 \8 H* d該腳本支持3.82
+ D6 X. `% E# Q0 _, n
" g+ O5 \5 |+ H( o! e% ^6 F下面是圖檔,要塞在Windowskin下
) y/ o$ \; _' L
1 U! u3 o$ J' ~+ K; k S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) * g+ o. \( Z5 g) y

$ ]+ Y: _3 A9 q1 U2 ~: g) F
/ X  S1 ~3 h( e7 [1 V$ h4 b  P+ o  h$ T/ W" @

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
- d0 x3 \7 R. ]" v2 O结果尝试刷新了一个已经释放的图形
* w9 p- k! m" ?& L: N, S+ C  I- U8 l/ ]8 v  W7 M
; O& L$ P' @2 x; D' \
# m  l6 K/ H) l
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?: P" J, g3 k3 V1 ^$ t8 r* C+ y
复制代码
不要后面那个条件貌似就没问题了。1 t" I+ o! h8 h; f
( y; C. ]2 E& J( Z7 q0 K

; h( r6 g; W! F! _" l & M5 l3 O8 _; `6 h9 R8 Y& o
" P7 _. I- Q6 r) ^/ b0 f/ W1 D

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 4 Z& N" c+ V7 v7 {9 M9 \) I
貌似是释放的条件不合适
: A+ G' A; Y1 B1 S9 p& G+ r$ f结果尝试刷新了一个已经释放的图形
5 O- A" [) [3 i! F! w% J
把後面那個條件弄掉後,的確沒問題了# U( C4 C* w' m" P! i9 a. M
目前從關頭打到關尾結束都沒再彈什麼錯誤
: j8 A: z! r$ q8 ^非常感謝# `- z/ W2 }# l4 O' b

3 T3 B5 K! S4 M6 {# D不過我是參照著別人腳本改的
7 K' G2 W' E+ H3 R他寫的條件式也是那樣,但我用他的沒什麼錯誤
1 N/ ^' Z- O$ ^" Q# Z! J不知道是怎麼回事
2 n4 h& e- K7 [$ P- E# N是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
+ v" O% _6 s- i3 A我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
$ e3 o' n4 E: g0 {1 E# ]嘛..这个数组吧..我在以前试写队友的时候关注过一点4 ~' O+ j6 }# Z7 W
不知道XAS内部对它做了什么手脚还是为啥,8 {4 y+ [$ `! X
总有那么一瞬间,没有被消灭的敌人事件也变成了nil% J% ]( \& H' R' f/ A
. u, k" {& A; o$ X' Y6 P/ n
$game_map.events.values[@enemy.id].nil?8 X# h% t+ l! o$ l3 K/ e& F
因此自然而然的返回true并符合条件把图形释放掉了
! h; S. _& _% |/ w' G- \: P
; j" v2 Q1 F. _& TLZ应该有注意到吧,( }5 s  Z: d! t, C4 h
我测试的时候发现报错前几帧,图形会消失,, A7 T1 G  ]( m7 b" |
应该就是“误以为敌人被消灭”了。
) K. o, L- U# G. e2 c# X: u: d% P
0 S, t0 J# {$ h% a) x- M. N受限于个人水平,至今无法找出$game_map.events的真相..
- K# U+ R7 m; B
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19   V/ B5 j- _# D/ j0 F: a+ J" E' h  @
$game_map.events
7 E& {+ E/ p; @% z$ T嘛..这个数组吧..我在以前试写队友的时候关注过一点
$ h+ u, U( ~0 M0 ~( |不知道XAS内部对它做了什么手脚还是 ...

3 o6 ~/ m; ~/ f4 c當初我把那個條件式看了三遍,都不覺得他有什麼錯$ q2 c4 m& A0 |" N
原來還有這麼深奧詭異的事XD+ o# d' y7 n) S1 M- c8 h
7 }9 O1 K6 h  Z" x  m( A! z
錯誤發生前的確會有圖形沒顯示出來( n5 l6 L$ ?% H4 n( Z
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
: B4 w7 I* C2 z/ _# s6 `5 U沒想到居然是詐屍了XD
9 f7 N$ a0 H% v4 G. x1 W8 j) P  i% y: R- E1 u- s$ r
不曉得3.91有沒有修正這問題...1 s: W) e% ]# D: o4 _
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。8 r% T+ m5 |8 \5 V
; z% O6 h+ D+ o( d
的确8 W7 d/ ^# T" f9 |: l, ?/ Y: u
用惯3.82之后想去整3.91觉得压力甚大..
! x- U& }' y7 F" M" r5 J干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。/ E+ F4 [3 G. o$ i9 |

+ E" m  F2 V1 z/ Y6 K9 g然后加一个判断处理的。(我记得有一个disposed?)




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