Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條, m% x" i2 b- d+ m
會在每隻事件怪物的腳下顯示- W2 Z' E0 Z$ a
問題是不知道為什麼
  V2 D  z# s$ S' k) r8 K: M有時打怪打一打會跳出9 T% @* [! q  I
---------------------------8 w" q4 v% W1 s& B$ r* Z0 V/ o3 G
XAS
7 [. h' q( D8 M5 o2 \! ~2 `---------------------------& Q5 j; B/ R$ Y! \- F$ q% S
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
. d. s5 `$ I1 P/ A: H
, Q/ k- P/ _3 R! f+ k/ O1 Idisposed bitmap
7 H$ ~) F8 S; Y4 A% ]: V0 h---------------------------9 H# A0 u; G2 c; |. k& p
確定   
2 r: W# A/ ^2 ^: p  k---------------------------
: Q7 I1 Z* |# C0 R$ s% {0 W0 B5 ~9 Y& Y4 S/ `7 g* @% z0 d
這是腳本8 g7 C6 l/ I' u8 j; r

. W/ Y7 K, E' f4 E1 T5 j; T# z
  1. #===============================================================================/ H; p- f  Y7 M$ y' R
  2. # MOG - s Hud 1.0      ) M- b0 u9 T% S8 _* c/ k
  3. #===============================================================================
      [2 ]7 y. Y7 ?' _1 s
  4. # By Moghunter
    , B, m0 d, I! d1 M3 u& [4 d9 Z3 Y* V
  5. # http://www.atelier-rgss.com
    ; L0 ]4 T$ f  l5 B
  6. #===============================================================================
    9 f- y! d+ J/ A2 F
  7. # Translated by Calvin624
    ) R0 m  z+ B  O6 v/ T
  8. # http://www.xasabs.wordpress.com
    2 x) ~0 A8 U8 N; T1 w+ A/ |4 I
  9. #===============================================================================
    0 m. L4 H4 D* a8 k, Z% m, x3 R
  10. ###############################-DESCRIPTION-####################################
    3 Z/ [7 ^2 Q" ^. V$ u" N& f
  11. #===============================================================================
    / U+ I# y9 W' T
  12. # Personal HUD – displays the HP and SP below the hero.
    0 A* D5 |! t( k' N: Z
  13. #===============================================================================
    & b  \! `9 m  l( C" c& Q6 Z
  14. #* }2 ?5 G7 |" h, E! X
  15. # Graphics required:" ]7 r( o6 a; ~- U- H# ~' X9 ~
  16. # $ W- ^3 g2 s; n! J* ^" D
  17. # S_Border_HP_Meter.png
    : w" {6 d  B2 A8 L" r. @- i+ {
  18. # S_Border_SP_Meter.png+ }4 T, j: L$ [# d( O
  19. # S_HP_Meter.png2 [. G5 I+ u; O, X
  20. # S_SP_Meter.png" o: w# e1 S9 b( K6 j
  21. #3 O4 e( r1 E! I. I) P
  22. # All images must be in the Windowskin folder.* F' l! _- a2 W  I
  23. #
    8 I! v% h, m# `" D% D! k% q, s$ `# u
  24. #===============================================================================8 d$ T0 i4 C0 h$ d9 d0 f
  25. module MOG7 x7 W! P9 |. q) q7 u
  26. VISIBLE_DEF = false  : N& t) W3 ~" U" h1 P% U1 V9 {8 u: y# S
  27. # Show HP meter?) q: g# [- o* T0 D0 p) u; ?0 b* a- X
  28. HP_HUD = true
    " @' W: W3 a+ x, n: P# f8 X
  29. # Position of the HP border
    6 T* [9 l1 i9 Y  L% w8 p
  30. S_BORDER_HP_METER_X = -2& f) t* g/ Y7 s) s  ^
  31. S_BORDER_HP_METER_Y = -2  0 L" x- n. z% j
  32. # Position of the HP meter7 Y+ p" Q3 b% k- C0 t
  33. S_HP_METER_X = 0  ~3 i% e' V! b/ r% H! x0 }
  34. S_HP_METER_Y = 04 W% B& F( y) f5 H5 o
  35. # Show SP meter?/ E: k5 M$ z4 W
  36. SP_HUD = true
    2 J+ l) j' z' e' @* }9 v1 P; D! a
  37. # Position of the SP border# n7 A: L% b8 b2 H
  38. S_BORDER_SP_METER_X = 0; I2 t% f' R2 P, e- N
  39. S_BORDER_SP_METER_Y = 10 2 u7 I5 W% ?: b7 H: X( C3 I' a
  40. # Position of the SP meter
    $ ?1 D$ s9 }( G! U* J3 r
  41. S_SP_METER_X = 06 L# T! @; c4 O1 F
  42. S_SP_METER_Y = 10& x" W. N6 P6 u0 a0 i( \3 f4 b
  43. # Switch to disable the HUD
    0 X9 ~6 C7 `. M( ]5 s
  44. DISABLE_SHUD_SWITCH = 5+ c- f# w5 _( k7 m% P; ]8 H8 a! A
  45. RANGE = 208 U- K4 F0 U/ X  }
  46. end! |9 r5 `  |% E$ I' @" Q
  47. #===============================================================================
    $ x/ n; y- F% b+ i
  48. # S Hud5 {7 |, ~1 _& X, m7 C
  49. #===============================================================================
    ( M  M+ v6 Y$ {4 W
  50. class S_Hud < RPG::Sprite- D% s( ?: D9 M- \. h) ?- N
  51.   include MOG8 @0 f2 E9 N4 Z: A( ?
  52.   #--------------------------------------------------------------------------1 H6 A2 g. `. d3 X# j
  53.   # * Initialize
    0 @0 C0 B7 \# ^9 D
  54.   #--------------------------------------------------------------------------2 `- {1 K* C) o9 s7 o' G  n
  55.   def initialize(enemy,viewport)" t, e3 ]( I. I) |; U0 a
  56.     super(viewport)
    6 J% [3 G" Z8 p# _
  57.     @enemy  = enemy
    1 m7 E" `) E% {6 w& P7 Q
  58.     @battler = @enemy.battler% M) h; x; X) d3 s3 ~: j
  59.     @old_hp  = 0* Y" e& V$ E0 {/ h6 w
  60.     @old_sp  = 0% l) Z4 R" b" z
  61.     @old_vis = false
    / X% B0 ^) B* z- o4 s
  62.     self.bitmap = Bitmap.new(100, 100)
    + h1 j$ j9 S8 r, C; M
  63.     self.visible = (VISIBLE_DEF)#false
    1 U) J9 t% F1 _) r* `1 t
  64.     self.z = 100% R) ?( T2 {" W. \% M) E
  65.     #HP Border -------------------------------------------------------------------
      X7 n5 I( ^% x8 v
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    , P) {" ]1 \; W5 a7 ~( j
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    & f  T" p2 s' Y
  68.     @layout_sprite = Sprite.new9 u* x6 e2 F2 _2 ~
  69.     @layout_sprite.bitmap = @layout_bitmap; z3 L9 o7 M$ O
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)+ b5 [3 B9 R) D  t. \4 P! c6 z- N
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      $ ^% u/ P; p8 `
  72.     @layout_sprite.z = 5001
    1 M+ X( r; O* C; b2 c" U
  73.     #HP Meter ---------------------------------------------------* ~6 _9 l4 P  |& }, h
  74.     @hp_flow = 0
    . s5 S2 a* Z0 k2 \  r
  75.     @hp_damage_flow = 0
      N3 i) Y0 V: g8 d+ Z, h" }; u
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")2 C5 A$ o$ `- E4 y) g9 G# w
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)( c0 w; d9 C4 W0 D% I  q0 j
  78.     @hp_range = @hp_image.width / 3/ L( K% ]& {# F9 w& e$ \* Y
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    4 |% d1 z% b/ C; x: T
  80.     @hp_width2 = @hp_range / 2' g/ ^1 g) \0 w1 X+ |- k
  81.     @hp_height = @hp_image.height / 2
    ' N. {' U7 y! E- y0 i  p
  82.     @hp_width_old = @hp_width
    0 e& \5 V% H2 D9 L, S0 f
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    $ v& f3 L: q" `; Z  i7 M
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    4 e/ `; s* T+ l: J( N3 c
  85.     @hp_sprite = Sprite.new& p6 D9 w/ c( l. ]
  86.     @hp_sprite.bitmap = @hp_bitmap
    % K( D- E" `1 b
  87.     @hp_sprite.z = 5002
    9 I1 G6 q( ~% H. T6 K6 p
  88.     #SP Border -------------------------------------------------------------------
    " i! S# r3 j: k8 U  o  X, q4 S
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")  Z# D, ^, i; I9 O  e4 M
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    . a: a. |+ U4 [. g
  91.     @layout2_sprite = Sprite.new( q( p& b) n/ o
  92.     @layout2_sprite.bitmap = @layout2_bitmap) Q! ~; u. b% Q: A. Y. [$ \
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)* _6 q: f( X9 D; v
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      : [- j2 c7 J% x8 `* J" o  h
  95.     @layout2_sprite.z = 5001   
    & S2 v8 b* Z" q; `# k% f% t4 v( W
  96.     #SP Meter ------------------------------------------------------, g/ C0 D0 b3 x* {* `7 M/ |
  97.     @sp_flow = 0
    & O) |3 `) n' ~# p7 k8 k
  98.     @sp_damage_flow = 0- ]  \/ T" p! j  [
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    ' B2 P2 Z# A, ^- q
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    & A: L0 g# U: d& B% f$ M. m2 y
  101.     @sp_range = @sp_image.width / 3
    6 U, g3 i. _; w* S7 W
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    0 @! I) ^5 }# V$ e. l
  103.     @sp_width2 = @sp_range / 2
    ) q: j) z$ C7 _& ]
  104.     @sp_height = @sp_image.height / 28 K3 W0 W" M! I$ E
  105.     @sp_width_old = @sp_width+ y" z  o! ^& R9 F% {) j
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    , p3 p5 s$ [$ V: [
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    6 P2 ~* G- W  X& Z
  108.     @sp_sprite = Sprite.new# _' D, i, Z* e5 h
  109.     @sp_sprite.bitmap = @sp_bitmap3 j5 I2 Z' b( r  `+ H
  110.     @sp_sprite.z = 5002
    : a! V! l0 ^1 @: }
  111.     update- @4 T: y" D# q% y0 \) H; Z' u& ?
  112.   end( B. U8 k; q: \" ]  y0 ?7 Z
  113.   #--------------------------------------------------------------------------) J! n% Y0 i) h! B
  114.   # * Refresh& |0 o' N0 z( @* l/ @! }% e* a
  115.   #--------------------------------------------------------------------------( ]( e3 k( B: q4 b3 m, X5 I
  116.   def refresh: h( X% ^$ K3 Y
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible5 J3 R" u) S1 Z, Z) v
  118.     self.bitmap.clear
    ) n9 s2 V- H* b/ A. \' Y
  119.     @old_vis = self.visible
    " p* i$ B4 B3 p7 a
  120.     @old_sp = @battler.sp( t8 m9 D. l8 Z
  121.     @old_hp = @battler.hp& A1 B! p+ v# Z9 F
  122.     hp_flow_update
    / ~* `+ l2 q" ?; q' x, N
  123.     sp_flow_update
    ; a% {" O" V5 V( w
  124.     hud_pos_update
    2 H; w. u4 B9 q$ X
  125.     visible_update$ P/ B& W# [/ A( }
  126.   end3 h3 Y4 }! {4 `. C2 P
  127.   #--------------------------------------------------------------------------1 \# `, f& |$ o9 b7 I
  128.   # * Dispose
    ( u) b  d( o1 g1 A9 `: f  D0 K9 e
  129.   #--------------------------------------------------------------------------
    ; T& ~3 e% _/ Y4 d
  130.   def dispose
    4 [: U, ^+ g. I- O3 k5 R1 w# _2 x
  131.     #HP Meter Dispose) O4 }2 Z7 h* j- K
  132.     @hp_sprite.bitmap.dispose
    5 I5 S' {5 c& `" D& z
  133.     @hp_sprite.dispose# x# z# L1 v. D/ k8 J
  134.     @hp_bitmap.dispose
    ; m$ q# d" p3 a0 j0 d  h. t
  135.     #HP Border Dispose
    2 E' f  u$ Y( Q1 t6 ^# f
  136.     @layout_sprite.bitmap.dispose
    " W- r! i" h7 k8 A0 l+ P. \* V
  137.     @layout_sprite.dispose
    ; C& g  J) N; ]5 S7 H
  138.     @layout_bitmap.dispose
    2 Z$ T8 Q" m4 b8 E, r* e3 S
  139.     #SP Meter Dispose
    ! K9 y& H& c- C
  140.     @sp_sprite.bitmap.dispose
    % n- U' I, t7 Q% d- L9 `. y
  141.     @sp_sprite.dispose
    . m1 Z7 @: `+ i- E4 V# m+ C  @
  142.     @sp_bitmap.dispose
    , o/ Z! b0 z; r
  143.     #SP Border Dispose
    # F5 g2 k0 Z3 _7 S1 Z
  144.     @layout2_sprite.bitmap.dispose
    ! P' m, W* a$ @5 |7 \3 d
  145.     @layout2_sprite.dispose
    " q; [5 e! a# z9 I. Y; W
  146.     @layout2_bitmap.dispose. l4 Z8 }* o0 ?
  147.   end
    . E2 U/ q+ x) c, ^
  148.   #--------------------------------------------------------------------------
    9 g" ], m9 O7 @! ]  `2 V/ y  k: n
  149.   # * Update
    8 k+ K1 c3 `- A" `6 O2 b' s" n
  150.   #--------------------------------------------------------------------------
    ) d" x  [% I/ t, T
  151.   def update
    " c) i9 c6 g# o, G
  152.      @battler = @enemy.battler 5 `! t# l; W* K
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    $ D8 D: A8 e$ y+ R
  154.      if self.visible
    1 {! M6 a# S& e, U7 m7 j. t9 x
  155.        refresh
    4 x7 q5 H: U* B! x
  156.      else
    & ~; ~) P) Z1 B7 s( V7 q5 E* c
  157.        self.bitmap.clear
    $ V9 O: t; U' E, B6 d/ L
  158.      end
    ' G% d- G: _" I( W" V8 K) X
  159.   end; L7 U4 Y* J+ C& F" q
  160.   #--------------------------------------------------------------------------9 U6 @5 ]+ ^4 L, k. _) n+ ?" y
  161.   # * Visible Update( g  _7 P9 d( Z' j' K/ v
  162.   #--------------------------------------------------------------------------2 B" d  y7 H5 t
  163.   def visible_update
    8 v9 u/ k( }* }9 i
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    1 C: w) J+ G  e) M& _
  165.        @hp_sprite.visible = false- f4 S+ ~) r+ j: x. @
  166.        @layout_sprite.visible = false
    ! b9 a( S* S; J" ]! B7 H# R5 ~
  167.        @sp_sprite.visible = false
    / ]7 d8 A8 d) _% b) i' {
  168.        @layout2_sprite.visible = false
    " K  o# F; z+ G
  169.     else
    % Z( u  c/ Q+ B) J# U3 G( i7 X
  170.        if HP_HUD == true
    # K  p/ b1 o; s) z# C  j: Z
  171.          @hp_sprite.visible = true% j/ b' M2 y; C" u% r
  172.          @layout_sprite.visible = true3 Z' ~, b- |/ ]
  173.        else. h2 u  l+ g* H1 }
  174.          @hp_sprite.visible = false
    ( k. \6 _1 b  O' v
  175.          @layout_sprite.visible = false0 b; a& ^8 r/ R. [6 {7 u- o$ H* l
  176.        end  0 J3 q. I8 Z7 L3 X0 f1 P
  177.        if SP_HUD == true- I4 V; V9 E  r6 {! Q
  178.          @sp_sprite.visible = true- A7 c6 f( i. }$ J
  179.          @layout2_sprite.visible = true+ k# q2 q/ N  t3 D- G$ }0 v
  180.        else6 B0 s$ J6 C* e9 {7 z
  181.          @sp_sprite.visible = false
    * O( R1 f& w  T: J
  182.          @layout2_sprite.visible = false
    % q8 C( R( o! F( N
  183.        end
    3 |0 Y6 M, O) D- d. |( P9 Z
  184.      end  
    : q: Z* {; a% W3 a, _9 n" b
  185.    end ' \# H9 p9 |( w: D+ @* X5 A* g6 N; ~! A
  186.   #--------------------------------------------------------------------------
    * q6 Y  Q% P( ~, M3 ^1 E
  187.   # * Hud Pos Update7 _! h  {; P8 R0 ?* j
  188.   #--------------------------------------------------------------------------/ p' F, h5 K, d. Q# C
  189.   def hud_pos_update! S& n3 u/ i9 N4 d' _
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X1 p# g* b9 `  i; I; r% ^& z
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    . M3 W. I4 \* F( c& |6 K# ?
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X! {( k4 }1 d, I7 E, B- d
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y ' A) c& B0 I2 w/ C
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X0 l  O, N/ N& j/ e
  195.     @sp_sprite.y = self.y + S_SP_METER_Y    S4 z( w* _' A1 ^
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    & x; a" R2 I% @' M8 r4 @
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    - z$ Q* G9 d3 a8 o( \
  198.   end    X  h" s0 R: Q5 l
  199.   #--------------------------------------------------------------------------
    * ~, u6 ~+ l. i; H7 {. C. G
  200.   # * Hp Flow Update2 _0 G0 r- ^. B: B0 `& T
  201.   #--------------------------------------------------------------------------# `8 ~3 ?; `+ V( a
  202.   def hp_flow_update
    # Y/ }7 S  U( V$ s6 S( |
  203.       @hp_sprite.bitmap.clear
    5 g3 y4 b1 h; S+ Z9 d
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    9 R$ l8 X8 W! V* \# Y7 M
  205.           #HP Damage---------------------------------
    ; k2 @$ Q- M; l& g* J* E' K. R
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1002 `( |0 i4 m8 _
  207.           valor = 0.5 if valor < 1          " |, s; y4 B! i5 i; S  a
  208.           if @hp_width_old != @hp_width
    $ `  O$ W. I; @. u* _/ t# P
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    5 l- z& w, b3 u. z
  210.           if @hp_width_old < @hp_width
    " ~' E/ p0 J. v, X. w" G# |
  211.              @hp_width_old = @hp_width" V! e1 ~, }1 F5 f$ U  ?' \& y& h
  212.           end      ' H3 |4 `  S4 N3 g# w( n
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    9 b& o/ r& v. V5 N2 g
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       6 y% \4 r( [5 j; W- ~; N2 K- M+ y) D
  215.           end        4 J: v/ N9 u2 j! b8 O
  216.       #HP Real------------------------------------
    - f. h3 ~' {& k& k/ Z1 X
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)9 M/ {; z# d) i0 i6 I$ y
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          $ |6 V7 I; P  v$ L
  219.       @hp_flow += 2  
    / u/ R8 l' d$ D) b
  220.       if @hp_flow >= @hp_image.width - @hp_range0 C  c% x9 K( p/ C/ k: D) H
  221.          @hp_flow = 0  
    * w. ], i, Q8 E( d0 o, F
  222.       end
    : ~8 g+ Y4 {( r* t7 O$ n" J' r
  223.   end    9 a+ u4 T- G& [) U
  224.   #--------------------------------------------------------------------------
    + j( ]: H0 c# e7 Y$ @5 k* A2 r
  225.   # * Sp Flow Update8 h8 h' M$ i7 w* E6 b/ j9 ~; ]
  226.   #--------------------------------------------------------------------------; ?8 [& M$ S& Q
  227.   def sp_flow_update
    1 X7 A4 o* H* j) U; t" n0 v& G4 q
  228.       @sp_sprite.bitmap.clear
    4 N+ n6 n6 m$ p& S1 D1 V
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp 6 \% D9 }% @$ c. H6 B* K+ a) \
  230.           #SP Damage---------------------------------# C4 C8 e2 Z! \. w+ c
  231.           if @sp_width_old != @sp_width
    8 C+ o6 K6 {" y  N9 {( g0 ~3 \
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    , z/ W+ ~7 |4 C5 s1 J; k( r8 f- f& {
  233.           valor = 0.5 if valor < 1              . \* u7 \% t+ a" V& Y
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    $ t8 K+ h/ G5 C3 f4 p; s
  235.           if @sp_width_old < @sp_width
    # u6 X. y) _' P0 X+ j
  236.              @sp_width_old = @sp_width( o/ H, i7 A* o/ V  m
  237.           end      
    ; U: W/ Q# t' I# X; V: a9 M4 @
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)5 o% p% i% ^: T+ }" b) ~
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    & f- N1 Z( m* a7 d
  240.           end
    6 n; |' C6 L) o3 I
  241.       #SP Real------------------------------------4 c1 ~7 E9 ?7 Q2 u# o; l
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)2 P' M0 T7 N& Y8 f: [
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)) G% O) n9 _  `8 V! e9 D5 U" F0 A0 z
  244.       @sp_flow += 1  6 }5 Q3 v' d9 ~, D( D8 `
  245.       if @sp_flow >= @sp_image.width - @sp_range& F0 e. w- J- p- u& z
  246.          @sp_flow = 0  
    " R( X: j9 b* o2 Y/ u
  247.       end7 i7 P% e" s8 T2 h
  248.     end            7 N- S0 B8 C7 d  a
  249.   end
    3 e, T# x# B" h# n! F
  250. #===============================================================================
    % Z% I% u! @3 H/ s( s
  251. class Sprite_Character < RPG::Sprite4 f* `, n4 c4 |& d: `( a. T
  252. #-------------------------------------------------------------------------------; B, d; U9 e; g2 b' G5 o; C+ Q+ ~
  253.   alias :xas_emini_hud_init :initialize% ]. B, A6 r4 L' R
  254.   include MOG/ ~8 K; \0 D& K5 B3 V' G/ C
  255.   def initialize(viewport, character)- q+ Q1 m! c& w- _
  256.     xas_emini_hud_init(viewport, character)
    9 G2 d" e1 C. n
  257.     @viewport = viewport
    * L; @( |8 x( |$ Z
  258.     return if @character.battler.nil?
    , w% [9 k' U! T' E
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    $ t1 ~/ M7 D% k
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    / s% m1 c1 r. _  f  ~
  261.     return if @character.battler.is_a?(Game_Actor)
    3 n0 ^/ S+ P8 }* T, ~% S4 E
  262.     @bars = S_Hud.new(@character, @viewport)' q+ x* a" h5 g" b( r# E+ ~
  263.   end% `7 M9 R" u9 T7 K- [7 B' `) m
  264. #-------------------------------------------------------------------------------2 A. a* D6 ?2 b, ~( L4 N$ P1 L9 m
  265.   alias :xas_emini_hud_up :update) i/ {8 i# m; D( g% [
  266.   def update2 S+ B+ D$ h1 B2 t. l& A9 L
  267.     xas_emini_hud_up' g* |1 j& v; ~& J; T
  268.     return if @bars.nil?4 w. p0 G7 U1 o" _' }! J8 R
  269.     return if @bars.disposed?
    ( t, n3 G3 {9 B3 n$ V- N# ^: ^
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    ( U3 c/ S, Z  L& q' X& r( t. P: a
  271.     @bars.visible = (dis <= RANGE). U% z5 J7 g7 V( N: r' G. C7 `
  272.     if @bars.visible
    : s7 G" r# j/ u; l# Q' m/ c6 H$ g
  273.       @bars.x = @character.screen_x# - @cw / 4' L% @0 n% W: _$ A. S, r
  274.       @bars.y = @character.screen_y# - @ch / 4
      l( @2 C" ~$ Q/ ]1 c' ]. b
  275.     end
    6 ~$ n' r# |9 N3 I, f
  276.     @bars.update3 h0 S2 Z/ Z7 L; E6 j
  277.   end+ a( J0 s5 S5 c, y
  278. #-------------------------------------------------------------------------------
    8 y, q% F% S* Y$ q* p, \
  279.   def dispose* ^" h4 x6 m* s
  280.     super
    4 ?( f6 o, D* G+ i+ }9 Z
  281.     @bars.dispose if [email protected]?
    # C6 y2 ]7 t+ Z0 Q6 ?
  282.   end3 S% U' |. ?( M& q
  283. end
    1 |3 s" u0 Y8 Q. w- o
  284. , _  ~+ c  p( J# A8 J" H
  285. $mog_rgss_s_hud = true
复制代码
1 x/ _1 \3 a$ x, h/ j( B7 _7 V

' I, t7 Q; a& x+ m5 i
3 t7 j/ y, b- m# E7 Y0 y: w3 H上面所說出錯的203行內容為
2 Q5 m7 e) Y+ M) W@hp_sprite.bitmap.clear+ A  v9 ^! {  T4 c% q# R5 n2 P

/ n+ o' z1 g# _2 U+ w4 n* a3 T想知道怎麼解決
$ ?( r$ S9 l! g
: z- X  `. R1 F- _該腳本支持3.82
8 ?! f; Y% r5 `: K: K! X& {6 G# s. }  J) r0 `
下面是圖檔,要塞在Windowskin下. s0 L# C) F& d
- S% F) f7 b( v3 K! `( b& x. Q
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
5 @/ p) y+ a9 `# s  f
7 G5 `( E0 |% \6 D3 a% T: g+ f- i
2 V* _: ^6 H+ c- S% Q6 b) U1 s3 p0 d! U
, q; ]2 N6 Q& v, K' A- }! H
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适0 F) C9 {$ g" B6 c( b  F
结果尝试刷新了一个已经释放的图形# f  ?( {4 v5 u- r# C) {. C; z

; o. u1 G; b0 f' \# I4 P1 r8 s8 a" h8 I% `" [0 Y
8 W9 s. i2 L% m8 R# |  q1 ~7 F
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    5 e& V3 i  x9 _8 W* g# O1 D
复制代码
不要后面那个条件貌似就没问题了。. ~+ r' |4 m% v
  j; y7 F/ U1 S1 O" V1 A# W" _$ a8 L

8 a' A$ s- J" W2 {# Q  V  b
) C, D  `( q0 Y* C: j
: ?- G: _0 c; \! b9 w
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 , ]& {! G" _+ m1 }
貌似是释放的条件不合适
/ m- G0 o* d8 T$ n结果尝试刷新了一个已经释放的图形
% E, L0 Y. X0 a' A3 @: m; N
把後面那個條件弄掉後,的確沒問題了( z( n  w9 B0 _0 v  F
目前從關頭打到關尾結束都沒再彈什麼錯誤
% H1 n; Y+ C- A. h" b! G! o( P非常感謝
/ B- I6 B7 t( z! W5 L1 @6 A, H6 \4 D  Q) R  _4 i# a* J4 T
不過我是參照著別人腳本改的
% T& L5 R; I' Y/ n7 j5 S5 F他寫的條件式也是那樣,但我用他的沒什麼錯誤
5 F+ T# l; F( ?0 R2 I: L- p9 P不知道是怎麼回事
( D5 |$ P- C- w0 |& [是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的  D/ l- ~9 m5 y  B; a1 o
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
) P+ H% z( H$ N嘛..这个数组吧..我在以前试写队友的时候关注过一点
) \3 W8 j0 F$ D- y+ r4 L不知道XAS内部对它做了什么手脚还是为啥,9 `/ m6 ?" H4 U) Q4 e9 I( g
总有那么一瞬间,没有被消灭的敌人事件也变成了nil
( Z% q  F5 D2 w, k
9 D8 M, c6 |, B! H* F8 v* p$game_map.events.values[@enemy.id].nil?0 R% Y& g! x# {; G3 q) y# C) M- d
因此自然而然的返回true并符合条件把图形释放掉了
* v6 b( w7 ~& M6 {7 h" y  U" E* j  Q$ o' J  h- F/ o
LZ应该有注意到吧,
* s0 c; c' Y6 R5 |3 Q5 D3 h, c我测试的时候发现报错前几帧,图形会消失,! ?5 B3 v( m3 L1 e$ s* i
应该就是“误以为敌人被消灭”了。
) a% g# r4 X/ i  V; ?! l0 C. Q: o" F7 n# U
受限于个人水平,至今无法找出$game_map.events的真相..
/ m( m- n( H. z, R9 t6 b# j0 ~! R
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19   D. J% m- c9 l& J  f
$game_map.events
" o4 G' e: L( |2 T嘛..这个数组吧..我在以前试写队友的时候关注过一点
- N+ v: E" |$ [: q7 n不知道XAS内部对它做了什么手脚还是 ...

! m) Z) ^1 m9 K0 D8 k, D1 I當初我把那個條件式看了三遍,都不覺得他有什麼錯
6 o) l( E4 P7 {: V4 L原來還有這麼深奧詭異的事XD
3 D  E- ~7 S: i9 m7 p% Z
7 A" W+ |3 m; l錯誤發生前的確會有圖形沒顯示出來
) z/ K$ ?" o$ ^+ ]# b8 {& Z不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
6 ~- }# }; a. }. R9 m! j沒想到居然是詐屍了XD( H$ J) C1 w0 y$ {
$ w) a3 x$ @! S& A; h1 ^' ^
不曉得3.91有沒有修正這問題...0 r9 k' e# Y( h
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。. _9 L8 T6 S+ n9 |

" }- K; l. Z* p. ]  [$ y的确: P& [/ r+ @. z# m9 |
用惯3.82之后想去整3.91觉得压力甚大../ |8 s/ V! Q& U" X# P. h" ^( A3 b4 d
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。1 E0 j# w$ y8 V- R" F' I
! c" C0 t- d8 {- a- N& i4 `
然后加一个判断处理的。(我记得有一个disposed?)




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