Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
4 S- |9 ?6 U, X會在每隻事件怪物的腳下顯示/ z+ U/ h* Z0 X+ W1 L5 u* ^% C
問題是不知道為什麼, m! a3 A; B5 z
有時打怪打一打會跳出
! s4 Y$ F# w! I1 R3 Y& I---------------------------
+ i7 C' R8 r& {* |( ^0 q8 o: e' AXAS
: s7 U) N+ m" ?5 j! S---------------------------8 T* b9 W$ j0 `8 o2 N/ |
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。8 ?' }: i1 M9 |2 L# `6 t4 t9 {
) Z2 \) Z- U" j1 G
disposed bitmap' B! M4 e( O4 ]8 ~9 e* U
---------------------------
/ o6 E# F% q: C1 W確定   * a( K' ^6 k" [. D
---------------------------
! X: U  n* r' }
! H. J. j/ j" u% p這是腳本
) W9 E8 D2 o0 ~. ?* d. N5 z  f3 B! X! j; C& C5 o# j
  1. #===============================================================================
    + \9 M" l3 y  _% z5 s8 e
  2. # MOG - s Hud 1.0      # N0 f) N3 h4 k  Q6 F
  3. #===============================================================================
    ! _, B& C' i6 \
  4. # By Moghunter   Y; R  z. c4 z$ o# z
  5. # http://www.atelier-rgss.com* n- G0 U4 A$ S, @: p1 L6 c
  6. #===============================================================================
    * W7 w! c% Q1 ]3 j. @
  7. # Translated by Calvin624 5 m# P2 x: }) P1 \3 K& [
  8. # http://www.xasabs.wordpress.com3 B- X0 p+ ~9 a+ g2 U! I9 O
  9. #===============================================================================& A5 _5 L6 `  H6 H% l. n
  10. ###############################-DESCRIPTION-####################################
    . c1 l% Y. P# `
  11. #===============================================================================
    9 g$ V- h9 Y1 S) M
  12. # Personal HUD – displays the HP and SP below the hero.! T& i- Q3 w% L
  13. #===============================================================================
    % M: x9 S* G5 G& E4 s* y, d
  14. #2 N7 z2 X1 X; |6 `0 a) K
  15. # Graphics required:3 x9 g: @7 W( B3 {, y2 a
  16. # 2 {( A5 O! u5 P" n/ U
  17. # S_Border_HP_Meter.png4 H  I- E' J+ a2 k) {3 m9 D# z
  18. # S_Border_SP_Meter.png
    9 }# O' w6 J$ P$ L) k2 S# L
  19. # S_HP_Meter.png
    ( H3 V7 q% B2 c8 d1 k% w
  20. # S_SP_Meter.png
    2 S1 G- l3 L2 E% t0 I
  21. #+ i; t# o: N$ j4 a% f7 `
  22. # All images must be in the Windowskin folder.3 ?" i2 ?( `3 g: [: [! ?
  23. #
    2 M7 {$ M- F, A) V$ G
  24. #===============================================================================
    ; \% V/ g( t" v1 v
  25. module MOG
    ; E/ n! X3 O" ]9 R
  26. VISIBLE_DEF = false  
    " D( n) b# v0 o
  27. # Show HP meter?! V$ g  T8 V1 @3 O4 P# w
  28. HP_HUD = true
    7 V5 e% [& E7 _/ E/ Y; M
  29. # Position of the HP border
    ! k- Z9 N$ f2 c4 o
  30. S_BORDER_HP_METER_X = -2
    7 P( X$ f* q. v) v0 T$ a- v' d
  31. S_BORDER_HP_METER_Y = -2  & j5 _1 f! t, i
  32. # Position of the HP meter
    : a; X! [- _) {- @% N$ a
  33. S_HP_METER_X = 0/ D$ D. W* m# e8 L% ]8 g" k
  34. S_HP_METER_Y = 06 j6 p( o; ^/ g
  35. # Show SP meter?
    + u4 c- X" l: n" N$ M5 _, x
  36. SP_HUD = true6 h) \! p3 y0 {9 q
  37. # Position of the SP border/ b. m0 T0 u- j7 m
  38. S_BORDER_SP_METER_X = 04 {. X% \9 U& ~6 u" L
  39. S_BORDER_SP_METER_Y = 10 7 C" v; @- N3 f: L! S
  40. # Position of the SP meter  w# S* ~( n/ l' m, p! _
  41. S_SP_METER_X = 0
    ( ]' E" L5 F# ^: w. K" A' S; h" o
  42. S_SP_METER_Y = 10
    : q+ x9 @4 `- z& O  N3 w
  43. # Switch to disable the HUD
    2 r. w0 J" `9 U  A$ F
  44. DISABLE_SHUD_SWITCH = 5
    % h9 e0 l1 J& a9 ~: Z$ T# V" g! g
  45. RANGE = 20
    $ N$ G& C: b$ j( Z  s
  46. end- [7 z( F0 S7 m5 e' }
  47. #===============================================================================. P5 {  m6 g3 {
  48. # S Hud  }/ ~6 V6 e0 N* e# m( `/ x
  49. #===============================================================================$ p) h& L5 T* D; U( {/ A3 z
  50. class S_Hud < RPG::Sprite
    & Z; ~% d4 {$ `* c" _
  51.   include MOG+ A3 W$ E! w+ W- \& Q0 Y
  52.   #--------------------------------------------------------------------------
    0 X/ B. \) T* T6 |8 R
  53.   # * Initialize
    $ f: K, U# I) }% z. q
  54.   #--------------------------------------------------------------------------4 O' n& u3 V3 ^" m$ x4 E6 E4 U
  55.   def initialize(enemy,viewport)+ a5 w8 g, i  r% F: P2 h
  56.     super(viewport) & k4 z- A% s6 V4 m- p
  57.     @enemy  = enemy
    ( E" D- {9 A# i
  58.     @battler = @enemy.battler, B" w- }" \, C5 T# y
  59.     @old_hp  = 0# G2 U1 Y) ?- @* a
  60.     @old_sp  = 06 Q5 x9 p* F9 g' K+ {
  61.     @old_vis = false
    6 _  S3 L; ^! i' m. g) C/ o
  62.     self.bitmap = Bitmap.new(100, 100)
    ! |5 ?( ^1 A7 x9 s& a2 Y9 i
  63.     self.visible = (VISIBLE_DEF)#false
    - M/ u/ g' ~7 [2 W2 H8 }4 w
  64.     self.z = 1008 J2 e" ^1 P/ t$ n& |
  65.     #HP Border -------------------------------------------------------------------+ ^' }1 e  u5 f5 J* N/ G% E$ T4 u
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")5 T/ U- t/ j2 @( D( d. A7 \
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)& ]: v4 s5 h! E  }
  68.     @layout_sprite = Sprite.new
    ! t8 Z! K# R6 T: J/ F
  69.     @layout_sprite.bitmap = @layout_bitmap
    : R! ]5 a. k+ P! l
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)5 d) _  S7 Q$ X: {5 k0 P$ u
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    " v  B1 \- c+ i+ F
  72.     @layout_sprite.z = 5001- I. r8 a9 A$ N" {
  73.     #HP Meter ---------------------------------------------------) o% e, Q4 [2 E
  74.     @hp_flow = 0
    4 z5 Q6 _) o* P$ g* K1 ?. g- t
  75.     @hp_damage_flow = 0! n7 u7 w/ Q% ^. o: M& E% j; o' ^
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    & f; ?6 F8 ?4 m" _: s! w5 e) g+ R
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    4 d( [0 H$ u, {, w9 L
  78.     @hp_range = @hp_image.width / 30 a% v3 g- I9 G) ^" Q8 T7 P
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  ! }& F& ]8 m# J. E4 ^- J% |
  80.     @hp_width2 = @hp_range / 2
    " a5 D8 ~, w- V& ]$ I: y* ^
  81.     @hp_height = @hp_image.height / 2
    + @; V7 R  U5 ?* X
  82.     @hp_width_old = @hp_width
    / K4 M& o+ M5 B8 K* q- a
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    & J7 q+ a6 N; g3 s: h3 v
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) 7 ]* m! @$ q% C2 s1 G. p1 Q
  85.     @hp_sprite = Sprite.new; }, s5 l" V0 T: Q# E- k
  86.     @hp_sprite.bitmap = @hp_bitmap% t+ |, O, s4 s
  87.     @hp_sprite.z = 5002
    ( ]* @; j6 M5 ~7 F! H& |
  88.     #SP Border -------------------------------------------------------------------( m5 N0 T% K3 K2 V, m  u
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")4 [* B5 l9 _$ f( P( i1 y9 S
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)2 R0 L$ f: l( i! t
  91.     @layout2_sprite = Sprite.new; Z0 X% o7 D) _* S6 ?# u9 j3 y
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    & l/ N1 V! e# X1 p2 E: j
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    , C: u/ t$ H6 G$ ?/ ^5 \
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)        p4 ]3 |" Q% p9 u: o
  95.     @layout2_sprite.z = 5001   
    0 c! c' e% E6 m: y
  96.     #SP Meter ------------------------------------------------------
    / z! C( g  o  F( r
  97.     @sp_flow = 01 n* y+ O1 r! D) \) D6 m, Y
  98.     @sp_damage_flow = 0
    % E" ^0 c$ f& m3 l/ U
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    0 y3 t" x  V8 y9 ^! U' Y3 q
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)6 t; n9 e5 P' z- }+ Y1 c8 z. u3 B
  101.     @sp_range = @sp_image.width / 31 K) N- {& A6 y& i* t
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    : _- C4 l. O; Q5 b4 V- C4 [
  103.     @sp_width2 = @sp_range / 20 @4 Y& n( [% j1 p0 g
  104.     @sp_height = @sp_image.height / 22 \# c6 w. U  f/ i: y. @+ w3 Q( h
  105.     @sp_width_old = @sp_width5 |+ \& ~: I5 ]* E  t3 t9 ~: a
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)" V3 m7 i* L1 Y6 ~4 L# z
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    & `0 q! ^" L4 Q
  108.     @sp_sprite = Sprite.new
    / Q, V+ }, l; W+ W
  109.     @sp_sprite.bitmap = @sp_bitmap1 M2 q) T: |0 `% h, T9 J9 G
  110.     @sp_sprite.z = 5002
    7 |) J/ `1 X3 ^' u  O
  111.     update2 J! L& {. M. X; y' @7 K/ l
  112.   end
    # K' ~0 T; Y+ Q% \9 z# @
  113.   #--------------------------------------------------------------------------7 x* S/ w6 M2 a$ @+ e0 p" i
  114.   # * Refresh
    ( I9 Z% Z* o# o: ~
  115.   #--------------------------------------------------------------------------! t% I+ `2 V- V* }) M
  116.   def refresh
    : g& @0 Y" L( B$ K9 l. e( T9 h
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    4 H9 _5 ]# Q0 C6 \/ }/ m# M/ w$ u
  118.     self.bitmap.clear' F: k8 V( [# T
  119.     @old_vis = self.visible7 G9 W% \9 N+ `+ z7 i
  120.     @old_sp = @battler.sp
    1 Y) J) ^: x$ v! A6 r
  121.     @old_hp = @battler.hp' Y% N2 U, t+ d1 C, }6 ~
  122.     hp_flow_update
    $ @  y- H1 t+ F
  123.     sp_flow_update
    " M8 ~: `9 X2 y2 |8 T; ?6 R% m
  124.     hud_pos_update
    , A  s. C4 W7 R9 q9 c$ y
  125.     visible_update/ J9 n7 K( h  V( `0 J- y
  126.   end5 o+ O( b5 J" t/ F7 u# O
  127.   #--------------------------------------------------------------------------
    % t. |6 l0 r) t2 ~, d* |! s" Y
  128.   # * Dispose
    6 V- `: ]  I# ]! ~3 e
  129.   #--------------------------------------------------------------------------0 o* |5 j, z- {2 K0 s/ O( M
  130.   def dispose
    + [5 `3 Q+ t' h1 Q
  131.     #HP Meter Dispose
    9 V1 D3 ^* L8 u1 ]
  132.     @hp_sprite.bitmap.dispose
    1 G6 d! n; i, x
  133.     @hp_sprite.dispose9 i; m* m$ N; }, s/ ^1 y* J
  134.     @hp_bitmap.dispose: o* h7 i1 ~, L
  135.     #HP Border Dispose. b+ }! T5 p5 y: R+ l1 s7 W! m' ~
  136.     @layout_sprite.bitmap.dispose2 K# w+ f" a. W3 h5 m3 O2 r
  137.     @layout_sprite.dispose3 M* y8 B: a6 k8 ^: j; y& c' `
  138.     @layout_bitmap.dispose
    ; t  l5 v5 w$ _4 y  a3 d1 p  f
  139.     #SP Meter Dispose7 ~+ _# A; w) h( |. H
  140.     @sp_sprite.bitmap.dispose
    3 S9 ?0 C/ F% _. F& z+ W
  141.     @sp_sprite.dispose; p, n& K% q9 v9 C
  142.     @sp_bitmap.dispose7 s/ x4 p* E" j. h8 k1 u+ @0 }% E6 @
  143.     #SP Border Dispose- l5 y2 Y" s5 P! v9 \0 `5 |
  144.     @layout2_sprite.bitmap.dispose
    1 ?+ `7 u+ P3 Y' G
  145.     @layout2_sprite.dispose
    9 c0 |6 T( }% V1 _7 d
  146.     @layout2_bitmap.dispose2 y- M% v8 j8 G, c
  147.   end
      n! J* X# s0 t' O' J' n" c1 z( b
  148.   #--------------------------------------------------------------------------
      s8 k' E/ z% A
  149.   # * Update
    # l( b  ]5 U% O0 H6 i
  150.   #--------------------------------------------------------------------------  ~' J* \/ y8 l9 x& o9 v% O" j
  151.   def update
    ' U2 [' N1 m$ s. u) ^3 K
  152.      @battler = @enemy.battler
    7 B+ b) S- m/ C( V4 }7 p
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?8 e' N: F3 X+ y% p" v. N
  154.      if self.visible
    7 M8 b5 ?. y6 ]% R
  155.        refresh& ]0 A- i  j5 R) f  `
  156.      else
    & l6 |( H4 F% H5 C4 w* n
  157.        self.bitmap.clear( x/ v/ _  x+ K! @  _) ?
  158.      end
    9 i% Y6 `; J" S- r$ F
  159.   end
    % {/ j* [4 n3 Z
  160.   #--------------------------------------------------------------------------" A; A! U6 K' z; m6 T
  161.   # * Visible Update- k; v5 ]) x  w( U/ k
  162.   #--------------------------------------------------------------------------
    9 \+ I# C! K* N* p; k6 ^
  163.   def visible_update. ]4 R0 O6 Y/ E8 g. t: b: \9 C+ g
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    , y, J1 O% n& P' s
  165.        @hp_sprite.visible = false3 r  o, `: p6 O5 o+ g! x
  166.        @layout_sprite.visible = false, n# `  U# `/ `/ a
  167.        @sp_sprite.visible = false
    , u9 i8 a5 W( \$ c1 B
  168.        @layout2_sprite.visible = false
    3 {2 L7 M. I- f) [2 p0 i
  169.     else( ~4 P' k- p7 M; L; q
  170.        if HP_HUD == true. x3 I+ E" h5 Y) Q
  171.          @hp_sprite.visible = true6 J6 F" l4 W% i5 P
  172.          @layout_sprite.visible = true( C% u( C! N+ b- e% `5 n
  173.        else
    3 ?+ O8 [* @' Q5 j1 }7 w
  174.          @hp_sprite.visible = false9 T: D" i4 x' B' \; U+ q, O7 b
  175.          @layout_sprite.visible = false
    $ R$ W" N- R, ?! W/ t! u- O6 W
  176.        end  
    $ w$ S( a' r& J
  177.        if SP_HUD == true
    7 U& h/ |# N6 z/ H- h
  178.          @sp_sprite.visible = true- v9 l  [6 \+ o0 V' I& I
  179.          @layout2_sprite.visible = true
    $ Z* C0 ~( G# |$ Z
  180.        else
    / |- r6 C' o8 q! c( s  _
  181.          @sp_sprite.visible = false8 k, v+ p6 c2 h
  182.          @layout2_sprite.visible = false
    7 Q5 R, ?) F' z+ R9 @
  183.        end 3 g  n% E9 f3 `: a8 S! t' J9 [
  184.      end  & i- m( c, u$ w3 L
  185.    end
    3 {' Q! Y5 H6 d2 S9 Q
  186.   #--------------------------------------------------------------------------0 o% p. |, y" x8 D; S
  187.   # * Hud Pos Update5 O- [+ C5 r# }) S: C
  188.   #--------------------------------------------------------------------------
    : M" z, h/ R/ Y1 p; o
  189.   def hud_pos_update
    ) e8 e+ C* a: y: W  S
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X1 m# K, Y2 G- o0 @, i+ E9 h+ A3 G
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    # a6 E1 e' S2 j5 t9 T) W
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    3 F. k: s3 T' R6 u5 }3 E8 g( C
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y ( I; t0 N+ |8 n
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X* W) _" q* K9 X1 e
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    ) w" N$ n( U* p& Z8 G- ]
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    ) F' A" J: p( f! i. r- H$ |7 }
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    $ H+ ~2 B. U7 q9 K7 F1 G! @
  198.   end  ; V  u% [4 F8 d1 M. ~9 Z3 i
  199.   #--------------------------------------------------------------------------
    8 V. S! K. N: i9 p% E
  200.   # * Hp Flow Update
    1 m4 T# y! S7 b
  201.   #--------------------------------------------------------------------------
      [) r: t' |4 b. `4 Y3 B6 ?
  202.   def hp_flow_update& u# {( U. a! C' O6 Y
  203.       @hp_sprite.bitmap.clear
    2 W( Z7 |! _; H" K( o
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    8 T  q4 q; t" L* b9 ]0 b* W
  205.           #HP Damage---------------------------------) \/ v% ^9 p& R3 z2 r) q
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1009 Y, w8 M8 S, c# o) V$ |2 K
  207.           valor = 0.5 if valor < 1         
      C3 l# O- u5 Q; ~5 Z% a: Y, J
  208.           if @hp_width_old != @hp_width
    " _( v8 y% H* i* {" y
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  $ r: P' N/ K. V% l7 t3 L5 L
  210.           if @hp_width_old < @hp_width " y: R; S2 l5 o# E. I
  211.              @hp_width_old = @hp_width
    , J8 O1 [% C. Z. @: H4 q( a
  212.           end      ' W6 |; J9 S* y* L6 E* p
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)$ ?* A; {' p5 x
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       6 R4 j& x) [1 G6 k8 J
  215.           end          a2 F9 Z- ^6 A( k8 |
  216.       #HP Real------------------------------------) l7 g$ T' o! v4 V- [  c3 w
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)9 L* r: X( a' z! m" K
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    : {; A* I* J5 g8 E! D8 J9 `
  219.       @hp_flow += 2    |. z  v+ G7 x% A1 i# A
  220.       if @hp_flow >= @hp_image.width - @hp_range8 S( L2 T( a9 C) A
  221.          @hp_flow = 0  
    / Y; [4 Y+ m% k( [( D+ b
  222.       end8 [" x8 }% V; b& i) w
  223.   end    ! A" C/ G+ e$ J
  224.   #--------------------------------------------------------------------------0 p7 D6 Y5 T' p! K% i# Z  F
  225.   # * Sp Flow Update3 @. K4 W2 X8 g
  226.   #--------------------------------------------------------------------------
    9 ~8 U( M6 I0 q+ h
  227.   def sp_flow_update* d. v" {3 |" K
  228.       @sp_sprite.bitmap.clear4 K6 m3 A4 Y3 g& j$ K& e
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp . v* n" A% y. L2 F; e4 W* r9 n/ A9 G
  230.           #SP Damage---------------------------------  A7 T7 }1 z4 q5 }6 r& C, m9 `
  231.           if @sp_width_old != @sp_width3 O) r2 r2 u9 V( `0 s1 C
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    - W; d( S+ r4 p. a: i  r
  233.           valor = 0.5 if valor < 1              0 T! m* J, l/ R9 T) J7 L8 _
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    3 r1 H! w6 E& C" C6 X; j6 D* }- z
  235.           if @sp_width_old < @sp_width
    % I! O0 n" l6 O# ?0 K, n/ s
  236.              @sp_width_old = @sp_width
    : Z" d2 G6 d+ K" i$ }
  237.           end      
    9 q8 s2 X- y  m9 s
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    2 D  W1 q+ d4 U+ B$ {' ?! P" C+ U+ q' g9 B) m
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) # j* l2 h. m+ O9 n
  240.           end. ?- c5 X4 w" @& P
  241.       #SP Real------------------------------------
    * m7 h; @/ o9 B+ w. K1 N4 D5 {
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)' I& a, N" Y% \
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)# Q$ z! t- i( C( g& y
  244.       @sp_flow += 1  
    5 z5 ~; X0 c% [, t7 B' q
  245.       if @sp_flow >= @sp_image.width - @sp_range) i0 u+ A6 A3 _* A6 a
  246.          @sp_flow = 0  
    * J: a" y5 T% ?5 S( e0 k3 ~
  247.       end
    , l, ~- h- n& B7 y
  248.     end            5 e% M- u& d; S- ~. J
  249.   end7 i$ e9 J' L- |6 c+ I
  250. #===============================================================================
    9 w- r" M& c9 {; W8 q$ M+ O, E
  251. class Sprite_Character < RPG::Sprite& o" x; P! ~, j
  252. #-------------------------------------------------------------------------------
    * g2 _$ x: }& z% S1 X
  253.   alias :xas_emini_hud_init :initialize
      W! n1 n* t% m: L/ `: o2 d% Z) K
  254.   include MOG$ }' Y; v' x& e
  255.   def initialize(viewport, character)
    " p  a+ o1 f. w0 u4 f' @) S
  256.     xas_emini_hud_init(viewport, character)
    % F8 X% {, c5 y3 h2 B
  257.     @viewport = viewport
    ; E7 u* b2 k) |" D: D2 N( N
  258.     return if @character.battler.nil?
      H* L6 S- ~; P/ l6 Y( `
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    6 S7 s8 K) z; V  G" A# D$ r2 I, r
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)* r$ l3 i! _+ J: q/ s+ |" S
  261.     return if @character.battler.is_a?(Game_Actor)6 L. g3 H! K  ^
  262.     @bars = S_Hud.new(@character, @viewport)1 f+ Y. Z) a4 R! q
  263.   end, |, m' u* D% g/ I
  264. #-------------------------------------------------------------------------------; w4 g! O4 n& P
  265.   alias :xas_emini_hud_up :update% Y" E! C  s' V" E8 b8 e
  266.   def update
    + Y' W* ?. s$ I- R; y/ g# A( y
  267.     xas_emini_hud_up
    6 I4 {( G% ?" |5 b0 `3 _( F5 k
  268.     return if @bars.nil?
    ( G0 y4 v+ d2 K0 C" {4 s5 K: ~7 [
  269.     return if @bars.disposed?
    % G4 x& c( K) O6 T# q# H7 N
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    + Z. h  w0 y& P1 A7 Z: A
  271.     @bars.visible = (dis <= RANGE)
    ; C2 `; P* \3 X& }, F/ t0 c0 x
  272.     if @bars.visible
    " z) C; d0 Y# \# L
  273.       @bars.x = @character.screen_x# - @cw / 4
    - e! U- S0 t( N/ K- H* L
  274.       @bars.y = @character.screen_y# - @ch / 4! i8 z" W' |! Q, p
  275.     end
    ! h7 U! t0 c& Z' ]5 D
  276.     @bars.update
    . |+ S9 N' O4 j6 L. z
  277.   end5 v( q( {5 H* X$ f, [6 I  r4 x" A
  278. #-------------------------------------------------------------------------------- m5 h6 q" U& N# q! ^; v, X
  279.   def dispose6 H; j$ r1 s1 K- y4 g$ H( Z4 p: J6 X
  280.     super+ T% V# S5 l6 }2 z) x  p7 e3 k
  281.     @bars.dispose if [email protected]?
    , V) Z& f; Z$ [) P! F# V
  282.   end
    ! N# d/ [; k8 r! R
  283. end8 A) B0 n& a' \, Q

  284. ; s1 J" x' ]$ d! P
  285. $mog_rgss_s_hud = true
复制代码

& i3 X, ]' w+ T+ P! d& o  F+ g3 Z5 U, w; S2 H- d( z

$ {, o- M/ C' j9 H* N  J, g上面所說出錯的203行內容為
; a" V4 y7 `- u* w+ {@hp_sprite.bitmap.clear
' k% J) Q; _1 Y! L. R$ _" ]! d# v) P8 K2 ^7 p9 ]  a5 p8 m
想知道怎麼解決
/ D; [3 `9 v% R5 w: O/ T$ T
2 y0 _' ?. r3 |; o% [! T% s該腳本支持3.82
4 s  w+ p6 W0 [, s0 X- e$ f* I3 F
7 m( c1 l0 Q: X  x下面是圖檔,要塞在Windowskin下  M7 L  r5 j7 ]3 J; z, u
, \1 p  o" |$ f! ~7 N% m: a
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
9 C- Z4 Y9 L) A' E: l1 e$ W
  x. [, Q7 W5 J9 K
; b2 V3 b- Q5 S- K$ K7 D# B  q7 d( V3 u" L

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适* }! r$ G' ~( k. l- ~/ f
结果尝试刷新了一个已经释放的图形* ^0 Z& A* u4 `! j9 L! D
9 Y2 p. r3 A6 P1 Z

! j# t: E2 Y# x& ~; W, E, f3 t2 c& }' {# N4 }
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    & m' T  A: z+ s5 m
复制代码
不要后面那个条件貌似就没问题了。
3 i' b2 Z1 C3 S% W1 {! J( m' \1 B

) c# z, s3 @: S, ^2 z
5 |, E1 f5 o2 L6 H4 O& b2 D9 `7 E2 X2 P; k6 f* g5 Z

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 . k, f% O, C3 H) f9 l$ v
貌似是释放的条件不合适
& J& p9 v1 U" l. a结果尝试刷新了一个已经释放的图形

8 C8 o) V5 k' {1 Y* K* p! S& _6 V把後面那個條件弄掉後,的確沒問題了
! E) r4 O2 q% x# J目前從關頭打到關尾結束都沒再彈什麼錯誤
0 w3 z$ |1 I$ N- \) s非常感謝
' l6 P# ]9 N% w9 P" p) Q3 A& @5 {7 w& y! ^% x+ Q
不過我是參照著別人腳本改的4 J0 \. \5 ?  `* {, @( E! q' z3 h
他寫的條件式也是那樣,但我用他的沒什麼錯誤
; R' N* N) j7 U" {1 q  U不知道是怎麼回事
- N* `1 R/ {3 J7 Z1 b是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
( K% j) M3 B5 C9 s$ u' B我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events9 D! ~. l8 ~  p* G' [
嘛..这个数组吧..我在以前试写队友的时候关注过一点
8 J4 R4 F5 O: h; ^! ~3 L不知道XAS内部对它做了什么手脚还是为啥,# k$ X4 C% V" [* p
总有那么一瞬间,没有被消灭的敌人事件也变成了nil) ?, V: u4 v9 P1 X
8 H; E4 z2 Y+ c0 B. B! `& @: p
$game_map.events.values[@enemy.id].nil?
1 O# C: c) `# Z+ Y; O, h2 w7 D因此自然而然的返回true并符合条件把图形释放掉了$ \* b' R: y6 h1 q" b# i. d" O+ L5 U
) e: K1 r$ O: m9 b7 P
LZ应该有注意到吧,9 w2 t8 x# W' [. h; A$ K
我测试的时候发现报错前几帧,图形会消失,( `( P6 i, M/ ]$ Q/ {
应该就是“误以为敌人被消灭”了。% v+ {, C& D* G1 Y* ]# U, x% Q
8 d# w" w2 G! W* S* T
受限于个人水平,至今无法找出$game_map.events的真相..7 w$ }: C6 j# Z- a- r+ j

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 ) l& Q2 u6 H3 d2 {/ x/ `
$game_map.events
  K: S$ I; R, L6 y+ H7 x嘛..这个数组吧..我在以前试写队友的时候关注过一点
$ _* T+ V1 P& I- ]" O+ C不知道XAS内部对它做了什么手脚还是 ...

1 |  W2 @8 S, y% F當初我把那個條件式看了三遍,都不覺得他有什麼錯
# [. U/ N3 L2 D( m8 P. S( Y7 M; Z原來還有這麼深奧詭異的事XD( {0 u6 ]2 |6 v5 }! y8 l* U
/ o/ @  N$ z- W- J6 r
錯誤發生前的確會有圖形沒顯示出來3 G# z/ w$ Z1 W, J7 R9 z
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...1 I. v; j: j9 ?) |5 e
沒想到居然是詐屍了XD
% G! G9 A6 `8 o8 v& |" {$ y, b; x4 D9 e. y( ?( S% g' @
不曉得3.91有沒有修正這問題...! P3 r! \" \+ N$ N9 m& ~
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
' N' O: U9 s8 C
. [+ |" q4 H' G: Q的确, W: @8 f7 P% u' e' v4 v
用惯3.82之后想去整3.91觉得压力甚大..+ B- ^6 A% g% e5 R" p$ R1 ^5 d
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
6 k* s4 X* `" \( A9 v1 r
8 \# U6 C" y, A. C# D& g然后加一个判断处理的。(我记得有一个disposed?)




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