Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條9 C: G$ I6 m) c( q. q  x
會在每隻事件怪物的腳下顯示! W' w+ A/ G* P7 {5 D: u
問題是不知道為什麼
6 n2 K/ J  `& z3 O, g/ x# `$ R* N5 i+ i有時打怪打一打會跳出
& L. K7 O5 e9 j1 o! L: M9 F9 v---------------------------' d+ |; [7 [% L, k# D' L
XAS
5 x9 ^' @+ V1 T) \---------------------------
8 k" E! e: R) V+ B5 N2 X脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。& a% R- ?8 o( C7 w5 l
! z/ I; K, {2 m  N" b
disposed bitmap
- V: ?- Z9 G( Z; |& u! t3 F---------------------------( z' R3 Y2 k2 m. }
確定   : i0 Z5 }( K# g1 L  ~
---------------------------
' A' n/ O: R7 @! S5 d4 Y6 C0 N: q. L
9 u/ h! {# C) e這是腳本' ]) k7 R3 S& h; g5 X5 g; R

* T* F& H$ G( S& T9 b
  1. #===============================================================================  S6 S7 Z  J7 q) ~
  2. # MOG - s Hud 1.0      9 T+ K& @5 e3 y, Z% W' {3 p9 m
  3. #===============================================================================
    8 k+ f) h4 Z* F% x3 I$ i
  4. # By Moghunter
    ) |9 k, \- m$ G6 O- W3 v1 x
  5. # http://www.atelier-rgss.com% i& a( l* o; @% Z
  6. #===============================================================================' \/ F: K& g# D5 y: V8 p
  7. # Translated by Calvin624 / U1 P, m2 d* }0 [. U9 W% f% Y
  8. # http://www.xasabs.wordpress.com
    : M& w: _' J2 n$ E1 p
  9. #===============================================================================- J' a* ^7 _1 K, i5 u- t
  10. ###############################-DESCRIPTION-####################################
    . N- T3 ~7 }& W  |1 ?
  11. #===============================================================================
    3 Y0 c& u& d6 ?6 a( ]$ B7 z
  12. # Personal HUD – displays the HP and SP below the hero.6 w& K) S1 B5 U
  13. #===============================================================================
    ' K9 k. `" X+ j7 Y
  14. #  ~* }+ s& d: L1 b( i( z/ D% c. W
  15. # Graphics required:
    2 X$ t/ G8 f8 u; j1 f) `; y# p& q
  16. #
    2 Z( V2 v& a" u: x/ C  l7 L
  17. # S_Border_HP_Meter.png( d5 S1 C; ?. J5 B6 Z% z# u. \7 t  c
  18. # S_Border_SP_Meter.png  _) O- P3 z' X9 M. k2 s* l
  19. # S_HP_Meter.png$ A: s1 @' h: ^) C: O. ?, |* F
  20. # S_SP_Meter.png4 T5 O& @3 H" y# Z
  21. #
    ) b" t. U- r, X8 z$ @
  22. # All images must be in the Windowskin folder.
    / q) u6 c, c% F1 j
  23. #
    * M' o$ F3 S# T0 e0 X6 w7 P
  24. #===============================================================================
    # `3 w6 B; @9 j9 V' Z" d8 X
  25. module MOG
    . \8 x- k; D* R. G9 z5 ~5 L% {
  26. VISIBLE_DEF = false  - c% N7 A; A: C3 Y
  27. # Show HP meter?. K; F! B, a/ z
  28. HP_HUD = true( h9 ~) ?  ^5 n) Y, h" ?
  29. # Position of the HP border
      M) L0 _: E" s" J3 |# H  w) J& X6 {
  30. S_BORDER_HP_METER_X = -2: }3 ]) j9 g# R1 }+ T
  31. S_BORDER_HP_METER_Y = -2  
    + R# {/ y6 V# Z1 u  l
  32. # Position of the HP meter8 t  H5 ^' I) D+ O
  33. S_HP_METER_X = 0: Y0 O4 `: s8 I0 Z4 }
  34. S_HP_METER_Y = 0
    9 q: n- J6 \5 i* N2 S. c  |
  35. # Show SP meter?( L5 ]1 f, @+ G) M7 I/ @: b
  36. SP_HUD = true
      i6 q( K# h3 E7 [; G) J
  37. # Position of the SP border
    + a& d+ ?3 p6 q: u( U
  38. S_BORDER_SP_METER_X = 0
    8 L9 J2 q& \* W9 v- y
  39. S_BORDER_SP_METER_Y = 10 . |) T) {$ p% W
  40. # Position of the SP meter6 I% C! D9 d9 e) t
  41. S_SP_METER_X = 0- V8 S; T( H" d; r- N1 _# {
  42. S_SP_METER_Y = 10
    3 s% y# K2 E  o! u! J8 s$ h
  43. # Switch to disable the HUD
    , p& ?  V- c# r% |, d
  44. DISABLE_SHUD_SWITCH = 51 F# `: n- r$ t' U0 Q! p) t
  45. RANGE = 20
    ' ^0 o. _  E4 N
  46. end# k6 |, ^& f" M% a) f5 u
  47. #===============================================================================
    # ^4 ~! h& s' ]. c% b' i
  48. # S Hud# \" ?2 s- ?1 v/ u# ^2 m7 h6 [
  49. #===============================================================================
    ; d' Z0 d* x: \* C% \) p
  50. class S_Hud < RPG::Sprite9 W1 ^! M3 f6 b  q6 `, i
  51.   include MOG
    " ?4 a. S1 g0 N% x5 W5 R' q
  52.   #--------------------------------------------------------------------------
    ' i. p+ A! V/ W
  53.   # * Initialize
    $ ~5 s9 N# A/ g+ y' {1 e
  54.   #--------------------------------------------------------------------------
    ; q0 {* |# f3 G( h, d
  55.   def initialize(enemy,viewport)* o* e  ]% V! A
  56.     super(viewport)
    " U+ x  _. y, W5 K6 f8 d8 k1 S
  57.     @enemy  = enemy
    2 p* y& a) \* x
  58.     @battler = @enemy.battler* [7 P5 p! }$ ?  P' j8 ]7 R
  59.     @old_hp  = 0
    ! ]" X7 M1 A1 F. ?% v
  60.     @old_sp  = 0
    9 J) Q4 @- i7 T3 K7 ^0 d
  61.     @old_vis = false
    3 _# U# ^. @* m! Z4 C0 c
  62.     self.bitmap = Bitmap.new(100, 100)
    / K, t8 J( j2 K: \0 f
  63.     self.visible = (VISIBLE_DEF)#false% M0 h3 o& p) P. A3 m( q
  64.     self.z = 100) p( h* G! \. v8 F5 A. x3 \+ E& x
  65.     #HP Border -------------------------------------------------------------------- F; [) _, l& ~+ Q3 o# p$ d
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")# |+ p9 ]) ~4 o% r9 N# W. m4 v* h
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)1 c* f# D' i/ b$ Y. w8 y% a; K7 ?( A
  68.     @layout_sprite = Sprite.new! w- C$ K' H  d. M8 O$ r8 H0 F+ }
  69.     @layout_sprite.bitmap = @layout_bitmap
    2 p$ Z. Y+ j2 x1 L+ l) t
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    & Y8 {+ C; U& z4 V
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    6 X% c1 E( `* y4 c8 h) H9 ?8 R' W" `
  72.     @layout_sprite.z = 5001$ t# l' |, g( V1 c3 N/ w
  73.     #HP Meter ---------------------------------------------------* `& {8 ~. g" h
  74.     @hp_flow = 0
    4 d& w# h  \, R- n$ Y9 N. {: I3 V
  75.     @hp_damage_flow = 07 ]& ]6 ?8 r+ G5 l
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    1 v! R$ ~5 t1 Q! S2 D
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)" E, W0 B1 L$ M; C
  78.     @hp_range = @hp_image.width / 3
    : q0 M' F3 Z# m9 f6 W
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  5 F. m2 `) G9 @
  80.     @hp_width2 = @hp_range / 2
    0 }) a4 q# \0 S8 }) g( f# d
  81.     @hp_height = @hp_image.height / 2
    6 L  ~: J# k& I$ M. V/ B4 _/ r
  82.     @hp_width_old = @hp_width
    ( C. E$ i, W9 h9 L. ^
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)# ~1 w- r$ G, k3 W% J/ x
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) # I1 m" t! s- d
  85.     @hp_sprite = Sprite.new
    4 Z% @/ g( m  b+ J
  86.     @hp_sprite.bitmap = @hp_bitmap
    1 f  D4 \9 M  n5 m8 x  v
  87.     @hp_sprite.z = 5002  y- j) J" W. m5 j
  88.     #SP Border -------------------------------------------------------------------
    ( Y7 k/ H! w3 e
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    ( u# ~6 u, H6 W. N; v% X; |
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    . F- p4 ^$ r5 \8 |3 {
  91.     @layout2_sprite = Sprite.new
    ( `7 k/ p- V8 q, ?' M4 d$ J6 {
  92.     @layout2_sprite.bitmap = @layout2_bitmap. ]. R  g- y# Z1 f# B
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    ) P2 |8 D4 H) {  D
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      . Q7 i% s+ d( u( B1 ^
  95.     @layout2_sprite.z = 5001    7 F) Z, D2 o/ w" r: y: C
  96.     #SP Meter ------------------------------------------------------* V0 n3 l9 V. {
  97.     @sp_flow = 0: |4 P& X# t8 O% u5 f/ X
  98.     @sp_damage_flow = 0
    / X8 Q: o' K* \7 ^% y% t) z
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
      @' R' F( Y- h- L" F
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    + o3 K9 c. o' o& Z5 ]
  101.     @sp_range = @sp_image.width / 3
    1 M/ A, \% n0 _2 C* C0 |
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    9 o1 S+ Z. `5 P8 [% N" I, r: ?( ~& l
  103.     @sp_width2 = @sp_range / 2% f  M6 q5 V+ p
  104.     @sp_height = @sp_image.height / 2+ l6 `, F# d8 p& h, `
  105.     @sp_width_old = @sp_width
    / ~8 O5 M# R# E4 {' W) i- u: H2 J+ F% s
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    % E& {8 W" x/ p) M$ M4 F, c
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    1 M; R/ X+ [* z# s
  108.     @sp_sprite = Sprite.new
    + m- [/ x8 t% p- j
  109.     @sp_sprite.bitmap = @sp_bitmap- J# J' B( t  h: y& I5 C) ^
  110.     @sp_sprite.z = 50028 e! R) E5 ^: {, \8 {4 W3 ~
  111.     update% d, E9 v; t$ Z8 p3 I
  112.   end1 l. [( X" X: S+ T
  113.   #--------------------------------------------------------------------------8 C" t8 l3 h% A+ i
  114.   # * Refresh# \$ Q$ o+ d) E6 c0 z# a  d  q
  115.   #--------------------------------------------------------------------------
    - m2 C) K$ e4 W  u# W! i, H; d
  116.   def refresh- w. R5 P* U8 t" W2 m0 K
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    - V+ m7 J2 e* J
  118.     self.bitmap.clear
    ' l" r8 E! {. I; x7 p
  119.     @old_vis = self.visible, u+ c' ^% Q0 V5 V, _* M
  120.     @old_sp = @battler.sp3 v2 O" I' X' I0 k% E
  121.     @old_hp = @battler.hp
    0 M; i5 e1 i' B  v9 p
  122.     hp_flow_update
    ' O+ ]5 J& K9 b
  123.     sp_flow_update
    # m% [4 g* N) t5 y3 q( c; E3 ?! m
  124.     hud_pos_update
    3 M" v2 _2 I8 V0 y( V, @; m/ _
  125.     visible_update
    0 t+ z' e. k* q/ B* I" u
  126.   end8 J2 b  w6 w% ]* W! ?* I- Q
  127.   #--------------------------------------------------------------------------( ~6 b0 u( o/ U, k1 \: G4 ~
  128.   # * Dispose
    # z4 A7 h; K1 X
  129.   #--------------------------------------------------------------------------
      B, ~, F* Z8 N0 P) L
  130.   def dispose
    0 A/ K* O% k0 m+ p1 `
  131.     #HP Meter Dispose
    3 ^- t% d9 J7 n( N4 n6 _/ t! v* E; |
  132.     @hp_sprite.bitmap.dispose. t8 X" j( Q7 o# K2 ]
  133.     @hp_sprite.dispose
    2 ]2 E0 _- I/ B
  134.     @hp_bitmap.dispose
    . a7 L9 y6 ?  n
  135.     #HP Border Dispose
    6 z9 q1 `7 n" p8 n) m$ z
  136.     @layout_sprite.bitmap.dispose, g' a2 U4 j7 h- ]% r" S7 Y
  137.     @layout_sprite.dispose* F3 U0 z3 }" U9 c0 M
  138.     @layout_bitmap.dispose
    + N. X- m% ~. W) }
  139.     #SP Meter Dispose# v" i' k' {# g/ E5 d" d( O! m
  140.     @sp_sprite.bitmap.dispose
    6 d- w2 t+ q( H. @1 q& r
  141.     @sp_sprite.dispose
    0 ]5 v8 m3 m8 a- ^, g9 C- u  `! x
  142.     @sp_bitmap.dispose( u; l4 k' C6 a; T
  143.     #SP Border Dispose, ~( p8 n! k0 R) `/ K
  144.     @layout2_sprite.bitmap.dispose
    & L9 E1 p& Q6 |# u
  145.     @layout2_sprite.dispose
    : V! i- [4 d$ |0 V# u. @5 x
  146.     @layout2_bitmap.dispose
    , Z. U0 v& q+ T5 B, S0 k
  147.   end  }8 w1 @. A- u) n4 O
  148.   #--------------------------------------------------------------------------
    ; n7 [1 o8 a/ S% d4 ?
  149.   # * Update5 e- B4 a: d8 @8 r2 p
  150.   #--------------------------------------------------------------------------* l# l% Z. j# i
  151.   def update' S% i3 O' y1 S6 v
  152.      @battler = @enemy.battler 5 q( }( F; x# h+ o3 Q, G
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    - e3 T, P: U% F1 v
  154.      if self.visible
    " h6 R. s+ |' t8 P! }. _0 C# X
  155.        refresh
    $ @  _8 N$ s' W0 K+ B2 D
  156.      else
    9 Y9 y6 X8 ~/ v" D4 }! E
  157.        self.bitmap.clear# b) Y+ A3 A$ P* \  x- E& T
  158.      end  _* [! _! g5 ^1 b0 M
  159.   end5 _; C% z: @- ~7 e; M6 I
  160.   #--------------------------------------------------------------------------1 F1 M; ]# C; |% p$ G; \
  161.   # * Visible Update7 g, T4 q, t1 I/ x0 T. P
  162.   #--------------------------------------------------------------------------' I2 H" i; X  N/ e9 Z& b; x/ m
  163.   def visible_update
    4 o# b! ~0 o. C& h: x0 x$ P# c* `' Q
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true; X! f. H" i$ o4 u- j  t
  165.        @hp_sprite.visible = false
    : l3 z* a" u: G! U1 o8 \- Q
  166.        @layout_sprite.visible = false: M% Y4 Q+ ]2 `: h% x8 T; r$ l
  167.        @sp_sprite.visible = false% i7 l% C9 T$ a: c5 p
  168.        @layout2_sprite.visible = false
    # j9 z) L: D! P4 Y
  169.     else, @8 `% i- P$ Z' N% }
  170.        if HP_HUD == true0 l9 ]( H2 T: A, H5 [  G+ D
  171.          @hp_sprite.visible = true7 r; f' i6 l+ ^4 A7 g. D
  172.          @layout_sprite.visible = true
    1 W1 M: u2 m$ M. K8 T( ]. ^4 v/ e& o
  173.        else
    1 C4 c  l% }  d& h7 B
  174.          @hp_sprite.visible = false; q% [8 c! n' f$ k: z
  175.          @layout_sprite.visible = false
    4 c9 a$ ^2 @4 w4 {, |* L: d
  176.        end  
    + n+ F' V. Y3 l
  177.        if SP_HUD == true# p8 c- X0 m  t9 m# u: e* z5 }
  178.          @sp_sprite.visible = true
    4 P3 s$ P7 l6 G: R9 E
  179.          @layout2_sprite.visible = true% P3 E5 ^8 w1 p7 O) Y, D3 g
  180.        else
    / [# l. j2 d; A
  181.          @sp_sprite.visible = false2 Y# v" `7 I4 R- M# p! B
  182.          @layout2_sprite.visible = false6 W7 K) C' y- a' ?
  183.        end ! T! |! c* r/ O0 s
  184.      end  # G6 r( B, B# h, Y7 N9 I; e
  185.    end 1 P: v4 U* {% E8 j& Z* |
  186.   #--------------------------------------------------------------------------0 x; L, I: H; x* |6 j, \
  187.   # * Hud Pos Update' t4 B' V4 w5 d- B/ f
  188.   #--------------------------------------------------------------------------
    ! {0 u7 K, _/ ^3 N% Y; @, ~
  189.   def hud_pos_update
    6 y3 I* a2 }9 G& M0 d' Y0 h9 Q$ d0 V; F
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    " R* b0 U, k' C2 e/ e. y$ A% w; Q4 d
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    ) `3 }( w# P6 r* b0 D/ `
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X" q) z) A* V7 b" j6 B
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y & U  \* S( c  v" T
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X0 t3 q+ B6 r) A. {. X: Q& Z
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    * m( q9 Q6 k8 }4 c; I$ T  m! x, x
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    ! I. D* W" N+ d3 W8 E: f
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    - x6 ?( J7 f4 r6 K% m, v
  198.   end  
    * w/ ^7 g* c; z4 d) p3 W
  199.   #--------------------------------------------------------------------------$ ~9 N) f0 n% I6 p3 O
  200.   # * Hp Flow Update
    6 U& G: o/ S8 Y7 D. L' w8 ~
  201.   #--------------------------------------------------------------------------' S. R  C/ ?# U6 x- h/ E9 {% ?% e
  202.   def hp_flow_update) F8 b1 l* x7 Z+ Z/ e
  203.       @hp_sprite.bitmap.clear
    ) H9 l, ^: t' b( x( W- \* a
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  / D# E1 S8 g, C% @
  205.           #HP Damage---------------------------------9 R0 ?; P  O! T) s; ?. c
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    * h$ y9 x  g) h
  207.           valor = 0.5 if valor < 1         
    1 f' H1 a9 ?8 i8 T3 ~: y
  208.           if @hp_width_old != @hp_width
    $ _/ E. E" N; ]  u, y4 U2 X* x
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  ; u  T/ N9 }* {9 X+ k* H
  210.           if @hp_width_old < @hp_width
    & v) g+ Z5 f8 J1 k0 E7 {' }
  211.              @hp_width_old = @hp_width
    + l6 _. _) Y, S2 u. s
  212.           end      # d0 k7 ]8 n2 N: P( v
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    6 X9 q2 x6 ~2 w( Q
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    ! F! O1 I2 e+ h# s9 l' L" Q
  215.           end        - @. j1 C# K6 @2 b
  216.       #HP Real------------------------------------
    . _/ f" P# I" G/ Z: c
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)' U7 h4 f6 q& I% k
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    ) r& `5 P# ~: W% B# q0 r" [% X
  219.       @hp_flow += 2  # w9 e2 X' T0 t. v" o9 ]3 k
  220.       if @hp_flow >= @hp_image.width - @hp_range# J/ w6 G1 q0 O, d' ]
  221.          @hp_flow = 0  
    9 Z6 |9 R6 o( g- d( D* p
  222.       end
      f" f: K' h( z" Y3 ~: ~
  223.   end    3 Z) S7 {5 |6 x$ ]7 z' f
  224.   #--------------------------------------------------------------------------
    $ ^% O; Z9 Y: N, M2 O& l* U1 ^
  225.   # * Sp Flow Update8 ^$ K9 o& i4 q  j
  226.   #--------------------------------------------------------------------------
    ( M8 |8 ]8 ?* Y0 z( P
  227.   def sp_flow_update
    / t$ }) w& o' o; z2 ?# q
  228.       @sp_sprite.bitmap.clear
    3 g9 _* T/ }" T$ T0 I
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    6 w/ }, v  C2 Q# s) T. y. H
  230.           #SP Damage---------------------------------
    % J/ A  H  X' e* t+ g& ?# Q
  231.           if @sp_width_old != @sp_width0 Y- X7 ]0 o, p4 j6 c
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    ) Y7 @5 ~/ z8 Q$ ?- }
  233.           valor = 0.5 if valor < 1              ' h0 u  v/ d  L6 b6 W! T
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  : t6 w$ K. P0 I8 U
  235.           if @sp_width_old < @sp_width
    % x2 p6 |& K$ i6 A1 x' H
  236.              @sp_width_old = @sp_width
    & s2 x" D, l2 k# a
  237.           end      
    ( I( ]  g4 T$ N% b/ c
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    & t3 E5 t' O, p. ~$ n, \6 Y2 C
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    2 Z% x7 R' L8 H; j
  240.           end1 Y8 ^. `' O+ i  U9 [
  241.       #SP Real------------------------------------
    3 t0 l' ]' Y0 S& r3 G& z+ ]+ s
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)+ L; v" L4 b3 v( k0 Z" X& c
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    # x& W3 P$ B5 l6 {! L
  244.       @sp_flow += 1  1 u8 s& p7 E. D. }
  245.       if @sp_flow >= @sp_image.width - @sp_range2 C& c, z& ~; P9 ]1 _0 n
  246.          @sp_flow = 0  
    5 g5 n) z! _/ e# j- r5 s
  247.       end1 H2 F/ C' I. ~( ]
  248.     end            
    5 t" T8 K# e: N+ }" @/ r
  249.   end
    ! C- |, _5 x4 j7 m# P
  250. #===============================================================================
    - ^8 {/ s+ ?( Z9 |( ]
  251. class Sprite_Character < RPG::Sprite2 U7 X7 T; k/ M+ l
  252. #-------------------------------------------------------------------------------
    ) Z: i( [% i  _8 N7 E
  253.   alias :xas_emini_hud_init :initialize
    & C$ [# u* f" w% h, V1 g) Q
  254.   include MOG# F" ~4 D& d9 d3 Q
  255.   def initialize(viewport, character)  x7 |7 |) p/ e. I! t# D  _
  256.     xas_emini_hud_init(viewport, character)
    3 l: c4 S3 w* ]1 t; A1 l) V) B
  257.     @viewport = viewport
    5 y7 A( o- w- s4 T9 v
  258.     return if @character.battler.nil?
    + C# `! x1 K+ c* B, M+ B1 C& G
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)+ ?' o3 @; h5 S* b
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)' I) c' b; e- i
  261.     return if @character.battler.is_a?(Game_Actor)
    / t- Z/ b  O( b8 b1 N
  262.     @bars = S_Hud.new(@character, @viewport)& X( [, A/ E- \7 A" k
  263.   end
    ! z8 X4 Q( h" J! z8 N) l# h
  264. #-------------------------------------------------------------------------------
    ( y! ~+ M% [" E2 k/ z, A
  265.   alias :xas_emini_hud_up :update: m. h% q( d, F9 J6 }
  266.   def update4 a2 l8 @, Q- r& K- Q
  267.     xas_emini_hud_up
    7 \( L# s+ R+ W) u$ s1 C- W5 T
  268.     return if @bars.nil?
    0 L4 a' @! B. l9 C1 r
  269.     return if @bars.disposed?( y' e4 g+ i% t3 d1 G% C; s" |
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs. M1 S* Q6 H! K) E
  271.     @bars.visible = (dis <= RANGE)$ V5 s% j( W. n5 j
  272.     if @bars.visible0 V, u, b, p" `- w) H! I+ C6 N
  273.       @bars.x = @character.screen_x# - @cw / 4. I3 n2 n7 m* ~! K
  274.       @bars.y = @character.screen_y# - @ch / 47 g, P7 R. O" U/ D2 N7 t' b. X
  275.     end; ]( E3 P2 [, C1 U( J
  276.     @bars.update
    * I/ {3 E, n# ~% W+ f1 T
  277.   end5 O, h) _* h& {+ b' n
  278. #-------------------------------------------------------------------------------
    2 C8 F+ E6 J7 V  S( Y& n* X! S
  279.   def dispose
    / ^9 p. j1 ]1 Z3 m9 u
  280.     super
    & P2 U" P/ ]$ g* m2 A& X$ [0 K+ Y8 {
  281.     @bars.dispose if [email protected]?
    / k3 K7 ]" O1 m) V7 Y  t% c4 ~) P* p6 Y
  282.   end
    . [- |5 r9 z8 `4 k! U5 q) J5 S
  283. end
    0 M% ]' e, q9 p/ M( |

  284. & S( b+ C  z1 i3 _7 q' D! |7 B9 G
  285. $mog_rgss_s_hud = true
复制代码
8 k9 [& d" W& f- z

) A0 Y2 V  y& g8 J- L' w
; Q3 m! `  i8 M& r1 K' u; }6 N上面所說出錯的203行內容為
: w' W' }3 P, X; o# `@hp_sprite.bitmap.clear
. p" I% _# {! L  O, e- m' p
. P+ `; k; ~/ d" S" O0 t想知道怎麼解決
$ e# K1 V) |4 X& y7 ^" P+ _
2 m5 g& i! d/ U. e( M1 ?該腳本支持3.82% K- {/ U$ m2 P! i7 @, e

  M1 Z4 V5 Z1 z下面是圖檔,要塞在Windowskin下
2 G7 R0 G/ [  z$ Y
, k0 b( |2 Y! K S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) ) c' b! ~( I! z5 P5 J/ H. U0 f
  E7 j) e9 v, w1 H* n5 I

1 x% m2 o* F: I# t! ~- _6 a; ]6 `, ^9 H( k* v% H

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适) r1 O6 s+ M- a5 `- j8 b9 B* n
结果尝试刷新了一个已经释放的图形
0 g! ]8 W9 Q7 t1 Z% s! S
% a; F$ R' H( p2 e; E0 ~1 O9 r0 E" o+ T% h- p* Q$ R3 }- [
! `1 A! ^+ w8 g! T- h7 B) G2 i
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?- ^; ^5 b6 |7 \! U4 x6 v6 l, Q
复制代码
不要后面那个条件貌似就没问题了。3 t6 x; `  V  x' |

' _% |& g, n. d- Z# J
7 U6 ]$ u1 p0 |( B/ U* V( \
! a7 a; v( f# T/ w5 m; Z; P8 k$ p, w0 X4 T" \: R

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
7 h5 L" z( n& s貌似是释放的条件不合适
0 m/ v- m) L0 C- X0 u  J结果尝试刷新了一个已经释放的图形
( Z# t5 F8 t: u7 u! o* H1 [# g$ b3 {
把後面那個條件弄掉後,的確沒問題了6 b* G$ {. l9 E/ V
目前從關頭打到關尾結束都沒再彈什麼錯誤/ j# W  x% }" p, C8 O" v$ ~
非常感謝
& A: Y  Q. j/ ?& |" @$ E) W3 n( g3 r; y' B1 b
不過我是參照著別人腳本改的
6 n2 y7 j+ Y# g' Y+ W他寫的條件式也是那樣,但我用他的沒什麼錯誤: O4 F9 `, {- O/ r2 [$ q
不知道是怎麼回事
2 b! n7 Z; Z& k) \是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的9 G* o- o* M" W( C( R0 J
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events8 G2 r( ]) {8 K! D6 Q6 ]0 Z1 ]9 C
嘛..这个数组吧..我在以前试写队友的时候关注过一点
( _, L- k% F4 o- v不知道XAS内部对它做了什么手脚还是为啥,# C9 H# v2 t1 F1 \3 ~/ w1 y
总有那么一瞬间,没有被消灭的敌人事件也变成了nil* H) S1 O8 ^# ~

3 u+ L& E/ X+ g$game_map.events.values[@enemy.id].nil?1 ]* H7 x4 g7 l/ l. u4 _, \6 r
因此自然而然的返回true并符合条件把图形释放掉了
# ]$ }/ w2 W# ~8 e( W1 I2 V' k6 r2 p6 T% A0 Z
LZ应该有注意到吧,
' m) k. h, P9 S2 V+ b我测试的时候发现报错前几帧,图形会消失,
4 K9 ]. D2 w# T) v, y, j应该就是“误以为敌人被消灭”了。6 K* y' ^) G6 E; `5 ~

& p/ _! T2 K4 a" P, y受限于个人水平,至今无法找出$game_map.events的真相..7 V1 s& V/ l0 k3 G. e

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
% T- u$ {1 t) M( `5 a$game_map.events
: ?% u+ [5 t# S3 E嘛..这个数组吧..我在以前试写队友的时候关注过一点
" X" t- k# W% Y9 s) |不知道XAS内部对它做了什么手脚还是 ...
! M2 Q9 ~, V6 t+ M1 Z/ |9 B
當初我把那個條件式看了三遍,都不覺得他有什麼錯: g5 l% m8 o) \  k4 y
原來還有這麼深奧詭異的事XD
3 S) e" y+ @' b& L2 L% {( `
+ b% L1 v  t4 h( o7 Y" A, y錯誤發生前的確會有圖形沒顯示出來, G. b- e( ]; K, d) ]
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪.../ Q, M: p& ^" G; k: [
沒想到居然是詐屍了XD) O' [% V- O' A- v" m, d

. Q9 L, _" H0 c6 B( z2 r' Q不曉得3.91有沒有修正這問題...- J$ Y: U3 s  I& G5 E; t
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。/ m, D. I8 i% P: B4 ]

: r. v/ Y: `( {# A& }/ P/ W: N的确+ ?- r7 V/ Z3 p
用惯3.82之后想去整3.91觉得压力甚大..
/ o; ]" ^; q8 H5 W7 |- N1 t. J干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
! C4 R0 q" j: H9 [' E3 P: T: E8 Q* r6 \5 n+ ?( V+ g# I8 p
然后加一个判断处理的。(我记得有一个disposed?)




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