Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
4 p$ I* k1 R* {4 G% e9 d會在每隻事件怪物的腳下顯示
. E4 C1 H( F* H2 N. K問題是不知道為什麼
% S* @2 T0 ^. y, u有時打怪打一打會跳出
  g" P- E/ P3 y: t9 X( u3 V' P---------------------------
4 |0 n! {# j5 u* n' t0 j7 kXAS
1 K- P! b3 {7 c---------------------------9 s  p  H) @6 A: S
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
2 X$ r: p% j$ @1 ^, D
% t. H, N) J+ i( ?disposed bitmap7 l* n3 B0 n- ]6 A" [( [
---------------------------" m, ?# [* k. G+ y% u
確定   ( }1 w0 l6 i0 p$ R) l
---------------------------. E( T: E9 {5 V* t

6 T; F+ Y. X5 H9 m+ G這是腳本
# v* N. Y8 j( [; o- n# y" M, `: w6 S, R3 h
  1. #===============================================================================3 H0 e& c5 n* n$ |
  2. # MOG - s Hud 1.0      
    4 f, n! T2 d0 v( e0 o2 r1 z
  3. #===============================================================================
    ' g9 |- Z" n5 A5 r& d' s$ p
  4. # By Moghunter ! M) H5 n, }4 z9 J& ~( F6 ^
  5. # http://www.atelier-rgss.com
    6 s) f/ S, l, I- V
  6. #===============================================================================
    : v$ c) [( [/ O7 K* @
  7. # Translated by Calvin624
    - H, P; w& g6 w0 ~) J7 w8 q
  8. # http://www.xasabs.wordpress.com. p/ a5 U" ?, B8 Q& F6 n; ^
  9. #===============================================================================
    " q! X' |' _0 Z# `6 @
  10. ###############################-DESCRIPTION-##################################### f4 O3 T/ y0 k0 o" |
  11. #===============================================================================* F7 ?% T" V6 W5 h1 H% V
  12. # Personal HUD – displays the HP and SP below the hero.
    ' d$ Q+ s! L( v: d/ N( I
  13. #===============================================================================
    1 i' G# S" m/ Y0 C
  14. #
    ; s$ s/ g" C: B* m* z' r( ?
  15. # Graphics required:$ Q) M, O7 I) V
  16. #   ~) `, o; @! m( i% [$ c
  17. # S_Border_HP_Meter.png: d7 N3 t4 R* U/ \; ~
  18. # S_Border_SP_Meter.png8 b# X$ n7 _) ~# k9 Z
  19. # S_HP_Meter.png
    - w- }# d. Y* `" w
  20. # S_SP_Meter.png$ B, F: Z8 j# Q4 v/ R
  21. #/ h; ~& @, A7 s+ U
  22. # All images must be in the Windowskin folder.  P( Y3 U' m, c( }9 l) P
  23. #0 g4 m& T( S4 {2 U1 `+ @/ N. K
  24. #===============================================================================2 M8 U1 j! w/ i) _" X1 Q! d0 F
  25. module MOG3 g/ m4 S* |+ H' O: O  Y
  26. VISIBLE_DEF = false  
    . b1 \; p+ c6 G# r
  27. # Show HP meter?9 f7 j+ G& X9 o! d9 l: x/ P# k
  28. HP_HUD = true
    * l9 R2 ]; A) }# ]
  29. # Position of the HP border5 |- b, H: |( ^1 i0 O% d  p
  30. S_BORDER_HP_METER_X = -2
    0 N/ f% o* n! a0 L! a
  31. S_BORDER_HP_METER_Y = -2  
    8 O, h* Y# j9 d/ H1 ^! h/ L$ \
  32. # Position of the HP meter
    0 }- i  T+ ?! y
  33. S_HP_METER_X = 0
    9 g' W. N! P2 e  C
  34. S_HP_METER_Y = 0& E8 j* n' O; \- I1 x
  35. # Show SP meter?* c% P$ S6 j6 _( s  C. A7 u
  36. SP_HUD = true% @( U' c( X+ ^) C0 Z
  37. # Position of the SP border1 k% P( U& f3 P9 [, o3 g6 l! A
  38. S_BORDER_SP_METER_X = 09 k# L& h& l$ K2 n7 U! b
  39. S_BORDER_SP_METER_Y = 10
    . e9 Y  Z0 ?, b# ]
  40. # Position of the SP meter) r+ }! D1 m2 A, ?- W, i' {; [
  41. S_SP_METER_X = 0( f& q% P: G& r- ^, x/ F
  42. S_SP_METER_Y = 10! ^! g* c( Z: F+ A, c! j
  43. # Switch to disable the HUD
    " d3 ^* P7 O' [+ z1 G  k1 S3 q
  44. DISABLE_SHUD_SWITCH = 5: e6 `: k( d. J/ ]5 Z. V
  45. RANGE = 20& ]7 B$ \; t, _1 ~0 g
  46. end- N- A, S4 b6 {' g+ ?/ z
  47. #===============================================================================: _5 [# ]  D; W; E/ z
  48. # S Hud
    # U! H. i" t# m4 h0 A
  49. #===============================================================================+ r4 q$ J4 \- |0 I2 `) h
  50. class S_Hud < RPG::Sprite
    . ]9 U8 W- W# \+ }* Y4 _1 `
  51.   include MOG
    ! d0 b/ _, ^3 w/ P" h6 C
  52.   #--------------------------------------------------------------------------  _* W( u+ k2 A  Q. q6 O% w
  53.   # * Initialize  _5 T* {) Z) Y
  54.   #--------------------------------------------------------------------------; A% ^. Y- C5 d6 M; Q1 P
  55.   def initialize(enemy,viewport)
    3 e  I! E2 i" k0 f
  56.     super(viewport)
    : J. `& P$ M( m. K; `! H7 U5 p
  57.     @enemy  = enemy8 v) n/ {" q# v3 ~
  58.     @battler = @enemy.battler
    3 N' @8 H/ A8 e" `' L% F) O' S
  59.     @old_hp  = 0
    3 Y0 j) T" o% f+ e9 r5 F
  60.     @old_sp  = 0/ F1 C4 V9 P# n( a% S, ~+ ]9 A
  61.     @old_vis = false
    6 h% ]( O% o- D7 C
  62.     self.bitmap = Bitmap.new(100, 100)
      [( y  `( r: Y, d: w; b( Q
  63.     self.visible = (VISIBLE_DEF)#false8 u* q1 o" z* w. j+ _, l
  64.     self.z = 100
    # K; H5 V, f1 Q3 F3 P" X
  65.     #HP Border -------------------------------------------------------------------( Y- \# V4 {0 a, X5 v# o! z0 |
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")  l) T0 i7 c% m: X
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    : w3 N, p! O! G) o
  68.     @layout_sprite = Sprite.new
    $ h/ y+ A" c( {) p# n
  69.     @layout_sprite.bitmap = @layout_bitmap. j9 q" }# t& N+ r4 \' p2 w
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)+ j8 N$ u5 V6 i1 `  g! t& B( L- Z
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      + a  T8 e- z) ?9 h6 G
  72.     @layout_sprite.z = 5001/ t( ~* r& W' F5 G% s* q+ t& `3 f
  73.     #HP Meter ---------------------------------------------------
    ' T0 h8 f+ H% L3 ?9 H
  74.     @hp_flow = 02 m3 V; C# `6 }& f3 I, i) e1 }/ g7 T
  75.     @hp_damage_flow = 0& Z. X' z8 L1 X  O, A5 W1 ]
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    2 o  Z; l9 a" f- Q- I7 Q
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    " U. z! S! J6 E+ b9 X; J
  78.     @hp_range = @hp_image.width / 36 v. l+ u% a3 s, x! [$ X, x
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    . r$ ]; P4 e3 U8 a
  80.     @hp_width2 = @hp_range / 2
    ) s. P' [3 K; `( C7 w" Q
  81.     @hp_height = @hp_image.height / 2* t- G5 n+ g- t4 g  o9 |& Q
  82.     @hp_width_old = @hp_width: @5 h8 o2 k0 e8 L# e
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height), Z2 a4 P' M% m$ d1 d  M. K& ^
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    * K) J6 V, I: n" A+ c0 Q
  85.     @hp_sprite = Sprite.new2 ^( A* t* H% Y2 o
  86.     @hp_sprite.bitmap = @hp_bitmap! c# J. v: F) u) A, n9 y
  87.     @hp_sprite.z = 5002
    ! F! V' R1 F* ?4 A. f, ?7 j6 G
  88.     #SP Border -------------------------------------------------------------------
    + V4 k5 \$ P' P# B0 B' R" u
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")9 w( b+ k& Y- H
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    ! f- D3 ?" @; x3 G; N  l  _
  91.     @layout2_sprite = Sprite.new! x6 G- G4 c0 Y
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    , T5 f- R+ w2 j0 \9 L2 ^8 w: x
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)7 j$ m: o% o9 U4 Z- |9 l3 {( s
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      0 I' [& t1 w/ y$ |( s7 Q) {
  95.     @layout2_sprite.z = 5001    " F1 r6 p2 V3 Z" _; E0 |
  96.     #SP Meter ------------------------------------------------------
    2 w. G8 u/ A) ~# k
  97.     @sp_flow = 0, A! H. e% }3 L
  98.     @sp_damage_flow = 0
    - _* q4 m, i8 F5 p
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")! m7 r5 S6 M$ W1 |
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)' ?2 z- D2 S- C8 Y( l7 I
  101.     @sp_range = @sp_image.width / 37 Q0 `5 ?) g) B% K. a$ h6 c
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  & T/ L$ K$ N" A3 H8 j3 Y/ B, T
  103.     @sp_width2 = @sp_range / 2
    # d0 k: e3 @2 D
  104.     @sp_height = @sp_image.height / 2( k/ j$ n* Z: P2 F# v- x6 d
  105.     @sp_width_old = @sp_width
    6 Y3 W# O. R) x' ~+ S4 t
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)* R' c4 r) j( M; s3 u# }0 N
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    * Y2 B; B, G0 q
  108.     @sp_sprite = Sprite.new
    & _2 I3 ~, o4 _0 o# k
  109.     @sp_sprite.bitmap = @sp_bitmap
    3 W& Z: \& Q# A( w
  110.     @sp_sprite.z = 50021 U2 P$ X4 e6 C. h- `
  111.     update
    9 I; _( e% X1 e$ \( m
  112.   end
    1 p4 Q6 ?1 m5 i3 r" ?+ \' Q# T: C
  113.   #--------------------------------------------------------------------------
    % x' X3 b% F$ L2 U% ^* n
  114.   # * Refresh1 p) }$ O- c! Y0 h) G" ?
  115.   #--------------------------------------------------------------------------
    ' ]( w" v' E* E. x: C3 _
  116.   def refresh
    $ i* n2 z4 ?. x  z
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible  T: X3 q% t7 s* j& @0 H
  118.     self.bitmap.clear
    6 W4 q" f3 f& H; F
  119.     @old_vis = self.visible. B+ I5 z$ x% e4 ~) O6 U1 [3 B! Y
  120.     @old_sp = @battler.sp
    / @/ H3 d/ a, K$ ?
  121.     @old_hp = @battler.hp
    : C  Y6 t) T2 q0 ^
  122.     hp_flow_update
    7 c, e, y3 y6 m6 z6 d3 w4 z
  123.     sp_flow_update
    1 a. V. M. R6 e) V& M/ n/ d' e7 J5 g1 g
  124.     hud_pos_update8 b- w: w/ ]: `# v8 s1 s- N
  125.     visible_update
    $ \0 Z1 |- S9 K" x2 c
  126.   end
    7 I3 W$ r) V1 D, U+ s' q2 ?
  127.   #--------------------------------------------------------------------------
    ; h5 d  |! t3 f. f
  128.   # * Dispose
    + V: L6 i5 Z& q
  129.   #--------------------------------------------------------------------------: I) }9 ]- |& Y3 w9 l1 {$ m
  130.   def dispose& d8 L% K! Q. J& |2 w  D5 S% Z
  131.     #HP Meter Dispose( m* R: |  ]; y6 w5 v- y" B* Q( |
  132.     @hp_sprite.bitmap.dispose/ S0 {7 L% Z: g: r' o
  133.     @hp_sprite.dispose
    / |/ J* u8 S1 g. E1 J' o
  134.     @hp_bitmap.dispose
    ; w2 F- D8 V- P9 a2 D! r
  135.     #HP Border Dispose
    ) `- Z3 ^7 |1 Y( f
  136.     @layout_sprite.bitmap.dispose( T$ p( g/ R" s/ H, r
  137.     @layout_sprite.dispose2 C( A9 u* \4 M6 g( K
  138.     @layout_bitmap.dispose8 J+ Y! ~# k9 ?& O+ N$ C
  139.     #SP Meter Dispose0 X, A8 v8 R" r& W# X2 d  _
  140.     @sp_sprite.bitmap.dispose
    ) x0 n1 d9 w  c& K/ U
  141.     @sp_sprite.dispose9 x( L2 A9 }* D1 G* I, _
  142.     @sp_bitmap.dispose
    7 i0 [9 i1 f7 d8 g' m
  143.     #SP Border Dispose/ `" h% T! }5 O/ u6 D2 g4 {
  144.     @layout2_sprite.bitmap.dispose
    ' W  [; E3 w2 s( o8 D' A
  145.     @layout2_sprite.dispose
    # v1 y% }5 r0 L! S0 F; L
  146.     @layout2_bitmap.dispose
    ; W6 Z* h% X6 Y2 r( v% y
  147.   end
    3 J7 D1 a& X, L+ ]. a. O& b
  148.   #--------------------------------------------------------------------------: l- ~- P8 x0 R: g2 b- P
  149.   # * Update* L+ P5 L9 b0 b4 Z9 p
  150.   #--------------------------------------------------------------------------
    $ @* y: ~8 k! U$ P8 x* |
  151.   def update. ^+ a, Y6 c0 ^9 j3 n+ {$ s/ S1 x, P
  152.      @battler = @enemy.battler
    7 h7 B; _$ ^3 t9 ?  G) ?
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    ' }! t2 F" e/ G, ]3 m  N3 e! {  c
  154.      if self.visible
      T/ e2 _& F8 r! I! @
  155.        refresh2 o5 j% s/ u8 @0 ]8 ?! E
  156.      else& z* T7 }" m6 w7 u2 }& M0 v
  157.        self.bitmap.clear6 Q/ v3 R0 s9 Z+ I+ S7 Z7 r
  158.      end! O' J& B4 x( o; Y
  159.   end
    % c; a/ ?3 T! a9 d; ]
  160.   #--------------------------------------------------------------------------- f3 I" A% Z! M% A% O
  161.   # * Visible Update
    % a% D/ v- C' q
  162.   #--------------------------------------------------------------------------& |; O. h4 O. r6 `5 S, A
  163.   def visible_update
    & c8 E& ], J' z' S7 i
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    : F3 z3 C1 h1 X$ P
  165.        @hp_sprite.visible = false
    6 Q. ]% ]- e1 |, X( I7 u1 S) \
  166.        @layout_sprite.visible = false
    . D3 [- {, x0 q6 G$ x
  167.        @sp_sprite.visible = false$ l5 R+ a5 G% r2 E
  168.        @layout2_sprite.visible = false
    ! L& f9 G8 y8 f7 r! y+ e! t
  169.     else$ P  [+ c* Q+ P- M
  170.        if HP_HUD == true
    - R7 \) ?$ F6 \' W
  171.          @hp_sprite.visible = true
    ) X, M1 ~. k2 R+ X# k9 d
  172.          @layout_sprite.visible = true+ [( r8 C  b! z! @4 c
  173.        else
    ) E; Q) |& z+ B9 z
  174.          @hp_sprite.visible = false
    * n6 k6 |. t# a  H  ]
  175.          @layout_sprite.visible = false
      \' |% `' q) }0 O& m3 g$ ^8 w5 ^# z" b
  176.        end  
    , E7 i0 l- |) i1 e% }9 i
  177.        if SP_HUD == true
    ' V0 T$ }% t8 s5 S0 W
  178.          @sp_sprite.visible = true- W" |# \6 [) F" d& X: Z: i& F! |
  179.          @layout2_sprite.visible = true
    % i2 L. U3 g) N1 F
  180.        else0 f5 {  C* h0 X% F
  181.          @sp_sprite.visible = false% b2 E  J( `! B! ^
  182.          @layout2_sprite.visible = false
    / v1 E3 v9 @- _1 C  W3 ^7 e
  183.        end
    + ]4 B" b+ `5 C, M6 \
  184.      end  ' e- `: ?# G- _% L( ~! T
  185.    end   g# \6 d7 o" W1 s- ^& [% x$ S- w
  186.   #--------------------------------------------------------------------------( i6 ?+ i% o+ j7 V0 b: e* M
  187.   # * Hud Pos Update3 x" J9 }( {# `% B5 P+ n' f1 Y+ `2 S* |3 {
  188.   #--------------------------------------------------------------------------. |* F+ @3 C" _7 N
  189.   def hud_pos_update8 k; f8 ?% C; b2 @% d
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X$ |: m3 @+ Z" F3 n* K
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  6 h+ N8 i5 ]  f# s& N
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    ( y& G6 I4 d2 |& Q# L6 E% g
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y & e& ?3 C' h  n2 Q4 [
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    / G. k9 a; ]3 O8 F6 m% d/ g/ B
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    % t' G& F, B, f
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    1 f! s( N  p8 T7 b
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     , Y7 q- M9 G1 f. F  F: i
  198.   end  
    . z" J8 G" s5 H. `6 ~$ G# [0 L
  199.   #--------------------------------------------------------------------------
    9 S: o4 V1 V, n$ K4 T
  200.   # * Hp Flow Update# h/ r3 [8 j4 x3 X1 \8 t( ]+ i8 P8 _
  201.   #--------------------------------------------------------------------------
    - F: U! }* u  i3 t/ ]+ d( R
  202.   def hp_flow_update& ]4 G% N: W' y# k+ L/ k+ V2 T
  203.       @hp_sprite.bitmap.clear
    . |+ o8 e, L" ?- X
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  1 Q% s+ h) m% q# a* v% J
  205.           #HP Damage---------------------------------( d; I1 Y' q* y: ?6 t
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    $ E' g2 Z, K# c( V. ?$ y1 H
  207.           valor = 0.5 if valor < 1          8 {. E5 z) @" u% X8 Q# M8 ?: H
  208.           if @hp_width_old != @hp_width
    $ z& w: W/ g  P+ I+ |
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
      Y% U* |! i' d3 f, ~' h. E- D( o
  210.           if @hp_width_old < @hp_width
    : b% c, [" X" H: E  b' s
  211.              @hp_width_old = @hp_width, i1 E1 E* ~% E4 L
  212.           end      6 a. n; [5 a" g7 {
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)& e$ }9 H- T! L! f' A# ]: f7 ?9 v
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    3 V7 H  U* R5 R6 q, f9 g
  215.           end        
    1 j+ j. v" w4 n7 N" V
  216.       #HP Real------------------------------------
    ) B" t1 o# O! N- @8 }, j
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)% t1 [" O8 o& T1 p% X$ X* z
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    ' K% E- R1 ?5 W- v# D+ ]0 |% F
  219.       @hp_flow += 2  
    8 n$ i' Z. Q5 O% b$ q
  220.       if @hp_flow >= @hp_image.width - @hp_range
    ) r% b0 N' O: M# z5 D, a
  221.          @hp_flow = 0  
      ~; }& ]4 r: D: b3 v) s
  222.       end
    # K% W4 F# J2 M* z$ u
  223.   end   
    9 h: t; g# `1 J4 e
  224.   #--------------------------------------------------------------------------3 G& c9 a6 i) A! H5 C
  225.   # * Sp Flow Update
    & }+ i! R5 b1 E( B, s5 E
  226.   #--------------------------------------------------------------------------
    % J/ H! l$ o. a
  227.   def sp_flow_update
    5 h4 C- @5 t$ W8 W6 b# N2 @
  228.       @sp_sprite.bitmap.clear
    $ J" `9 A1 Y6 `9 l
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    6 B. S5 w+ H1 \
  230.           #SP Damage---------------------------------( i8 I" V6 V5 i1 o) ~; m/ _
  231.           if @sp_width_old != @sp_width
    2 Y, W2 j& R) r
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100/ Q1 N( l" [! }
  233.           valor = 0.5 if valor < 1              
    - _/ I# e+ `( ^* e3 ]# ?( R
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    . H+ c) @7 e2 ?
  235.           if @sp_width_old < @sp_width / Q$ `; |$ f3 S. l: d7 U
  236.              @sp_width_old = @sp_width
    5 J: B) c+ g5 p" z8 r& H
  237.           end      6 Y. |& J* h4 l$ j1 D+ u
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    * }+ h: g, X# f/ Q, P, p
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) + W$ \% d) e* q5 \  q0 x# h
  240.           end
    4 B7 G6 H* n( ?! c, `4 V' p
  241.       #SP Real------------------------------------/ K7 }2 d! }+ A" y2 V' c2 ^$ z
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)/ N  _8 A9 h8 V; a9 W9 {! c
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)  l* K6 @6 @1 b1 o. u- u, Q4 i
  244.       @sp_flow += 1  
    % F' x5 l3 ?) d
  245.       if @sp_flow >= @sp_image.width - @sp_range: w% i. p, [  Z6 E
  246.          @sp_flow = 0  % A) Z( i0 G; x  {$ T
  247.       end
    6 Z: m6 K  w0 i% S" s5 g# g
  248.     end            # Z) l# Q# M, k6 |, j! L/ ^
  249.   end
    7 \3 D% K: z1 M
  250. #===============================================================================0 t' \3 e/ X7 ~/ p
  251. class Sprite_Character < RPG::Sprite
    5 G' |1 h0 P0 e* Z) I
  252. #-------------------------------------------------------------------------------
    + `& l9 Z0 i& F9 z5 i
  253.   alias :xas_emini_hud_init :initialize, B/ ]# w4 w. A1 B
  254.   include MOG
    ! r  D# e- p( F0 a, U+ B
  255.   def initialize(viewport, character)( K$ a9 z7 q5 D$ ?, g
  256.     xas_emini_hud_init(viewport, character)
    0 G' Z! @3 F0 W5 r+ E( [$ D. l2 N4 F1 X" n
  257.     @viewport = viewport
    ' ~( T2 e0 I" H) a2 b
  258.     return if @character.battler.nil?
    3 r  X' i3 L8 x
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)+ e5 c( g, |: c) ^3 B
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)2 a1 b, v( L  x- f- x2 L' I" j5 X
  261.     return if @character.battler.is_a?(Game_Actor)3 P- K# {' c' e  M* B' b: x3 \
  262.     @bars = S_Hud.new(@character, @viewport)
    , f3 D5 W* T/ Z# F* s
  263.   end
    ! A! e! f3 i$ u: ~: z
  264. #-------------------------------------------------------------------------------
    ; I6 h* W0 `( ]3 `0 ~  n
  265.   alias :xas_emini_hud_up :update5 i. x4 G* k" M4 x
  266.   def update
    4 I1 I) I1 p1 m  n, b/ T& T
  267.     xas_emini_hud_up
    : b+ Z+ o' k8 Q9 t
  268.     return if @bars.nil?
    5 c" Y; N( a% T7 c
  269.     return if @bars.disposed?& V) d% W, @, f4 s
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs3 O/ ?; ]% S) \8 d, K0 H
  271.     @bars.visible = (dis <= RANGE)% ?9 M; m1 x6 i# Z
  272.     if @bars.visible
    ( ], e/ |8 W! ~% `. I2 \6 [4 }& C
  273.       @bars.x = @character.screen_x# - @cw / 4
    / R* [4 c) O" x$ C2 T0 y
  274.       @bars.y = @character.screen_y# - @ch / 4
    7 w" Y* r  L9 \& d: d, G
  275.     end0 K# N: V' K& o" C5 p' E3 T
  276.     @bars.update
    + l1 c+ T  h1 f0 m0 Y
  277.   end
    . G9 m) k, v/ y2 w1 j
  278. #-------------------------------------------------------------------------------1 x- p- |  a- V$ P9 p! w* F
  279.   def dispose
    % s7 ^1 K4 P: ~8 u$ u9 F
  280.     super* o5 f. U8 `0 H8 A2 v% z) e/ ^1 Q
  281.     @bars.dispose if [email protected]?
    ) h7 k( l( H+ J/ i+ s, E1 `) E
  282.   end: x! ^; v; [2 p
  283. end
    9 Z4 F# p2 T4 s, r! D/ r5 b; k

  284. 5 u, @/ i  d7 E9 c
  285. $mog_rgss_s_hud = true
复制代码

  i' U8 w, Y, x9 a; m( e5 o& H
  N% u, B) `1 ^1 f" Y
: i0 t7 _( I7 P上面所說出錯的203行內容為- I. x! j% V5 i. ~
@hp_sprite.bitmap.clear
: t* }! y4 u1 h5 E( e( f0 L3 X" m) b8 j' t+ B- `) h
想知道怎麼解決
1 \2 }' D! I3 `0 V, t* ]6 h
: p8 w3 M9 S* u! [  L- ^該腳本支持3.825 K" M2 U. h5 }

/ h+ M; L) X# p- O' G* K' f4 e9 N下面是圖檔,要塞在Windowskin下2 {7 a! {$ Z( \8 V3 ^2 p# K
# v8 `& z2 g* b, ?' m9 C
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
/ W- k) z' X, Y# K9 D( P# N) O& h7 S3 e5 p  v  t0 m: q3 M8 m

