Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條- p( z, K: |. p* j3 d/ N
會在每隻事件怪物的腳下顯示
* \0 B4 L8 t( z' ~問題是不知道為什麼  e) Z: i( i, G9 H: t6 }
有時打怪打一打會跳出
. Q& r! M6 X# {& ]6 n  y) e% w& ]---------------------------) t& u& \/ A8 P  A4 U# `. {! F7 M, A' I
XAS) v& K3 r# u& Y% t% p
---------------------------- |+ |7 S+ y& u: q% T
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。: o( ]* a+ Z+ c/ ?3 c: v  R4 G  O
5 V$ \8 h5 ^/ a$ P. c7 \
disposed bitmap/ M+ ]$ {2 O% Z- ~1 R
---------------------------3 v; @) T! T8 B0 {" O
確定   
# \, F, l1 P' r) q7 ~3 E! P---------------------------
0 Y' l: n$ }5 D+ p% `( }) e5 W9 R" E4 m  u2 O2 J9 T
這是腳本) m) s; ?; [. g$ C: q0 j: F1 Q: `
5 n, a6 e# P/ y7 O( ^6 V
  1. #===============================================================================
    " u# N# h4 w. M/ T& P
  2. # MOG - s Hud 1.0      
    1 t+ m% \& n7 w% e( _
  3. #===============================================================================9 |5 e% s* B( A4 G& b
  4. # By Moghunter
    4 `8 i; s) o. Q
  5. # http://www.atelier-rgss.com
    7 P% |1 r' j9 k
  6. #===============================================================================
    & w9 e1 b) ~5 I7 w4 j
  7. # Translated by Calvin624
    4 ^, x# r  r% w. U) Q
  8. # http://www.xasabs.wordpress.com% w; S+ h" F$ ^$ K
  9. #===============================================================================
    % B3 ~0 m# T/ J0 O# c
  10. ###############################-DESCRIPTION-####################################
    # E# ^  b  V/ M8 i# u
  11. #===============================================================================, V/ m; |2 L& a0 T2 x* M8 y- N# M
  12. # Personal HUD – displays the HP and SP below the hero.
    2 v8 h. e: i8 y6 S, {
  13. #===============================================================================
    . b; {2 u# q1 S$ _* h
  14. #( t. b6 C3 M6 ]) x. S3 c9 U
  15. # Graphics required:& k: }" s4 T1 h8 b1 B% s2 ]2 o2 m3 ~
  16. # ! h, s% ^( O6 d1 o
  17. # S_Border_HP_Meter.png
    1 \+ e3 {' b2 a, D; }+ e
  18. # S_Border_SP_Meter.png! b* Y! z! j( A" S+ O3 |9 Y
  19. # S_HP_Meter.png
      l6 H8 H; V% k7 v9 w6 I; v' K; t
  20. # S_SP_Meter.png
    : K+ R. |# ?/ f% D
  21. #- W. Q7 ^5 h9 q
  22. # All images must be in the Windowskin folder.
    9 G& `: R" S) x8 V
  23. #$ d- K; W( o* a& s; O
  24. #===============================================================================
    - p0 a$ y, s/ y+ C/ u
  25. module MOG
    - `2 e2 g( M( _
  26. VISIBLE_DEF = false  
    ( z" P3 E6 T0 W2 M
  27. # Show HP meter?
    : W- F6 z. ]/ h! B0 P2 y
  28. HP_HUD = true
    1 c% ?4 Q; Z+ I0 q' e
  29. # Position of the HP border
    % Z# u+ y+ A& E7 u. l# y' O9 z, H
  30. S_BORDER_HP_METER_X = -2
    ! }" I% G5 Z7 d
  31. S_BORDER_HP_METER_Y = -2  ' q5 T6 V7 u: n3 a
  32. # Position of the HP meter
    - V4 r% `( z" Y/ J# a5 |- {& q3 V
  33. S_HP_METER_X = 0
    : L, X6 _& |$ A
  34. S_HP_METER_Y = 0
    & j/ @; x, v; ]$ E, e% y8 s9 L' K3 _
  35. # Show SP meter?
    " F4 v2 Y, t: q0 f- z
  36. SP_HUD = true
    1 l+ u/ P& B% B3 c
  37. # Position of the SP border/ y9 A! @9 m9 v& Y% D+ P# i
  38. S_BORDER_SP_METER_X = 0
    / U2 ?7 S' H+ o/ X3 y
  39. S_BORDER_SP_METER_Y = 10
    # P% P  R& u' g/ a+ a& I- P% h% T% y
  40. # Position of the SP meter
    & M' }/ u2 R* @1 X
  41. S_SP_METER_X = 0
    & U* I( T8 h& E. L$ Z
  42. S_SP_METER_Y = 10/ S6 _# d, w2 B- G/ h
  43. # Switch to disable the HUD
    ! W+ a3 G, k, |; f/ \8 E
  44. DISABLE_SHUD_SWITCH = 5
    - v" }( L# c/ z( t+ C2 d7 E; a
  45. RANGE = 20
    0 o% S+ Q  h! r& L4 _" U/ a1 A
  46. end5 Q2 [) l; x; R
  47. #===============================================================================+ K$ F( Z. Z1 k" |; o
  48. # S Hud8 u/ a) J4 Y& X* s( ~' L! q# R! m
  49. #===============================================================================, g, O& U! F4 O5 `. o3 a
  50. class S_Hud < RPG::Sprite
    & w% j" e$ {7 e1 B  i* ^7 K% S
  51.   include MOG! A  w6 Y0 q. ?  ~
  52.   #--------------------------------------------------------------------------, H8 z2 I$ W% F
  53.   # * Initialize& h* A# S* Q, N" G+ E, c
  54.   #--------------------------------------------------------------------------% @% [$ b5 q3 M9 [2 ^: \% q
  55.   def initialize(enemy,viewport)
    2 O" E  f; ~  R* {+ @& p1 s
  56.     super(viewport) ' }4 ^1 |: T. P+ B! i
  57.     @enemy  = enemy
    8 D& e- Z! `' \; ?% J) C) k% X- F
  58.     @battler = @enemy.battler
    $ q! @. P- ?+ q
  59.     @old_hp  = 0
    , Y& Z8 t! G0 {8 m7 ^
  60.     @old_sp  = 0% v# g0 _6 L" f4 O! g- H
  61.     @old_vis = false
    & r: u6 B) @( `, g2 i
  62.     self.bitmap = Bitmap.new(100, 100)
    % H) E( E/ M: P& n6 y8 ]
  63.     self.visible = (VISIBLE_DEF)#false# b3 g* [0 q$ E/ |) C
  64.     self.z = 1008 P' G) C9 Z7 O4 m
  65.     #HP Border -------------------------------------------------------------------. j$ I, C& f+ F: k  d$ G# B# M2 M
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")5 Y& k6 n' e- @/ g  b% k8 H- ?: V5 i
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)1 [: k8 Z: _0 f" j
  68.     @layout_sprite = Sprite.new
    3 y& N3 B3 H6 n: d, p
  69.     @layout_sprite.bitmap = @layout_bitmap+ \) q- V8 W! O& Y8 l+ Q$ C
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)7 X& p/ k9 }3 v. A
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      1 C% Z# o0 d$ S3 H/ ?' R
  72.     @layout_sprite.z = 5001" G& t5 j& h, N+ [
  73.     #HP Meter ---------------------------------------------------0 E4 I3 }4 q# ^3 S: c, D- k- E
  74.     @hp_flow = 0
    ; b' m' f9 Z" D+ k8 G/ q
  75.     @hp_damage_flow = 0  n3 y! ^/ c6 w5 L0 ~
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter"); |: K" X; M7 {
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
      l& U4 z' l1 e  m! P- \% |
  78.     @hp_range = @hp_image.width / 3. N% J3 \! v' E" j/ u* n) {
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  . B" ?' j7 j- v$ a/ H" B3 X
  80.     @hp_width2 = @hp_range / 2
    4 C) g5 Z; f4 h) ?* v
  81.     @hp_height = @hp_image.height / 2/ ~8 \, r( e, D" ?4 g
  82.     @hp_width_old = @hp_width: N5 C6 Q  j3 t7 ~( o1 T
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height), t( }0 ^& v# I9 s$ o- \% f  {! w9 ]
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    - P0 z/ p4 c8 U7 R& d6 M
  85.     @hp_sprite = Sprite.new0 h% N! p, g+ M# m
  86.     @hp_sprite.bitmap = @hp_bitmap
    . k( ]$ }' c0 S* r# K2 T" t- N) g
  87.     @hp_sprite.z = 5002. x; B: X1 s9 E& m# u
  88.     #SP Border -------------------------------------------------------------------' Q) z1 a' w! O. m
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
      N7 t9 g* B( |  S0 I6 ?
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)! W2 k  {% O4 q4 U) E: X0 T
  91.     @layout2_sprite = Sprite.new
    , ?1 V$ e( }8 C
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    - n0 o/ ^& C7 q" m+ d$ t% R
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    4 E' u$ Y, o' h1 K. ]+ W/ p
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      ) }7 B9 ?9 @8 L( V2 }
  95.     @layout2_sprite.z = 5001   
      Q/ R9 ^9 {7 ]! _/ r
  96.     #SP Meter ------------------------------------------------------
    ! C% g# A6 N* {  k6 l( s0 O( D7 l$ ^- a
  97.     @sp_flow = 0
    ( W) K& d& E8 j
  98.     @sp_damage_flow = 0
    , A; z0 u( y: j1 @+ }' z% E7 i
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")) Q2 n; e5 Q; v! U7 c3 W( l7 o
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ' k3 @' e  b3 a* x8 |7 W2 L4 x
  101.     @sp_range = @sp_image.width / 3% M& ~3 E7 Q  g- P- t
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  4 d& d: y2 \$ G) z1 P' b( B
  103.     @sp_width2 = @sp_range / 2
    ( x5 g0 }8 M' v! S5 ^4 i( O
  104.     @sp_height = @sp_image.height / 2  \( I2 z- H5 H: l! F* K8 j5 \
  105.     @sp_width_old = @sp_width8 g, g/ i8 U2 H, L! q1 p; |& \" G
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)  X9 E6 R  V7 |9 Z' {8 X+ V$ k
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    + h( A4 Q, Z" X
  108.     @sp_sprite = Sprite.new+ ?7 Q8 M/ |! e' M0 G
  109.     @sp_sprite.bitmap = @sp_bitmap& j! P' o4 I% C
  110.     @sp_sprite.z = 50023 B+ U  J5 ~8 \3 L2 x" W, T8 D
  111.     update
    + B7 j( K% K9 B5 M8 s
  112.   end) }0 h. k! }! E/ O4 X& y
  113.   #--------------------------------------------------------------------------: F9 y  r( }- e/ [" }- a1 K
  114.   # * Refresh: D2 W: d& {+ `: S: M# O9 R$ [# N
  115.   #--------------------------------------------------------------------------# [" W! ?$ _! \" x5 w5 ^7 ^, @* o" V8 F
  116.   def refresh
    ! h& G% b6 v$ s( O! d9 y4 l& V
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    * w# Z  V1 z3 r& _: \) Y* R
  118.     self.bitmap.clear
    ! v$ H( u. e- f" W* Q9 H
  119.     @old_vis = self.visible
    9 X. V+ K; b% M3 B
  120.     @old_sp = @battler.sp5 ~4 C/ g* }; J! }% q
  121.     @old_hp = @battler.hp5 W9 Q/ d. W/ q, C: D, E
  122.     hp_flow_update
    ) R/ u! }% a% X, R( Y$ B9 i$ I
  123.     sp_flow_update
    * t# ^1 A- |5 g0 V! Q$ K
  124.     hud_pos_update* Z+ t6 ]  p' {# a
  125.     visible_update* l4 B7 T( p8 W% E( ~+ x1 B  Z, E
  126.   end
    % W3 P" ]& E. y& u) x& t
  127.   #--------------------------------------------------------------------------
    4 Q. e5 b; X! q. s
  128.   # * Dispose
    2 F8 g# `$ ^: V! c& c
  129.   #--------------------------------------------------------------------------9 X; b" `/ p/ ~- f' l# C8 m
  130.   def dispose
    : k7 p4 H7 D- w; v
  131.     #HP Meter Dispose
    # y+ e% z0 \; P2 M
  132.     @hp_sprite.bitmap.dispose
    " E) R3 }4 r: d& M
  133.     @hp_sprite.dispose
    6 ^/ a3 F6 x/ E8 P( x9 e1 C
  134.     @hp_bitmap.dispose
    3 U+ s$ H, A8 F5 {8 ]3 |$ F4 @5 z
  135.     #HP Border Dispose
    8 ?, `; `$ X4 a8 K0 T5 y2 W6 @2 h
  136.     @layout_sprite.bitmap.dispose" V& A% H1 V" A, ]# y6 A, }( l) ~* j; E
  137.     @layout_sprite.dispose
    . c. {: Y$ j0 V- M( G+ C
  138.     @layout_bitmap.dispose
    7 v8 w8 |& t+ k) L' Y, D# w! p: ]
  139.     #SP Meter Dispose! l$ t" ]. O3 Y1 {8 ^
  140.     @sp_sprite.bitmap.dispose
    ! k. m: ^: c! A; t, a
  141.     @sp_sprite.dispose% P  _6 R5 l' a7 v& L/ |$ ?
  142.     @sp_bitmap.dispose
    & h- K3 l# V- A- a, Z4 I, b
  143.     #SP Border Dispose( s! Y' ?5 }' b6 T' D4 L
  144.     @layout2_sprite.bitmap.dispose8 w2 f  S% n9 }( x9 x! W! S( y' I$ ]
  145.     @layout2_sprite.dispose
    - Z9 b- `( p. Y+ t9 M
  146.     @layout2_bitmap.dispose% `$ y8 {( V) E: h
  147.   end
    7 z  B# B8 W& C7 m3 q
  148.   #--------------------------------------------------------------------------
    . z# o7 O  M. t: J
  149.   # * Update
    1 X' {5 }4 T( D! L- z
  150.   #--------------------------------------------------------------------------1 t- {" {9 T0 |) w9 o
  151.   def update
    + T. L: F6 k4 {) w
  152.      @battler = @enemy.battler
    8 Q7 r! H% s6 o' c3 y
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?4 G* e: o" w/ y' A. _
  154.      if self.visible! h" ]$ V( A& Z* {
  155.        refresh
    ) F6 y$ @# ~0 F) ?- e# y6 G; F$ e1 ?* v
  156.      else
    + n& t: l, P' D8 Q  y# T* x4 V: a
  157.        self.bitmap.clear$ q9 l9 Q/ [, L
  158.      end
    ( s2 o8 }- N) H: f
  159.   end. _( n4 b/ E8 M! R5 V; }
  160.   #--------------------------------------------------------------------------- L/ ?; o$ x% F2 B. `5 j; C/ h
  161.   # * Visible Update
    ! n; S( F1 ^9 X1 D7 \+ c4 t2 h/ |5 b0 a
  162.   #--------------------------------------------------------------------------
    . {: g6 Y2 h- h7 `% ?
  163.   def visible_update
    " @; g; G1 a+ Y4 j
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true( w  ?) M! d  e) I3 q% X: a
  165.        @hp_sprite.visible = false% I6 @5 U% j* A& h* M
  166.        @layout_sprite.visible = false5 @: z' {' C" B
  167.        @sp_sprite.visible = false- l9 x8 i! z: r* ]/ h5 {2 S% w0 l
  168.        @layout2_sprite.visible = false! w4 ]: Q7 o% F
  169.     else
    - V, o9 X5 z0 C( b  w+ n5 @
  170.        if HP_HUD == true% b& A! I" H- R
  171.          @hp_sprite.visible = true
    5 H. W0 j/ B8 Q$ N; p+ m. j  \7 j
  172.          @layout_sprite.visible = true8 l  t3 R, b. u$ o  ^0 a& K
  173.        else1 o. g* h# ^% R, C9 o- h  c
  174.          @hp_sprite.visible = false
    & H& Y" ?3 c" K1 L# p0 s
  175.          @layout_sprite.visible = false" h) Q& W6 i& l
  176.        end  
    8 A- b* ^( \, l& ^4 Z
  177.        if SP_HUD == true
    , R1 I+ T' ?7 [' E! @
  178.          @sp_sprite.visible = true  b$ V. D" b0 K* }
  179.          @layout2_sprite.visible = true. j% q! V1 Y  t/ Y
  180.        else$ R/ j! @" z9 i8 W  T) a& l  `
  181.          @sp_sprite.visible = false2 w3 V. u5 X% a4 V5 c# v# q% c. [0 k
  182.          @layout2_sprite.visible = false6 ?9 H$ D; P% v
  183.        end
    7 F0 W4 a8 p% ~6 o9 U& D0 I
  184.      end  3 q( C8 y; A! ^0 t& w5 ~$ m
  185.    end
    * }5 d+ Z4 \8 D
  186.   #--------------------------------------------------------------------------  Z3 W! b: z  Z- D
  187.   # * Hud Pos Update
    7 u/ ^* F0 I9 W4 q
  188.   #--------------------------------------------------------------------------
    9 z9 a$ ^3 m- Q6 g
  189.   def hud_pos_update- O; G) O% R; ?8 ?
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    # D/ A0 \2 E; T5 b
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    4 a0 i6 Q0 ~4 T) e" |" d7 u  H
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X: ^, W7 [: Y9 X& O6 O6 u3 _8 N
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    4 g; `2 h. `2 D, ^2 u
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X/ J8 M# R6 n1 U5 {! ]0 s" _0 Z4 p
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  - h  D5 Z. {+ n" e8 i1 h' ~9 T
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    # m+ g3 ^  w: f. }- e9 X* ?8 @
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     ' N& p1 |* @7 ~, f/ u: X
  198.   end  & n0 |) n3 \; G* ~
  199.   #--------------------------------------------------------------------------/ X3 r( b3 l" c/ a( E+ u# @0 [
  200.   # * Hp Flow Update: ]3 Q; D+ @4 j' Q/ S9 ^. m" v2 f
  201.   #--------------------------------------------------------------------------( Q) a, h2 b' W5 w+ w8 t8 y. g
  202.   def hp_flow_update
    ' G; l+ V$ U4 r1 Q6 c& V* z, B
  203.       @hp_sprite.bitmap.clear2 o# o4 _7 Q; f5 M* t6 S
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    1 v) G; ]  H2 w, i1 m9 W
  205.           #HP Damage---------------------------------
    9 k* S; D- L/ ?: C6 y* a, v" s" p
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1001 O# a$ f- }: ]. e
  207.           valor = 0.5 if valor < 1         
    % N" _3 f# A) [
  208.           if @hp_width_old != @hp_width
    4 b, x! j5 t9 Q2 `
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    - ^: \% h( Y5 {* W
  210.           if @hp_width_old < @hp_width
    ' x: K( m% r+ N2 I7 Q& Q8 w8 X
  211.              @hp_width_old = @hp_width% ~& k' i& a# \+ E) h" E. V+ a
  212.           end      ! l- x+ }7 o% T
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height). X; m8 `4 _% _3 A$ J
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
      t: O  e' i( S1 F$ l7 _
  215.           end        
    ' Y# }; [$ K. a- d
  216.       #HP Real------------------------------------
    7 v0 k8 W6 `% Z( P! \
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)& u6 s. I5 q- V4 V
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          ' d! I9 V6 Q0 k' Z$ }6 h
  219.       @hp_flow += 2  
    . C; a0 w( c: E( V
  220.       if @hp_flow >= @hp_image.width - @hp_range
    7 u! Y4 @. H6 N  d# w
  221.          @hp_flow = 0  
    1 g! L) P# e- `/ Z7 ]6 h5 U
  222.       end" p) U; X5 E* j* J+ w
  223.   end    2 s; D: @" d% j' Z# u% q$ A
  224.   #--------------------------------------------------------------------------1 Y( @6 q8 h1 i- p/ P
  225.   # * Sp Flow Update( ]( }3 p2 V7 \9 y2 p# Z
  226.   #--------------------------------------------------------------------------
    ; e( K* }* W4 R+ x
  227.   def sp_flow_update) d6 _4 D( x4 G
  228.       @sp_sprite.bitmap.clear
    2 s# a) ^' |- Y$ C
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp 4 c7 N# B1 c1 T8 F+ K8 d
  230.           #SP Damage---------------------------------7 W; M1 F$ U5 r& U
  231.           if @sp_width_old != @sp_width7 p# |3 ]0 t6 B: e
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    8 V  w. s  I: m  t# ?! {
  233.           valor = 0.5 if valor < 1              
    % ?; j, ]% ]! [' T& ?
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  % Q, b7 t; J$ ~: O
  235.           if @sp_width_old < @sp_width
    % U" V9 y. n: m; R5 X5 o
  236.              @sp_width_old = @sp_width
    # [5 d% I8 ^: m. P% V/ \
  237.           end        _/ \- B: Z7 c
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height), A' p5 n' ~" _' o) k
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) 6 c! n5 l4 E/ H8 B% w
  240.           end& l8 S, ~1 r3 d# A" R& C
  241.       #SP Real------------------------------------4 a# t1 j; T2 \& d7 g
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)- b+ s1 j, c7 X% o) B) V
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)) l% K# T1 j) p# P# A
  244.       @sp_flow += 1  & ^4 j. O* |/ c$ c" A- ]
  245.       if @sp_flow >= @sp_image.width - @sp_range3 E0 h& E5 b- N& v! T
  246.          @sp_flow = 0  
    ; s3 J" C* R$ s* n- x# A+ d
  247.       end
    ) r* c1 H# X0 c2 r
  248.     end            , r$ F  C# ^8 q
  249.   end4 l( i5 x: p! H" }) A! `  `; V
  250. #===============================================================================! ^& f' q4 {8 a2 [0 Z9 |
  251. class Sprite_Character < RPG::Sprite
    ' u& j. K8 G' c7 d) l0 i. c
  252. #-------------------------------------------------------------------------------0 R4 @, m! ]5 t4 ]
  253.   alias :xas_emini_hud_init :initialize) m+ Y+ I/ P9 M% f& {
  254.   include MOG$ d7 t# K- ^. h. `9 s4 z% _
  255.   def initialize(viewport, character)' S8 a& H. S1 l1 N- [% K* O3 `
  256.     xas_emini_hud_init(viewport, character)
    $ r! x4 _: T- u, Q. I" Z2 H
  257.     @viewport = viewport: a  G' H3 f0 x! Z0 A3 e* w0 p
  258.     return if @character.battler.nil?
    $ j1 Z/ O) ^3 J- U
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)3 b" F9 v* G: n- q4 {: J# [1 w& u: P
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    7 d5 D% M: |* @: `) U# l
  261.     return if @character.battler.is_a?(Game_Actor)& M3 L7 L9 u  C1 u6 c8 x& ?  U, u, l
  262.     @bars = S_Hud.new(@character, @viewport), v' K( c7 b- n& R! ]5 i5 R% l, `* y
  263.   end
    ' D6 |/ c# C3 ?$ n5 o) U
  264. #-------------------------------------------------------------------------------
    0 S' |" }: O0 _1 e1 Q& R" w; [
  265.   alias :xas_emini_hud_up :update
    6 V3 o' n+ a1 T; Z; i3 l
  266.   def update
    9 |4 U1 D5 [9 v, K
  267.     xas_emini_hud_up% I1 b& i" j3 E
  268.     return if @bars.nil?, U- q$ ]6 A' q+ h
  269.     return if @bars.disposed?8 p7 y4 b# L2 e* f5 s
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs. ^& ~. B6 k3 i$ p5 Y
  271.     @bars.visible = (dis <= RANGE)
    4 M4 d/ e; z3 Z/ K6 C6 h
  272.     if @bars.visible6 X& d/ Q3 s3 P. G" r- ?4 u" J8 m
  273.       @bars.x = @character.screen_x# - @cw / 4
    . x! s* a: a" A* H6 q6 p
  274.       @bars.y = @character.screen_y# - @ch / 4
    ) Y6 V4 e* A5 ^: |; b6 G1 c2 J
  275.     end* I* q! j% S* H+ z) L* {; Z
  276.     @bars.update2 }2 i7 P: m) C$ c: |2 z7 n
  277.   end
    ! g$ O0 _* F$ I5 a7 {+ t  c
  278. #-------------------------------------------------------------------------------' T0 B' F. g+ K3 `; X
  279.   def dispose
    + a0 ~/ C6 A8 ~  j# `
  280.     super% u! `) V8 R3 J7 ?6 j6 Z- L# p
  281.     @bars.dispose if [email protected]?
    7 q  q: y% E# k, o
  282.   end
    2 d3 R& _/ y! e
  283. end
    ' i/ M; Q8 x' P0 @. E3 j

  284. . o5 H- |4 p- u
  285. $mog_rgss_s_hud = true
复制代码

$ n1 S& _' h7 l+ N& V8 P! a$ f" [
' Q7 }- l( l, G; y/ ?/ o$ n6 A5 D
: \8 `8 e2 n$ A4 ?. A. I8 k- ]上面所說出錯的203行內容為
. w! e/ Z- H. f9 F0 K@hp_sprite.bitmap.clear
5 f& A( H; n6 M
5 m0 ~, e5 R: E想知道怎麼解決
+ e! r$ ]5 h1 E6 |7 ^
6 F4 J2 q4 r/ B/ B) v該腳本支持3.82' U; L1 x( l8 y. q9 G3 |& j' u% j5 r
: n, B+ c8 B0 C3 _$ O6 @$ @4 D! o
下面是圖檔,要塞在Windowskin下5 Z/ {3 T. Y  g" e% a. C
8 s8 l( s# T- _1 {' l
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
  d0 h# P7 T2 w+ }' J" R8 d0 L# C& [% l6 w
0 d+ [/ y/ x2 S9 |8 V8 z

( @% a( X, N! a, F+ \7 j. i
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
7 u& K: R* o' t1 \" }& A结果尝试刷新了一个已经释放的图形
# I0 Q# z; j( j8 u/ B8 m
# q3 F) i: f1 |/ y9 f% p2 g7 a
' ~$ S2 v9 v: F: o/ ~6 V1 b+ w: ^+ X* G, S$ p; J
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?- Z9 y+ l# a3 o' N! ~. w( Z
复制代码
不要后面那个条件貌似就没问题了。
, S/ V, y- d5 n: J0 w- G3 d0 h! K0 w; j! _, Y3 q% \2 p; i% u1 g

1 S4 p: u& U! a: d& ~) ~( y4 D1 @   [1 f. a# S, H% v2 Q$ S
5 Q! r. k  `$ k& m

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 & ?( Z4 X2 O+ g' ^% P
貌似是释放的条件不合适9 q. c9 c; {: K# e8 T% T+ t6 E. }) D
结果尝试刷新了一个已经释放的图形
& F3 Y! h0 B* r# c2 }& \
把後面那個條件弄掉後,的確沒問題了
3 u# o9 Y* o" f6 k$ U目前從關頭打到關尾結束都沒再彈什麼錯誤
8 K7 u$ S* `$ |非常感謝
- p) U7 F; U4 i5 d) V
' P- I0 e8 W" I) @: O不過我是參照著別人腳本改的
3 d" _4 P; B7 d" [. `他寫的條件式也是那樣,但我用他的沒什麼錯誤/ c2 L8 Y/ f# F# s$ l4 e3 A
不知道是怎麼回事( R1 _$ B0 V  k2 n  w
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的1 x- ]1 T1 Z. M$ V! I
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
* D1 f3 N- D2 d  |7 c" A* q' i嘛..这个数组吧..我在以前试写队友的时候关注过一点
* b. s+ c# y* c1 k* r. Q不知道XAS内部对它做了什么手脚还是为啥,
7 d9 I& C1 U4 `) b9 \, x* f3 X总有那么一瞬间,没有被消灭的敌人事件也变成了nil
9 l" `' Q- Q2 _! h! Q5 W
2 p. V9 m7 F2 ~2 P' b$game_map.events.values[@enemy.id].nil?" \# A. O# i  h; {* R  s* `
因此自然而然的返回true并符合条件把图形释放掉了3 U2 ?' ?4 c3 `+ |7 y5 z4 h

# v+ y! w4 ]3 z2 v8 L9 P( \4 vLZ应该有注意到吧,
* D+ t/ c. a) r我测试的时候发现报错前几帧,图形会消失,
" A* r) f7 I' X: w1 l应该就是“误以为敌人被消灭”了。
+ v6 f& }7 t" P* j
  n7 ?. S' J8 z+ w受限于个人水平,至今无法找出$game_map.events的真相..$ Y2 `. g# m* v  z

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 . j/ e% f" N2 C2 J+ w7 N
$game_map.events9 l# d2 [) b5 `" }
嘛..这个数组吧..我在以前试写队友的时候关注过一点
# ]. u/ M9 i6 n, g( Q不知道XAS内部对它做了什么手脚还是 ...
* e' B, f% X5 m9 U; ^  c) G; ]
當初我把那個條件式看了三遍,都不覺得他有什麼錯; ?& C9 u. [( e1 b' p4 M: w5 J# w2 r
原來還有這麼深奧詭異的事XD- D) G: P* [/ b- [3 m

) B4 H; T. U* M" W錯誤發生前的確會有圖形沒顯示出來, f7 i* s- u6 e/ u; Y
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
8 z) q2 p% y; P+ m# b. E沒想到居然是詐屍了XD
  g  s  Y; ]) b3 k1 ^3 X. G# ]- c- F# h% x
不曉得3.91有沒有修正這問題...6 A/ L" E; `1 }" \8 G
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。* T; g9 k* {. s$ @2 E/ k* J# H

! `+ J' O4 ]  `, \的确* A" c$ u4 O9 i; x4 E" d
用惯3.82之后想去整3.91觉得压力甚大..
& p& K% D% \" _8 r% n7 {$ c) P# C干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
7 N5 k. K8 t: O" r+ P' e/ F* R5 g7 g& k0 T5 W1 v! g$ W, X6 |$ e; G* }8 a. U
然后加一个判断处理的。(我记得有一个disposed?)




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