Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條! L3 Z3 s/ j# o' d9 S+ {
會在每隻事件怪物的腳下顯示
& K& s7 p! U: y+ ?% ?1 d6 ?問題是不知道為什麼
$ h. {: S; r5 R6 x8 v) G) B  x有時打怪打一打會跳出
3 N1 T- W2 M/ D1 W* \( L---------------------------
* _; Y$ |4 l; |( v( zXAS' @0 Z. [/ D' v. B  G9 ]
---------------------------4 H* W  l+ P4 Q$ T, k
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。* l7 J6 A* Z2 a  x* V) X8 e

0 E) J5 j' z6 v5 s) f( pdisposed bitmap; Q7 d7 G, s! Z6 G# c
---------------------------6 M+ J* M  e8 m. ?+ |( ]) H: k6 r
確定   
* r7 x9 b* R! g* B2 u---------------------------6 J1 E2 t1 I8 c; Z6 k
; h8 S$ B$ k0 _0 V* B) r1 d9 }
這是腳本
- p" S& f% Z2 p& d; v0 F! o- ?; i$ f( z$ l& ~
  1. #===============================================================================& H2 y( }( G0 @: B. j% r0 U! z. F- E/ x
  2. # MOG - s Hud 1.0      ! D3 z5 g, H! m* Q2 y, d8 J* ]
  3. #===============================================================================
    ( D. J2 b% g% ^) T6 }
  4. # By Moghunter
    3 E! B- w6 y. h0 s9 h
  5. # http://www.atelier-rgss.com
    ) T  p2 A% k8 L& A1 O
  6. #===============================================================================, ^, i# x  h$ h0 d
  7. # Translated by Calvin624 # H8 D/ q) a( ]; g6 A- X9 t
  8. # http://www.xasabs.wordpress.com
    ( O3 o& `/ y" J+ I! a
  9. #===============================================================================
    ) K" |8 C% V  h# \/ S) w! L
  10. ###############################-DESCRIPTION-####################################
      }( c2 c3 A$ ?: T- E0 A* R, F
  11. #===============================================================================
      V7 D  E' f, k+ h  K9 \, A
  12. # Personal HUD – displays the HP and SP below the hero.2 n- l" Z6 I1 O& P  V. H( f* w
  13. #===============================================================================8 Y4 z" p* j% [2 p/ C
  14. #/ W1 T: k- ?% {3 F) E
  15. # Graphics required:
    - J) e- N. y. R9 R
  16. #
    , X7 A% Y5 n' J( |+ n
  17. # S_Border_HP_Meter.png
      W6 ~! q) R+ |# h2 I
  18. # S_Border_SP_Meter.png0 U# g  a$ D$ X) f
  19. # S_HP_Meter.png
    % ^6 I9 h) I6 ^) I; b0 g
  20. # S_SP_Meter.png" o$ B( I4 z  u8 z, g" p
  21. #
    $ `7 g+ w1 B4 j, j5 C
  22. # All images must be in the Windowskin folder.1 S2 `3 h$ Y% Y5 a; U
  23. #$ d$ s9 q# i  h' M# Z' Q; ?
  24. #===============================================================================
    , I5 R5 [8 L* o) G5 v: M7 H
  25. module MOG
    ) t( H2 b4 u% W3 N/ }" l
  26. VISIBLE_DEF = false  ) E0 m" l7 l% l
  27. # Show HP meter?
    " B3 x& M( L' d, e+ N
  28. HP_HUD = true
    : C! W! n# ?2 v: y/ ]5 k6 D
  29. # Position of the HP border
    ! r! y( H; U+ `1 L0 f
  30. S_BORDER_HP_METER_X = -2; ^: }% M  \& E, r& Q1 Q% }
  31. S_BORDER_HP_METER_Y = -2  
    & F# E' m5 V, c( r
  32. # Position of the HP meter
    . M& k2 N! t9 X# l* U, t, B+ i
  33. S_HP_METER_X = 0' N: @9 q0 s9 d/ Y! @/ V- o( H/ G" D
  34. S_HP_METER_Y = 0
    ! l5 |. Z3 b- N$ G9 n5 o, a7 D
  35. # Show SP meter?- b, I4 G" q* q5 x4 k! v9 O
  36. SP_HUD = true
    # K$ m8 [8 R: }0 c$ ^/ a7 Y; p
  37. # Position of the SP border
    / p( o1 h6 A: ?8 S7 ~  v
  38. S_BORDER_SP_METER_X = 03 U% L6 Y, x' z4 y& ~. v
  39. S_BORDER_SP_METER_Y = 10
    7 ~. F+ c1 L$ \$ c% n: k
  40. # Position of the SP meter
    1 Q! C! e/ I, N( ~) Q
  41. S_SP_METER_X = 0
    * V5 W- B" |+ ~
  42. S_SP_METER_Y = 10; C1 m. q5 W  a+ n8 o# R5 N8 r
  43. # Switch to disable the HUD; U6 }( O1 @+ K9 N4 h
  44. DISABLE_SHUD_SWITCH = 5
    8 \. Q' }/ L: }1 N* g* @, O
  45. RANGE = 20
    4 D; P2 w+ g) ~5 y4 x# x8 y
  46. end+ p" `4 q" l* F& X
  47. #===============================================================================
    6 `+ P, D( W6 x% |
  48. # S Hud
    $ m' {& ^) _/ m
  49. #===============================================================================5 U0 f5 O( d# s: c4 L* T
  50. class S_Hud < RPG::Sprite
    * X4 ?5 H$ [! j3 D
  51.   include MOG
    # z- n6 w3 j6 ^8 `8 i
  52.   #--------------------------------------------------------------------------
    , k5 u) r* M9 d6 c4 B) r" U
  53.   # * Initialize6 s! G: ?% p# d
  54.   #--------------------------------------------------------------------------. F) _1 `, ~) N
  55.   def initialize(enemy,viewport)
    / x8 `+ A1 V! Y/ t" }
  56.     super(viewport) 7 n+ g$ b% r- H, s+ B3 s
  57.     @enemy  = enemy
    & j" U& i$ e; v& `! }+ g% K
  58.     @battler = @enemy.battler
    ; q9 R# ^% b8 J0 C
  59.     @old_hp  = 0. H/ i/ Y1 Q# O. A
  60.     @old_sp  = 0
    . }+ p# x4 h- T  m
  61.     @old_vis = false
    & G$ K; i; l/ u+ ]9 F
  62.     self.bitmap = Bitmap.new(100, 100)
    , L- J' }9 e# t3 Q* @, Z
  63.     self.visible = (VISIBLE_DEF)#false& F3 K! b: p  ~% l) W7 i
  64.     self.z = 100: o5 [' b$ x. H( r2 A
  65.     #HP Border -------------------------------------------------------------------$ P- Q3 H/ {9 ]2 a1 M; Z) Y6 ]2 Y
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")- W% r1 g3 p. g
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    & r+ H4 \! y  R. v
  68.     @layout_sprite = Sprite.new' |$ a8 I0 N+ R4 Y3 i
  69.     @layout_sprite.bitmap = @layout_bitmap
    5 m' r# S4 z; v6 d
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    5 R0 K& V* a& C, o: M+ u4 D
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
      w& b  i- G  @% q) o
  72.     @layout_sprite.z = 50015 C4 }  O  D' r7 b3 M; O: S8 E- g+ D7 w
  73.     #HP Meter ---------------------------------------------------. S3 S- ^4 T. F. k$ y2 n
  74.     @hp_flow = 08 I2 n/ J$ ~) l$ T
  75.     @hp_damage_flow = 0
    # m7 v2 d% X% p' s, F- z( d
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    + C2 V/ o# M" G1 _: \1 s" n1 p
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    ) K8 g' T; p- Z7 l3 d; |! j
  78.     @hp_range = @hp_image.width / 3
    : w5 ~  Q  H: i. D$ A
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  6 t: F' k: j4 H% k/ W& ~. p1 v
  80.     @hp_width2 = @hp_range / 2
    ) |' J! i* Y! q  _6 ^4 M7 r' _; f# ~
  81.     @hp_height = @hp_image.height / 2- u) K7 ]/ i" n$ }+ L- R
  82.     @hp_width_old = @hp_width& E8 h) H$ t* v7 j' O
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    + {0 `7 U# ?. P! g
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    ' B8 v) o: F% {( `
  85.     @hp_sprite = Sprite.new
    2 L+ |) I( x0 Z
  86.     @hp_sprite.bitmap = @hp_bitmap7 @: F3 N0 F2 i, c0 j6 {; Q
  87.     @hp_sprite.z = 5002  K$ W9 H- n% ]. H
  88.     #SP Border -------------------------------------------------------------------
    : A" _. Y( N" d! \$ Q
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")4 M/ d4 {( ~* _3 ^
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)9 g8 ~$ t" Q# W  ]
  91.     @layout2_sprite = Sprite.new
    * ~$ k# L; Z" r1 |# N
  92.     @layout2_sprite.bitmap = @layout2_bitmap7 c& @+ T: f; m7 l5 U
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    0 A" x6 S9 M* H' c# s( @/ H2 J$ k
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      & w* {6 }0 c' B: l# |: j: ?& _9 Q# h
  95.     @layout2_sprite.z = 5001   
    2 Q. M0 v+ o6 _* d; k
  96.     #SP Meter ------------------------------------------------------
    / ^: q. w: O1 D4 @9 d
  97.     @sp_flow = 04 j0 C. K! Y" M" G/ F
  98.     @sp_damage_flow = 0' J5 `" S& ]4 j9 u
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")6 b: w0 z5 |9 F8 ~, M1 |% \
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ; \1 i7 f! D4 V7 {
  101.     @sp_range = @sp_image.width / 3! K& k. e; H+ [# [5 g* y
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  ; f0 r( R2 e$ d% T! T7 a( |
  103.     @sp_width2 = @sp_range / 2! ]' h6 G6 s3 m+ t3 E) C8 m" K9 ~6 g
  104.     @sp_height = @sp_image.height / 2, [! I% ]- M$ d, k
  105.     @sp_width_old = @sp_width2 R" h4 T/ [) ?' |0 G5 N* G
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)1 ~. V& q2 h4 f; z0 Q
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)8 }2 x" }- h' _; E5 E' K+ M
  108.     @sp_sprite = Sprite.new
    " t# h3 n+ z8 m. V& T1 Z' W& I2 t
  109.     @sp_sprite.bitmap = @sp_bitmap
    4 u2 x/ M/ q* I$ W# A  l9 h
  110.     @sp_sprite.z = 5002
    4 M& @- C6 u3 Q5 }+ a% Y
  111.     update* V% B$ b( {- x/ {; p
  112.   end5 y) r, `: S6 |/ J9 O
  113.   #--------------------------------------------------------------------------" z- L2 k2 ?6 e8 m; }: z3 A
  114.   # * Refresh
    * r) W, g2 D4 ]1 N
  115.   #--------------------------------------------------------------------------6 F: R/ V( h! k* r8 t% e
  116.   def refresh
    ! t6 M: g2 O9 r! ?: J
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    & C' N  @/ s4 F7 w9 j7 z
  118.     self.bitmap.clear
    9 E8 G$ W6 Z" R9 `' |1 n4 g
  119.     @old_vis = self.visible  \; S$ K8 F, b- Y1 N8 M9 @
  120.     @old_sp = @battler.sp
    % d& }! q7 H6 P4 ]9 J1 ]
  121.     @old_hp = @battler.hp7 R5 k8 B" V1 ?5 w
  122.     hp_flow_update" W6 Z. b; t; j# d& H
  123.     sp_flow_update
    1 Z  D' H* Q  J
  124.     hud_pos_update5 f7 Z% \. K4 n! c
  125.     visible_update/ w7 {- ~0 [5 ]4 Y& l/ k! C
  126.   end
    9 }# X* r( e) w7 y
  127.   #--------------------------------------------------------------------------
    - O: l5 ^: ]/ ]; ~9 b
  128.   # * Dispose( s* N: ~& ~5 n; ?, Q0 T  C
  129.   #--------------------------------------------------------------------------1 W2 L# i# O9 K( Z& b7 {4 M
  130.   def dispose6 G/ F, ]& L1 p9 n/ s
  131.     #HP Meter Dispose" c% H% I  m% A. S, `
  132.     @hp_sprite.bitmap.dispose
    ; A' \8 H- ^6 T; N. q- ~0 c& n
  133.     @hp_sprite.dispose
    # P  s7 C5 W) Z1 ]8 |% b
  134.     @hp_bitmap.dispose
    ; V9 s/ n) F: H. X8 ?1 k
  135.     #HP Border Dispose" @- o0 L9 @% v2 t% c% m
  136.     @layout_sprite.bitmap.dispose* `7 \; k( v2 ?' K/ A" C7 j5 V
  137.     @layout_sprite.dispose0 ^8 J) s& k9 p0 Y$ ]
  138.     @layout_bitmap.dispose
    & j+ r" v- m( A! p: x; G
  139.     #SP Meter Dispose
    $ }+ D5 K& K% |( g' C- E, W
  140.     @sp_sprite.bitmap.dispose
    . T* x3 H4 X! [- W
  141.     @sp_sprite.dispose
    6 d: z& O# P" H7 x/ O$ c$ L
  142.     @sp_bitmap.dispose
    ) l) I# N1 ?3 t3 m
  143.     #SP Border Dispose
    . X* o5 a  {1 d* n' c# `- O1 J
  144.     @layout2_sprite.bitmap.dispose
    7 r( w$ b9 F8 {1 g% R& g$ d8 a
  145.     @layout2_sprite.dispose- M) t  U, Q/ R/ S+ c$ j
  146.     @layout2_bitmap.dispose
    4 q! x! X; z  _: b8 y
  147.   end" D8 K) |# F$ }# i- ~  O9 r
  148.   #--------------------------------------------------------------------------6 y% |( s5 F8 J
  149.   # * Update
    9 V6 z5 C$ |3 v) o: ~- O
  150.   #--------------------------------------------------------------------------7 U. y. b7 w! t. ^4 W/ [, v
  151.   def update
    % E, I" x9 Z) ]) ]
  152.      @battler = @enemy.battler
    " T$ o$ k0 A! v8 i
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?# ]: B2 K: I# {$ i- c
  154.      if self.visible
    6 K1 _$ h9 ?+ e
  155.        refresh' ?+ f- L# ?  @* m
  156.      else# z  [# z  T9 s
  157.        self.bitmap.clear' k! _6 D1 U( m! @/ X1 P: ?
  158.      end' I/ z' D4 M7 m
  159.   end
    2 ]; b2 P6 K! l" O4 ]1 i( F$ i
  160.   #--------------------------------------------------------------------------
    2 z* p$ M) f$ a$ |1 U3 E
  161.   # * Visible Update
    1 b: m" s9 E2 {7 f" e. D+ ^! d
  162.   #--------------------------------------------------------------------------
    4 }+ C# W$ |9 h% m/ l
  163.   def visible_update5 W6 I$ r4 d% U% z3 x" y
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    7 f6 o2 S3 ^1 `
  165.        @hp_sprite.visible = false
    & i1 G; p0 ]$ |8 Z
  166.        @layout_sprite.visible = false% {3 s  F% z' H+ ^5 q
  167.        @sp_sprite.visible = false% B( C; V0 T) G4 ^3 c) [+ }4 s
  168.        @layout2_sprite.visible = false
    6 P% b/ k% J2 j! K5 f; i# n/ h8 l
  169.     else
    : i+ a" K7 T0 Z, v2 j2 O' x
  170.        if HP_HUD == true
    - N" W$ K3 c% g
  171.          @hp_sprite.visible = true7 l- H) j" n% a( ~8 [7 }
  172.          @layout_sprite.visible = true5 ^5 S* @2 C7 |+ \
  173.        else& V+ f! o1 L) c; l
  174.          @hp_sprite.visible = false* I& n2 T4 ~* D+ K' ]  F
  175.          @layout_sprite.visible = false4 \- y( _& m/ h4 I
  176.        end  3 ^" m1 l1 N6 M, W1 I
  177.        if SP_HUD == true
    % V% ?  T6 ~5 ]/ X; q
  178.          @sp_sprite.visible = true
    8 k0 V( g0 u0 }& ^1 A
  179.          @layout2_sprite.visible = true% V  o! b9 w! b+ J3 w3 x
  180.        else
    ) t( U9 k3 Z. ^/ V0 L
  181.          @sp_sprite.visible = false
    $ ?% P( J3 w3 W! O; z# j) z+ @6 f
  182.          @layout2_sprite.visible = false
    ) Q) J: [7 W8 n0 l+ p
  183.        end ' k0 ~" Y0 _. k' m# C4 P% Z
  184.      end  1 j1 B8 G! f2 Q8 \1 }/ j
  185.    end
    6 x) \- c2 d4 u& W7 A1 K
  186.   #--------------------------------------------------------------------------1 o) J* h3 M6 n( ]* M
  187.   # * Hud Pos Update
    0 j, X, I* g7 B( D1 C; s8 h( E9 A" b
  188.   #--------------------------------------------------------------------------4 U/ I5 M9 V! s: b7 Y
  189.   def hud_pos_update
    $ x2 M5 B% c' w; `& I
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X; y$ X; ]4 `. Y' Z- w% Z! y
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    1 ^& V$ @5 e2 ?/ f2 _- \" ?* H
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X) O" F6 W9 L$ b, k5 ^. h2 m7 I8 B
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    : }" o) h6 q; L, ~4 g) G, I
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    # A6 M- i9 m& [, ]4 |0 T
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  1 w/ V' z- X" q+ D
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X' U/ A! i1 Q2 k
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     : d% f5 r  q! H- ~! [: ~
  198.   end  ; O8 n  H# w8 i: M- @- ?
  199.   #--------------------------------------------------------------------------
    / b4 a, z! g" L5 i& L8 H" d
  200.   # * Hp Flow Update
    & V) x/ g; V0 O+ K
  201.   #--------------------------------------------------------------------------
    2 p, b3 ?% Q# V# {
  202.   def hp_flow_update
    & N0 e& V- K! a: v. N' M
  203.       @hp_sprite.bitmap.clear
    % t' p3 w9 d& ~3 v
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    * Y& a2 s5 p/ A; x2 ^! G
  205.           #HP Damage---------------------------------
    1 I; ?' j+ }; ^, e0 u, M
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    " p6 Z8 f/ c' ]% ?2 K: k. F
  207.           valor = 0.5 if valor < 1         
      m0 U- Y% e. |1 U. @" l
  208.           if @hp_width_old != @hp_width
    ) Q- ^2 v+ C" }1 @  Q+ A- y
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  ; \8 e1 w1 I; J' w0 l1 h
  210.           if @hp_width_old < @hp_width
    ( Y: [. U2 [0 Q. d7 G
  211.              @hp_width_old = @hp_width3 c2 C% I. \+ m
  212.           end      
    * i9 x/ ]2 ]. `3 @& w( G5 ~
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height); ~! B2 O) m5 o# ]
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    + g2 ^  ^- o2 d, y! N% ~2 v% C
  215.           end        
    $ U3 e; w: D9 X' e
  216.       #HP Real------------------------------------
    - ]- M7 B& @$ q3 A! f
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    - r# d8 @& E- `7 |& C3 ^2 H* e: G
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    $ M4 h1 f" P; K) J0 M2 l
  219.       @hp_flow += 2  
    8 g3 {( g- c. A6 i  J5 Y
  220.       if @hp_flow >= @hp_image.width - @hp_range
    ) _  P2 a- z! m+ Y2 s$ d
  221.          @hp_flow = 0  
    ; J1 r0 |, e, b& A
  222.       end( X4 y) V" m+ p8 L3 z6 U/ U* G
  223.   end   
    8 }. y" s2 p. e' S
  224.   #--------------------------------------------------------------------------# Y6 }/ @- `* C/ f6 Z
  225.   # * Sp Flow Update4 M) m+ k2 I5 C2 D6 B- P  c
  226.   #--------------------------------------------------------------------------1 I3 S+ X# b# {$ T! J: j6 H/ q' J5 K
  227.   def sp_flow_update8 H& i& }3 s% {  L
  228.       @sp_sprite.bitmap.clear+ _/ @& S1 `7 e, }/ s/ p- U
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    * {0 W; M% @; n4 A; r$ t4 L' r
  230.           #SP Damage---------------------------------% Y3 I% j# x' v- ~2 t
  231.           if @sp_width_old != @sp_width" l$ b& M! Y  G- \# E
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100* d, l2 E1 A- R! t7 T/ N
  233.           valor = 0.5 if valor < 1              , W4 E' m- f7 t) ]) w7 a
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  4 Z5 J6 |0 W/ w! o
  235.           if @sp_width_old < @sp_width
    ; e3 a6 U! E! I. S* k( t6 S
  236.              @sp_width_old = @sp_width2 `) l8 L! o3 H: Q
  237.           end      & {, M$ d7 q/ Q, r% t5 D; z
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)/ T& V/ F9 q; u' f# D" ]
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    " ?& ]* E3 ]5 d
  240.           end: s5 i8 \, J5 [. F! o; b0 q
  241.       #SP Real------------------------------------
    ' I4 x& }3 G" o$ Q) u7 z
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    ) B! _& O5 n9 `
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    # B* R  O4 ]) s0 c) R
  244.       @sp_flow += 1  
    & h+ T/ G; W; [7 u9 p3 G$ l
  245.       if @sp_flow >= @sp_image.width - @sp_range+ t2 ?  T8 E  o! R/ c. ^% R; c& S+ o
  246.          @sp_flow = 0  + b* x& f- D" x- t  @
  247.       end& l' e0 `$ H) h: A# r, h" ?$ @# K
  248.     end            6 h  j4 v3 ]  L' S( g- z! \
  249.   end9 s( }' {4 d% a
  250. #===============================================================================
      x  t8 f0 `( Y* T
  251. class Sprite_Character < RPG::Sprite
    + w* Y: C- k" i: C0 ~- F2 c
  252. #-------------------------------------------------------------------------------
    , V. w( @4 C- q1 T9 O" Y
  253.   alias :xas_emini_hud_init :initialize
    8 w$ r* U5 ~3 _8 Z. D; m- J& q
  254.   include MOG1 e$ }' B4 q- y, Q" _
  255.   def initialize(viewport, character)
    - x' T2 j, h& k# Y, }9 u4 h* V
  256.     xas_emini_hud_init(viewport, character)' I; ^( w4 p& e. N
  257.     @viewport = viewport
    1 f4 U* z; o4 v2 u" Z3 C3 O- h
  258.     return if @character.battler.nil?
    9 A$ d) \" ?' K' p
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)+ u$ n5 u9 y. T
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    ( [: S# k3 O5 g1 g& {4 w$ R
  261.     return if @character.battler.is_a?(Game_Actor)/ y$ B7 [1 a8 w# K# q$ c
  262.     @bars = S_Hud.new(@character, @viewport)
    3 {' w) {' y0 `/ j% Q1 v/ k4 N# o
  263.   end
    " N# ^5 i* K) ]) E; w
  264. #-------------------------------------------------------------------------------" b  g) e6 o' g6 I( }; l0 @) b
  265.   alias :xas_emini_hud_up :update7 D( A) M; W+ @* E/ y
  266.   def update
    * J0 i! w6 C# d6 m
  267.     xas_emini_hud_up
      z' E* K, x, o1 q- W& m
  268.     return if @bars.nil?: o. O, F+ L! V0 B  W9 q; K
  269.     return if @bars.disposed?
    6 l- \9 |7 w/ G4 K- n
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs" Z" @7 G% D4 u& J
  271.     @bars.visible = (dis <= RANGE)' P# |3 D; F% F
  272.     if @bars.visible$ S& \6 m7 v0 g' a$ o4 q
  273.       @bars.x = @character.screen_x# - @cw / 4) x: P% q9 Z" X" i+ L/ T# m
  274.       @bars.y = @character.screen_y# - @ch / 49 }; j1 G5 B9 h8 {; G7 d$ B$ F
  275.     end+ w( i- [- [' _, E* m! p2 K
  276.     @bars.update
    6 \" M8 }0 O. e9 s' S
  277.   end" m7 a! A2 c, S. w
  278. #-------------------------------------------------------------------------------
    % w- X( T. f: ^& P/ p9 [$ R6 Q
  279.   def dispose1 B2 r1 f! S$ L
  280.     super
    8 o/ `% P- V. s! y* @8 o3 ]- Z
  281.     @bars.dispose if [email protected]?. a5 u6 b% O! d2 W
  282.   end
    0 L% m7 ?  X$ t: P
  283. end
    $ b! a9 w7 P# a! ~; q6 z

  284. ; D, g  \$ Q1 K& M0 ?  P) a) T
  285. $mog_rgss_s_hud = true
复制代码

% W  Q7 `% @5 s+ }+ i# }
' M, C9 D5 f+ h9 L% U+ i& D5 V! K1 H4 _' k+ }) r
上面所說出錯的203行內容為; J' e* Z- p$ b) M" Y
@hp_sprite.bitmap.clear/ L' j' v5 G* a/ w8 u

0 _2 E0 n' P! E& n( B, W9 |1 O5 k想知道怎麼解決
+ Y( Z  W: e1 V" ?4 B- w
' U$ O) W: F, M) _9 I% E4 Q: a該腳本支持3.82: [* k2 |5 Q% m* C9 I8 \  ]

. f. K( d  }" c( Z5 ]( L" v# e下面是圖檔,要塞在Windowskin下
6 Q& Z% D9 v; s5 y, }5 i
& W$ f. ?9 |! A  F  z S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) $ Z  B& l' |/ D' Y- k
8 d$ U& h1 G, v
7 x) q1 w& l3 q3 _$ S6 N# ^/ n

2 x2 ], K' Q, B, ^/ b0 F2 p
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
# c- U  t& d" h+ _9 M3 c; N结果尝试刷新了一个已经释放的图形
% S9 Z3 L  f3 ]5 A3 n6 V+ P- L2 \5 I8 x" i
; z. b# g. B. G/ _3 e3 @

