Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
' |8 ^( t: ?1 Q! ]會在每隻事件怪物的腳下顯示* \* k% u. H* @2 [) |7 G2 B3 R% Z! x; g
問題是不知道為什麼  O' ?, m4 R# _1 }( I: t, Q2 R
有時打怪打一打會跳出( S6 {0 F3 }- h) Q! e
---------------------------
9 O5 n1 J! X) ?/ xXAS
* A7 x. i9 @  s5 v) o---------------------------
2 @! F+ F( _! n0 S: R脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。; l9 O% I- w) I
) {; F7 _2 T! X& N6 B) {% F( ?
disposed bitmap7 C+ D+ R! f/ _4 Z8 T
---------------------------5 g$ ?+ O, C: b) b2 @& }) c6 `
確定   ' u( u/ A; J' w/ Z9 i
---------------------------; p4 ]' G2 |2 m/ T8 o

! h: G, x) ]5 m9 O: ~& i4 G- W. N這是腳本
  H' R3 E" M. k( i7 L+ c
" ?2 G6 q4 x( E
  1. #===============================================================================
    ! f) M, E; t4 p- ?( G& L
  2. # MOG - s Hud 1.0      ' L  x& x) [  _1 S! ^
  3. #===============================================================================
    ' \9 K, X1 ~" o" Z3 Y
  4. # By Moghunter
    2 _5 u9 B4 t! ~7 ?; R' e& l
  5. # http://www.atelier-rgss.com
    $ b! B& }( {- J) V8 {
  6. #===============================================================================5 d2 _- S0 a  \% }
  7. # Translated by Calvin624   ?) C1 W) g! b* g* k8 {' w) a( O% O8 c
  8. # http://www.xasabs.wordpress.com5 f; j/ H2 ]& H
  9. #===============================================================================6 k. p" k# r8 k( x# g
  10. ###############################-DESCRIPTION-####################################
    . `, x/ W* d* |# x5 P( s, h: ^9 a
  11. #===============================================================================
    / x  t3 W/ k7 i  |6 {4 L
  12. # Personal HUD – displays the HP and SP below the hero., l- p& Y) X, R+ c2 e/ A$ o
  13. #===============================================================================4 x" o# Q. g# l+ ^& w7 I
  14. #, z% [6 [! j3 u. _) v% d9 P
  15. # Graphics required:- q3 i% w, ~* ?  Q# v$ o
  16. #
    , G8 H! ~+ N6 }3 [6 t5 j8 _# `& `
  17. # S_Border_HP_Meter.png
    * U1 U  O; l0 L& ?6 [
  18. # S_Border_SP_Meter.png, A: ?& p1 ^* R% ~7 i+ [
  19. # S_HP_Meter.png
    . C* \2 W% X, |2 i7 R: m
  20. # S_SP_Meter.png
    9 x( X# a1 i" [/ b
  21. #
    + g& k+ z, }  Z& Q+ b* O* w; [
  22. # All images must be in the Windowskin folder.4 ~  ?3 H/ a. ?
  23. #
    1 w& `- }% ^$ C8 ?; ^& w3 Q
  24. #===============================================================================
    ! W8 T( A/ V0 D1 l
  25. module MOG
    9 e" o2 T5 E4 \4 D. _0 ]
  26. VISIBLE_DEF = false  / `0 }, n6 g3 ]2 A
  27. # Show HP meter?. T/ @/ n8 w' E2 D
  28. HP_HUD = true& j5 n# ?! I$ m2 g6 ~7 C* u
  29. # Position of the HP border
    + T. A! A4 z, v0 r  w8 D' T
  30. S_BORDER_HP_METER_X = -2' L. k" R. `3 q( n$ V1 {$ e+ A
  31. S_BORDER_HP_METER_Y = -2  
    " n# [5 b# Y' r1 N$ s
  32. # Position of the HP meter! d4 E6 e: {% x) ~; Z
  33. S_HP_METER_X = 0& o5 Q$ K9 Q0 D3 P1 Z/ P
  34. S_HP_METER_Y = 0
    3 ^4 ]- I2 B3 {; ^9 v7 h
  35. # Show SP meter?
    & b9 M# a! Q# M" f9 S
  36. SP_HUD = true
    2 @) S4 C, @2 Q1 l$ z( @' Q/ N; y! P
  37. # Position of the SP border, v2 ]6 V' a( `' s
  38. S_BORDER_SP_METER_X = 06 _& e5 G, h2 i4 V( F
  39. S_BORDER_SP_METER_Y = 10
    / G$ O2 ~3 @& Q* U& n$ r
  40. # Position of the SP meter& B/ c, O- }! [4 r( ?1 E1 b
  41. S_SP_METER_X = 06 V8 \$ c4 S5 y- f4 Q3 {3 b
  42. S_SP_METER_Y = 107 N/ k/ p" x/ i5 Z+ n; R. O
  43. # Switch to disable the HUD; E+ J/ E; M# J1 ]9 Z! l* t8 ~7 b& a
  44. DISABLE_SHUD_SWITCH = 5
    . T& R% m* p5 K: N
  45. RANGE = 200 n2 y) g/ I4 m) c( w+ g1 G8 a
  46. end
    + d0 k) Q1 h: t. Q
  47. #===============================================================================
    & q& D" [- X' p; H/ Y, N
  48. # S Hud
    . t1 M5 U1 K7 h8 J
  49. #===============================================================================) N% v8 z) |2 M3 V# e/ @7 \
  50. class S_Hud < RPG::Sprite
    ' Z, Q2 [3 w: Z4 t
  51.   include MOG
    / v6 s( M" }% o0 d( `/ @6 h/ u( T
  52.   #--------------------------------------------------------------------------  k0 T+ T* x+ q" a' q  x( {! [
  53.   # * Initialize9 t; n  @1 J' r& @, E" @1 |
  54.   #--------------------------------------------------------------------------/ Z% U/ k3 I* W2 @4 k
  55.   def initialize(enemy,viewport)+ j3 y3 v! ~: h) l
  56.     super(viewport) $ O, F2 n& N8 S0 Z# c# U, Q
  57.     @enemy  = enemy
    ' j, B& ?7 d) i* C
  58.     @battler = @enemy.battler
    7 x" w$ B- r* S$ K# g5 B
  59.     @old_hp  = 0
    4 _' b' `: ^1 ^7 O4 ~! I1 N
  60.     @old_sp  = 02 k' Y% b( \  `2 U
  61.     @old_vis = false$ E, I8 r: u7 K; c- O
  62.     self.bitmap = Bitmap.new(100, 100)
    3 {9 ?$ ^6 _1 o; p. I; h
  63.     self.visible = (VISIBLE_DEF)#false' j, x3 a* P2 a  O/ j
  64.     self.z = 1003 C+ y+ P& `  v! _/ w4 K  Z7 X$ n
  65.     #HP Border -------------------------------------------------------------------- i. l- W8 `0 i0 L3 b) ^7 k
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    & H# x3 d! K5 L7 o; S* V$ R
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    3 I, A$ C4 r$ i8 L
  68.     @layout_sprite = Sprite.new
    8 i0 f2 n6 I: H
  69.     @layout_sprite.bitmap = @layout_bitmap
    : l" a2 u5 M! S' w+ W) O5 a8 E; `
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    , b  j( Q; u! W" V$ I. {
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)        v8 E  r+ b! {6 A9 k' _* V, {
  72.     @layout_sprite.z = 5001) G& V+ @8 p6 y
  73.     #HP Meter ---------------------------------------------------
    ; u* K: ~1 P: ?5 r# k2 H1 ^7 l: P
  74.     @hp_flow = 0
    . _. k" j  x# m4 k' I8 q0 G
  75.     @hp_damage_flow = 0
    ' f4 ~0 z% b, t+ v
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")9 w' i" P' ~! d% ?0 Q2 q# V4 q
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    - I+ }% R. z5 H& `
  78.     @hp_range = @hp_image.width / 3
    ; ?8 l; s: p$ A& @4 c6 e1 j
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    # H8 P8 t% e. [$ f( r$ Z
  80.     @hp_width2 = @hp_range / 24 ?  \/ @! J7 |  \! n
  81.     @hp_height = @hp_image.height / 2: X9 y# J/ S$ b5 T1 d' k6 q! y
  82.     @hp_width_old = @hp_width
    6 R, Y9 W7 [. X! g4 ?( N' u
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height), ?/ K) ?8 \" e
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) 1 u0 h! i! Z9 C: E1 O
  85.     @hp_sprite = Sprite.new0 A5 j  I% X8 q9 d0 b. X: \
  86.     @hp_sprite.bitmap = @hp_bitmap2 B# j8 @! J  {+ s
  87.     @hp_sprite.z = 5002( m- o1 ?0 F$ L) T
  88.     #SP Border -------------------------------------------------------------------
    & P& Q; q- l% Y8 P; z; U' X# y
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    9 y- _# z! c3 o3 `& M
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    . m( n$ ^$ R1 Y, i# f7 M" j
  91.     @layout2_sprite = Sprite.new
    # L, Y7 Q2 \5 P' Z& S: o/ |/ ^
  92.     @layout2_sprite.bitmap = @layout2_bitmap  j6 i+ m6 f: }+ }+ \
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)* N! O! x, K" B) j
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      ! N" s- ^' S+ J) i, ^8 V1 d# d$ B0 b3 {
  95.     @layout2_sprite.z = 5001   
    : p) J+ q/ r% t7 a) R7 i
  96.     #SP Meter ------------------------------------------------------9 k+ ?3 N( j6 Q8 C. n
  97.     @sp_flow = 04 a/ d' Q7 C" r/ @0 k3 T7 k
  98.     @sp_damage_flow = 0
    9 Z+ M, \6 c5 ^- W
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")3 X1 }( g# x; R! s0 Z4 W8 {
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    4 l4 k$ h; }7 W8 h7 {7 [
  101.     @sp_range = @sp_image.width / 3
    ' |! x8 |  v* L! H+ q, S
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    6 ^6 S! i- H0 h$ o) u
  103.     @sp_width2 = @sp_range / 28 m/ Q' ^1 ], @8 ?, p2 v+ t
  104.     @sp_height = @sp_image.height / 21 K4 R" u) }' \7 R; ~) X: u0 m
  105.     @sp_width_old = @sp_width
    - O  P1 C' G6 W. N3 h
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)0 {9 u7 ^/ g: q  ?) ^
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)* g9 Y' T" h! Y4 S
  108.     @sp_sprite = Sprite.new
    : A; N4 ^: |8 f# k! h9 r5 _
  109.     @sp_sprite.bitmap = @sp_bitmap$ D0 i5 ^* \0 l( f5 H
  110.     @sp_sprite.z = 5002
    ; f4 l7 \3 B: \1 w) j( j
  111.     update
    7 z& y7 Y; Z7 x0 [2 m1 ~
  112.   end- M7 d3 o3 C0 @2 b8 z! m
  113.   #--------------------------------------------------------------------------- a, ]8 a" |: `; C9 P: b& M1 u
  114.   # * Refresh
    / t: P5 d( b  w
  115.   #--------------------------------------------------------------------------# w3 K7 c/ P3 p7 H) e! M2 a
  116.   def refresh
    * l5 b  ^  t6 o. p" w& R+ z
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    2 ^" J- V- T" f+ |5 d$ R' a/ A1 _
  118.     self.bitmap.clear
    # i; g, w7 n) F+ ]7 [1 L; J
  119.     @old_vis = self.visible
    ( q% u; c6 \, B: X
  120.     @old_sp = @battler.sp
    , r2 K' V0 G* I; m3 r3 \
  121.     @old_hp = @battler.hp' D/ [. G- K: t, C
  122.     hp_flow_update
    / J% A! ~- q6 K! h
  123.     sp_flow_update
    # l1 ~9 A9 b2 z3 F8 X" \
  124.     hud_pos_update
    9 ?+ s( u; D' U, ?& }
  125.     visible_update+ N5 h# ?! S) R, ]3 j
  126.   end
    4 {5 X7 h3 L0 k
  127.   #--------------------------------------------------------------------------
    ' k( |0 `$ N/ s2 s9 k  b
  128.   # * Dispose
      l$ U6 c% H2 f( G& L1 u
  129.   #--------------------------------------------------------------------------
    % V, n7 H% w4 [8 U6 x+ J
  130.   def dispose/ H+ b  y3 s' ]4 Y/ `" c+ v
  131.     #HP Meter Dispose
    $ b( D; p9 w  R- k
  132.     @hp_sprite.bitmap.dispose, B& _1 @  c$ p) [. N& U
  133.     @hp_sprite.dispose) T' a8 ~. ?( C2 E* o
  134.     @hp_bitmap.dispose
    " j) |) k; m/ S7 V
  135.     #HP Border Dispose
    4 R& y% p& P- I- K8 f$ v, _) C- m
  136.     @layout_sprite.bitmap.dispose
    . E1 @8 c) I9 k! }! k  r: @
  137.     @layout_sprite.dispose' n. T5 k0 D1 {
  138.     @layout_bitmap.dispose
    - Z% C  }! \9 u( j4 T, o8 o( X
  139.     #SP Meter Dispose. f$ M* E* ~8 Y  n" X
  140.     @sp_sprite.bitmap.dispose
    ( u5 @1 A* T5 B2 z. |
  141.     @sp_sprite.dispose
    - w3 {7 x0 K6 f$ E! K7 y- Q
  142.     @sp_bitmap.dispose
    , r9 y7 @8 l0 ?5 e/ a9 ^
  143.     #SP Border Dispose
      o( n& j/ W- F) P) P4 _( _" Q& N! Q
  144.     @layout2_sprite.bitmap.dispose) l! g$ K# F6 ~* P  M" X" x
  145.     @layout2_sprite.dispose1 `+ ?# K1 M8 s6 c' _; V9 ~4 o
  146.     @layout2_bitmap.dispose+ C: U2 p5 X5 I3 @8 d
  147.   end
    . R3 v6 }9 a; ~" _* i
  148.   #--------------------------------------------------------------------------& J& K( ^7 y" R& o: ^4 r7 ^1 ^
  149.   # * Update
    # ~4 c+ D; m/ d
  150.   #--------------------------------------------------------------------------, @/ D4 f) T9 h5 ~0 S* H# `
  151.   def update' [, a# P9 W1 U/ j+ _2 ^" a$ s9 J( W
  152.      @battler = @enemy.battler ! B) d# o4 L3 H* F! Z$ {+ A5 H
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    8 k& ~* u8 R# {$ c% @( [
  154.      if self.visible
    % W# ~- Z8 l- l9 h+ B" n3 a  V
  155.        refresh
    7 m1 _0 @6 R5 H* O  s1 g  d9 q5 {
  156.      else
    % p* g, p/ p, j3 A2 ^
  157.        self.bitmap.clear
    . ?: |& J8 o$ L# H  y$ Y0 j
  158.      end, J  z1 @! _7 c
  159.   end
    1 n. r9 f6 D3 D. w
  160.   #--------------------------------------------------------------------------: Y4 i# y) Z8 A: f( T
  161.   # * Visible Update
    4 p# ]: E4 U, Z* f
  162.   #--------------------------------------------------------------------------* I# f: M% D6 }( x( H2 \
  163.   def visible_update, o# G) J4 ~" w/ j8 T8 w' q
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true, U% ^$ B' l4 ]+ K
  165.        @hp_sprite.visible = false
    ! o. _& `% a: y- b) S' M6 L
  166.        @layout_sprite.visible = false
    & t( w! _( V: p- F& U; B# S
  167.        @sp_sprite.visible = false
    1 q, f" g' d/ R' [
  168.        @layout2_sprite.visible = false
    ! h/ @0 n( e5 Y! M0 u7 T
  169.     else
    / G0 w  {- N* @; ]: S; r' t
  170.        if HP_HUD == true
    : F9 l6 t- `: G# L3 \; A
  171.          @hp_sprite.visible = true& _5 w. n5 B  d7 V" C: d7 H
  172.          @layout_sprite.visible = true7 a  m4 a- ^' A" z7 r0 `6 ?
  173.        else3 p% P! K& @4 Q+ s, m8 w* n7 F/ P% d
  174.          @hp_sprite.visible = false
    ' |3 l; J  n! r; c, [: @* n- Q
  175.          @layout_sprite.visible = false
    $ j' S* \1 V8 s) m
  176.        end  
    $ p/ Y1 O, j# B) p- s
  177.        if SP_HUD == true
    + y5 F6 L$ e1 g: v% j9 H
  178.          @sp_sprite.visible = true
    7 ^1 l3 J  T$ n2 u1 F$ k
  179.          @layout2_sprite.visible = true6 D# M4 B) ^* [( F! G" _% |7 i
  180.        else& ~- ^* x7 C3 W/ D
  181.          @sp_sprite.visible = false0 d! H, J; w, E% @  l5 z" n  \8 o/ R
  182.          @layout2_sprite.visible = false
    ; B& A2 e, ~/ C+ Z
  183.        end " {( J8 y+ Z) L, Q
  184.      end  + @6 V7 P0 q7 Y, B* m2 T0 N: I
  185.    end 1 J3 Y( ]6 I5 w7 m# t4 ~8 e' \
  186.   #--------------------------------------------------------------------------7 ]: _: D; p" s: t
  187.   # * Hud Pos Update
    / u) T. L4 Y& V6 O* P
  188.   #--------------------------------------------------------------------------
    5 ^& @4 K# S8 _- m3 U$ C3 i5 D
  189.   def hud_pos_update
    " I  }- _. d8 p
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X3 G' @. ]3 [4 C0 S2 _7 s
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  0 x$ J1 ?/ I! i  l
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X9 d6 d6 q6 q* |+ k0 Z6 o- L' Y
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 3 ]. s6 U: A% w9 Z) G) P
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    , W% _$ o# k, I9 b
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    5 M+ s9 ?5 z6 ?1 @
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X( `& k# p/ @, P; X
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     : @8 h+ p% ^0 |5 L# X) l
  198.   end  % O& \0 d+ u8 H" L  r" B" \
  199.   #--------------------------------------------------------------------------/ X1 c( _3 E/ A% n! W
  200.   # * Hp Flow Update
    ( F1 Y$ J6 r' S0 F# p7 z
  201.   #--------------------------------------------------------------------------
    ) G7 Q4 v8 g2 L' f& _+ I$ ^8 I- f
  202.   def hp_flow_update
    # S6 x; `$ ]( H4 p
  203.       @hp_sprite.bitmap.clear
    $ \4 @2 Y4 ]3 Z0 @# E: J
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  5 [! M0 V2 O% R: p
  205.           #HP Damage---------------------------------
    $ m  `' d, t  q$ D2 x' I5 c
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1009 h, u% [3 g7 X( S+ c
  207.           valor = 0.5 if valor < 1         
    3 b- ^* G8 N3 Z* b* }
  208.           if @hp_width_old != @hp_width* J( p% l; u6 t
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    6 ^1 g4 a0 H2 P; Z$ S5 q1 W! [
  210.           if @hp_width_old < @hp_width
    ! q" \( g6 G7 Q6 r" x# F0 S
  211.              @hp_width_old = @hp_width( v8 P+ f. T6 H6 ~+ M5 B
  212.           end      
    . C( L; D1 o0 ]/ t4 d1 i, Y2 V. O
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)2 @, Z5 @, E- ^. @( s8 }' N% n4 l
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    # H3 C0 G7 f* ^8 ?5 h  b2 x0 A
  215.           end        , c6 q% ?7 a. U' l( R% `2 ^4 ^
  216.       #HP Real------------------------------------
    - ~. ?1 Q6 a3 r
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)# g6 I9 y% o7 P
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          # _- v* q) Q, }! m, e
  219.       @hp_flow += 2  ; ^* [! m4 P, R' v& m
  220.       if @hp_flow >= @hp_image.width - @hp_range8 X7 F+ A  G1 v5 t  N7 a3 i$ Q
  221.          @hp_flow = 0  
    ' t" s# z* \4 h( B$ m" |
  222.       end
      G1 S; p8 F# U4 U0 w+ v* ]+ U
  223.   end    2 e6 p$ ^! i6 z+ ]0 Z
  224.   #--------------------------------------------------------------------------1 A: K* X2 l0 u& w1 `; e9 e
  225.   # * Sp Flow Update
    . i! \5 V' V. d. c' k5 B% R; B1 c
  226.   #--------------------------------------------------------------------------
    : o; }% F. O4 g2 @8 J6 T. X
  227.   def sp_flow_update
    3 y3 q* r3 s% P
  228.       @sp_sprite.bitmap.clear
    " U# X$ l1 b$ n, J. T% ~
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    + h+ j. }& U. O  `! w/ d
  230.           #SP Damage---------------------------------. S* @4 s3 k- h! d+ `
  231.           if @sp_width_old != @sp_width
    . W9 J+ h+ l( [( w7 x" X
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    0 \- x% W/ ~0 M" G" s
  233.           valor = 0.5 if valor < 1              * g) k, ]( j& _1 t' u
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  + y% r1 y! E. S. P6 X5 J# \
  235.           if @sp_width_old < @sp_width ! A# S2 O& w6 E& S
  236.              @sp_width_old = @sp_width
    6 H9 q6 z6 |1 |! r5 [% p: O% @
  237.           end      & X2 _- E2 H6 v& `* t3 l% Z9 j( P: L5 I
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height): @: ]- x; t: B
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) $ v& a. G# r0 F4 K# G8 m
  240.           end
    8 A% w' g7 m4 m/ k
  241.       #SP Real------------------------------------! B- S$ ?- h5 G8 i
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    , D  H- ~6 V4 O, E' ^+ y( v/ a
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ( N; r* y1 b+ e+ G
  244.       @sp_flow += 1  $ V( G. \2 ^+ W2 Z& x$ X% j8 y6 w
  245.       if @sp_flow >= @sp_image.width - @sp_range  W* w2 x4 h* r' a+ |
  246.          @sp_flow = 0  7 o) u$ h% \. R' ~, \1 G5 z! |
  247.       end" m4 F1 m( v  k+ L% d* e$ h$ y
  248.     end            8 r8 x% F, i8 ?  B7 ~2 r' |7 C% ~
  249.   end
    # u! @' u. V. W1 j
  250. #===============================================================================
    6 A3 Q6 i5 v- e
  251. class Sprite_Character < RPG::Sprite, T$ o; w2 ^6 W) X# ?
  252. #-------------------------------------------------------------------------------" O( j# M+ o  ^6 [
  253.   alias :xas_emini_hud_init :initialize2 P# N2 d: y; D' `+ L/ _" k
  254.   include MOG
    7 @) b  ^% a3 E) O& d" j! @
  255.   def initialize(viewport, character)8 V& ^6 V0 R/ I& u; W
  256.     xas_emini_hud_init(viewport, character)
    ) }7 G& v% L' N0 g) a/ B
  257.     @viewport = viewport' H! G+ g: X5 D
  258.     return if @character.battler.nil?
      T) T2 p7 _, j9 ^5 U& \6 e
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    0 G5 m" i5 O$ a. P4 }: l$ ]# x# T
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    # c  z- f9 n( I+ ~& b
  261.     return if @character.battler.is_a?(Game_Actor)
    # Z& @% a- n" ^& `7 d: W: R, r
  262.     @bars = S_Hud.new(@character, @viewport)* y( z4 G8 F/ U. _  }. ~+ b
  263.   end& r; _6 w1 a5 Q4 t. h
  264. #-------------------------------------------------------------------------------) i0 d( ?8 x, n5 P2 E9 f$ Z
  265.   alias :xas_emini_hud_up :update
    9 j! i: D  M) c4 [
  266.   def update
    - O6 `6 B# ^8 i8 W  v# ~8 _0 p
  267.     xas_emini_hud_up4 v0 f4 a# a4 |$ ?9 n
  268.     return if @bars.nil?
    # y; z& i" U; w1 G' {
  269.     return if @bars.disposed?* u. e& L  [" ]* c* E1 I/ J
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    2 x! m! f7 r" y4 c* K6 Z7 [
  271.     @bars.visible = (dis <= RANGE)
    ) P) v9 z6 e6 z$ y" @
  272.     if @bars.visible
    ' o+ z2 Y' v1 d5 \% m* p
  273.       @bars.x = @character.screen_x# - @cw / 4
    2 e0 W- r" a# `# G5 C$ J
  274.       @bars.y = @character.screen_y# - @ch / 4
    ; b: a/ I1 `# g6 Z% E
  275.     end& ?: |2 c9 L$ K% s: b
  276.     @bars.update
    " t* v4 ~$ g3 h* q2 t1 c/ {+ q
  277.   end* Z0 ^: B4 O6 A; b& U
  278. #-------------------------------------------------------------------------------5 @( g0 K$ _. l7 b4 `3 l
  279.   def dispose+ r& P  G+ f! p! h+ ^3 n8 o
  280.     super
    ! ^# x1 F3 _: X
  281.     @bars.dispose if [email protected]?# F+ f0 o9 @9 m7 [8 X+ Z  ^
  282.   end
    5 `7 A9 t) T8 [  Y4 q$ C
  283. end* a0 H! j% Y% i5 }* D
  284. * O& H7 t3 j+ n- q( w7 d
  285. $mog_rgss_s_hud = true
复制代码

! x- d& ^$ u: r3 j5 G0 Q6 P
) r/ P( |3 I1 {, c- E- y
  @( S% w6 t$ c7 E上面所說出錯的203行內容為
) d) i% C+ J9 ^+ z- G- e. D. Y@hp_sprite.bitmap.clear
$ o( n3 Q9 d# K6 |3 c
+ U; H& r$ g" z7 [5 b) F+ e) y" Q& G想知道怎麼解決
" @7 x4 i( i( D2 k8 w, J& K% n4 C9 s1 A4 O1 ^" h
該腳本支持3.82
& c4 i; _2 \, _* f# L  K# }% ]4 p9 ^$ G7 b& h! k' x" L9 r
下面是圖檔,要塞在Windowskin下
8 C% j2 l+ r+ o5 k, Z( h
% K' ]1 H0 Z; H+ d7 M* z S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 8 L6 c& @! G  J+ c0 l( m
; _* _3 ~) M# z, k

* }. J. b& ?& T% ?
8 n. j7 K- O# C2 E, C  y
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适! w; ?7 g: a% H: D5 M4 p, n
结果尝试刷新了一个已经释放的图形
3 m5 {$ _9 P; N% ?& |- o* L' o: r, L+ i9 q+ D$ J* S/ P. Q& _

# [5 M( t; k0 B! s& Y& k6 C6 N
% z$ n- x* N3 x6 l虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    # B9 [- _3 F$ P0 z! l- z7 D
复制代码
不要后面那个条件貌似就没问题了。
8 e& P! o8 L0 [! l5 W
9 L8 q2 |& _) H0 \: \; Z5 _8 t* |5 f7 w8 [4 ~( A7 p; O

5 P. ?, O' t3 ^3 D- m" u
8 ~0 e! e( ]4 l2 V8 b9 h4 @+ x
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 + d" U4 C* c! F3 P$ g+ W/ s( @
貌似是释放的条件不合适2 q/ z: h3 o" W% z& b8 a
结果尝试刷新了一个已经释放的图形

& b; o7 u( u! N3 l: x把後面那個條件弄掉後,的確沒問題了
7 ]% z1 \: p; h( l$ r目前從關頭打到關尾結束都沒再彈什麼錯誤
" k; K: F/ j1 S! r: C非常感謝1 O! b& q: P* d+ ]' B* f  b! h& G
# }5 Q0 J" X# R2 f
不過我是參照著別人腳本改的
8 [0 d* j1 _( l# j7 Z; L他寫的條件式也是那樣,但我用他的沒什麼錯誤
6 ^4 w$ F  Q- b. l( n不知道是怎麼回事7 j7 ~, z) `- G7 ~" b3 S
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
# @) b# ]& y* [+ r2 f& u我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events/ d& G) P0 Z  P' ~# _
嘛..这个数组吧..我在以前试写队友的时候关注过一点5 n" Y, s  V5 y5 f9 i7 X7 @" R* o
不知道XAS内部对它做了什么手脚还是为啥,% ], i# n- \* o- {4 D4 S' `1 R
总有那么一瞬间,没有被消灭的敌人事件也变成了nil9 d2 ?9 U" K! E# }' d% b. z
( b! r: N" a: m
$game_map.events.values[@enemy.id].nil?
7 \4 G4 C, V" d) f因此自然而然的返回true并符合条件把图形释放掉了; R: v7 E3 a% a) U, U1 P

! w. f6 [" i# m$ R. FLZ应该有注意到吧,
$ c0 Y5 i4 F/ E7 H: m4 T我测试的时候发现报错前几帧,图形会消失,6 Y8 Y; k3 v/ F7 a& N
应该就是“误以为敌人被消灭”了。1 F7 N3 ^  H2 P& b: a1 Y6 b8 s7 V% u

& r' T9 n- A" s受限于个人水平,至今无法找出$game_map.events的真相... F: U" l1 q: y' F. u9 C0 N

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 / L  c& C* S+ U- E& j: N
$game_map.events
+ U: ^8 |* _  t% S. F嘛..这个数组吧..我在以前试写队友的时候关注过一点8 e, a* a; N$ i
不知道XAS内部对它做了什么手脚还是 ...
3 e  {( w1 ^5 S- t) J' L4 a
當初我把那個條件式看了三遍,都不覺得他有什麼錯
& t+ x* {; ]7 @4 f6 Y/ q原來還有這麼深奧詭異的事XD/ m) f1 C& g7 x( I* s
- `8 O8 E, Z' x: T& G3 h* g
錯誤發生前的確會有圖形沒顯示出來# ~- t* T  j/ T# U/ I
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
1 W7 q1 L% p1 C: Z沒想到居然是詐屍了XD+ r+ F  @* ?* ~  [" c% D0 L
& O2 G7 p4 T/ X. L5 k9 ~
不曉得3.91有沒有修正這問題...
3 E- A  \  }6 k$ d7 ^不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。; y; z! _+ d) J6 l: n9 Y
  N7 G$ i  p  q( o' x
的确
, @4 B+ a5 N  I/ d* @6 ^7 \4 w' c用惯3.82之后想去整3.91觉得压力甚大..$ [; G, _# k6 J3 @
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
2 y, {  @  J  B+ ?0 M
  ~- n0 ?$ ?! \$ h2 I+ |  h然后加一个判断处理的。(我记得有一个disposed?)




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