Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
- x: R  E$ h) E/ D會在每隻事件怪物的腳下顯示
( ?% B% h/ s3 x問題是不知道為什麼" |! p2 \1 g9 V. v* f6 S
有時打怪打一打會跳出
; G1 V' s2 l8 K3 i& L7 M---------------------------8 O/ |/ p. T5 g. m, n, M$ K! u6 t
XAS! F# q* X2 l9 d2 c1 d. U+ j' b7 }: C
---------------------------/ ~, @9 O; v' _7 [
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
9 L/ S  ?1 a4 Y1 a9 v. D( j4 x) C: j- L
disposed bitmap) z4 G, `7 F; e7 K
---------------------------: E- S4 h  y+ g4 q& J) S3 j& E
確定   - B7 W) m" l, I3 ^
---------------------------4 a4 J8 H2 ^( X* c

1 }+ J) S0 Y4 Z! f2 H6 ~. {這是腳本
% A" a1 I- t* v8 f1 r- W1 z) r
1 H5 |6 ~4 m9 `  [0 L" Z4 g& ~4 F
  1. #===============================================================================# ?8 m6 c  c3 l; n# |
  2. # MOG - s Hud 1.0      
    ) L* }3 V; O# x8 O! V
  3. #===============================================================================- s4 A* ^$ |) Y% e
  4. # By Moghunter ) B2 g, [/ J( m8 m& }
  5. # http://www.atelier-rgss.com$ g# m; R" X4 W
  6. #===============================================================================
    5 j2 j7 M1 x, B9 R/ d4 B3 V# ^$ J; o
  7. # Translated by Calvin624
    & T" \* H9 l  d+ Y& h: L
  8. # http://www.xasabs.wordpress.com/ n" i) F' _# ~% m" {- L
  9. #===============================================================================
    : @; M4 e4 e6 R; ^* U
  10. ###############################-DESCRIPTION-####################################, k& s* `& ~# s7 {* i, Z# ]/ s* W4 \3 C
  11. #===============================================================================
    & u/ J' g9 Z6 a5 B% D( E
  12. # Personal HUD – displays the HP and SP below the hero.; w# P9 e. i% \" w8 c' ^
  13. #===============================================================================
    * |+ q8 L3 a. u4 w  m# m
  14. #' {) {) Q+ P9 p! M0 s3 g: s2 P: U
  15. # Graphics required:: w! b$ {: i& i1 T
  16. #
    : e3 d+ ]5 z( S) n' r; {
  17. # S_Border_HP_Meter.png
    $ a, c7 h! d* v7 G$ l, W
  18. # S_Border_SP_Meter.png
    ; W  |8 O" W( m5 c
  19. # S_HP_Meter.png
    ! A9 M. J/ C+ ~! c/ M9 g3 J
  20. # S_SP_Meter.png7 y+ ^  X5 w2 v1 T8 j) s$ `
  21. #
    3 g" B" I& t! j  {0 g2 [
  22. # All images must be in the Windowskin folder./ ^# n, Y* j2 }, ~
  23. #
    7 M# |" Y7 t+ S1 S. q
  24. #===============================================================================+ P9 }0 x# i/ w  l# @: O
  25. module MOG" z, F- g* v4 o5 c( g
  26. VISIBLE_DEF = false  
    ' P" n( O! x2 k; F0 J3 ~( A( k. e
  27. # Show HP meter?  j/ m3 m. P0 k! W* S
  28. HP_HUD = true
    # s* u4 D/ Z5 C- C3 L# N& }
  29. # Position of the HP border
      T" P" s! Y* m! T: i
  30. S_BORDER_HP_METER_X = -2
    ) E/ X8 Q% {( v( |, t' ]
  31. S_BORDER_HP_METER_Y = -2  / f: p( n0 J+ N& Q
  32. # Position of the HP meter
    5 f! W& r+ [* ?4 h+ z
  33. S_HP_METER_X = 0
    6 u4 o. R/ k/ v( ~
  34. S_HP_METER_Y = 0
    1 R8 z$ d: O( w' n; U" E* d% f
  35. # Show SP meter?
    3 T! _" S: _3 v5 E1 R+ O
  36. SP_HUD = true+ b4 S6 _/ @, l' F
  37. # Position of the SP border, `  p8 U7 m: Y! Z( M* z6 P/ E9 V
  38. S_BORDER_SP_METER_X = 0
    4 F- q1 l) f7 O: @
  39. S_BORDER_SP_METER_Y = 10
    + t; ^3 T0 a3 I- ?8 A- q  R
  40. # Position of the SP meter. J9 w5 h; V5 j5 b; H
  41. S_SP_METER_X = 0/ H6 p3 W) Z$ T, q
  42. S_SP_METER_Y = 10# d4 H3 \4 W# C# v0 X
  43. # Switch to disable the HUD$ G7 T/ }: m+ X8 [9 i  q' x
  44. DISABLE_SHUD_SWITCH = 5$ q/ B# G0 A; y& ^
  45. RANGE = 20
    ( c/ M' ?( w: n8 ^0 h( D% h
  46. end; \# W" z( t# I& Y# Y  i+ Z$ d
  47. #===============================================================================
    $ n( `& S3 c( _! u5 x
  48. # S Hud* S" w8 h- D. ?
  49. #===============================================================================
    , S) S7 `. g' S& {9 C
  50. class S_Hud < RPG::Sprite' N! l8 F6 T9 p7 d
  51.   include MOG* _+ D1 _  d6 S" W# W
  52.   #--------------------------------------------------------------------------4 c+ P* P( y8 s( U
  53.   # * Initialize6 N# p+ _0 B6 Q6 w% Z1 b' S/ @% g, V
  54.   #--------------------------------------------------------------------------
    # Z- q( s. w' W9 E2 i% U
  55.   def initialize(enemy,viewport)2 P% ]4 C) f* T, j/ m
  56.     super(viewport)
    4 Z1 P" s' \. l* a5 S$ o6 ^
  57.     @enemy  = enemy% D9 p9 E2 |* F& h* p8 e
  58.     @battler = @enemy.battler
    " [4 S5 r8 u; B' C! J6 `$ V# c1 w
  59.     @old_hp  = 0
    ' H' `( N' d" X4 e+ F5 l+ `
  60.     @old_sp  = 0
    4 |( v7 ^. e8 i- q1 d$ A
  61.     @old_vis = false
    ) P* }5 }; X& F/ E& ?' Z0 q
  62.     self.bitmap = Bitmap.new(100, 100)
    0 ]  u) ?2 a7 B; {0 j  x5 i1 Y
  63.     self.visible = (VISIBLE_DEF)#false
    9 Z: c0 h, i" Z3 c( U  Q/ Q+ f0 `0 A
  64.     self.z = 1006 L; p- V# v5 Q
  65.     #HP Border -------------------------------------------------------------------
    : a! H) W+ m; ?1 ~. ~" _
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")# _, c, |" h- U- @8 T0 r
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    8 F% @; _/ @* g- m4 R
  68.     @layout_sprite = Sprite.new
    # o# ]* `  y+ E- E8 G3 Y! q
  69.     @layout_sprite.bitmap = @layout_bitmap
    3 S" u# F5 @6 F! t7 L
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    ( v5 E2 `5 y9 @" ^. D
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      - [5 o, ^9 g4 @7 p
  72.     @layout_sprite.z = 5001$ n  X9 R' u( Z" v3 G& V' e  H
  73.     #HP Meter ---------------------------------------------------& Q- M4 @; p3 w; ?+ c" D6 S
  74.     @hp_flow = 0
    : l2 B: W. y4 Z5 M) }
  75.     @hp_damage_flow = 0& D/ B/ m. y4 X) }( z; u+ e
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    % T& C) m: i6 r; p! ^
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)( T3 P; I2 {" m
  78.     @hp_range = @hp_image.width / 3
    3 E- ^4 X% Y2 p
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    / L3 `/ [7 V7 q2 k0 }
  80.     @hp_width2 = @hp_range / 2* p0 _3 Z( X& M% K) X, c
  81.     @hp_height = @hp_image.height / 2% r5 u% Y+ M. L0 G) J% V4 U* Y
  82.     @hp_width_old = @hp_width
    4 O( c" o& v: c7 e) X
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    / }" T5 K4 k2 u2 V4 n
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) $ z6 J+ B2 |0 T; [% E3 F
  85.     @hp_sprite = Sprite.new
    , Z2 i* M9 ?- x7 w5 b0 W
  86.     @hp_sprite.bitmap = @hp_bitmap( t$ L7 B" w2 T0 ?$ ^% [% h
  87.     @hp_sprite.z = 5002
    - X" b  h, D4 G$ A
  88.     #SP Border -------------------------------------------------------------------
    1 I6 ?- D# [* M* v1 i( y
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")4 j4 u. x2 \6 u( _, C( M3 T( B
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)* l+ {4 y& d% q/ G  L
  91.     @layout2_sprite = Sprite.new
    7 C) X: {& J+ t; w$ S$ t/ N' _
  92.     @layout2_sprite.bitmap = @layout2_bitmap) ^1 y' r' X: _# s7 V7 f: l
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    # I2 U3 G! {6 ^+ W
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      2 M+ e! f% T- [6 N: i8 z3 p, z
  95.     @layout2_sprite.z = 5001   
    5 E. S# @- D2 a  x2 E$ V4 [, o- K# U
  96.     #SP Meter ------------------------------------------------------
    ( T! s( R! c/ O+ c  S/ l- K) k
  97.     @sp_flow = 05 X" j" [$ v* e3 i! P
  98.     @sp_damage_flow = 0. s7 g( u  N" Q. A" E& H7 s
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")4 L5 |5 t0 ], [( i
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    9 }9 p% S, e5 A$ b
  101.     @sp_range = @sp_image.width / 3: Y2 e, N" T! f# I) N5 U0 z
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  # S/ _/ N' U7 K6 w! k8 k
  103.     @sp_width2 = @sp_range / 27 m9 d7 a& l5 S' }% d
  104.     @sp_height = @sp_image.height / 23 ]- Q3 }: F$ e& r, G
  105.     @sp_width_old = @sp_width0 W3 x1 f7 q: H; S' D) m' t1 @+ e
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    ; h+ n* U( }* M( _. E( X
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
      J! A4 ^$ r- v2 a# M) ]
  108.     @sp_sprite = Sprite.new
    ( D; C( P& o" Q) e* F5 Y% q  q  l; u9 \
  109.     @sp_sprite.bitmap = @sp_bitmap
    . q. A8 ]: M6 X8 e, a6 {
  110.     @sp_sprite.z = 50021 }' i5 `' A. A' V1 R2 f
  111.     update
    6 J, a8 U, s9 f# d# o9 w( U: p
  112.   end  X; N* ]( S/ m3 X, b" g1 U8 c0 A
  113.   #--------------------------------------------------------------------------
    , E* u5 D( c- K
  114.   # * Refresh
    & C( u" A$ p0 O( u' h4 o
  115.   #--------------------------------------------------------------------------: I" N8 p( r; T  z7 T# s6 m+ n
  116.   def refresh
    - A' D) @) d* j* M$ e% u
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    # |2 U5 c. d5 V  r
  118.     self.bitmap.clear( Y* o: G# N+ |+ m+ j0 ~! f
  119.     @old_vis = self.visible3 W' \  ^9 r8 P" [4 v# l; e
  120.     @old_sp = @battler.sp8 |' ^2 p! Q' E0 ~# I8 M9 x
  121.     @old_hp = @battler.hp
    2 Z8 b) k1 n9 b( f% J4 r$ Y/ j" I5 [
  122.     hp_flow_update- ]) \; C  W0 r1 p# Y8 S2 s# `
  123.     sp_flow_update
    2 J- t; ~2 S* c
  124.     hud_pos_update/ s7 N9 i- m! P. G# W7 Y4 @
  125.     visible_update4 }6 z/ n, D: `" ]! G0 v
  126.   end
    2 Y6 S- G% q& ^8 z
  127.   #--------------------------------------------------------------------------% o4 r; h) z* r
  128.   # * Dispose3 B# q! @6 p* a1 q& G( {0 {" T2 d
  129.   #--------------------------------------------------------------------------
      }9 q% P& A2 ]- C
  130.   def dispose0 |; P9 a8 h% R" |$ x* Z) b
  131.     #HP Meter Dispose
    ; u$ O, A/ D/ ~
  132.     @hp_sprite.bitmap.dispose
    1 c3 \/ e5 z% s* e& \
  133.     @hp_sprite.dispose6 ~% D- i& e3 K! l
  134.     @hp_bitmap.dispose
    8 L0 ^8 a0 y2 O- K; n+ y, ^& l0 A
  135.     #HP Border Dispose
    ! I* j! }0 f8 \5 s
  136.     @layout_sprite.bitmap.dispose
    # E& H  W# {& Q2 g
  137.     @layout_sprite.dispose) c. d9 P3 ?7 O$ I: M+ m
  138.     @layout_bitmap.dispose
    % x( }7 \; H8 Q" n/ Y3 r
  139.     #SP Meter Dispose# [2 T, d8 I: F# e6 B9 _
  140.     @sp_sprite.bitmap.dispose
    1 g! C9 \: {( Q( u
  141.     @sp_sprite.dispose( ~$ s' H7 p) K* I- G- }
  142.     @sp_bitmap.dispose& E( q! C! I  G' v, q+ @7 I
  143.     #SP Border Dispose
    5 i$ I8 ?( k2 m( ^+ p* B
  144.     @layout2_sprite.bitmap.dispose: \' ?* C3 r# l" W' k2 J5 L& _
  145.     @layout2_sprite.dispose
    4 }: z. E5 \3 j; [' b8 W, B
  146.     @layout2_bitmap.dispose2 N: \0 t" ]- u* _4 y: ]
  147.   end
    5 [% Z& A) F8 b! |
  148.   #--------------------------------------------------------------------------' t2 o( U5 A2 `+ b; L
  149.   # * Update
    ) V1 `, [5 n6 I9 f; N/ b/ o
  150.   #--------------------------------------------------------------------------- }- g- P4 b- d5 l  v$ T6 S9 [& a
  151.   def update
    $ C  ^" j& y( f# @# k
  152.      @battler = @enemy.battler
    3 C% R2 z2 o# q5 K" Z, m; A
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?' q- M3 p" }( S3 [' k
  154.      if self.visible
    9 M8 l' {; c; _0 k" u
  155.        refresh
    ; V9 {! o: [! j6 E# @- c  X% L
  156.      else% t) z- I7 D' |, B, a& J
  157.        self.bitmap.clear
    . k7 G& f( A* W  N6 Y0 P1 G7 W, B
  158.      end
    - c  n8 V; T! @! S
  159.   end
    4 h4 C- d; q3 f
  160.   #--------------------------------------------------------------------------
    , E8 P6 V$ E! ?' n1 r0 U# A
  161.   # * Visible Update
    + N# t4 I4 D5 ^7 L% \8 E7 f
  162.   #--------------------------------------------------------------------------8 x$ ]% x/ b; Z) n
  163.   def visible_update4 C/ f' j1 s2 Q+ b- n
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true+ S* H& X4 X/ F7 ]- f
  165.        @hp_sprite.visible = false
    + M+ x6 F' t( F; K
  166.        @layout_sprite.visible = false( @: E! R3 T+ W& g0 |' D  a) i
  167.        @sp_sprite.visible = false
    6 l6 b3 _0 g( h* T8 [5 o
  168.        @layout2_sprite.visible = false; |. a- b" J& r0 r) K& i: P
  169.     else
    4 k1 R7 G! V+ v) g. \. ^$ t
  170.        if HP_HUD == true2 n8 {1 z4 \9 ~" E# ~4 H
  171.          @hp_sprite.visible = true
    8 q% w$ q0 f5 x3 k, R! f7 G
  172.          @layout_sprite.visible = true4 b+ a' y! H( X2 ~) k( q  o, x5 M  V* ^0 b
  173.        else
    % i3 l( t4 f" |. [( k5 Q9 i8 _
  174.          @hp_sprite.visible = false
    * i- j0 y; i2 K! F; R5 p9 c, }# n( F3 {
  175.          @layout_sprite.visible = false
    , j" s. m9 a# U6 t
  176.        end  3 `; `" Z; _4 |; Q* b
  177.        if SP_HUD == true
    7 w( k! |0 q# y, }) y) A$ g% l
  178.          @sp_sprite.visible = true
    : _# _7 G# L/ K
  179.          @layout2_sprite.visible = true; c4 Y5 P* m3 }
  180.        else
    1 v/ u" A* i7 z% w+ y. N
  181.          @sp_sprite.visible = false
    1 o4 `4 ~. g8 f" {) C2 I. T" y
  182.          @layout2_sprite.visible = false! i& G( `( R; D/ x
  183.        end
    7 u2 `- r0 r5 `# x! F0 K. Z: E
  184.      end  
    6 d$ W) R% V* ~0 h
  185.    end
      Y4 U0 J( ]& i% _
  186.   #--------------------------------------------------------------------------
    5 T. W/ d7 l4 O) h5 `8 y
  187.   # * Hud Pos Update# _9 o/ Y# k) J/ Z- `
  188.   #--------------------------------------------------------------------------
    / F3 i) B7 P. L6 T, n) R9 D
  189.   def hud_pos_update' V; P" p3 s$ E' z
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    + k5 F0 n6 b; _4 n/ u+ }
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  3 q! A5 `! E& d1 E- X3 u$ u
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X: ?0 r" o! \  ?8 s6 G7 k
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 1 C) h$ k6 v+ y: Y. f
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
      P" ~* Q8 d( f  e" f- F
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  0 m2 ~) X" V0 L5 S/ Q9 d
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X4 r& L7 H- n+ |0 Y; P2 k
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     + n  x+ s. N, @
  198.   end  
    1 K$ T8 A$ T' O& v. ]  s' e3 c
  199.   #--------------------------------------------------------------------------
    3 V4 J* Z% ^: x- t! |1 {
  200.   # * Hp Flow Update
    4 ]0 _: y/ C6 G! \% O3 U
  201.   #--------------------------------------------------------------------------* a: B2 q! f9 }- V. q
  202.   def hp_flow_update% T+ u7 J: Y4 @% K7 W
  203.       @hp_sprite.bitmap.clear# |4 B5 _# y: N1 S
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  4 z$ ]& l7 n# f$ @5 u+ f
  205.           #HP Damage---------------------------------
    ) ~2 W2 V. s0 q9 ^- ^
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100# O' L6 u" J# ?/ _
  207.           valor = 0.5 if valor < 1          * m4 F2 L$ z8 P( t
  208.           if @hp_width_old != @hp_width
    6 k# ]! C! k0 H+ H4 A8 X# ]1 W
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  # t0 s8 Q& w/ M2 r* R9 ?4 w5 K
  210.           if @hp_width_old < @hp_width 8 b$ M4 P; O4 o  \) {4 f
  211.              @hp_width_old = @hp_width" }2 m$ y+ L( ^* t% U: ]; j
  212.           end      - Y2 q2 k. v% Y. O6 X- \
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)$ i( q. D# A" s' D
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    # w4 H6 p( C' E" G3 Q2 T& X
  215.           end        - ^) _; c/ o) i$ ~4 B
  216.       #HP Real------------------------------------
    , z* O, b0 D9 f0 ~
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    7 ?$ O5 j) p7 g: s0 w
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
      x: O$ w  d9 ^2 F( @
  219.       @hp_flow += 2  
    0 K) W5 Y: g' U
  220.       if @hp_flow >= @hp_image.width - @hp_range4 _2 T/ O) y  a# o6 j5 r" S
  221.          @hp_flow = 0  ; {2 v; \* N7 |* p( L4 H$ w$ Q
  222.       end0 U0 V, ~0 Z! a3 f) ~0 W9 }
  223.   end    $ E0 a& N7 F$ ~$ e3 i1 @. a
  224.   #--------------------------------------------------------------------------  m5 Y3 Q7 R& K: H, v# }/ E
  225.   # * Sp Flow Update- u, i& s# Q8 F8 f% w4 t
  226.   #--------------------------------------------------------------------------
    - q  s8 ?4 D, e( f9 B0 b
  227.   def sp_flow_update
    " ?3 t3 e: H' N) b7 r
  228.       @sp_sprite.bitmap.clear# G9 s' M/ ?2 A/ U# P
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp $ I  x* f' c' F
  230.           #SP Damage---------------------------------5 L" k/ q' E! l' \
  231.           if @sp_width_old != @sp_width/ k: r8 c/ k6 ^; Y) I
  232.           valor = (@sp_width_old - @sp_width) * 3 / 1004 s2 i* d; f9 w0 b
  233.           valor = 0.5 if valor < 1              
    # S" x4 t5 s  |' e
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  : F8 b1 e  r5 t' ?* [
  235.           if @sp_width_old < @sp_width
    8 j" s/ x" L% u: g
  236.              @sp_width_old = @sp_width
    8 z5 B$ G# R: y* p; o7 R2 j$ f
  237.           end      1 y3 I1 `/ X8 x5 a
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)7 _0 N* t4 {# ?$ f5 S+ G
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    8 F8 q; a' i0 |3 K: Q8 s/ {
  240.           end! z* h( |, `0 l8 ^7 q- D
  241.       #SP Real------------------------------------; h/ G0 n/ c& y  t' ^
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)) L4 r4 C, p8 n: h+ z
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)7 d1 _* E- G) n" U/ v; p3 l
  244.       @sp_flow += 1  7 y7 s; |5 x0 c- i/ c# p8 K
  245.       if @sp_flow >= @sp_image.width - @sp_range( K! h# S& K" e% w
  246.          @sp_flow = 0  
    , R7 `: f; r$ O' ~; q, m
  247.       end
    . S. G( x/ w4 }
  248.     end            
    6 K# ?4 F, a9 t1 R
  249.   end5 X3 L+ ?2 O9 _' v" M# m- Y
  250. #===============================================================================
    8 ?! S) c% R6 G  l" ^( r2 X: B
  251. class Sprite_Character < RPG::Sprite
    7 l5 a" P( L  ?. a- n. c4 g
  252. #-------------------------------------------------------------------------------" \2 j0 r0 A- l, t% e4 r$ v) O
  253.   alias :xas_emini_hud_init :initialize! Q" k0 J% n/ E6 Y
  254.   include MOG
    : `0 S5 ^1 E% G( D- w; j8 X3 D& j
  255.   def initialize(viewport, character)2 y0 m& @7 x: Z/ ~6 B
  256.     xas_emini_hud_init(viewport, character)9 t+ I  N. d7 h& S0 o! h
  257.     @viewport = viewport  v" o% _& A9 B
  258.     return if @character.battler.nil?8 T9 M0 {9 [) A# d# W3 z
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id). m6 x% T5 T" y# q
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    " o$ l# S4 \1 y& O8 S$ p5 V" T
  261.     return if @character.battler.is_a?(Game_Actor)& N) a/ t4 k- U. `7 V" X+ g6 w
  262.     @bars = S_Hud.new(@character, @viewport)
    . w& g# D. V0 y' c
  263.   end
    " ^" y3 ^( e" M" S
  264. #-------------------------------------------------------------------------------
    7 f# h; `; h9 n. B  r
  265.   alias :xas_emini_hud_up :update- o, o- U/ I/ @, R( V1 ?& B/ @
  266.   def update
    ( |4 W( Z" X  _; O# M
  267.     xas_emini_hud_up" Y+ J$ c6 [; R# J
  268.     return if @bars.nil?# v4 o) y0 i1 A5 I- M: I
  269.     return if @bars.disposed?
    ) ^5 [# q6 r% M8 i& d- v
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    / c; l, r, U" p% v! O
  271.     @bars.visible = (dis <= RANGE)
    3 H: H0 |( z9 {& t/ o0 Q
  272.     if @bars.visible
    . T0 l; ]$ y: `1 f
  273.       @bars.x = @character.screen_x# - @cw / 4
    7 \: [1 ~1 y$ W) a% N) |
  274.       @bars.y = @character.screen_y# - @ch / 4* Y5 L2 q0 N" x* c- [7 M
  275.     end$ |9 O- e* c  w! U/ D5 B2 U
  276.     @bars.update
    * K1 ?* u$ M2 ]; z0 k
  277.   end8 F) b3 [# @) h" D
  278. #-------------------------------------------------------------------------------
    6 a+ u0 ~1 z) V# _
  279.   def dispose5 k: i) V; I. v9 R4 R
  280.     super
    2 f. q0 i3 L  A$ x! l8 j! v. m2 {
  281.     @bars.dispose if [email protected]?) u8 b$ e$ ~* d4 [5 ~
  282.   end) y9 T1 i0 ~* P7 k  N
  283. end! M% b9 @9 n$ R# I1 A9 }

  284. ( z+ w- z9 X! F0 [1 [) N: b. X
  285. $mog_rgss_s_hud = true
复制代码
5 Z4 x1 {  Z( D+ c$ |* F3 T

8 f- O" U. g& K& f- r* K; h0 y* [
3 E* f( ~+ a% O! u- b: a0 M上面所說出錯的203行內容為7 U  u7 ?0 g3 Y( ~2 E
@hp_sprite.bitmap.clear
/ y/ p  F0 A. V9 o- x' X8 U0 C& D+ t5 _5 S# k4 v9 X6 q
想知道怎麼解決2 Y  S; `3 _+ g  B' T) w! V/ {
) ?" `# M' c8 }3 U5 S, x, O+ {
該腳本支持3.82
  \, e3 q1 D* K5 j; E
2 ^1 [8 B2 i" M, y3 c3 W/ v' N下面是圖檔,要塞在Windowskin下. s* D; @% D1 S% o

7 {: l5 U) e+ m S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) & Z) H  Y9 D/ d! [, c  F

3 v8 ^& p5 c( t
+ x3 W7 [! X2 l8 t( i# ~0 k, E4 ]. W! r7 V/ f$ ?8 c$ \; ^( D# b. `

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适) j8 J4 @+ ]! X3 ^
结果尝试刷新了一个已经释放的图形
5 }' g! t' m' i7 F: ?' I  X
: e; I# S  q8 Q! R6 G
1 H5 A, I9 W( Q4 q7 ?- H
& t5 V, ]& t, {, @1 z) M虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    9 g& l0 I  j7 \6 j. n
复制代码
不要后面那个条件貌似就没问题了。
0 g$ R; x5 ~  x% Q! L2 i& G  `! [7 q: \: ?$ l

2 j1 m, w- A0 O0 H 2 h) u7 p; D5 v( }

' G4 h$ v; t; {4 F/ L8 G
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 4 m- {1 A& v) u- j2 Y
貌似是释放的条件不合适
: P: H( G4 O- s, W" [- l结果尝试刷新了一个已经释放的图形
3 \' ^1 A: X1 B* F
把後面那個條件弄掉後,的確沒問題了( F! i" N% X7 Y, q# q
目前從關頭打到關尾結束都沒再彈什麼錯誤
0 E, f3 C$ A. A" Q: f* C非常感謝
2 o0 s# _; R4 l
3 z6 R, c! o3 h" k/ G/ \不過我是參照著別人腳本改的
7 H; Q* n* x7 S9 w) ]他寫的條件式也是那樣,但我用他的沒什麼錯誤4 K+ ?0 D; R" G
不知道是怎麼回事; Q; R0 O* }, {; _) C/ |0 x' q
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
) J$ H0 q8 Q+ ?5 G6 Q% R我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
3 M+ _+ I' D! k4 ?; U+ y嘛..这个数组吧..我在以前试写队友的时候关注过一点! ~0 ], n1 U2 i  {. W9 ^$ k5 K
不知道XAS内部对它做了什么手脚还是为啥,
; F2 ]+ a7 V+ x1 z1 \+ Z+ T; O总有那么一瞬间,没有被消灭的敌人事件也变成了nil; W9 [6 x8 B- R& i& W) G
9 Z; }+ I! d7 s) S  |* h
$game_map.events.values[@enemy.id].nil?
2 m! Q$ ^- K7 J7 [( r因此自然而然的返回true并符合条件把图形释放掉了
- Z$ Q8 P3 g- q) b
+ M  J+ Z% m1 p* r8 ?7 PLZ应该有注意到吧,  P' ~5 r& o' I' p) o; ~
我测试的时候发现报错前几帧,图形会消失,6 r8 e, |6 k9 A+ Y# z" g# g4 ^' d
应该就是“误以为敌人被消灭”了。
/ f3 d$ L% z* d  `0 z1 s- d0 V% m2 z2 v; D/ d7 k
受限于个人水平,至今无法找出$game_map.events的真相..2 ?% W' K7 h/ k  b8 L/ D  |& B9 Q

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 # a, c1 e, a7 B: ?
$game_map.events
" u% U1 G' J) M* ]# w4 d  l( a5 X嘛..这个数组吧..我在以前试写队友的时候关注过一点
( g* O2 t- v8 P1 W2 J不知道XAS内部对它做了什么手脚还是 ...

! N* ?' h; B1 g" v0 W; K當初我把那個條件式看了三遍,都不覺得他有什麼錯+ B. w7 ]: N$ m6 s2 w" q# c
原來還有這麼深奧詭異的事XD
  j% C# G+ _) S8 e, F5 B6 k  U5 y( b3 a+ @6 w# T
錯誤發生前的確會有圖形沒顯示出來- y1 G; h  m1 A
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
# u/ g4 Y' F, I* T1 C, A沒想到居然是詐屍了XD! A& p& y: t1 [8 n! B8 [% z

* }& e* g5 U8 t: H不曉得3.91有沒有修正這問題...( n' G, v( `3 N; D+ P: b
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。* D8 m4 w* p4 {( @; q7 J
* C6 g  c# J0 Z
的确8 V. Q# n" V3 Z. v. {* M' A
用惯3.82之后想去整3.91觉得压力甚大..
, O5 f( }+ y! z# n% q5 T干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
% [$ B' ~+ v9 l7 B! m
# v7 d/ J5 t- z/ E3 X$ R然后加一个判断处理的。(我记得有一个disposed?)




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