Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
5 ^- k; ?1 k, A; }2 s# A) x會在每隻事件怪物的腳下顯示
* U: Z7 W6 ^  _問題是不知道為什麼1 @1 A& ]6 y6 k$ n" N# o: @+ v
有時打怪打一打會跳出7 ?' N6 \  f. C/ N8 L
---------------------------( t6 Q/ r  X6 l( L9 t
XAS, K; G6 t' J4 Z. j- Y
---------------------------
* T/ i( p1 v5 d$ ~& C( \5 S脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
9 R2 z7 H! h. e# B5 C
( V; b) a3 k* T" z# R" t% ?disposed bitmap* ~# Q9 Q1 g" Y% T, Q
---------------------------
5 _5 M  `7 o  r; y5 M2 H確定   
) w: `9 {& j" E; t; i0 \  q; n---------------------------" B1 M$ s6 Z, ?! W
& G3 V; K( i0 z6 c# I
這是腳本
5 |& G5 z) |0 x' W) m4 J, Y+ h7 \6 J* ?# l& v5 w# _
  1. #===============================================================================3 N# T  ^4 Q& y; ?# [2 @
  2. # MOG - s Hud 1.0      
    4 y, u9 t' ^, u  S6 _
  3. #===============================================================================1 g5 v$ u$ p- a1 i* R
  4. # By Moghunter
    # r8 i# v; R, U
  5. # http://www.atelier-rgss.com: F2 h; Q2 p, E, ?
  6. #===============================================================================5 s: _5 N: M$ S& m" b! E
  7. # Translated by Calvin624 9 u! m2 L+ B2 B# H) M1 X4 [
  8. # http://www.xasabs.wordpress.com7 W. Q& h# b, ~/ }8 R  W
  9. #===============================================================================9 t$ H  ?2 G, p1 Q' Q% V
  10. ###############################-DESCRIPTION-####################################/ c4 n0 g1 l" s
  11. #===============================================================================
    ' @- b& {. g. F# N1 g5 \
  12. # Personal HUD – displays the HP and SP below the hero.9 `4 S/ z# h) Q
  13. #===============================================================================
    ' _9 I; h4 D1 S- r, I" D
  14. #' g  b5 \# q2 \( M- K
  15. # Graphics required:- T" [9 Z1 V" R1 x1 g6 R1 J6 T
  16. # + R. S6 t. h6 \# _  i; j
  17. # S_Border_HP_Meter.png7 p1 J" o( L/ L; |# o+ S
  18. # S_Border_SP_Meter.png% D8 i- G% U5 y, V) y# A3 Z1 J' p
  19. # S_HP_Meter.png' z& S& ], e/ Z+ ^' i$ |* C) a
  20. # S_SP_Meter.png  |3 x4 w9 `5 p, Y) w) K8 ~0 b
  21. #
    # f9 w; i* A% N3 \
  22. # All images must be in the Windowskin folder., b) p0 ?5 c! i, L, l
  23. ## D/ p8 R# a( ^5 D! f
  24. #===============================================================================! H+ @! M0 t/ {% l
  25. module MOG# T8 V/ @. b% \6 R- |
  26. VISIBLE_DEF = false  ; _; z7 R- d7 _% u  Q' [7 H' w
  27. # Show HP meter?
      {6 h5 x* ~$ l( r) R
  28. HP_HUD = true
    ' Y& h/ Y8 n3 V
  29. # Position of the HP border
    ; V( n1 @7 \6 S4 D
  30. S_BORDER_HP_METER_X = -2
    , W+ [8 o* F0 M- B4 R$ Z4 k
  31. S_BORDER_HP_METER_Y = -2  
      E, A+ [% A: Q4 W. ]
  32. # Position of the HP meter
    0 p0 X/ Y) @" q' |1 H7 H9 g
  33. S_HP_METER_X = 0" ?# P4 M! F* y& v) [
  34. S_HP_METER_Y = 0
    4 T8 v# k$ d% c
  35. # Show SP meter?9 A( ]! E2 V4 b, _
  36. SP_HUD = true
    * N' M# X: z* x9 J' K* U( R
  37. # Position of the SP border# H, Z% C  H: Z
  38. S_BORDER_SP_METER_X = 09 }! h9 f" F, o; V
  39. S_BORDER_SP_METER_Y = 10 8 i) H" Y- {1 U: M/ Z3 n- l
  40. # Position of the SP meter# Y% O  m, i" v0 u; Y- V
  41. S_SP_METER_X = 0
    5 F5 }& B: L- M3 Q; B: r
  42. S_SP_METER_Y = 10
    2 J6 [0 o! j3 N
  43. # Switch to disable the HUD
    * d2 g$ ]" X3 M; ^/ f8 L+ V! d5 K
  44. DISABLE_SHUD_SWITCH = 5, f8 q9 R& e+ Y' X0 Z+ V; E
  45. RANGE = 20' w$ j! p7 q3 q2 j+ M
  46. end, m/ k& g( {# d4 B
  47. #===============================================================================
    " i' }7 m) j) u: N9 r) A
  48. # S Hud
    ; u% O% T; R1 [( ]+ P
  49. #===============================================================================0 ^1 T+ A4 ~  P* g
  50. class S_Hud < RPG::Sprite
    # d% H: w5 P* x
  51.   include MOG
    4 }+ {( c' g' C. z5 b' }3 J
  52.   #--------------------------------------------------------------------------: S; [, v9 Q4 D7 r+ T
  53.   # * Initialize
    : d' S4 }6 C4 d2 |2 }
  54.   #--------------------------------------------------------------------------
    1 C1 u% h* q3 H5 ]; T* i
  55.   def initialize(enemy,viewport)
    $ D( U% v( ]1 U6 f* o
  56.     super(viewport)
    , J" W( k/ n8 t; T- _
  57.     @enemy  = enemy2 S" ^+ h% D5 R: c
  58.     @battler = @enemy.battler  B; v. y" m% B! h: C& `$ K! q; U
  59.     @old_hp  = 0( T4 i6 V( A# K5 ~
  60.     @old_sp  = 0
    1 V' H9 ], A/ g0 T9 [7 t/ A- e
  61.     @old_vis = false
    ) L5 e( x# u+ U" a) f: _
  62.     self.bitmap = Bitmap.new(100, 100)8 x) z. S; ]* k( ^; S
  63.     self.visible = (VISIBLE_DEF)#false- H4 M: J4 D$ P! e
  64.     self.z = 100
    3 n6 \1 U7 U& {/ O# L( P! x& U' u, {, y
  65.     #HP Border -------------------------------------------------------------------
    6 _3 O1 Y  Q9 C  a1 h
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    ) @1 u- C  ], H/ r0 V1 |
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height). f% Z% j4 A7 a2 o; ]. r+ _! a
  68.     @layout_sprite = Sprite.new
    " d3 ~/ w" ]- J: B5 o1 t
  69.     @layout_sprite.bitmap = @layout_bitmap
    4 a5 r$ ]. d0 A! U+ X, o
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    8 i2 b; }* `* B3 m
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      $ l# [7 \1 Y6 K! k
  72.     @layout_sprite.z = 5001
    . @! r0 @0 k9 o" M5 |& m
  73.     #HP Meter ---------------------------------------------------
    : i2 L2 Q# f" z6 J
  74.     @hp_flow = 0
    , Y6 g0 N. N2 c' e4 M
  75.     @hp_damage_flow = 0
      w. J9 w' P1 `
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")% z1 W9 ~/ S$ O% E/ A8 S% y( O
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)+ m) J7 h3 K' y% S6 N. ]7 p
  78.     @hp_range = @hp_image.width / 3
    5 C' e' S( `6 ?4 ?" K2 t( z
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  0 w/ U- h$ L1 R& Y
  80.     @hp_width2 = @hp_range / 22 c# Q- W/ c5 ?( _! d
  81.     @hp_height = @hp_image.height / 21 R' E' `1 h2 s- H9 X  k+ R
  82.     @hp_width_old = @hp_width
    4 S( z& B8 W8 m
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)- O6 b- \, s1 A2 X
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    ! p" Q: F" ^  j
  85.     @hp_sprite = Sprite.new! ?$ |2 K' t+ U/ a9 N3 S; r* @
  86.     @hp_sprite.bitmap = @hp_bitmap
    ! Y; |1 X" Q$ c0 U3 }) K
  87.     @hp_sprite.z = 5002
    . ~# h3 X6 ~- [
  88.     #SP Border -------------------------------------------------------------------0 ~! `, J' p; @6 N0 F
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter"), k' W. I. h$ ~
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    3 T0 v9 y: |$ V; i1 Q
  91.     @layout2_sprite = Sprite.new
    4 C$ @+ e6 C! C* j9 r2 e
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    , k( k. F1 y! d6 `+ Q2 [) }) Z
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)8 I9 ?2 v0 A$ Z$ z6 _
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      # b- E! a/ M9 a: k* i6 Q
  95.     @layout2_sprite.z = 5001    9 P3 U1 X* F. r) {
  96.     #SP Meter ------------------------------------------------------
    - u* E* K! H4 i) x
  97.     @sp_flow = 0' T: P, i) G' s7 T/ G, P
  98.     @sp_damage_flow = 0/ p' w* d8 _, q3 E# R9 w% Y
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    7 I- i: N  i  F9 d( W
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)- x- t+ B- v# S/ q( H
  101.     @sp_range = @sp_image.width / 3' E; m" e0 j( ~6 _5 e
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  6 w+ q  B) V8 V' h) N# l
  103.     @sp_width2 = @sp_range / 2( Y. X" ?, i$ ~! r4 [7 W( @9 v
  104.     @sp_height = @sp_image.height / 2& f; q% i- L' o7 N
  105.     @sp_width_old = @sp_width
    7 L  r* E2 x- m) M* Y- Z% x: }; S
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)0 `: n: G. X# @8 S' p; E
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)# r$ x! K8 J1 _( i  U$ ?
  108.     @sp_sprite = Sprite.new2 j" @; [. a/ P& P% B( f
  109.     @sp_sprite.bitmap = @sp_bitmap
    7 @- j5 K  }9 F7 a2 P, V1 ^9 f  r7 U
  110.     @sp_sprite.z = 5002
    4 Q. Q% [* x% x. I+ d% D; O, A
  111.     update* x& b' }% W3 u- S5 ?
  112.   end
    ' W8 V' Q( m8 |) [
  113.   #--------------------------------------------------------------------------
    1 z2 H2 i. L6 _+ D8 [3 D- x' j
  114.   # * Refresh
    0 I5 Q' ?( H+ k/ s
  115.   #--------------------------------------------------------------------------$ H6 d" c* M& V* J$ L6 i5 _
  116.   def refresh8 {2 @8 B; H, e. }3 S
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible' [& u3 ?. b9 V& e3 X
  118.     self.bitmap.clear
    8 |1 I6 a" K/ q- I6 p* C
  119.     @old_vis = self.visible
    9 J, n5 o; X2 z$ _, b3 {8 N1 p/ m
  120.     @old_sp = @battler.sp
    4 `- d0 c" ?8 E
  121.     @old_hp = @battler.hp
    - S4 v2 g' U. e3 B* V+ r
  122.     hp_flow_update
    ) S; a( v8 i6 H5 H6 ^
  123.     sp_flow_update& W$ o8 T" |; i
  124.     hud_pos_update
    2 H7 V9 o' s8 O0 ^' N
  125.     visible_update+ \6 I% j% h8 J+ o; `- o- h
  126.   end
    8 t! p1 q2 `: N) V% ]9 B! u: Z  d
  127.   #--------------------------------------------------------------------------
    ( A/ h5 ~* C) g# q; Q! [
  128.   # * Dispose: v4 @' q5 K0 ?! s
  129.   #--------------------------------------------------------------------------
    ! Z$ n( D3 q' l: R8 [5 B5 ]
  130.   def dispose
    ! ~5 q7 j' u" h9 O4 V, D& \2 L3 b
  131.     #HP Meter Dispose# O* O% Z7 F2 ?9 ~" b( e% [6 W' z
  132.     @hp_sprite.bitmap.dispose4 v1 k" N2 c+ O; t4 q* j: Z
  133.     @hp_sprite.dispose
    : C; S3 `: ]" g8 \3 Z$ c  ?( z( ?
  134.     @hp_bitmap.dispose
    0 R3 \& C& j! w0 X1 |
  135.     #HP Border Dispose9 N& e4 H$ Q& u+ h% A
  136.     @layout_sprite.bitmap.dispose
    5 j8 b* c; O; H8 \/ d
  137.     @layout_sprite.dispose
    ! q% v" P3 X3 v; I5 J
  138.     @layout_bitmap.dispose8 u) n! J; z7 E: _" z+ T, z9 {
  139.     #SP Meter Dispose' H3 E0 |* D1 K9 B9 ^" @
  140.     @sp_sprite.bitmap.dispose
    " L! P4 j8 V* r' B
  141.     @sp_sprite.dispose$ N( M' r9 F3 h3 v$ b$ y' j
  142.     @sp_bitmap.dispose
    7 r% l+ b' d7 d6 O
  143.     #SP Border Dispose
    & m: j' p/ q0 b1 E! r; J$ a% m1 L& G
  144.     @layout2_sprite.bitmap.dispose
    : f, e( U( p6 j1 p& m4 u2 M
  145.     @layout2_sprite.dispose. c1 }& A$ E) {+ H
  146.     @layout2_bitmap.dispose
    . P0 k1 S1 z. s% P. e
  147.   end
    2 G. F1 w! U) i/ g1 H
  148.   #--------------------------------------------------------------------------: V3 A' k+ K- e2 l
  149.   # * Update
    ( L1 W3 r" E3 i4 F' d) t6 a6 g" z
  150.   #--------------------------------------------------------------------------
    , `! p, y+ f) c
  151.   def update9 @. _- I) j+ O% z% K' ^6 i
  152.      @battler = @enemy.battler 8 k2 P/ S% f8 h
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    * j4 h2 F6 X4 @! P
  154.      if self.visible. O. Q0 F+ m( M2 w' y* o
  155.        refresh  u. X# ~2 x  x, F2 T
  156.      else, Q' _) L" X  ^% h  b1 V8 Q
  157.        self.bitmap.clear; r' F; P8 b  Z9 A
  158.      end
    ) ]- v6 e  c7 O8 {* n
  159.   end
    : g' ]; ?6 P* ~* c, W% f: a
  160.   #--------------------------------------------------------------------------6 v# t1 n( m2 y0 V) d/ Z0 r# Y
  161.   # * Visible Update
    8 o& L% b6 I$ A' G& u' q
  162.   #--------------------------------------------------------------------------/ p( X" J: T; W) h" `
  163.   def visible_update
    0 b. G' f: B, Z$ J9 f0 m
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true) c2 v8 q( T6 e$ s
  165.        @hp_sprite.visible = false
    + d( Q5 g- F$ N
  166.        @layout_sprite.visible = false
    # m7 y( U5 w6 V( C  \
  167.        @sp_sprite.visible = false
    ' ~! r" ~) L3 v; \& _, Y7 K
  168.        @layout2_sprite.visible = false
    ) _6 C3 K3 |1 x8 Y% r! V, Z. ?
  169.     else
    * r5 p' ]# `+ |' H5 v" P4 Z
  170.        if HP_HUD == true
    - m3 a( `# V! R( ?4 V) A
  171.          @hp_sprite.visible = true+ m3 g! e( _; D' o- f, h
  172.          @layout_sprite.visible = true$ p  M: n9 N' o" h8 f6 \
  173.        else
    ( z& K: G$ U  }$ G( V) F/ K% X' u
  174.          @hp_sprite.visible = false- z5 X, t: _: O% d& q) q
  175.          @layout_sprite.visible = false
    ' ?: j- J3 s" B0 z$ X
  176.        end  
    / w" Z6 [2 s, U1 n7 _- p8 C% Z
  177.        if SP_HUD == true  \: E% \) L: Z* k- `" s
  178.          @sp_sprite.visible = true! Q& N! P+ H$ M  k0 |
  179.          @layout2_sprite.visible = true3 D* F) ~$ u5 ]$ h9 U
  180.        else
    $ c( j; o/ S3 J5 l3 ~
  181.          @sp_sprite.visible = false
    $ f  y" ?5 g. j1 }
  182.          @layout2_sprite.visible = false  \; S) G  G, W2 h1 U1 F
  183.        end 4 E+ F9 t  ^! G0 h, F
  184.      end  
    3 v( O) {& i3 o2 t' p( F( Z3 s
  185.    end # S  q8 M7 M7 y
  186.   #--------------------------------------------------------------------------' n8 d/ c3 T+ G
  187.   # * Hud Pos Update
    ' t6 w9 o, L3 `6 _: I) Z) S
  188.   #--------------------------------------------------------------------------
      y" l& d, W5 w7 ?5 ]& Y
  189.   def hud_pos_update, h. [7 z, z0 l
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    * \: B# {. f$ j( L8 P# F4 o4 ^
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  * s( p' x$ Y5 z( E
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X( I. c$ b8 C$ A# O7 H( }
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    8 g5 }+ d- u* K( M# W# p7 B& t6 \
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X6 ?6 L+ L! u1 B. J* `
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    " n1 e! F$ u5 W& j8 v8 J
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X# T0 ~/ ]2 ]9 q  \- j2 j& a0 y
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    5 o# F# r0 M; v9 E+ N0 p9 R
  198.   end  - v& W7 t/ t% Y- Q. s8 @* r
  199.   #--------------------------------------------------------------------------
    " a: H2 G9 H$ g) T5 c
  200.   # * Hp Flow Update( \8 Z# |. Z+ q! ?
  201.   #--------------------------------------------------------------------------$ ]$ ~# g/ z  ~0 L# U4 W& L
  202.   def hp_flow_update# K- p; u# O$ J: H* x6 H
  203.       @hp_sprite.bitmap.clear8 x$ X3 U( y9 C6 A/ ~  n
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  , V3 |/ N7 Y5 [. M7 j- x
  205.           #HP Damage---------------------------------6 W# Z0 V5 v- `: B. x
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    ) I% ~0 K+ ?* x. K" F  V
  207.           valor = 0.5 if valor < 1         
    & H0 d0 h6 w3 o+ k2 E
  208.           if @hp_width_old != @hp_width
    5 L7 l7 P4 ^: Z6 L& e) B3 o) ^
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  * k5 q2 t: T4 c: i# i  z! H
  210.           if @hp_width_old < @hp_width
    8 U  [& B* ^$ B' c
  211.              @hp_width_old = @hp_width
    ( W8 N8 W6 c, I8 e' [
  212.           end      
    , z) h. f  h; q+ V6 p, x
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)1 J; G7 z, G4 h. H8 L
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    ! A, I/ O! {- O1 P  [& }
  215.           end        
    * p* b- h# F9 E* |9 X9 e
  216.       #HP Real------------------------------------
    + W2 N7 {" I  I' O
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    - ]" X: N' l$ X  x9 x
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          $ ~& S0 M, V6 l9 ~: k- j0 T: K
  219.       @hp_flow += 2  
    7 P0 ]7 Y' C- L9 N+ J1 `* i7 ?) z
  220.       if @hp_flow >= @hp_image.width - @hp_range, X: Y7 K) ~* V% `/ O
  221.          @hp_flow = 0  
    - E) b+ e9 A0 B3 ]
  222.       end
      d1 i' X, k, q7 W8 d" [
  223.   end   
    + T  t# v. W: j  C! q7 }
  224.   #--------------------------------------------------------------------------, D* N$ Y0 ]/ B+ w; P7 a
  225.   # * Sp Flow Update
    & {% L+ V) b* ^1 a( o
  226.   #--------------------------------------------------------------------------
    8 u" ~  Y( s" Y' U- E' K' A
  227.   def sp_flow_update0 {: A( m# {$ D
  228.       @sp_sprite.bitmap.clear
    1 ^5 O0 u& `, q3 s
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    7 o1 M1 S2 d8 `0 E* M$ H
  230.           #SP Damage---------------------------------5 f, i1 n, g) O) }) m
  231.           if @sp_width_old != @sp_width! ~3 w, O& ]3 n; A
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    7 r# r0 a" E+ b
  233.           valor = 0.5 if valor < 1              
    4 W, x( n7 c- D4 W& |/ d
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  - f+ _* E% S* D' `4 {2 h9 @9 v
  235.           if @sp_width_old < @sp_width
    ) e1 \: M! [9 t/ Y& v
  236.              @sp_width_old = @sp_width
    4 u4 e& Y8 R2 \% U
  237.           end      
    , @6 p7 S9 {( W4 I. u# w$ R) u1 d
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height): C+ X! i' s3 V, R3 ^" ]; L4 x/ v, V
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    $ k4 r6 J! J/ C, S  Z; |; i
  240.           end
    ; k: N3 n# y/ g
  241.       #SP Real------------------------------------
    4 m0 p2 a3 B4 y2 _! \6 T
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)( D/ |$ N  k/ v0 T) F2 k
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)2 }" \/ s- _: r
  244.       @sp_flow += 1  
    # p& r" \3 e8 I0 l
  245.       if @sp_flow >= @sp_image.width - @sp_range& {( |9 ]) k+ O  d
  246.          @sp_flow = 0  
    # S# v' |0 C7 n6 f1 M! k5 a
  247.       end
    1 Y) i" n7 [) T% L+ j- s
  248.     end            & M7 Y0 ^6 ~" y8 }
  249.   end
    9 ^! |3 G9 ^! W4 ]
  250. #===============================================================================, W- c5 t1 d! B& X4 _
  251. class Sprite_Character < RPG::Sprite. T, n" K% |- l/ L: E! c
  252. #-------------------------------------------------------------------------------
    . p0 X3 w) {2 o
  253.   alias :xas_emini_hud_init :initialize
    : F9 h: r5 v0 H7 a
  254.   include MOG0 Y. Z! J3 G* L% J
  255.   def initialize(viewport, character)2 F! [; r7 z$ {/ q( y: i
  256.     xas_emini_hud_init(viewport, character)5 I# R' _, l8 h; y+ E$ F
  257.     @viewport = viewport/ B; S' D% R1 m
  258.     return if @character.battler.nil?1 g9 x- g! N8 u5 ^
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    & y; \: G/ b5 [- R( A0 _
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    ' L8 n5 M, r* h: V
  261.     return if @character.battler.is_a?(Game_Actor)* n; W  x* }" p: a4 Q2 W+ _  @& w
  262.     @bars = S_Hud.new(@character, @viewport)
    4 d9 Z) E  u; m
  263.   end
    * B( I; A. _5 s8 ?$ x
  264. #-------------------------------------------------------------------------------
    & y5 ]. C# w  F3 @( m
  265.   alias :xas_emini_hud_up :update
    ) |7 j9 M' u( S! A; R
  266.   def update
    . F: h! s) N9 J2 M" X
  267.     xas_emini_hud_up
    / k$ [/ }1 q2 B& Q
  268.     return if @bars.nil?  m& h0 ]+ q+ ^9 |( @8 y
  269.     return if @bars.disposed?
    % ?: `( v0 h5 P9 A" d0 x, K/ {
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs& Q# F6 a! y3 F5 e
  271.     @bars.visible = (dis <= RANGE)
    1 I4 Z5 p  |( V. B: d' n
  272.     if @bars.visible, m, P1 M9 Y+ R9 y0 {2 P
  273.       @bars.x = @character.screen_x# - @cw / 47 p; n5 U( u+ S$ x) b! I6 @3 |
  274.       @bars.y = @character.screen_y# - @ch / 4
    / [) q7 k( V! h( z" ~4 L( ~) V
  275.     end
    # Q4 ^+ M, a4 E& o2 k. A
  276.     @bars.update; e% g/ [5 `; b6 T" b. g+ C5 k
  277.   end
    ' @8 Y' Y( }: v+ I
  278. #-------------------------------------------------------------------------------- R% h- W" |. y  z1 r; _
  279.   def dispose
    , o6 `4 B& L+ t
  280.     super
    , u7 ]' u8 O4 u9 O$ D4 H0 l% [
  281.     @bars.dispose if [email protected]?
    7 G  O8 s- l! _) T" j7 v( N
  282.   end; l  p) Z9 m+ B% T- l3 F
  283. end
    , i. I$ y) m4 Y8 ~  l5 E) _2 ^
  284. 4 B+ X! B# F- c: f( z8 j7 R/ g
  285. $mog_rgss_s_hud = true
复制代码
4 ~  ~: ^/ R- L+ q0 u& T# v

7 c. \6 H: v6 M9 l5 d8 o% L. Q1 e8 Q; B/ ?% n; m- d" y+ f
上面所說出錯的203行內容為
8 W# X/ T( X3 @: t$ U$ J1 Z@hp_sprite.bitmap.clear) q4 v9 L- K* ^* x" n8 p0 B. C# }
: T% N, e% Y; A- M: g# p
想知道怎麼解決, p0 B# r9 Z9 M
# u3 d2 _# |  M. u1 x6 h
該腳本支持3.82
4 T, O8 e3 G# L& D5 c8 J5 O+ O
# S; n7 M  Y% B! P" ^( B- Z下面是圖檔,要塞在Windowskin下
: [- S  l- m! C+ R* @$ z6 I+ q9 x. b. r( `9 [  d! h
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
( p1 ]' i3 d- u0 ^- Y9 D& |, @' O' q. S- @% m
* V1 a  g6 s4 t1 x( ?

/ J( I* o7 G5 M+ m0 P. t  }; C# L
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适2 q$ m7 z1 H" |# Z
结果尝试刷新了一个已经释放的图形' {6 Q' j0 S& I$ a

' }5 L% E* m  A7 x: @" }8 {/ l" t$ ~6 p+ I) l

% n% t+ j$ h! m虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    ; D' v3 `' f1 J+ s6 R5 W: O, Y3 E
复制代码
不要后面那个条件貌似就没问题了。' `. `' D: d/ h% R; Q

4 T/ }- x3 O" f% I, J/ S
& Y8 r8 h0 w. O6 x : l) E6 O; J5 V8 }$ ?) T$ b( s: q
3 g4 _4 N/ T3 T1 f: p

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
6 ^$ L  Q* d0 {! k  Q貌似是释放的条件不合适
% ]7 E# e+ U* d5 z结果尝试刷新了一个已经释放的图形
3 V( s$ Y' G# T: ~) ^9 e) O1 {
把後面那個條件弄掉後,的確沒問題了
4 G+ P( L: ~% x2 R目前從關頭打到關尾結束都沒再彈什麼錯誤4 @, d7 S$ n( l( `8 ~" S3 i; r
非常感謝
/ b( U: L" s* g: K
) ?) b5 I' y' _不過我是參照著別人腳本改的3 `' i; h$ [& c  t
他寫的條件式也是那樣,但我用他的沒什麼錯誤
0 g7 f2 R# J; D& x; h不知道是怎麼回事
# B1 t0 Z% K. X+ W, g3 h* @是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的4 `% N0 }! k. `  T1 Q4 f
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
- m6 f% W& j+ [, G- \9 u嘛..这个数组吧..我在以前试写队友的时候关注过一点
7 g5 [2 p0 y/ r4 p1 q5 {, ]不知道XAS内部对它做了什么手脚还是为啥,
, j9 f* ~- a( P& Q4 N总有那么一瞬间,没有被消灭的敌人事件也变成了nil
/ [+ h9 Y3 X0 c# `3 R
' J1 T$ P" ?6 C. u$game_map.events.values[@enemy.id].nil?
  x6 p5 [  v2 D; @; o因此自然而然的返回true并符合条件把图形释放掉了
: j  s! A2 o. ^# p# H
; Z# ?% [1 `  m* O. HLZ应该有注意到吧,
* D$ A) i% u$ h$ M& f我测试的时候发现报错前几帧,图形会消失,
6 R: T6 _' B" k应该就是“误以为敌人被消灭”了。
4 p0 V% u& C: z) d2 G( O' E4 t- _& c7 _  i. I, H  u
受限于个人水平,至今无法找出$game_map.events的真相..0 E) j7 x( X, y' u  ?

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 : o; e+ X5 g' N1 H
$game_map.events
& {2 N' g4 t4 s0 _2 V, }! |% A  ~嘛..这个数组吧..我在以前试写队友的时候关注过一点& v* ]1 X; w6 t4 a" L
不知道XAS内部对它做了什么手脚还是 ...

" J4 R* M: w* g4 u" X3 g當初我把那個條件式看了三遍,都不覺得他有什麼錯
1 I  a9 \  d9 J" z* g* U3 U% g原來還有這麼深奧詭異的事XD
  i7 W% F7 D( a0 q9 |; e4 {6 `1 r9 B5 x9 ]+ D% H7 F
錯誤發生前的確會有圖形沒顯示出來
' y5 |. f5 S2 S) N不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...; G, |" X% V. S- Z7 D
沒想到居然是詐屍了XD
  T: U! _' R- L5 u; x( r: Y7 G: S
. E0 Q  Q8 H  P% `$ ~不曉得3.91有沒有修正這問題...
% c' R4 ?+ A) z不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
3 k0 |9 F9 f, i- t& {. P8 |: N9 [
6 ]0 n1 J& R8 S% J的确
% T; P# l3 T/ X用惯3.82之后想去整3.91觉得压力甚大... s& ], U" b( N" U) W
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
3 p  M; A% [6 ]# ^# h& ~
+ B* S- @3 w; h' P; @" U3 u然后加一个判断处理的。(我记得有一个disposed?)




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