5 Z4 c/ h" n% b$ ^1 E3 }- }虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    ! a3 i) s5 j8 e- e4 ^
复制代码
不要后面那个条件貌似就没问题了。
: y- G0 h& a& H- @# U! }# e# s/ x8 O1 P+ s

, Z( p. g# v# q ; `  ?: E; P/ J1 Z7 x4 x
4 N  G! G1 x2 h& F7 T+ W0 Y4 f, O

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
; `( D6 [& K: M# \2 J! k' y貌似是释放的条件不合适
) d; Y. ^+ v- A  S9 u- i结果尝试刷新了一个已经释放的图形
  J. v+ `# R: u' I5 _
把後面那個條件弄掉後,的確沒問題了
$ ~- x% i& o2 T' N+ L目前從關頭打到關尾結束都沒再彈什麼錯誤
( P, l% }1 x& N7 i非常感謝
9 s. r; e2 \: g; w/ D' I& p
3 x( }# u8 ]) w! y. d不過我是參照著別人腳本改的0 t, k0 ]! M1 o# k3 K8 Y
他寫的條件式也是那樣,但我用他的沒什麼錯誤
! c1 n) f2 n7 R/ I1 `* J: Q- ?不知道是怎麼回事2 O% Z6 L  }- Q$ H! j
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的" k% j: K" d. r1 \+ o
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events' A, d# O8 h4 c3 _5 r
嘛..这个数组吧..我在以前试写队友的时候关注过一点
9 M# [/ J5 {( f6 U. c不知道XAS内部对它做了什么手脚还是为啥,
' w7 `' q6 J( p3 l总有那么一瞬间,没有被消灭的敌人事件也变成了nil, D+ ^  G, p, ~' j5 w
9 {9 J4 @- r5 g9 R! N( R. M* _1 X: d
$game_map.events.values[@enemy.id].nil?
  F8 u% A+ T2 s9 o因此自然而然的返回true并符合条件把图形释放掉了
) ]- y& V& Q8 s5 r1 X5 F
! K2 u2 d9 {  DLZ应该有注意到吧,2 a* J5 H5 P5 `; [% ^: c6 S4 a/ B
我测试的时候发现报错前几帧,图形会消失,; Y  Q9 f4 {$ O% l6 w; _0 k
应该就是“误以为敌人被消灭”了。
; P4 ^" s/ C7 T9 R0 L
9 N, o- ]0 g" Q受限于个人水平,至今无法找出$game_map.events的真相..
' ^2 F* {  O  f
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
  ?% Z8 g; j1 M$game_map.events
5 _+ [- o  t8 ^& y3 {) Y$ x嘛..这个数组吧..我在以前试写队友的时候关注过一点( g! a) B, G0 X" G( h
不知道XAS内部对它做了什么手脚还是 ...

+ N7 D# K) a0 |4 g: v當初我把那個條件式看了三遍,都不覺得他有什麼錯( I) c0 t$ x; `% ~, B
原來還有這麼深奧詭異的事XD
9 W7 b  I% N- [- i- A
9 ~: ^: ?! Q. k4 J錯誤發生前的確會有圖形沒顯示出來. g4 m% G1 ?9 V$ ~. I: ]
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
' W- F& ~/ S* A6 M: y0 l+ O  a. t沒想到居然是詐屍了XD$ y& ~5 p3 j8 D9 X4 L
- d0 d# c- w" J2 L0 B: T; n1 j
不曉得3.91有沒有修正這問題...  m$ @% Y% A0 u
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。- D" r1 B% ^$ b" P( ?

' V- Y: \) [- d7 S/ `的确
0 l9 `' r: w$ q2 d用惯3.82之后想去整3.91觉得压力甚大.." S( p$ t/ z" `* _
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
; v2 M& _; `& ]/ c" {5 O+ y2 A/ a% R7 j0 F" \, H2 s+ {
然后加一个判断处理的。(我记得有一个disposed?)




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