2 F0 E# n8 }+ }" z  K, ?$ X) M, V5 G0 r3 [

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
' o' V  B6 s# i$ K$ e结果尝试刷新了一个已经释放的图形
1 E) Z- O) f0 v0 P  W4 k* {- w/ E
  A# q8 V% q7 j* @* U
# U) L' V5 i8 j7 x& n/ T5 x
' m- S4 ^6 x2 B* e虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?% ?, w5 |& @$ l. _
复制代码
不要后面那个条件貌似就没问题了。
+ q; y1 c/ k0 a) ]7 T" G8 {6 h+ R: m4 u+ u1 y! Y8 D
, t4 n% m4 G9 E5 w# o+ x

4 v4 v' t  w2 C' e% \+ N7 ?; L) d& Z# M

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 2 K; z* y0 m9 L; ~
貌似是释放的条件不合适7 x" f6 I; M+ A# P/ W. _
结果尝试刷新了一个已经释放的图形
+ K, M$ a5 E/ p) ]/ J
把後面那個條件弄掉後,的確沒問題了
1 F) C. D9 X- G% b目前從關頭打到關尾結束都沒再彈什麼錯誤4 V5 g) T# t1 K  n! f
非常感謝
5 ~2 ~, B# N! j
4 O# M1 {$ `& r! Z. g不過我是參照著別人腳本改的
' `. `( \: L' x2 a1 A6 D# O$ b他寫的條件式也是那樣,但我用他的沒什麼錯誤# O& i9 B4 `1 r& `
不知道是怎麼回事7 P( i( f' P" Z3 f3 _
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
# O( b7 d) D1 h! i; }6 R3 D3 D! W我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events) a6 c' e8 _$ K) s: j
嘛..这个数组吧..我在以前试写队友的时候关注过一点9 ]9 y/ D. |( S: V9 E
不知道XAS内部对它做了什么手脚还是为啥,
* Y* i. f( \9 k) g0 u! |5 d* G# T1 h总有那么一瞬间,没有被消灭的敌人事件也变成了nil
: O& r2 K& M- Q: l. h. W! T! H4 Z2 {) U
$game_map.events.values[@enemy.id].nil?) y7 T! {* W+ d, V' y
因此自然而然的返回true并符合条件把图形释放掉了$ M" G$ b+ M- T* R* q

3 l- X  O. ?: E7 w3 dLZ应该有注意到吧,4 k6 s/ b5 c; F3 F8 c
我测试的时候发现报错前几帧,图形会消失,
1 F1 r" \( _# Z8 l; @# U4 `9 Y# V应该就是“误以为敌人被消灭”了。
/ T( G6 [2 n; P0 e0 r3 I; I) u1 m9 v* K" K  N6 p$ z. U; `% L9 Y3 L
受限于个人水平,至今无法找出$game_map.events的真相..! O/ j$ J1 r' z0 s

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 6 P0 L) c# F8 l6 B
$game_map.events
! H6 @1 U- s( N7 L0 C& q* }5 T6 i嘛..这个数组吧..我在以前试写队友的时候关注过一点- A+ W6 ?+ x. f0 E+ @9 ^3 M
不知道XAS内部对它做了什么手脚还是 ...

  t3 S$ `/ Y4 M. I6 @; _當初我把那個條件式看了三遍,都不覺得他有什麼錯
0 R% C+ {: @3 {$ `" _原來還有這麼深奧詭異的事XD2 |4 e7 V! U3 J$ D- j" o3 Q! }! E

- m9 Q# K. v  R0 ?* O錯誤發生前的確會有圖形沒顯示出來
0 M- d- ~/ @6 X& c. a5 M! {不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
  O( ?7 M6 ?- [1 r4 @9 j$ ^& ~$ }沒想到居然是詐屍了XD( y- K& y+ m% z7 W
1 o$ j# z8 c: I6 ~
不曉得3.91有沒有修正這問題...
4 Z1 x& `7 i, D不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。- e5 |( D5 J$ q

. E; @# p! P9 C1 H% [; c* e的确! |$ K! O) |  G
用惯3.82之后想去整3.91觉得压力甚大..
. J3 Z6 N' e8 m4 f: z% _, n( H干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
9 r: W+ p( t  E# ^5 E2 k# m+ N- b  Z" Q5 D: Y' y
然后加一个判断处理的。(我记得有一个disposed?)




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