Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
- E: q/ M# ?6 W! }  {; d5 m6 Y會在每隻事件怪物的腳下顯示
/ r0 [; Y, ?% O. O* O2 v4 t# X問題是不知道為什麼3 C* P; I$ u2 ^1 Q4 u4 I" z& M$ D
有時打怪打一打會跳出
3 Z, Z4 R/ L  ^% w  z, [6 \---------------------------) o/ m5 V$ \, R# y
XAS) B0 [" Y) ?- p1 ?/ |
---------------------------; [% L% I4 K/ u4 w! I3 e6 V& S
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。* h& N% Q- g; B

, \# x2 x, K0 ?6 |- J  Qdisposed bitmap
" u; E+ W; L/ u7 f5 P- V---------------------------
2 ^% f( d" h; J8 ]4 z確定   2 _' g% u" b, ^3 Q+ N( ~
---------------------------9 Z0 q' T* X" s$ F/ Q9 Y

" W1 Z8 {. k( }  K這是腳本
# u+ B+ h: t7 T  V$ k$ P# {) H" E1 _& E$ X8 ^0 h! R9 K
  1. #===============================================================================+ c/ M1 ?0 x7 }8 d; E) A
  2. # MOG - s Hud 1.0      
    3 b" ~8 Q3 o4 U) z2 _
  3. #===============================================================================0 z* b' R, |4 F& i
  4. # By Moghunter " w" h4 ?3 X0 V: M- ~
  5. # http://www.atelier-rgss.com) ?* v' _) T/ k7 t' d
  6. #===============================================================================7 g9 j1 J- p% N: |: `* E) O/ Z5 [
  7. # Translated by Calvin624 , G( G9 J: Z. x3 B& @! t
  8. # http://www.xasabs.wordpress.com! g' }1 n7 @; h+ d/ r4 {+ H3 ~
  9. #===============================================================================" ~" j3 }1 O) I1 k) ?$ F) f" l
  10. ###############################-DESCRIPTION-####################################! k  Q6 [  a# h0 l, H7 }
  11. #===============================================================================
    , k5 N- g* X, M9 s1 Y( y5 i
  12. # Personal HUD – displays the HP and SP below the hero.9 I* h& ^: k2 Y8 _7 T% W
  13. #===============================================================================$ G8 S- \% Z" ?) G: S
  14. #/ m- M+ E( n6 q6 L5 ?2 n
  15. # Graphics required:
    - _" \8 D% |: R. [+ s: n5 ^7 ?0 d/ i( [
  16. # ' [8 F. ]9 q8 E3 L, |& b
  17. # S_Border_HP_Meter.png. b8 z$ @: B  E3 O2 w3 F
  18. # S_Border_SP_Meter.png: @' ~% `% b) }. l
  19. # S_HP_Meter.png* m2 I. B+ I& z" j
  20. # S_SP_Meter.png
    # ^" B( t+ c. }6 D
  21. #8 F( Z* I/ J2 y  }
  22. # All images must be in the Windowskin folder.% M, ~. E0 Z; y7 {' v! V
  23. #" h0 m: T4 W! U4 |, U
  24. #===============================================================================# `( U: h7 P5 p3 l
  25. module MOG5 g, R. ~  L% B8 b1 g  c! K, {% F& N
  26. VISIBLE_DEF = false  . x* k8 a) l9 X
  27. # Show HP meter?& t4 S  @# D6 c# N3 {
  28. HP_HUD = true1 e5 I6 @# i! [2 L
  29. # Position of the HP border4 O' {8 i, f$ k' m1 p/ S( b" @% p
  30. S_BORDER_HP_METER_X = -2
    & @" q! N8 m- U) {
  31. S_BORDER_HP_METER_Y = -2  : W9 g0 t1 R2 F( I0 r
  32. # Position of the HP meter
    3 [' F5 E( S# K; m* V% R' a; ^
  33. S_HP_METER_X = 0
    / m5 h1 h/ U/ n8 d
  34. S_HP_METER_Y = 0
    - V: S2 Y4 d" |, y0 z9 i
  35. # Show SP meter?
    ; Z# u' {. l# u
  36. SP_HUD = true- I, n+ x$ F. B/ K1 p9 W( c1 V& z
  37. # Position of the SP border
    : g3 ?" N. I5 I0 s! a& e" h
  38. S_BORDER_SP_METER_X = 01 E% B9 Y. a; F/ @7 L/ ]3 {
  39. S_BORDER_SP_METER_Y = 10 9 i* y* V3 ^+ Q  I; y" }. q
  40. # Position of the SP meter$ [! J2 q; z7 z/ s: B
  41. S_SP_METER_X = 07 j8 S+ J+ d  N& O4 J+ i
  42. S_SP_METER_Y = 10  ]# [" q% L; u, b( X$ c" q
  43. # Switch to disable the HUD3 u7 q1 c; b4 h( Q; z' K
  44. DISABLE_SHUD_SWITCH = 5
    2 a- R6 g6 [2 H' V1 _
  45. RANGE = 20
    + h  X0 s: X' Q
  46. end
    ( g3 t& T3 J* Z8 i; b
  47. #===============================================================================
    * L. P3 R  w9 V$ @+ O
  48. # S Hud  P8 ]/ c$ S8 B' J5 J8 N
  49. #===============================================================================9 x7 ^7 l. s( \
  50. class S_Hud < RPG::Sprite2 C9 j' ]3 k) r2 A2 k
  51.   include MOG
    3 Q/ B' R: s3 N4 V
  52.   #--------------------------------------------------------------------------8 c" v/ R8 G7 S0 J" L4 W+ H, j9 @& |
  53.   # * Initialize) m' L# W6 u/ o
  54.   #--------------------------------------------------------------------------  \" s% s; j  [( T! D: @/ f
  55.   def initialize(enemy,viewport)$ z5 r. C6 i( [
  56.     super(viewport)
    ! m$ K+ M: H! u/ h! e; c5 I+ b& r) {
  57.     @enemy  = enemy' o/ w1 w% v( K" E
  58.     @battler = @enemy.battler+ H$ {7 W" K0 U1 u& b
  59.     @old_hp  = 02 Y1 {# _; j8 F; l
  60.     @old_sp  = 0
    1 o/ a1 V( o+ j) U4 L: Y2 I7 ^" Q3 ]
  61.     @old_vis = false, W0 y2 Y, _( c/ f
  62.     self.bitmap = Bitmap.new(100, 100)# z' Y/ |. H, j( _
  63.     self.visible = (VISIBLE_DEF)#false
    6 k5 e" K( g1 J% T3 M' U# _" W, \
  64.     self.z = 100
    ' d2 H- X, T  a/ Z
  65.     #HP Border -------------------------------------------------------------------
    ; i  o7 J3 W. ]/ L; F
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter"), V( a7 a2 @; w! `
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    ; u: K; q  s9 y& m+ a! g
  68.     @layout_sprite = Sprite.new5 R5 q5 r2 Q0 S# e; p8 ~# m
  69.     @layout_sprite.bitmap = @layout_bitmap  t; X* ~1 i1 v# [
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)0 \1 L1 u3 l& c$ O4 [
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      ( a& w2 h" F$ m6 b2 I
  72.     @layout_sprite.z = 5001
    + B0 v$ @! Z; \; K, r" c" Q- V# `
  73.     #HP Meter ---------------------------------------------------
    * L1 ~/ ~" E3 e: e+ `! `  h( w/ P6 W
  74.     @hp_flow = 0
    ( [4 S% {1 w) i1 h/ T4 f
  75.     @hp_damage_flow = 0
    . K0 U1 b. r* O+ g2 Q1 ]4 B
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")7 H; r' t  P2 ?3 g
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)! @& W$ T  `4 I& Y
  78.     @hp_range = @hp_image.width / 3! j& L. L5 Y/ {  G$ m5 x1 t! ^
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    6 l* F0 w; Z4 K
  80.     @hp_width2 = @hp_range / 24 H7 G. X2 A% v8 a
  81.     @hp_height = @hp_image.height / 22 D" h; k$ ?/ A2 C  b
  82.     @hp_width_old = @hp_width: c( D+ C( J0 e# z: Z
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    # d1 C; ~* N! {0 V& V) ~3 }
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) ! l- D* x' @# ~  ?1 @3 U
  85.     @hp_sprite = Sprite.new. c; T, V* I! Z
  86.     @hp_sprite.bitmap = @hp_bitmap0 H. J% F: t# {6 g: \' _
  87.     @hp_sprite.z = 5002
    , b6 D" _, d3 x& i( f) x
  88.     #SP Border -------------------------------------------------------------------
    3 Z- o* G4 B* N3 n8 C3 r, H
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")) W8 u3 M/ p* ^4 c
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)! s: a- e- C: M2 K: V9 H! g
  91.     @layout2_sprite = Sprite.new$ M( y3 O; O2 V: d
  92.     @layout2_sprite.bitmap = @layout2_bitmap1 x5 I; G# ^! O; d- n: j
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    $ Z. v5 |) l  Q0 w# H3 b9 g9 @
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    ; w, Z) V. e. U/ e7 b% ~
  95.     @layout2_sprite.z = 5001    2 [6 m7 W$ u0 `
  96.     #SP Meter ------------------------------------------------------
    # |; S7 s% e# Y; z- i( T0 z
  97.     @sp_flow = 03 t! C9 |2 r6 {* a- Q
  98.     @sp_damage_flow = 0, j2 l0 @8 q9 c. v7 `
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter"). S8 j) E/ O( c- W+ o( b/ u
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)- C) X6 U- X" S" {
  101.     @sp_range = @sp_image.width / 3
      z; W2 H0 l: s$ `3 \) F( l
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  7 d# a  k2 g& ?9 s6 v
  103.     @sp_width2 = @sp_range / 20 [/ U  s3 U: H& E. J
  104.     @sp_height = @sp_image.height / 21 q2 ~  G+ P1 S2 G3 O
  105.     @sp_width_old = @sp_width
    : z/ ?/ d8 t3 r. Z1 I/ y
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    * f9 Y' S- ^! x$ e& K4 P  Y
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    1 X% g7 ^5 g5 P( p% a9 z* p# E5 \2 |* v
  108.     @sp_sprite = Sprite.new( V- b. j& u6 T) Z# h* w
  109.     @sp_sprite.bitmap = @sp_bitmap
    3 L4 H+ C% S2 W+ B
  110.     @sp_sprite.z = 5002
    : s  K+ d' ?- T: J
  111.     update
    ' @0 Y1 G% @: u/ I" ~; Y
  112.   end
    4 n3 ]: m+ U1 q; U. d8 P% m' Q$ P
  113.   #--------------------------------------------------------------------------
      \6 x& M( ?. i7 h" N
  114.   # * Refresh: \0 e: L# r+ P6 M0 R
  115.   #--------------------------------------------------------------------------6 d* w% p. |& Z& I
  116.   def refresh
    / N/ H3 M( s) S& z5 m# N& M& @
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    6 o2 @* I4 F/ @' @0 ^/ j
  118.     self.bitmap.clear. }9 x; h# z3 d! r9 Z. E9 Z
  119.     @old_vis = self.visible
    / ^( S. x- `# L
  120.     @old_sp = @battler.sp, c& u# K% |+ b% P8 y
  121.     @old_hp = @battler.hp
    7 }9 h/ ?* u" ?& ?
  122.     hp_flow_update8 x* i/ K$ g" Q! ^5 Y! `8 I( o- B  o
  123.     sp_flow_update* g1 L* |" W# R: |) T  N$ p- U
  124.     hud_pos_update
    3 z  y  S) |3 b2 {. h
  125.     visible_update- J8 s! u) q6 }; h9 n
  126.   end2 x- q" g1 k6 M7 p( A
  127.   #--------------------------------------------------------------------------
    % e5 x1 J0 ]% Q- ~
  128.   # * Dispose! c5 N4 M: Q# E; K. H* w
  129.   #--------------------------------------------------------------------------
    4 A5 \$ r4 g5 h6 q0 V
  130.   def dispose
    5 `4 Z  \# c5 j% `# ^
  131.     #HP Meter Dispose
    & G6 C" Q3 S5 m# [+ x
  132.     @hp_sprite.bitmap.dispose' l# U" i/ ~: E8 ^
  133.     @hp_sprite.dispose: ]) P) {3 q) o, m4 A! f
  134.     @hp_bitmap.dispose
    + c* v4 E0 A5 l) K# y
  135.     #HP Border Dispose5 @- S5 E6 b0 @
  136.     @layout_sprite.bitmap.dispose; F6 A* ]  ^9 A, G( B0 @
  137.     @layout_sprite.dispose6 f* H& U$ |1 s7 ], X; f9 [
  138.     @layout_bitmap.dispose
    - e9 g; q8 s" o- C3 N) M  r' j
  139.     #SP Meter Dispose
    & i+ T9 `4 H6 j: ^
  140.     @sp_sprite.bitmap.dispose
    ! Y7 M$ O% n, W' ?
  141.     @sp_sprite.dispose6 H0 @3 a) x- W. N# |: N$ X
  142.     @sp_bitmap.dispose; n; v" ~, I: {
  143.     #SP Border Dispose
    ) K2 y! \- M( p: V9 {
  144.     @layout2_sprite.bitmap.dispose
    ( {  ~0 l) |, F
  145.     @layout2_sprite.dispose
    1 m( D3 B( D, o
  146.     @layout2_bitmap.dispose
    $ ]3 P( G  s# r" D6 P9 E9 ]2 N
  147.   end7 h5 D8 x% g1 i  `! i( Q$ _
  148.   #--------------------------------------------------------------------------
    ( m9 M/ m' j+ C
  149.   # * Update7 D# B2 S, x) i2 i2 w, U$ K+ J1 |, t
  150.   #--------------------------------------------------------------------------1 S0 |# i6 K8 z: g
  151.   def update0 T+ V. f2 P$ v  j" C
  152.      @battler = @enemy.battler
    * r/ x+ C: u2 @1 g
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?# g# s+ l& N, x% Z  L3 F: }( m, ~
  154.      if self.visible* ~1 a; r. ^9 p
  155.        refresh0 B. X' W5 P! z
  156.      else/ V' D/ l# y1 T' r
  157.        self.bitmap.clear' c. _& Y& v2 n8 R/ i/ V' Z
  158.      end1 g. h. r2 V- i
  159.   end% k. x. p* q% T5 d
  160.   #--------------------------------------------------------------------------* ?1 F9 C/ Q% _5 V* `
  161.   # * Visible Update* i! y& f% n& Z8 J4 j% j6 }) q
  162.   #--------------------------------------------------------------------------7 X. f$ [6 U* w* t- h9 d
  163.   def visible_update- z! t  l* C* k6 Z4 H2 q& J5 W
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    - r& p. f/ O9 o. I0 k7 A
  165.        @hp_sprite.visible = false4 E0 l: M6 U0 U* Q
  166.        @layout_sprite.visible = false
    / i. b3 `* W+ a6 L, G& E9 R) s
  167.        @sp_sprite.visible = false
    8 b$ U" e4 A4 `
  168.        @layout2_sprite.visible = false% Y' c6 c, ]0 A& v2 [
  169.     else
    : U9 R+ `; o- }( `6 W6 u
  170.        if HP_HUD == true
    4 q+ x' [. H3 x6 l% l
  171.          @hp_sprite.visible = true+ i! Q0 X* y/ D8 h
  172.          @layout_sprite.visible = true
    ( L" y. d2 J4 J3 E" h6 v
  173.        else/ f& D* S' u5 K9 S- H+ \# A
  174.          @hp_sprite.visible = false
    7 @; z; w+ o+ u! T6 R- |: i/ _/ a
  175.          @layout_sprite.visible = false
    . C# |) {$ p( v
  176.        end  + I; b1 w* l5 {. S* s4 g/ f" k
  177.        if SP_HUD == true
    ! V( i( Y* {0 W4 R% e0 u7 W
  178.          @sp_sprite.visible = true
    ) s5 C6 L' i* }1 X1 t6 o1 T
  179.          @layout2_sprite.visible = true
    ; t, ^  `, O3 e& @
  180.        else
    1 C8 ^' r- A: r( X; N: t8 L
  181.          @sp_sprite.visible = false( D0 ?. N& ~7 Y( e8 \
  182.          @layout2_sprite.visible = false
    $ V; r; E& \$ w1 q* s" l" b
  183.        end 7 @$ q6 ?; C4 @, p
  184.      end  
    4 r& F* i+ q& h( R
  185.    end $ u1 n$ I5 k8 U' b& c
  186.   #--------------------------------------------------------------------------- E( O' {( y; G1 }( k, X  w( g* q
  187.   # * Hud Pos Update: ^) c& m. F/ y1 O. \$ O
  188.   #--------------------------------------------------------------------------8 e, S! Q; X& W, }/ `
  189.   def hud_pos_update( G; g/ s" C  ^& o" Q/ b
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    9 k, N& [$ Y5 U" P+ t8 Q- |
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    2 p/ }, S  P; H- K
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    . J/ }" f3 M. t6 G6 t
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y   h* h1 Q, n' e; |' F2 ^3 U: d" F
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    8 B# E+ l) ?$ |7 G% e( b( v; U3 t
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  + C. [4 E  g" n9 n( x
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    ! u7 O0 U0 w/ o/ d5 X( O# }
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y       o( N; N4 M# z9 `4 r: j7 T/ ~/ W
  198.   end  
    3 o6 [( h9 g, K, t* o& l
  199.   #--------------------------------------------------------------------------
    0 b  b  o! l5 e  |0 H1 |
  200.   # * Hp Flow Update
    2 {7 T% p- o- \. b$ I/ U9 n
  201.   #--------------------------------------------------------------------------* C7 Q4 {, ]# u8 _) W
  202.   def hp_flow_update
    - _( h, B" j) F9 S" d
  203.       @hp_sprite.bitmap.clear
    : D6 f  t9 f: W- k
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  % X  y# O( F9 a9 W5 {
  205.           #HP Damage---------------------------------
    $ a- I" I% a" B& K- h7 @
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    * C6 U; i7 s; `' A: r
  207.           valor = 0.5 if valor < 1         
    9 `7 D+ c. t; \9 \8 x' |5 C
  208.           if @hp_width_old != @hp_width
      R3 g0 M2 M/ S6 }3 W
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  $ D$ |# W! J/ [" P: T3 _' t
  210.           if @hp_width_old < @hp_width * U1 y8 m5 Y& v- @; k5 }4 \
  211.              @hp_width_old = @hp_width
    - I  R4 f9 \& ?: e8 }0 Q/ u1 q
  212.           end      $ K" U  s4 t) B$ \0 d8 N
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height), Z! x+ `; ?8 s. f
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    , r5 S0 ]6 y& N) f( X
  215.           end        % O, s  a. H% f: G" [3 f  k
  216.       #HP Real------------------------------------6 N& R0 @* t. b- o
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)4 n' x) O! Y/ P) a. T. f1 A* {! |
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    / y* N* @# J: W7 v7 z8 _. F
  219.       @hp_flow += 2  ! a" v7 n0 W% l$ F$ y1 p
  220.       if @hp_flow >= @hp_image.width - @hp_range
    2 ^3 v7 f& e  I( }7 T
  221.          @hp_flow = 0  
    * A& ?: X+ a# b4 j
  222.       end* ?& r2 u" C, ~5 U; {
  223.   end    - O6 p2 x* [# z
  224.   #--------------------------------------------------------------------------
    9 D  Y5 k. ?' t6 n
  225.   # * Sp Flow Update9 F- z2 @: l5 j6 D3 A9 A
  226.   #--------------------------------------------------------------------------' Y" [, C3 g7 ?8 a; y  D8 f
  227.   def sp_flow_update
    ) U2 C3 e; c) \
  228.       @sp_sprite.bitmap.clear# i, |! F$ Q+ P' z% @; q7 s& e
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp . [: v, U9 ^& m
  230.           #SP Damage---------------------------------) v6 r$ Q* E; e* W, P) J! T
  231.           if @sp_width_old != @sp_width
    2 ^  P, G# m. D8 b, P- s8 i* q
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100, ]" |9 C, M! H0 g
  233.           valor = 0.5 if valor < 1              
    ! L* f  X0 v4 q* q; O$ j4 e; `
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  8 j0 e2 l+ o3 \
  235.           if @sp_width_old < @sp_width
    2 {+ f+ W/ E( D
  236.              @sp_width_old = @sp_width
    / P5 D  G% `9 T! \4 N( X; C
  237.           end      
    + J0 \# c6 A1 {3 O& S/ \
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)) z" M  _$ E' R* O- _/ i1 a5 E
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    ; m/ ~! X+ l8 M9 F! S' {, u$ K& I
  240.           end" j- g/ y/ @) `' ~
  241.       #SP Real------------------------------------. C4 h) L) d$ H3 w  Z: N
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    1 {: w) ^/ O8 I- m% _5 ^' d3 P& d6 k
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    # C' Y9 u4 s; t/ Q" ]
  244.       @sp_flow += 1  
    + F2 ]7 V) ^" M  S! C7 O) N- g
  245.       if @sp_flow >= @sp_image.width - @sp_range
    ( ~* ^1 K, ^9 F  m$ R7 ]2 ]1 i
  246.          @sp_flow = 0  
    * i0 b5 d, ?( Y) f+ \
  247.       end, L+ [& h4 D, M! G
  248.     end            
    3 ^5 h5 \8 b% ~* p  R
  249.   end
    5 R+ p2 [6 `* s1 L  e
  250. #===============================================================================; c/ `& C0 g! c. w
  251. class Sprite_Character < RPG::Sprite2 }, m' d" p* k2 K8 F0 L
  252. #-------------------------------------------------------------------------------/ ]8 Q5 Y% Z( X# W
  253.   alias :xas_emini_hud_init :initialize% p5 I4 F  w7 B; ]# s. k% w" t
  254.   include MOG6 Z* T+ I2 @! `7 l" D3 M
  255.   def initialize(viewport, character)0 @: o6 b- D: ]" A, m
  256.     xas_emini_hud_init(viewport, character)! o2 R5 x9 l5 I3 ?' e: L0 R
  257.     @viewport = viewport, L  }, h' ]) e
  258.     return if @character.battler.nil?+ E) }% U+ v- Q9 g, z
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    / t8 ]' ~, S; h. m
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)8 g, X* T* v& C9 U' e
  261.     return if @character.battler.is_a?(Game_Actor)
    ; B  I8 f+ P' T% @6 z4 Q6 c
  262.     @bars = S_Hud.new(@character, @viewport)* `7 Q$ B, D: L- E& V% M
  263.   end
    3 d$ v; D8 L% u$ X' A& J  X  W5 R! G
  264. #-------------------------------------------------------------------------------, n1 F" @! i2 F: T! J
  265.   alias :xas_emini_hud_up :update
    . n" f7 `3 K' I% c
  266.   def update
    ; J- _8 `2 V0 `0 X
  267.     xas_emini_hud_up
    ( r: g' l( f' e$ t
  268.     return if @bars.nil?8 N3 x& d( n" x! A4 b
  269.     return if @bars.disposed?
    " h1 F0 F- X% A7 V2 w+ u
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs0 H8 W, q) ~7 G# u
  271.     @bars.visible = (dis <= RANGE)& N& o& C5 K' H) x
  272.     if @bars.visible
    / m% ?- C1 b! P
  273.       @bars.x = @character.screen_x# - @cw / 48 Z/ B* T: ?  t7 l* Y! [
  274.       @bars.y = @character.screen_y# - @ch / 4
    ' N5 q5 g3 S0 x  o  W1 a! W
  275.     end: {' o: L, S' H) q% }+ T
  276.     @bars.update3 [: z. w; `+ l& {: t' c+ a
  277.   end/ S2 o" O7 m* M& j: V6 ~
  278. #-------------------------------------------------------------------------------" ]7 z. |) A  u% G9 }
  279.   def dispose
    + l  v8 u  u. l9 w- ]8 Q/ }
  280.     super
    ) H2 l% Z$ s( X- p3 t# P
  281.     @bars.dispose if [email protected]?& ?8 v* \9 S  ]& P0 M
  282.   end
    1 q4 n0 s; ^- M; U0 X
  283. end
    # ~( G# L( O7 ^, a( }

  284. $ w1 n/ Y8 f* V- f3 x
  285. $mog_rgss_s_hud = true
复制代码

' [  L2 g  H6 j# V& z4 k  r2 P) B
  ?6 C5 e  C: t2 l8 [6 Q2 n/ y
上面所說出錯的203行內容為7 B4 \: h9 }* Q5 Z8 a: w
@hp_sprite.bitmap.clear
4 V5 R, C: B4 \6 \+ r+ S9 g4 G. c* h  Q( U2 `
想知道怎麼解決/ k8 o' b  j- @( j/ r" {0 P
9 b6 T7 U2 o+ D/ @$ l
該腳本支持3.82* m; ~# P8 x8 D1 T

/ i& `' F! {! z3 M. q2 i6 N下面是圖檔,要塞在Windowskin下
4 y$ W  ?3 R: e, H8 O3 v6 A; q8 W# W+ n
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 0 B1 u/ f# b8 U

- ^  W1 ?* G6 J8 D( |
% L0 G/ n( Q* f2 G" _0 A' {9 Y7 |

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适1 l+ k, H4 [2 c; g
结果尝试刷新了一个已经释放的图形8 n+ J& C& Q8 z2 ^' f3 J. P
" Y' Y) y4 U# o2 E/ B0 a  |
4 ~% D% R' ~' \4 I9 y' y$ p
) o( @& ^& q% q3 q& d6 y) {
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    : O) j) I- a/ j2 \9 |+ F: `
复制代码
不要后面那个条件貌似就没问题了。
, B6 O7 \# \8 O* j0 A
. z$ F  q- s( u4 _/ c' w: Y- ]( z' W$ E' T1 J) Q$ d0 v' ?
+ s2 q# }- A2 i( K2 U
  @: \! n0 d& L7 c  v

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
; Z1 `9 ?5 j% F貌似是释放的条件不合适& _" x/ s2 v& b4 D% u
结果尝试刷新了一个已经释放的图形
2 x- A3 A3 s* w/ W- R  t- f
把後面那個條件弄掉後,的確沒問題了
- ~. a/ h' t% E& S: D目前從關頭打到關尾結束都沒再彈什麼錯誤
8 I, H3 h0 s  l0 ^9 v+ p非常感謝, a4 }  e+ R" ?: [$ z' n
* t  d+ D7 [1 }; q) J3 j
不過我是參照著別人腳本改的
9 m# s4 c6 ~# z/ _  k他寫的條件式也是那樣,但我用他的沒什麼錯誤
' O& ?7 v" ~( i" c# a5 X不知道是怎麼回事5 }1 d% z" Z' i7 {- i5 B9 E
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的+ Z1 |6 _* m! K; n$ O- r
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
+ {: X% t1 o+ u- V9 b嘛..这个数组吧..我在以前试写队友的时候关注过一点
; s  p+ l& D/ U! o% R4 g不知道XAS内部对它做了什么手脚还是为啥,9 z9 e6 u4 Q8 n" x1 G
总有那么一瞬间,没有被消灭的敌人事件也变成了nil+ K' L5 ^( c) J
, Q( T# H' h4 Z2 ~
$game_map.events.values[@enemy.id].nil?
0 @! V- n/ u% {+ c; S因此自然而然的返回true并符合条件把图形释放掉了; k- S( L- }  l2 Q- D4 T& I$ A$ c

+ h% N& L( ^/ w7 iLZ应该有注意到吧,
% v; ?$ M3 d( c! X" C2 v; j我测试的时候发现报错前几帧,图形会消失,. X# y% h; G9 [# {% Z6 h. D9 \
应该就是“误以为敌人被消灭”了。& }" @: }2 U1 X8 w4 @

" c; S4 g; r, V受限于个人水平,至今无法找出$game_map.events的真相..7 ?: K: W. l+ s, P8 x

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
0 a# W% Z3 `5 p# x9 m- t# P) t$game_map.events' u5 N/ U& x3 t3 k$ a# G5 L# D: f' f
嘛..这个数组吧..我在以前试写队友的时候关注过一点
- S+ _; ]. q% S2 r" m$ z不知道XAS内部对它做了什么手脚还是 ...
3 T7 y) w( I7 ~" D2 V* K" p
當初我把那個條件式看了三遍,都不覺得他有什麼錯
9 \3 U* h! c3 B' N原來還有這麼深奧詭異的事XD
" n( {$ {* G" Y& H
  j5 @# T% N+ H) k! n+ S5 Z( k錯誤發生前的確會有圖形沒顯示出來
0 J& {' A$ r- G1 j% J0 @不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
0 g" C+ V4 |+ a3 P. W沒想到居然是詐屍了XD
! n" k2 @9 N% K# ?
1 U3 d, p; z2 P4 G不曉得3.91有沒有修正這問題...
3 s" h1 }& S, E% A7 ]不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
% j3 l4 _4 k4 S$ A% N) P; |& J; B9 U
的确
5 H. H/ Z" e# h7 e8 h4 n用惯3.82之后想去整3.91觉得压力甚大..
6 S( ~2 j1 {8 D% n干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
. n- z; g4 T- D: I2 Q3 ~' M5 N- C2 m6 w  d4 w  ^1 L5 H) Y* n% J# k/ f
然后加一个判断处理的。(我记得有一个disposed?)




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