Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條8 I: Y1 U- @, z) I. e
會在每隻事件怪物的腳下顯示
! Y6 ^) o2 [& v1 c: F5 J問題是不知道為什麼+ p+ \# M1 B6 N8 C5 L
有時打怪打一打會跳出* O- i$ [0 P6 c1 f% \( H
---------------------------
: l' h/ @* O# Z$ o4 I0 FXAS
0 q1 D6 V5 p' M% P7 {0 ^---------------------------
+ f  U, Q: A7 g! H脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
4 e/ Y' b+ r7 W3 U; _1 G7 o1 P! n7 G. G$ [8 b
disposed bitmap+ c% z: f% E- ?0 R0 `3 R/ e' k
---------------------------+ v0 O! b; s- m
確定   * {# o* v, Q' L9 r' y( b
---------------------------
; d# S5 t+ X# x5 Q6 v: w6 N6 x5 |- X
這是腳本
3 E5 x5 K& F3 G$ h. a8 a( d/ D4 d% O  C$ i* a; \
  1. #===============================================================================
    , r8 u6 [: ~! ]" |
  2. # MOG - s Hud 1.0      ( p' q: M. `, G* l4 y: g% x  x7 P
  3. #===============================================================================
    5 d# o  J- h) ?% l/ U: a
  4. # By Moghunter
    # N7 A: Q4 l$ p3 s" `
  5. # http://www.atelier-rgss.com2 `9 v* ^/ A; F. s# ]; \
  6. #===============================================================================. y* V* w$ H8 _. |% Z( @
  7. # Translated by Calvin624
    6 z4 H% q8 P9 B5 u* k0 Q& r" F
  8. # http://www.xasabs.wordpress.com& c) t% T9 J( R3 V* z( r: m
  9. #===============================================================================1 R" k0 b( _# c. N* s
  10. ###############################-DESCRIPTION-####################################1 L( ^; v5 a) Z& g
  11. #===============================================================================7 z4 i" v' D2 X. z7 c! f: H
  12. # Personal HUD – displays the HP and SP below the hero.& a: v6 O3 ~4 w0 V) W: `
  13. #===============================================================================
      ^: m$ r3 `0 {  x
  14. #
    0 o/ F6 @# u: q/ G7 d
  15. # Graphics required:/ O, H6 E" H; J2 P* x
  16. #
    , Z+ J4 m" a# J9 v
  17. # S_Border_HP_Meter.png
    ) W0 W2 z0 j' \& S
  18. # S_Border_SP_Meter.png+ B; ]1 I& r& ?( m1 m( X
  19. # S_HP_Meter.png+ [9 G7 P$ c% c0 u# K1 u! W3 V
  20. # S_SP_Meter.png: v1 `  s$ O3 z3 F1 v4 Q9 R# A
  21. #- O  K% R6 p& f2 ]+ X9 K
  22. # All images must be in the Windowskin folder.
    - T5 ~5 g) z5 @( |. U
  23. #2 G* N4 |! d) h" {# A5 z! z) L
  24. #===============================================================================8 g* X7 i7 j  N; }8 J( Y0 m( I' \- G
  25. module MOG6 r0 H  ?  L2 c' T1 k  G: X6 D9 q
  26. VISIBLE_DEF = false  
    . A% J5 i  u. z/ k
  27. # Show HP meter?
    4 N$ a$ Z# f8 b# h- e
  28. HP_HUD = true9 c6 A0 R; j* Z* X& l' c, _
  29. # Position of the HP border) _" W, A8 `! T$ b
  30. S_BORDER_HP_METER_X = -2" e$ {8 ~( E! d8 N
  31. S_BORDER_HP_METER_Y = -2  
    ) l+ |  s5 D4 J( e
  32. # Position of the HP meter
    ( B8 F3 u1 `& w& }+ F
  33. S_HP_METER_X = 02 A6 u7 H4 y% S9 M  ^& }
  34. S_HP_METER_Y = 0; r+ M2 T: I! t! K& ^3 Y3 k
  35. # Show SP meter?. z# v0 @1 J; h& s  S4 h0 i
  36. SP_HUD = true
      B: b! o1 N9 b" T8 W  C, R
  37. # Position of the SP border4 G) L. d! C( P0 K+ O3 b
  38. S_BORDER_SP_METER_X = 0
    ) H1 J' D" J5 ^4 E% p: p
  39. S_BORDER_SP_METER_Y = 10
    3 V* |; X4 b; |  J7 B' c( t
  40. # Position of the SP meter0 e  y0 O# m5 F  n/ D
  41. S_SP_METER_X = 0. t( ~# r' A. {% C* ]/ ?3 F4 b
  42. S_SP_METER_Y = 10# L& e* r/ R! y) e. }
  43. # Switch to disable the HUD) `3 V" `* Z4 e+ q4 z7 W$ h: L' Y5 u
  44. DISABLE_SHUD_SWITCH = 5
    - ^9 s, n4 P7 m1 b, ~1 [4 N1 p  N$ ^
  45. RANGE = 20$ J  t8 j* X8 j6 P% f
  46. end
    # H9 j( Y! Z: O$ D, Y7 p+ k9 I
  47. #===============================================================================7 k; L9 [3 P% K' C  d( S- ]& @3 |5 p
  48. # S Hud
    0 x1 G2 r8 l$ ]2 ?1 u; X$ e$ x
  49. #===============================================================================
    6 c& V- Y9 O/ R. z, e% F4 N1 ]' J
  50. class S_Hud < RPG::Sprite
    ) ^$ a% M) y5 C) n
  51.   include MOG: [' e0 K- l# e
  52.   #--------------------------------------------------------------------------8 Z+ @' L! d% e3 i0 S% c
  53.   # * Initialize: t" |* m0 r, ?9 {/ }4 O
  54.   #--------------------------------------------------------------------------  p4 P/ K% C: J: I6 ~
  55.   def initialize(enemy,viewport)
    8 |, X# V. R& T1 g; j* f+ I  b2 d; \
  56.     super(viewport)
    + ?) U! ?- h* n' C- n
  57.     @enemy  = enemy+ Z" w8 d% M  z( t) ]0 ]
  58.     @battler = @enemy.battler
    4 _6 u6 U) U# A; l3 p0 K% J
  59.     @old_hp  = 0
    % |3 w$ \( Y: J, X6 G
  60.     @old_sp  = 08 P& K2 O# `8 @4 Y. d0 v
  61.     @old_vis = false* T! }( v# s! u4 S
  62.     self.bitmap = Bitmap.new(100, 100)
    3 t" D6 w# p6 z/ l5 M  l
  63.     self.visible = (VISIBLE_DEF)#false+ ^3 g% v1 J# n- t) z8 P+ M
  64.     self.z = 100/ W+ r8 f3 v  J# V# K3 P0 h- H! J
  65.     #HP Border -------------------------------------------------------------------
    3 g6 }0 T8 z! m- r' a6 b  W& a8 `$ r! G
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    - L( L2 O1 ?: `6 P
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)7 R" p! l+ C, m( L
  68.     @layout_sprite = Sprite.new' L2 S& j& r/ n9 F! k
  69.     @layout_sprite.bitmap = @layout_bitmap
    : S5 r, p& t& b- k( x
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)( B7 R* Z( y7 z) i/ O7 P2 ^
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      4 h& \+ H6 Z1 v/ H* f) Z
  72.     @layout_sprite.z = 5001% r1 F& ~6 u0 A" r4 o
  73.     #HP Meter ---------------------------------------------------
    2 U2 o# [: U5 k; @7 T
  74.     @hp_flow = 02 P% g4 E  T! V& s4 B2 \0 l
  75.     @hp_damage_flow = 08 {' ]9 L: {1 J. _) q$ R
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    8 c& ]2 d- y' ^; T
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    ' o! p8 e- d1 T# d' C! {( H
  78.     @hp_range = @hp_image.width / 3
    # U/ [( q- }0 r: P
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  . R/ [: T, c8 E5 \6 X/ m
  80.     @hp_width2 = @hp_range / 2
    2 u) m9 j% H! I! r+ b
  81.     @hp_height = @hp_image.height / 2
    ( s' J4 S- ^+ n9 F
  82.     @hp_width_old = @hp_width
    5 r3 W/ g, r: G3 F$ G% H/ |1 }
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    7 ^" `  q+ Y. ^
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) 3 U$ [0 E% |0 |% E: M: V" x& h
  85.     @hp_sprite = Sprite.new
    3 ?" f8 t$ [& u! b0 A  o) E
  86.     @hp_sprite.bitmap = @hp_bitmap
    & h) Z4 J$ W$ O
  87.     @hp_sprite.z = 5002
    ' P5 _2 o; @5 A/ c
  88.     #SP Border -------------------------------------------------------------------
    8 Q9 L0 L- O. w* }$ \% H; x
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    ! R5 e3 H- A+ |6 c" a' S  X
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    3 O9 X5 M, j* ]& N
  91.     @layout2_sprite = Sprite.new
    4 f, l; V1 m! m" q& ?$ @( N
  92.     @layout2_sprite.bitmap = @layout2_bitmap+ ^9 N. T" t4 U! j
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)* p0 ]* u$ H# n& S8 u8 r
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    - }2 Y. I+ H1 T# M% w" T' \
  95.     @layout2_sprite.z = 5001   
    1 @' p# Z0 f5 S
  96.     #SP Meter ------------------------------------------------------
    + S, A2 b8 e5 \: H  _
  97.     @sp_flow = 0$ c8 E( Y. O$ ~9 }' F& @7 v( j
  98.     @sp_damage_flow = 0
      ~8 }2 u7 l( C  b- \4 K4 @# s
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")+ ^+ A7 ], |4 J% S
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ! g1 t2 N3 T) F5 g7 C( \
  101.     @sp_range = @sp_image.width / 3
    & ]) K$ {6 `6 _- @4 I
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    - Y! d( \  V0 T
  103.     @sp_width2 = @sp_range / 2/ S" I* w6 I$ b  ^2 d% z+ \
  104.     @sp_height = @sp_image.height / 2( A3 Y" y' r# }* n
  105.     @sp_width_old = @sp_width
    - I4 R1 T( L5 r: i5 T) g" P
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)+ c" V7 u; n( u
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    7 t1 W/ x; `. y6 r
  108.     @sp_sprite = Sprite.new0 [) q8 p+ D0 [2 y% l9 ?: k
  109.     @sp_sprite.bitmap = @sp_bitmap
    + j9 A- ?' {/ B
  110.     @sp_sprite.z = 5002/ K/ o' g2 D- |' s, K
  111.     update; b% q3 M( E0 A# Z* i' _. ?2 z
  112.   end
    ; h2 @( h' j% p; ^
  113.   #--------------------------------------------------------------------------# t# x; r- ^1 H/ o# r7 X1 f
  114.   # * Refresh
    3 S1 X6 V- S' v3 o3 d
  115.   #--------------------------------------------------------------------------5 W2 o' W3 {3 C
  116.   def refresh
    2 L* H9 B. {* f  y& K
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible) M9 b+ r* l. n% F
  118.     self.bitmap.clear
    , S: z% p" I. I1 g2 w
  119.     @old_vis = self.visible5 D& y6 a  {8 c. |3 i& F
  120.     @old_sp = @battler.sp8 j$ S3 |( i3 o" m' Q* O# y$ A
  121.     @old_hp = @battler.hp3 x4 x9 w: f$ q7 G! R/ t& V
  122.     hp_flow_update/ [( G' `7 U  G# Z2 v
  123.     sp_flow_update& a5 X8 j3 Q% S5 w' s5 W* ?8 {
  124.     hud_pos_update
      u) O: D3 B+ |' }7 r; P: _8 ~
  125.     visible_update# ?/ I( T5 X! s& [/ o+ E) h
  126.   end
    ( E: Q- q5 U' K6 n7 {" ]
  127.   #--------------------------------------------------------------------------( ]) p5 q% H9 x! c4 i! E+ {
  128.   # * Dispose
    / D5 v7 f: ?: x4 D4 `
  129.   #--------------------------------------------------------------------------
    ; |) T& O/ V* E+ P1 f
  130.   def dispose) S) u6 `1 V1 @3 L! D9 ^# L
  131.     #HP Meter Dispose
    9 x/ }" u3 U  h9 F% X4 b
  132.     @hp_sprite.bitmap.dispose# U4 d# B" ?- I4 c  n
  133.     @hp_sprite.dispose+ }/ v2 R0 @2 O5 E, _
  134.     @hp_bitmap.dispose- X- E2 ^- @: ]5 c7 G6 p' i5 ], f
  135.     #HP Border Dispose7 L4 G' [5 g" e. w
  136.     @layout_sprite.bitmap.dispose
    - e- a6 L4 [: r1 l; s: Y5 F
  137.     @layout_sprite.dispose- f. G7 m- ^. g8 O: Y9 p
  138.     @layout_bitmap.dispose8 m4 \, C- y1 w! k, X
  139.     #SP Meter Dispose, n+ _; x8 G/ a" T3 K
  140.     @sp_sprite.bitmap.dispose4 x5 m3 |$ r$ o, P4 H0 w
  141.     @sp_sprite.dispose
    ( u7 s6 ]8 ]" ~. ^9 _
  142.     @sp_bitmap.dispose
      @/ c* P3 j& P3 i& ^% ^* A# x6 [9 z: H
  143.     #SP Border Dispose9 f/ m: g2 a# u" ^6 [: }5 X2 s
  144.     @layout2_sprite.bitmap.dispose
    ! R! \+ S1 i& u0 d4 D* }
  145.     @layout2_sprite.dispose. l! x) Z: V0 e( C
  146.     @layout2_bitmap.dispose
    0 I3 i# a: W; g) a3 M* i
  147.   end- U* @- q% y( N* w  w* Z
  148.   #--------------------------------------------------------------------------
    9 k# G; N2 G$ W: Y9 s1 o, l
  149.   # * Update
    ) K0 s1 x0 \1 P: X* w
  150.   #--------------------------------------------------------------------------
    $ Q; @1 v! u; I; K* v. |
  151.   def update7 a' |) u& J; ~% ]' }+ }
  152.      @battler = @enemy.battler $ y+ y% f; @9 B# k* [
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    0 O. j6 Y8 |- ?
  154.      if self.visible+ h' R* t  M: \4 e: `. }
  155.        refresh  M/ v3 o5 g% }" |3 X) r$ L
  156.      else
    ! O% }) S0 [+ ?! i
  157.        self.bitmap.clear7 B7 y# b+ s/ H" u0 T4 j0 }
  158.      end
    # {8 Z9 c* A6 [* x! |
  159.   end: v9 [. e  k: ]
  160.   #--------------------------------------------------------------------------
    " s) y2 u* T5 o6 m) k$ Z( @! u- Q9 L
  161.   # * Visible Update, |2 N7 W- {1 `  ]" p
  162.   #--------------------------------------------------------------------------
    : i; _# J# {2 C  ~, v* e
  163.   def visible_update1 s, }8 {, K, v9 ~+ ?" Z! f
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    3 a6 X# ~4 O/ }) Y) U
  165.        @hp_sprite.visible = false! e* \& \; p* H5 x; p' ?+ Z
  166.        @layout_sprite.visible = false/ D1 t! g" D3 X/ N' A
  167.        @sp_sprite.visible = false- _2 K# t, P% f: T
  168.        @layout2_sprite.visible = false
    . d. ?' ?+ C- t. [- Q3 V7 X
  169.     else
    9 l9 E, E# d. c7 d
  170.        if HP_HUD == true
    ( o; u- S2 c. c2 J( L
  171.          @hp_sprite.visible = true
    % W, H! E  P1 a7 O$ m4 ]5 a, W
  172.          @layout_sprite.visible = true/ V9 y+ I$ q# x; P$ w. Y) T
  173.        else
    ( I# k, F9 D% p
  174.          @hp_sprite.visible = false
    - h2 m2 U5 q! X7 o, G
  175.          @layout_sprite.visible = false" |# Q1 _0 _1 y3 Q" W
  176.        end  
    5 t5 s- m& [( j) L1 Y' w+ {  f% o
  177.        if SP_HUD == true
    - W/ C3 Z9 S) ^8 r
  178.          @sp_sprite.visible = true4 B- w' L# Z) _/ h: O$ t( i8 Z! b
  179.          @layout2_sprite.visible = true8 o! L& T& [3 T% W8 s+ K4 N. Y
  180.        else& K$ ~5 O% X2 V( X& Y. w
  181.          @sp_sprite.visible = false/ n; V% W/ _$ Y! y9 D4 i
  182.          @layout2_sprite.visible = false
    / \) u' v5 F; t3 s% b
  183.        end
    ! c' T% Q2 @1 O  t8 b! n
  184.      end  4 g8 B9 p% ^  c- ^7 D' p4 \3 H
  185.    end 0 K) z: `' o/ u' {& n/ x
  186.   #--------------------------------------------------------------------------
    3 x- j4 r8 R& S% r
  187.   # * Hud Pos Update9 A. n( P. G* N# _0 Z
  188.   #--------------------------------------------------------------------------: s: u% C0 F+ W. t1 t! t) }
  189.   def hud_pos_update* @# H8 \. u* C
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    , E5 h9 ?( b: T+ F, q1 n6 g5 s# s
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  ' r/ |) w" n: }8 M3 k
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    7 K& E, ~: R- k' B! ~. F
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 9 B5 y" w1 X1 y9 r( \+ u
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X0 z4 B/ m) D* g# F1 z
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    7 N% R$ ?. K  W2 Z% v( ~; M# G
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    6 L" F; C% a: S$ K: O( u
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y       e" p" g% w) x" S) {: {
  198.   end  $ i# E* T* s1 R' L8 B6 C3 E
  199.   #--------------------------------------------------------------------------
    - j' M/ V" V4 F6 `5 ^3 Z3 A4 ?
  200.   # * Hp Flow Update4 x4 i* p! \0 H" `
  201.   #--------------------------------------------------------------------------
    6 y& ?6 c+ G2 `( z$ Q1 q1 ~
  202.   def hp_flow_update
    2 d/ \1 b% `0 J  @) v! N
  203.       @hp_sprite.bitmap.clear2 a5 ]. b0 p( ?9 K! ~* n
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  ( j* o$ E0 e! i& \# k
  205.           #HP Damage---------------------------------8 M# X* k$ n/ A
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    3 e- F& o" Q' q
  207.           valor = 0.5 if valor < 1         
    : k, X. f2 c) j' O  B4 ~
  208.           if @hp_width_old != @hp_width
    ; `  ~# {/ N# _' k, _: \
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    8 L; l0 t5 `- L! m& H6 }' X) }
  210.           if @hp_width_old < @hp_width
    " U# G$ u) E. g4 A7 I" x
  211.              @hp_width_old = @hp_width
    ; ^+ }5 W% @& l: x2 \
  212.           end      6 |7 L) ]1 B( I) _6 @
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)8 |" d+ }. f) Z
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    - w% H: S) g! Y& C3 W
  215.           end        
    9 i, V& [" ~9 `0 W+ ^
  216.       #HP Real------------------------------------0 s1 o. c7 S0 X
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)& i2 U9 s" m% T7 V# O; x5 M
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    2 E$ T5 }( S$ ]* J# ~6 {
  219.       @hp_flow += 2  
    - f  d9 i( X7 O2 p
  220.       if @hp_flow >= @hp_image.width - @hp_range9 j+ c. f4 t1 x7 O# a
  221.          @hp_flow = 0  
    0 x- w9 f2 h  D3 b
  222.       end
    5 b5 |* q' k1 y5 i  B
  223.   end   
    ! k1 Z0 e2 E6 }+ ~7 [8 N0 G3 Z
  224.   #--------------------------------------------------------------------------# {( _0 L; n& f. v# e* y
  225.   # * Sp Flow Update
    / h9 @6 ?4 Q5 a& F  p
  226.   #--------------------------------------------------------------------------' _4 Y  P) G! G; {" D
  227.   def sp_flow_update9 K  W3 z3 k5 ^3 \% }2 O% m3 G
  228.       @sp_sprite.bitmap.clear
    . n1 D% B! \6 X* q# O
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    - M& R& x, d1 w; u" b; V
  230.           #SP Damage---------------------------------
    2 Q. A' H& b/ n' e0 W
  231.           if @sp_width_old != @sp_width
    ( B! p+ d/ E+ z0 v: ?8 M5 c
  232.           valor = (@sp_width_old - @sp_width) * 3 / 1004 o( g) Q/ L/ \* _
  233.           valor = 0.5 if valor < 1              ! n, c% G  o4 [( c1 }* D- n
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  , M, f+ N1 z7 b/ F! _
  235.           if @sp_width_old < @sp_width 0 O/ H. Z* r% D9 c; Y4 a7 Q
  236.              @sp_width_old = @sp_width  D  L$ l8 Z; u- H) }9 V. G
  237.           end      
    / y2 {  @. ]8 w9 Q" P  A! ~9 F
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)1 {0 a* L  @1 {6 g$ K) H
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) / @4 C1 M# M8 U$ q' a9 J
  240.           end
    & ]% n. ~) K1 d1 b: Z- ~4 J# C
  241.       #SP Real------------------------------------
    & T7 m/ g$ M+ o0 N5 A
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    ! u# H: X! V. C8 A# Y/ V
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)! g( A5 a' V7 Z' ?+ q
  244.       @sp_flow += 1  : |2 q% S( ?; k. m/ G" p! u5 c) t
  245.       if @sp_flow >= @sp_image.width - @sp_range0 G) O: p3 \, j0 e# S# V
  246.          @sp_flow = 0  
      D0 O  w% [3 @, r" Y, E4 J
  247.       end
      u% X2 z+ ?7 N! @, e+ c% l, m
  248.     end            " c2 o, O5 g0 l( I) m
  249.   end  c" _( Q5 o+ z/ ~% l
  250. #===============================================================================
    5 ]. o. I. F1 A. m
  251. class Sprite_Character < RPG::Sprite
    ! T% A2 ~2 C2 h1 D, c
  252. #-------------------------------------------------------------------------------
    3 I' Q! m/ k1 z8 l# O
  253.   alias :xas_emini_hud_init :initialize* y! J4 l# A9 N6 @
  254.   include MOG
    $ d; B' {+ x9 ]; \. r4 p3 p
  255.   def initialize(viewport, character)
    . [1 n  Z) W, A, e9 V# _, s5 Q1 {0 D" K
  256.     xas_emini_hud_init(viewport, character)
    3 C' c4 C% v+ x* V: q2 j$ _
  257.     @viewport = viewport
    " n) |# z0 M5 e. B
  258.     return if @character.battler.nil?$ g( S' C/ e4 v3 n
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)3 u& S8 X( J* ^- d( o9 U
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id). ?  q0 S$ F% m, z- f' Y% g( J2 i
  261.     return if @character.battler.is_a?(Game_Actor)
    ( N& ?  p6 I5 C) |. @- u
  262.     @bars = S_Hud.new(@character, @viewport)1 Q6 s" o) R  ^0 e) q$ I4 j
  263.   end0 B  F9 A; C3 N: ~# d4 w+ y" ?9 y
  264. #-------------------------------------------------------------------------------4 O, s! w3 R, Z. D& ?
  265.   alias :xas_emini_hud_up :update* C7 e! c' D8 I; C
  266.   def update
    0 d5 V$ `' M/ j2 Y( s" A
  267.     xas_emini_hud_up& F, @) W; R, B9 Y3 ]6 `
  268.     return if @bars.nil?
    0 `' ?9 c0 a: `$ O+ {( n. ?
  269.     return if @bars.disposed?
    3 H: G3 [4 A7 |" Z/ J# W/ O
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    : k* O- a) x+ U' t! D- V6 c
  271.     @bars.visible = (dis <= RANGE)1 q) R1 _5 `; Y6 }5 ], H
  272.     if @bars.visible
    8 R1 d& r: w2 i' a7 z
  273.       @bars.x = @character.screen_x# - @cw / 4- i9 Q% Z& k) f; m2 p
  274.       @bars.y = @character.screen_y# - @ch / 4
    + @' E2 ]' O: H+ O( b0 X
  275.     end3 d/ o& R' \: v8 G; g" R
  276.     @bars.update
      q8 Z$ h  I, p  m4 X1 s; R. r  |
  277.   end! N9 E2 }: J; X3 a1 h6 C# }3 a
  278. #-------------------------------------------------------------------------------
    ( q8 N- t4 e9 n0 s
  279.   def dispose
    # V% X, P3 o" b
  280.     super
    5 o1 K$ @4 F9 s' Z+ O
  281.     @bars.dispose if [email protected]?! R+ l. g0 y3 D8 o$ r" N# S
  282.   end+ z) ^, b/ R" y- f
  283. end& e" C' t9 `2 U* k
  284. 1 G/ K2 [. y. J: F& m4 M9 L
  285. $mog_rgss_s_hud = true
复制代码

+ x' t" u; w3 }/ G3 @. n) E" Q9 t9 z4 U2 U6 r2 T+ o
- {- F; {8 r: q  a5 n+ E  w
上面所說出錯的203行內容為
" T5 ]0 j+ R' B9 ^- ~, @. k  K" v@hp_sprite.bitmap.clear% F; H6 P, W4 ^& V0 x

' U5 s* N( {+ z6 G9 ?# X想知道怎麼解決
5 l- U- A3 ~5 |! g3 M9 C6 Q" W. I" G1 h+ ]1 s) ]+ M
該腳本支持3.82$ V  H! ?' @: ^: K9 \2 S" D( x
: J3 G8 @  m! ^2 h, G
下面是圖檔,要塞在Windowskin下( q5 ~# J+ _+ Y
# t3 w2 p3 T# n% b/ o4 d  x
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 4 `# {3 R& F- q/ u7 D( o, }
% ~  n4 M5 ^. G# d
- C0 _$ ]6 V6 j% A: m5 P
9 k0 U  i9 }- r% |3 m" C# i9 C

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适3 K+ @2 {- |  Z: A9 t2 a, A0 G$ q
结果尝试刷新了一个已经释放的图形
: u3 S" T4 T) A6 {/ {; e
% y& e' g* _; y7 r/ f- W2 G% I6 s. f- E9 N. r
4 c  ^7 u7 L0 d7 F
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?$ z" h* t1 t' [1 F# |
复制代码
不要后面那个条件貌似就没问题了。8 f, o7 V' J$ ?  N/ @0 e9 m
3 j& d) p. Z9 s. Q' d
0 G+ ?0 G' h& n" j# Z, K, r

- V' V+ G+ z' b- O3 X1 X' v: \7 U  B3 D; r

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
! O' Q8 v1 h9 K0 }+ O+ C貌似是释放的条件不合适8 m) L$ a5 C2 d
结果尝试刷新了一个已经释放的图形

8 d4 H% s9 M' v把後面那個條件弄掉後,的確沒問題了) R# ~; J2 D1 o- P* r0 J
目前從關頭打到關尾結束都沒再彈什麼錯誤
% g0 ]- \: s, L$ J9 s6 `非常感謝/ ?" W9 n' u0 p. K

) A9 [; A1 _5 @! T6 b$ |不過我是參照著別人腳本改的+ C6 V4 W  H) o4 w- E3 C
他寫的條件式也是那樣,但我用他的沒什麼錯誤7 z' l/ M1 C8 q3 K; L3 u
不知道是怎麼回事
/ Y4 {5 z+ j! c7 C( V. a- r是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的/ h; K' v# R$ Q' J' v! q3 I9 a( Z
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events: N9 h4 L* Z( B+ n) ]
嘛..这个数组吧..我在以前试写队友的时候关注过一点
( A: O2 Q3 u- A# G) L不知道XAS内部对它做了什么手脚还是为啥,
0 f% i0 l% y# W  {1 o- R% O总有那么一瞬间,没有被消灭的敌人事件也变成了nil
! ?3 z7 v& Q# d3 K6 |
/ f0 b/ D! R5 D/ v4 l$game_map.events.values[@enemy.id].nil?
" }# |' V* `  J0 {因此自然而然的返回true并符合条件把图形释放掉了5 ]5 H' R# m) g$ p5 v( q
6 H" T* a& s" s
LZ应该有注意到吧,
. B" x. k5 @! F% `我测试的时候发现报错前几帧,图形会消失,
# t9 p* E: X, D3 E* g应该就是“误以为敌人被消灭”了。
2 x* `$ ?0 _% s* k8 {+ y8 A% I
% j) E, r) {$ B- N& g0 `- L( A受限于个人水平,至今无法找出$game_map.events的真相..
! U  U$ J3 w. L# X( F9 y/ i8 z
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
6 R, D1 q$ D9 n$game_map.events) Q- [) ]- f0 E& j( t8 [
嘛..这个数组吧..我在以前试写队友的时候关注过一点% }2 N7 T- N1 n8 _8 ]+ z8 ~
不知道XAS内部对它做了什么手脚还是 ...
5 {- |, B) E& N" t, \  T  Y7 k8 L
當初我把那個條件式看了三遍,都不覺得他有什麼錯, z3 e) o2 I% R9 g) r% s, b1 E
原來還有這麼深奧詭異的事XD. q$ s7 h( f0 d; O. i9 w) W& K

& w- ~3 ^. C1 h! z4 y* f- m9 J錯誤發生前的確會有圖形沒顯示出來
7 g7 p7 R* N* p% C7 j# g3 s不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
3 o9 a, u* i5 }' a% Z- ~' u: r; u) x' G* k沒想到居然是詐屍了XD' S5 @! ~4 ?: E. u6 L( ~4 `4 ~. N
) h3 b% j+ l3 l8 T8 L
不曉得3.91有沒有修正這問題...1 b5 m* J1 L9 ?; t- Q
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
0 y; c* D7 [& w9 j& Q4 M) i. p% f4 b' ~( Z+ p7 Z9 |0 j& j
的确  B  p4 k( w  Y7 Z- Y6 D
用惯3.82之后想去整3.91觉得压力甚大..
8 R: o2 O6 b& E$ c; q* t干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
9 _: w, x! F& E) x( i% d/ y7 j$ I4 I) j7 W! V8 d6 Y. b( J
然后加一个判断处理的。(我记得有一个disposed?)




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