Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條# b" \$ m, F2 P8 m" I
會在每隻事件怪物的腳下顯示
) _5 B  k+ {* v' e9 b* d問題是不知道為什麼) k7 U- N$ Z+ w; q, S( ^7 v# {
有時打怪打一打會跳出
2 S! r) l5 e! b; K---------------------------' H" Z( G6 w; K: ~; x& y+ o8 _
XAS4 b% E! _2 l9 U/ j3 D
---------------------------
5 l' {3 W  a- v' z7 a* q- Y# L脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。- o, \( P: L% V  i# U

% {9 w- i+ `  hdisposed bitmap  u8 ]6 E" y8 r& x/ E: s
---------------------------8 R: u8 n' H" j: I
確定   
# v! Z; Y, V4 Q+ g- t---------------------------1 p- A4 H  ~! ]7 y
: \- p6 ~' [0 k3 f6 {. B
這是腳本: }- `$ D4 z  P9 k

* C! y: [0 X* o: A7 p
  1. #===============================================================================
    5 e& t" q7 Q2 |9 G6 e
  2. # MOG - s Hud 1.0      
    . J% q1 M1 @  P+ z' w
  3. #===============================================================================6 c1 p2 g" k8 |( V* \0 r+ P7 K
  4. # By Moghunter
    4 H" J/ S" R' |3 s* O
  5. # http://www.atelier-rgss.com' F& h9 s7 G% U' W" k# l( v
  6. #===============================================================================
    1 I% l, q  h; f# Q# X
  7. # Translated by Calvin624
    7 L- R4 G* Q' `( T" r1 I# ^" X
  8. # http://www.xasabs.wordpress.com( O, Y9 J7 u$ {& X3 M; s
  9. #===============================================================================# X, Z8 w/ H0 Q1 }0 u
  10. ###############################-DESCRIPTION-####################################
    - ~% F2 Q+ H( `* K7 H
  11. #===============================================================================
    * A  ]/ F4 H5 {
  12. # Personal HUD – displays the HP and SP below the hero.
    ! E  a0 L3 ^8 T" @
  13. #===============================================================================
    7 a( ?& w/ P3 k6 ?9 E, g! ^+ w% h
  14. #
    - I5 E1 x6 P  u! F$ v) o( m
  15. # Graphics required:4 F6 G( G8 d7 ?! W# ?# H
  16. #
    $ N  r7 p2 t4 \3 l
  17. # S_Border_HP_Meter.png
    ' Y7 C! D) k. y; I" U
  18. # S_Border_SP_Meter.png8 J" |' u7 F0 ]5 X; o0 }; y
  19. # S_HP_Meter.png. i4 T$ I7 _( E+ \  o. V- s( [* j
  20. # S_SP_Meter.png- ]3 Y8 x6 {" w7 Q. W
  21. #( j# g3 o& ?7 z6 H5 j# s! u
  22. # All images must be in the Windowskin folder.
    ) m; J2 d# P( i2 z+ \
  23. #1 J6 ]( z) Q2 q5 K8 H+ P
  24. #===============================================================================
    " \+ m8 D8 h0 a; g
  25. module MOG; {9 ~) o3 Q' I( u  X2 B
  26. VISIBLE_DEF = false  
    + r0 ?$ M5 O' }
  27. # Show HP meter?' L4 y- T' k) E0 z5 ?: T. J" y. z- s/ s
  28. HP_HUD = true
    . k2 n% w% S7 A8 q* H
  29. # Position of the HP border
    8 ]# f) }# L+ P7 y7 ~( s
  30. S_BORDER_HP_METER_X = -2
    + V% a- y, z5 N
  31. S_BORDER_HP_METER_Y = -2  
      I8 u) x/ U, B5 K$ e
  32. # Position of the HP meter  X/ ]" [+ c& K1 r# P) K
  33. S_HP_METER_X = 0
    * C' x7 K( [2 C) ^2 p& y2 Q  t
  34. S_HP_METER_Y = 03 Q9 I5 g2 X- Q; g0 _
  35. # Show SP meter?
    & W( z9 \2 @6 o1 l
  36. SP_HUD = true
    $ j7 P/ f+ x4 T' U) b
  37. # Position of the SP border
    / S  O, X: b% |1 D
  38. S_BORDER_SP_METER_X = 0. P9 w1 |1 i1 P
  39. S_BORDER_SP_METER_Y = 10   d6 o6 t2 a6 B- }5 O+ y( D9 y
  40. # Position of the SP meter5 o2 N1 [6 \. r. d5 p7 e
  41. S_SP_METER_X = 08 `9 d% P  g4 W0 \, M+ u, n
  42. S_SP_METER_Y = 104 t+ ?$ u& ^. t/ n8 K* v# N* U6 w
  43. # Switch to disable the HUD
    % f/ D/ F5 j& [
  44. DISABLE_SHUD_SWITCH = 5
    & U. d8 Z5 B0 Q0 C
  45. RANGE = 20
    ! c. ^' [; V! K9 i5 v7 I
  46. end
    0 @& v3 N- e5 w) P9 b
  47. #===============================================================================0 s; T) s; M; o
  48. # S Hud& i7 m9 m7 p/ K* d- o
  49. #===============================================================================7 w, |* Y; z% H+ p+ q( M8 L
  50. class S_Hud < RPG::Sprite
    ' x" {$ X. \6 T6 H
  51.   include MOG
    6 {- b4 d# p0 Z; B3 N( Z8 a
  52.   #--------------------------------------------------------------------------
    ; q, r. F) a0 y( S/ R, [  B, g0 d# Z. |! u
  53.   # * Initialize
    3 R" n( F! P& q
  54.   #--------------------------------------------------------------------------4 H7 J( m  f- p! f
  55.   def initialize(enemy,viewport)3 O9 ~' d, }  Z/ z+ N
  56.     super(viewport)
    6 N. ^  j/ d0 e8 Z
  57.     @enemy  = enemy! y# p9 n8 q* u4 r8 L( m, z
  58.     @battler = @enemy.battler
    6 S% ~* x: s0 d$ @% b
  59.     @old_hp  = 0
    7 w, B9 |# Q" Z; a
  60.     @old_sp  = 0
    . y4 ~; E! Z) Q6 |5 _
  61.     @old_vis = false/ T/ w3 y6 H, W+ O7 g
  62.     self.bitmap = Bitmap.new(100, 100)
    $ [. j) A: S1 e* k9 R( a
  63.     self.visible = (VISIBLE_DEF)#false6 n0 r2 q2 K7 D
  64.     self.z = 100
    2 P9 ]' L4 ]1 Q8 n2 G
  65.     #HP Border -------------------------------------------------------------------
    % X- I, ^1 x5 p1 R5 c: h
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")0 N( [+ T" c9 t. O: D
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)3 \( _2 U% ~( H" f
  68.     @layout_sprite = Sprite.new5 J( K+ u2 ?' M& S+ k" x
  69.     @layout_sprite.bitmap = @layout_bitmap  D  m# U, ]( t; q' K
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    9 O% M4 j! @6 J5 M4 U, x: p4 G6 x1 @
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    ! L; Z0 ]8 r6 |2 ^9 ^9 |) h# \) L
  72.     @layout_sprite.z = 5001
    8 a/ @9 n$ \  r, ~: D$ i2 ~! N/ `
  73.     #HP Meter ---------------------------------------------------( g' j. T* m' i
  74.     @hp_flow = 0
    " U& y& B1 c6 X) n/ n& g. V5 i
  75.     @hp_damage_flow = 0  j- F- g2 F' u, L2 v
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")6 ~& e& }; C8 l5 n3 K0 J5 N
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height). Z# h( A+ G- d
  78.     @hp_range = @hp_image.width / 3
    9 G/ ^4 l# x$ Q* e1 t
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    , f" U% y0 ~1 ^0 L. x. Q
  80.     @hp_width2 = @hp_range / 2
    8 {7 w+ b0 A! p6 r! U
  81.     @hp_height = @hp_image.height / 2( k" V; I9 a7 l' E& A! Z' d1 _
  82.     @hp_width_old = @hp_width% v) q0 _: t1 l: v' o( ~
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)6 D% j& H( j+ I* y$ ?( O1 ]
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    3 c1 @; Q7 g& F! C# ^
  85.     @hp_sprite = Sprite.new
    4 s4 m! g$ T" H0 N
  86.     @hp_sprite.bitmap = @hp_bitmap
    " R: X$ S' u. S0 \* g4 f
  87.     @hp_sprite.z = 50026 d$ a3 R/ M6 q# ?
  88.     #SP Border -------------------------------------------------------------------3 M9 e: ]5 A% i: r) {$ h+ J/ P* a
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")/ p; y: O1 f3 d2 Y* Y
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)# @2 k. |* ~9 Y" H6 K0 H( c7 Q, J+ F2 V* _
  91.     @layout2_sprite = Sprite.new
    ; q6 @- @0 |6 z+ X
  92.     @layout2_sprite.bitmap = @layout2_bitmap5 U; k/ O* W+ G3 s2 B- s
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)0 Y) f. }0 p- a8 D
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    , @  Z% ?2 n, T6 M$ E1 H
  95.     @layout2_sprite.z = 5001    3 c2 l4 C* Z0 G# |' p+ X) }: S- u
  96.     #SP Meter ------------------------------------------------------
    2 }) E+ u5 f) v% G& M, H( Y: W
  97.     @sp_flow = 0
    0 L7 b+ S5 K- `8 i* S$ [
  98.     @sp_damage_flow = 0
    & _! f, ^; M4 ?, `0 B$ B8 p0 x
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    . ]2 S0 w) J4 O% r+ L
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    $ n0 w# Y. Q& X  e1 w
  101.     @sp_range = @sp_image.width / 3
    1 ~$ ]# E% Y) J6 Q3 n; E2 E
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    1 Q, M6 k# Z8 D0 B: r4 F
  103.     @sp_width2 = @sp_range / 2' C% H! U( W% ~3 i8 @4 J( \
  104.     @sp_height = @sp_image.height / 2* _$ t' t3 p1 O' n) M- R
  105.     @sp_width_old = @sp_width& X# A+ K! b5 x
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)" Y$ e# m5 r: g4 S7 X& R
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)) U; f5 e7 {& B! F5 a
  108.     @sp_sprite = Sprite.new
    9 ~3 J/ D8 @0 v# V. d# m
  109.     @sp_sprite.bitmap = @sp_bitmap
    ; _$ W* a: m1 f. }0 f7 A' F
  110.     @sp_sprite.z = 5002
    " m8 S2 q5 S5 T0 p1 N
  111.     update7 z* c, \6 T" d+ `5 d5 g
  112.   end
    * k: \8 \) t, c" }: C
  113.   #--------------------------------------------------------------------------
    ! ]- }8 ]* {- y! `
  114.   # * Refresh0 s7 s2 @9 m5 B( E& ]- r% S6 e
  115.   #--------------------------------------------------------------------------
    2 X. m) [. Q) n" |) |
  116.   def refresh
    + [; u; b- u! a7 [0 c
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    / W. ~) P+ ^/ G- J5 C/ H3 Y
  118.     self.bitmap.clear( c" n! F- ]$ i8 d
  119.     @old_vis = self.visible
    . R) |+ F0 j: G5 t( }7 V
  120.     @old_sp = @battler.sp" I7 e' U2 k9 j. I' J/ Q$ ^: ]9 F
  121.     @old_hp = @battler.hp
    * x" V9 L7 D8 ?4 y0 g1 U4 J
  122.     hp_flow_update5 L3 f! t5 a2 R  y% D
  123.     sp_flow_update
      F/ \" G# Z: S5 K1 D
  124.     hud_pos_update) x/ \  _7 q# p$ C' F5 r9 `2 l0 Y: z
  125.     visible_update  |. {' C; q* R. H
  126.   end
    $ e  u- Q* m0 [
  127.   #--------------------------------------------------------------------------' W/ D6 M4 `: ~" V% X2 O6 z
  128.   # * Dispose" P5 N) y$ A' S
  129.   #--------------------------------------------------------------------------' H: f5 i$ G$ o/ u6 U
  130.   def dispose
    : g2 S5 D$ {$ {$ \* x2 A
  131.     #HP Meter Dispose
    2 T& }3 e0 h$ ]" V
  132.     @hp_sprite.bitmap.dispose" U) f% h0 e# P
  133.     @hp_sprite.dispose5 [9 F" X% Z+ J$ w8 n
  134.     @hp_bitmap.dispose$ j' k4 Y: e4 w2 C% }
  135.     #HP Border Dispose9 O7 C1 X+ z6 Q  g
  136.     @layout_sprite.bitmap.dispose* D& H3 e7 S0 a- W
  137.     @layout_sprite.dispose" G4 |5 w% k* }$ S7 h+ }% u5 x
  138.     @layout_bitmap.dispose
    5 j/ W# h8 G3 M) j, R7 x
  139.     #SP Meter Dispose
    0 x. g% x' }2 l5 h: ^6 h
  140.     @sp_sprite.bitmap.dispose9 l: K) [& l7 |$ y8 K
  141.     @sp_sprite.dispose
    # |+ T/ _9 d3 V% }6 l$ w0 b! T, e
  142.     @sp_bitmap.dispose
    0 d# G2 L& R$ Y/ l7 k; b& [5 N
  143.     #SP Border Dispose
    $ q1 s" I% M3 m& h8 X+ N/ L! w* R
  144.     @layout2_sprite.bitmap.dispose0 f% \; ~6 x, R
  145.     @layout2_sprite.dispose9 v6 x8 E! j# Y8 m
  146.     @layout2_bitmap.dispose' {2 l5 [, ~2 T- ?
  147.   end- N. a8 G- }% E1 k: `: o" N
  148.   #--------------------------------------------------------------------------8 _1 b% j( U' e! p
  149.   # * Update, w  C5 ^* f5 K& c5 O/ o1 C; a$ q
  150.   #--------------------------------------------------------------------------
      i+ T- p( v' G. ]9 T. y8 D8 R
  151.   def update
    # a+ o1 `5 J: v7 A3 z4 V
  152.      @battler = @enemy.battler 8 [3 x3 [3 Y% w4 v4 s$ }# B
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?5 D: H+ j( T1 Y2 Q% T
  154.      if self.visible
    + d9 z8 L5 e* ?7 z2 J5 p
  155.        refresh
    - H9 W4 }/ w" l0 E
  156.      else
    5 S% V: |4 ]1 H# L! C) |+ A( m
  157.        self.bitmap.clear, K9 T4 r8 T7 y( f5 e
  158.      end
    2 M- H) p8 d6 D; ?& e* \& b
  159.   end% L! R9 [' O% T0 J4 _( g
  160.   #--------------------------------------------------------------------------; ~3 g4 D* T' x
  161.   # * Visible Update
    7 Z. M; D4 t2 d& j3 T7 N
  162.   #--------------------------------------------------------------------------) T; F  [$ l) \) d$ O8 c
  163.   def visible_update' G' |: @4 I. T
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    , k  Q+ s. R/ U3 M1 h
  165.        @hp_sprite.visible = false0 d! A/ Z0 a* `" u# k
  166.        @layout_sprite.visible = false
    * M: F8 Z8 T& h3 b9 p8 s
  167.        @sp_sprite.visible = false
    ( M5 J1 F# @0 @+ T: e4 j! T  C# F
  168.        @layout2_sprite.visible = false
    8 T3 b5 U  A- @
  169.     else8 _, _3 }& n. O5 W  S
  170.        if HP_HUD == true
    / t: y9 E' }$ [( z0 j+ U0 y; d
  171.          @hp_sprite.visible = true" H" l. f+ p8 p3 I8 a  @
  172.          @layout_sprite.visible = true8 M9 o9 e  R. I
  173.        else
    % ^& o" D" j8 K( b7 _
  174.          @hp_sprite.visible = false: d+ I0 x: O/ z" j/ S2 c  Z' U
  175.          @layout_sprite.visible = false
    . G7 a- M* I% E0 j$ k! n) x
  176.        end  
      q, f' {4 F: E9 |
  177.        if SP_HUD == true
    3 m# m- t( [5 s9 B7 I0 R2 X
  178.          @sp_sprite.visible = true- @0 E6 n( Y; @' N5 ^; K; @2 R
  179.          @layout2_sprite.visible = true
    0 p8 F- R- w0 m6 ~7 m  e
  180.        else
    $ ]" Q) Z" D# I+ Y
  181.          @sp_sprite.visible = false
    * v2 v) j; W. Z* b" u0 p
  182.          @layout2_sprite.visible = false0 A# e, U) T: e2 c4 ?. _
  183.        end 4 f" l0 s. Y! q2 u! j
  184.      end  1 ^, S: u( U# B2 l
  185.    end
    8 A; \8 G3 p) j( q
  186.   #--------------------------------------------------------------------------' q' `: i- @6 O) y: t1 c% l
  187.   # * Hud Pos Update8 T+ G7 s/ L; k" h. G3 Q0 z
  188.   #--------------------------------------------------------------------------
    # V. R5 p1 c0 C3 s2 `" P9 I
  189.   def hud_pos_update1 S( ~) C8 C5 |( z: C& {/ n. Z- [
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    % P0 |% U! q) l8 f
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  : ]7 ?/ @& P& L6 v) N8 s" L# ^- H4 s% w
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X, f1 m3 W2 K9 A. D/ h
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    # b7 k* W( n) ^8 g6 j& a4 ]
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    & [$ }# D  U) s% Y& q! s1 h
  195.     @sp_sprite.y = self.y + S_SP_METER_Y    k8 x" k9 e# ^0 V& K3 u
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X+ V( @8 ^" N& e9 w/ y
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     : h* g7 Y* r( r/ t. t
  198.   end  " l$ V0 P; X/ f0 O- I! t$ h3 o
  199.   #--------------------------------------------------------------------------
    " P2 [( P1 V$ D& p
  200.   # * Hp Flow Update
    ! A( _: w4 [0 H7 q
  201.   #--------------------------------------------------------------------------
    7 w' Q8 W0 }+ a. F; T
  202.   def hp_flow_update5 l7 p. D. }: H; Y6 X$ q" `+ s
  203.       @hp_sprite.bitmap.clear
    * |: Q. R% C2 C* {& ?2 R0 l
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  . {! y/ X7 s1 v. X/ d
  205.           #HP Damage---------------------------------
    ( T" [0 `+ }5 @
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    7 ]5 e: t' R3 f
  207.           valor = 0.5 if valor < 1          & [0 O+ n4 g0 K" p, _! x
  208.           if @hp_width_old != @hp_width5 o/ v2 n* n- w  V' i6 J% h% P
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  + t2 J; A1 |) W( A; v
  210.           if @hp_width_old < @hp_width + t( b3 m* `) a8 S* _2 Z
  211.              @hp_width_old = @hp_width: D$ m+ n& }  d2 r& S9 v$ c
  212.           end      2 {9 h  K  b; u* ]: B8 Q
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)3 J" ?) t) n; H1 s/ i, H! W
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    , ^% U5 @- y; |. E9 R+ P/ O
  215.           end        , E& A2 c  }" v  w& {4 C0 b
  216.       #HP Real------------------------------------
    ( E2 ?2 f- |8 Q, L5 d
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    7 s& F+ S8 h" Q
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          3 v: W9 T% b+ }+ k+ p' s; B6 [. [* @
  219.       @hp_flow += 2  
    , J% b3 o: i/ T! u0 i0 \- A, D
  220.       if @hp_flow >= @hp_image.width - @hp_range
    7 `1 b; p& ~3 T% J8 e: [. z0 p0 R
  221.          @hp_flow = 0  
    $ P: N$ j7 W$ J& ?3 C7 |2 T
  222.       end* L$ d5 O& P$ V$ I
  223.   end   
    1 ~* R$ X0 j! T# Y- g: M
  224.   #--------------------------------------------------------------------------
    & A! R  D4 C+ X- [; V% Y
  225.   # * Sp Flow Update
    8 x  P) Y- F7 u1 u
  226.   #--------------------------------------------------------------------------
    , E% |: w1 L$ y! k
  227.   def sp_flow_update
    0 K& x) }1 [' S" N2 W4 f: @/ a
  228.       @sp_sprite.bitmap.clear
    9 H( _; J2 o! n4 f, e! N, ]$ S
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    , ~' ]+ M. x4 J& J  o
  230.           #SP Damage---------------------------------
    & Y& G1 ]8 v4 ?* O( P
  231.           if @sp_width_old != @sp_width
    * Y: d5 a8 x- D, [, K
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    ! v$ u5 F5 C7 C$ ?3 m
  233.           valor = 0.5 if valor < 1              
    & H  J  v$ _8 @7 P; K3 ~$ e: ]4 y
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  8 i( p  m3 ~( F
  235.           if @sp_width_old < @sp_width
    6 ^4 o# h5 }7 v6 G
  236.              @sp_width_old = @sp_width
    " F2 `% \0 X0 W. Z
  237.           end      
    + L& q* U# t7 [& |1 n/ K
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)# f! T7 \8 h5 Q
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    + Z0 _/ I9 _4 p; p: Q
  240.           end% I5 E3 l+ N7 q- R4 x
  241.       #SP Real------------------------------------! E2 ~5 [- B% Z* r7 R9 L: g9 l
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height), K8 j5 G6 i  H( q* _! j: c$ X! s2 Y" |
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    - \& L" C  _. g
  244.       @sp_flow += 1  7 ]: m: N! F! o: {' B
  245.       if @sp_flow >= @sp_image.width - @sp_range
    6 c- k$ ^- w9 P% B! Q8 K
  246.          @sp_flow = 0  
    2 t4 O  Z0 j0 D$ d' d
  247.       end, y* h9 T: p, X1 P* F
  248.     end            + a3 d: e+ v! b" L
  249.   end+ B1 e, {" p8 [. {9 j5 ?3 D: X
  250. #===============================================================================
    2 M' f1 i" S' ]- o4 X0 p
  251. class Sprite_Character < RPG::Sprite; Z# A  A8 j+ U7 Y6 }+ f
  252. #-------------------------------------------------------------------------------6 N# [; w% G% @; l8 @$ I
  253.   alias :xas_emini_hud_init :initialize" c$ o% [8 K" M% ]/ p, S$ A! U
  254.   include MOG
    + c/ e( u* g' b8 {6 `2 k
  255.   def initialize(viewport, character)
    # a, L, ^, \( \- I9 v8 F+ ^% N
  256.     xas_emini_hud_init(viewport, character)! t: j' P6 V$ G( y5 `
  257.     @viewport = viewport
    " F: P7 ]3 K! o
  258.     return if @character.battler.nil?3 @  Q+ Y7 s% f0 d! k1 V/ g
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id); z, {! W3 R. {/ q* j. a
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    - J2 j: h" F) h. G1 S& E
  261.     return if @character.battler.is_a?(Game_Actor)
    1 @! `5 {8 U9 H: I
  262.     @bars = S_Hud.new(@character, @viewport)$ E4 a9 B4 `9 a) Z
  263.   end' H5 ]- G/ H- T$ D: M. W8 b
  264. #-------------------------------------------------------------------------------
    # n  E- P1 H/ S% M$ x5 o
  265.   alias :xas_emini_hud_up :update
    . W; Y7 N: s$ }$ X/ j; v! ~
  266.   def update% H/ q$ W9 s9 ]- [) O/ y
  267.     xas_emini_hud_up5 H, i& L, u& E6 C# v; U
  268.     return if @bars.nil?. j( t1 W6 n  }9 v
  269.     return if @bars.disposed?  x" [& X3 U" y: @% H1 Z8 N; Q0 b
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    6 v" s5 C; j! g
  271.     @bars.visible = (dis <= RANGE)
    % [* `4 j8 R7 a8 c5 d
  272.     if @bars.visible0 }: c& ^# ^' \; A' x+ b% C
  273.       @bars.x = @character.screen_x# - @cw / 4
    0 y* A) d% i0 a% \' V' q
  274.       @bars.y = @character.screen_y# - @ch / 4/ s! n. f+ }9 F# v' S6 P( T: Z
  275.     end
    & a' @, g5 E6 s, l9 f' Z& ]/ j, A
  276.     @bars.update% r! U$ |- \% o
  277.   end1 r# j9 i# |% j4 q
  278. #-------------------------------------------------------------------------------
    7 Y" p* U4 ]0 y! D' K
  279.   def dispose
    4 v' Z, x3 x  O4 r
  280.     super' u+ B4 q2 G/ {: X! T1 @
  281.     @bars.dispose if [email protected]?9 ~/ ~% M' @# N
  282.   end
    / R! p3 n  \, X# _
  283. end4 z, I% q  P6 k4 t' K2 h
  284. ' C4 ?$ A2 [: K9 I2 `
  285. $mog_rgss_s_hud = true
复制代码

! m5 n# G  \/ r# o0 _
% |$ I9 b5 L. b3 b
1 w6 _" I% c' w4 k* B  R) V上面所說出錯的203行內容為
1 W2 U  r0 _" |@hp_sprite.bitmap.clear/ g0 F% t. N' \
7 }* D3 J2 K+ @, ?
想知道怎麼解決
0 ]+ n# z( s! V" g: X
" b& y+ }! w. T1 }: A, q9 Z該腳本支持3.829 k2 n9 h8 }0 s: g
0 q  F3 f! G+ q% v# ~
下面是圖檔,要塞在Windowskin下
5 O! T* {, A4 n6 v; s( z5 v$ s: M9 ?7 D/ @9 ]8 F7 Z) O
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) - b7 z3 P9 i) m9 e
) F. O, [; T7 d4 D- r  y
; F9 ?1 S) \8 C/ V) s( p
% Z, d( a: ]# ~1 z, |

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适+ I+ O8 O/ E6 G7 d
结果尝试刷新了一个已经释放的图形
$ l1 E  l2 F  l2 D7 i+ u9 Y/ V& i/ e* n5 c7 J+ L" O$ ?
; r& k2 H$ W/ \2 |  F* z
$ _/ ?$ t9 h' ?8 @- _
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    # o8 j0 B, I3 N1 t2 e4 z, q" c
复制代码
不要后面那个条件貌似就没问题了。
" C% p3 u  h8 s  p9 x# f; x  Y- N: r

4 K0 m( r6 n+ n
3 S. C- W! ^9 D) D$ m) ?# G6 R- l

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
5 L" u( E  s3 W  j; W貌似是释放的条件不合适
; B( K0 k8 n0 y  [: T结果尝试刷新了一个已经释放的图形

2 D5 \9 C! j$ x  D. E' Q把後面那個條件弄掉後,的確沒問題了- O# f) y; r  E* c1 K. p8 R0 }. o6 f
目前從關頭打到關尾結束都沒再彈什麼錯誤$ y; P) j& y6 q; @3 v9 _8 J- ^
非常感謝
. d8 J: `/ ]% R0 q/ S$ U7 q! e
) i/ k) {3 _# S9 Z8 Y9 h& L8 u不過我是參照著別人腳本改的
5 Y& {: ?) m+ j" h: a$ G他寫的條件式也是那樣,但我用他的沒什麼錯誤
5 r  D2 x7 a  q; T1 U. I不知道是怎麼回事+ N* n, V7 g( x
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
: I  d" Q8 C" M9 M我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
* T% l- s9 o3 m嘛..这个数组吧..我在以前试写队友的时候关注过一点3 |" h5 Q  T9 o/ M7 L0 y8 j
不知道XAS内部对它做了什么手脚还是为啥,
8 s5 a/ T( D2 V+ n总有那么一瞬间,没有被消灭的敌人事件也变成了nil
9 P& U# R. w! k. z$ A% l8 H+ f5 w& Y( a& o1 J0 {
$game_map.events.values[@enemy.id].nil?
3 D# m5 V. o2 ^5 M7 h因此自然而然的返回true并符合条件把图形释放掉了
. V, s" _: X0 A& O/ H3 e4 N5 x8 }' E& N" S: A1 q1 y1 r% q7 n
LZ应该有注意到吧,# j9 c; ?5 _# E& B# A& _0 b
我测试的时候发现报错前几帧,图形会消失,( f0 s* _4 ]0 Z- }; C5 K' F
应该就是“误以为敌人被消灭”了。
5 k; ?) R: r& g3 w6 ^& l8 F! D. |- u. X! ?% I% P% x5 w
受限于个人水平,至今无法找出$game_map.events的真相..& H  t& Y. N0 U: L$ j  ~, s

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 0 g3 E! A' `1 W. J1 c
$game_map.events
* z# _1 k9 W, V2 O嘛..这个数组吧..我在以前试写队友的时候关注过一点
/ T2 c- @* b* a' O% Y不知道XAS内部对它做了什么手脚还是 ...

" o5 x; m$ Y7 j6 V: d當初我把那個條件式看了三遍,都不覺得他有什麼錯/ K( e- H" P1 ?" E7 j' z
原來還有這麼深奧詭異的事XD  ^& H, a' m' v7 z2 B; @  Q
$ p& v% c* {7 h
錯誤發生前的確會有圖形沒顯示出來
& {' L! |6 K* c$ U  @  J5 Z不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
/ y: I' t9 l7 ^; A/ C' y5 R) [5 p沒想到居然是詐屍了XD
) Z  U* [: s/ _
5 A/ m- z5 R* {6 E  }" E不曉得3.91有沒有修正這問題...
! }5 |) o9 |8 c) e# U0 f9 x" _不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
6 \! ]/ ]; Q8 j( M/ ?* k- U+ {  M. _( r
的确
0 A2 a) ]0 E3 {1 u0 m用惯3.82之后想去整3.91觉得压力甚大..
9 j1 \: f3 u, }5 Q7 F: J+ Q3 v干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。/ f6 J# K1 V1 _  o2 @

1 Y5 R/ J) o4 s然后加一个判断处理的。(我记得有一个disposed?)




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