Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
9 b1 v# y3 d' u. G% H% ?+ b會在每隻事件怪物的腳下顯示
+ C9 d6 m- U! ~- W% t3 S問題是不知道為什麼( {8 S, g; a# _; t2 `/ P. ~: C
有時打怪打一打會跳出
& W" w7 O& K& D2 D$ C0 r) _% P---------------------------
; R, ~$ b5 Q) {1 z; [" X- C. C; fXAS
8 e) E. v7 U0 [: X) Y---------------------------, G4 n! i' d. W! A" o' ]
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
" F5 ]3 P: T9 O" _3 Z/ U
' q) \& M5 g. V" z. [3 A9 A' kdisposed bitmap* F5 H& [. Z6 u! g) _
---------------------------0 Z& ?/ I% z# w! t
確定   ( R" j2 I' G" B
---------------------------
8 x% L; e( S% H6 I# i0 a% h6 U% p" l! S* M" {3 E6 U; n
這是腳本3 v% R6 c3 [7 m' J- w/ ~: W

6 p! M. X# H) d7 K. L+ }+ f8 S
  1. #===============================================================================
    9 O" H/ u/ G  G" w! z
  2. # MOG - s Hud 1.0      . X) F' D0 ?! R5 D2 [8 l. N
  3. #===============================================================================. a9 y; X$ a. }! o( O
  4. # By Moghunter " W- l1 B# _1 q9 ?9 U5 V
  5. # http://www.atelier-rgss.com% l3 q6 @1 [: B9 S
  6. #===============================================================================
    ' p" ], |4 @) O5 i: x5 q
  7. # Translated by Calvin624 ! i% z* o( y7 S1 \
  8. # http://www.xasabs.wordpress.com
    # B0 ]$ U' S- ~) n: z7 C& d
  9. #===============================================================================- Q" t: |) v2 v9 X0 a
  10. ###############################-DESCRIPTION-####################################  }* S: u# X  i, j0 D% n
  11. #===============================================================================
    6 Y7 k3 s+ K; x( x/ S' S. J
  12. # Personal HUD – displays the HP and SP below the hero.
    + i7 N$ H$ `8 }4 c$ i* y- L
  13. #===============================================================================- e4 }: O2 G+ z  O& s* T/ ]
  14. #
    / [% E+ s  F! M- j
  15. # Graphics required:7 _% E& W/ \5 T, w! t0 `
  16. #
    : t5 h" \. _4 T9 X. h
  17. # S_Border_HP_Meter.png
    ; m2 O  c. t% ^. x% z! f7 m+ p+ ^, u
  18. # S_Border_SP_Meter.png* g! o* Z6 E) A) p5 w+ w# j3 }
  19. # S_HP_Meter.png
    5 |  d, [1 P" k/ P* c1 _# p0 M
  20. # S_SP_Meter.png
    $ Y$ y4 d4 V# b3 R/ |4 A+ O
  21. #: S7 @" l7 H3 s+ K7 e
  22. # All images must be in the Windowskin folder.
    % A3 q6 h, C) ?8 g
  23. #' O" H9 w7 Q& @' \# \
  24. #===============================================================================
    # A, {0 Y8 ?% M' x8 b$ {# U1 B
  25. module MOG
    8 Q/ q/ c; R# {! G
  26. VISIBLE_DEF = false  : J) Y- c  ^6 U" |+ v1 T7 G
  27. # Show HP meter?0 _! q. M. p7 ~6 ?7 x! t
  28. HP_HUD = true: d9 k8 e7 `0 F4 ?1 {3 R; M
  29. # Position of the HP border
    6 T9 ?, S! X3 c+ t* C# A
  30. S_BORDER_HP_METER_X = -2" A3 m/ j, S+ H8 U' v" \- r; h( g
  31. S_BORDER_HP_METER_Y = -2  / Y$ O+ A' P& Z
  32. # Position of the HP meter' \8 G% p3 N" Q0 M. {
  33. S_HP_METER_X = 08 h0 D1 W% l& L/ X- C2 D+ K4 D& @
  34. S_HP_METER_Y = 0! g+ h; k4 q+ l
  35. # Show SP meter?! `) C; l8 e4 M4 B) E& {* l
  36. SP_HUD = true% Z9 o& w; I- l
  37. # Position of the SP border
    0 I  X1 K7 a6 t- l: e
  38. S_BORDER_SP_METER_X = 0
    0 o: K- |$ f6 n$ K0 w. {9 O
  39. S_BORDER_SP_METER_Y = 10
    2 c+ S! e* C8 ?# [
  40. # Position of the SP meter9 n* T& T) l' c! e; p& b3 B
  41. S_SP_METER_X = 04 K/ x4 d& j, ]. u% F* h
  42. S_SP_METER_Y = 10
    # T( t2 m( x9 H
  43. # Switch to disable the HUD
    + Z3 g% Y7 K% s
  44. DISABLE_SHUD_SWITCH = 5
    4 P' I0 Y/ J" i1 A  y: R
  45. RANGE = 20
    ) k9 \2 A! Q. g# z! U3 ^
  46. end) y# d5 B8 M9 x; ]
  47. #===============================================================================; B  G" O$ Y5 e6 ~/ y' I
  48. # S Hud7 F: a( S; G7 h/ J# E! n5 _
  49. #===============================================================================
    # V4 d. z2 ?7 h' i* b0 g& u* F" s$ Z
  50. class S_Hud < RPG::Sprite
    2 m+ l6 ~8 g& @$ l; Z# N: V
  51.   include MOG, L, `5 B# M( S( R
  52.   #--------------------------------------------------------------------------/ ]  E5 M' \# u9 _  C( m
  53.   # * Initialize- J5 Y' Z7 K/ a  Z9 S1 q; {
  54.   #--------------------------------------------------------------------------
    $ d4 a0 r+ ~, O) N5 c0 y
  55.   def initialize(enemy,viewport)
    $ e) N. ], a% i8 W# g! v
  56.     super(viewport)
    3 z* \% J8 {- w# g3 Y7 X
  57.     @enemy  = enemy4 _* u* M+ a; z$ n  Q9 C/ i
  58.     @battler = @enemy.battler4 `. n) s" {" B
  59.     @old_hp  = 0
    ' k3 n( m3 x" |0 D
  60.     @old_sp  = 0
    ( K9 A8 W+ k8 n2 [
  61.     @old_vis = false% Q' c; _! z1 e: @0 K  @
  62.     self.bitmap = Bitmap.new(100, 100)
    0 A" Y7 D% L- H* T4 g
  63.     self.visible = (VISIBLE_DEF)#false( a; m2 X! }. T- v/ H- K8 V% {. K6 {
  64.     self.z = 100
    ( [7 W& t: |1 B/ g" ?
  65.     #HP Border -------------------------------------------------------------------! e* m9 e4 v7 j9 a; E
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")" g7 f6 s' T" J7 V! A6 @# a
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)9 ^8 |  C7 G' B1 D: m% K" g! x
  68.     @layout_sprite = Sprite.new7 Q5 n( B2 D  a1 z6 f
  69.     @layout_sprite.bitmap = @layout_bitmap
    9 C( O9 \. i9 H5 R9 k! B
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    / t% h$ V; l+ ~0 x6 ^% F9 ~
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    ! P6 I+ p1 B" o2 {0 Y7 x8 E
  72.     @layout_sprite.z = 5001" Y5 t3 J: q) J% W' }
  73.     #HP Meter ---------------------------------------------------" \# u. q/ f7 u2 b% k3 _+ u, r
  74.     @hp_flow = 0" L$ T8 V1 `# S: I: i. n9 T8 Z; Q
  75.     @hp_damage_flow = 0
    : P7 t; r2 c) X# ~3 h& Q
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    2 }. Z" z- z. |% M/ \& C$ q. h
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)+ }* I" W+ ~7 i: H7 C& d- z1 n
  78.     @hp_range = @hp_image.width / 3- r6 i5 O# f7 [, q! \
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    3 p+ Q0 A: |4 k) M* {
  80.     @hp_width2 = @hp_range / 2
    2 O& _0 B1 e; r8 p$ y
  81.     @hp_height = @hp_image.height / 2
    ' w9 }: r/ I+ t, c* R& p$ p
  82.     @hp_width_old = @hp_width
    ' q6 m5 _+ J5 a1 O7 Z2 V( T0 Y
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    + [2 [$ O$ K4 `* i4 b0 {. }0 O
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    1 e3 X8 ?/ ]0 A; p1 b) t! B
  85.     @hp_sprite = Sprite.new
    , b, ^$ M5 q' o$ z. i7 `% V! P6 ~
  86.     @hp_sprite.bitmap = @hp_bitmap
    & w+ u9 Q2 w) I
  87.     @hp_sprite.z = 5002. H! \2 m! l8 O' v5 ]
  88.     #SP Border -------------------------------------------------------------------5 v% a7 f  L* G7 ]0 }0 y
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")2 O3 l9 a$ L: F2 C
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    $ m( e( R5 t6 X' U/ B
  91.     @layout2_sprite = Sprite.new6 e6 S: {# ^- |% q( C! [' B
  92.     @layout2_sprite.bitmap = @layout2_bitmap5 ~$ u) {& I4 t4 T2 p3 \& a
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)4 X) e. _' M& A/ D/ e% N
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    ' O. ^! T. G7 u% s9 M
  95.     @layout2_sprite.z = 5001    5 g8 Y$ n) T3 a$ g# z
  96.     #SP Meter ------------------------------------------------------
      e, X8 r: p" ?( y1 J* \8 K7 o
  97.     @sp_flow = 0
    6 Z& }4 ~, z+ v. i( [
  98.     @sp_damage_flow = 0% E6 z2 Y6 @& o" R
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")5 c9 p* f, j0 R: O* F0 r
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)" q- a4 V* A& z2 G1 k2 f. e
  101.     @sp_range = @sp_image.width / 3
    ' \" q& P* A$ Q( P$ X! {- n
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  ! J5 M3 V! |" R0 X
  103.     @sp_width2 = @sp_range / 29 r" ^9 \# K& O5 I
  104.     @sp_height = @sp_image.height / 2
    7 o1 a" n8 x, X+ b( o% X1 U7 Y* n
  105.     @sp_width_old = @sp_width* x1 A; j% w- C! ?8 }
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)/ l. p9 N  h# b* i  l% m
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)+ x9 p5 e/ T; x4 t% ^! R
  108.     @sp_sprite = Sprite.new
    + E4 V( c# E6 h
  109.     @sp_sprite.bitmap = @sp_bitmap
    , M0 H4 ]! i% P) H5 f5 h  C% X$ N8 T. S
  110.     @sp_sprite.z = 5002" W* e: S: v2 t
  111.     update
    2 x! k2 L& m+ `0 p' Q1 ~
  112.   end/ U- v) C. k; N4 y" P# s
  113.   #--------------------------------------------------------------------------9 G* J# ]( n. V' N
  114.   # * Refresh% K" [4 Q( n2 k! K9 Z/ [" o
  115.   #--------------------------------------------------------------------------3 v; ?0 U( O" y( I+ s6 S
  116.   def refresh9 G% H' ~& F( K6 _
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    / \& Q3 ]% d0 y) d
  118.     self.bitmap.clear
    ; I0 }6 r9 i& s* ~5 T- L3 U
  119.     @old_vis = self.visible: Q3 f6 R5 v2 V. \
  120.     @old_sp = @battler.sp
    ( I. E4 x4 w( I/ c; s! R* ]% E* \
  121.     @old_hp = @battler.hp9 n/ d, ~( Q/ T
  122.     hp_flow_update( Y! v0 m- U  S
  123.     sp_flow_update
    8 z: o) o7 r1 U  H4 f
  124.     hud_pos_update- x' I( o) w% A/ }
  125.     visible_update( y0 ~) {7 U& c& V
  126.   end+ @; C4 Y& P& N  X+ m# ~5 X- ?4 m
  127.   #--------------------------------------------------------------------------, R$ _0 O, C7 F* B; t
  128.   # * Dispose& t2 B3 v4 q. {/ `- j, s. F$ m
  129.   #--------------------------------------------------------------------------! t: H1 M2 G; N8 n$ \% ^
  130.   def dispose5 C$ b% D8 U0 q' R8 H/ V; f9 k
  131.     #HP Meter Dispose( Q* U$ D9 B/ S! D# P8 x/ H
  132.     @hp_sprite.bitmap.dispose# W) o  I% P/ \2 ~* |
  133.     @hp_sprite.dispose0 j& {2 i* E, U: X4 Z( f2 m4 P2 r9 R
  134.     @hp_bitmap.dispose
    4 O( N  r+ }6 {5 p2 _) z$ l7 o
  135.     #HP Border Dispose. o* R( [, w( u
  136.     @layout_sprite.bitmap.dispose
    5 Q- i; L5 W/ O, n
  137.     @layout_sprite.dispose5 S& H1 k% F1 U) `
  138.     @layout_bitmap.dispose+ e' c8 V" O( k; y/ _8 I
  139.     #SP Meter Dispose( V8 ]6 s% W" I0 U( _2 B( s- R
  140.     @sp_sprite.bitmap.dispose8 G0 ?4 C4 |5 Y; ^6 m3 E
  141.     @sp_sprite.dispose
    / \( T3 H% P" P' J1 Y
  142.     @sp_bitmap.dispose3 |  N% F2 N# Y2 @# s* p
  143.     #SP Border Dispose
      [+ t3 G" m& W/ V
  144.     @layout2_sprite.bitmap.dispose
    ) e$ X5 \6 s% X' F; d, M  K' J3 l
  145.     @layout2_sprite.dispose& H# }, o5 k7 O: m+ z
  146.     @layout2_bitmap.dispose( f2 u8 G3 Q# X
  147.   end
    9 U0 \5 C' H  r
  148.   #--------------------------------------------------------------------------
    9 L- S, P6 U; Y! _$ w( c5 o% l
  149.   # * Update
      b/ x5 N9 w+ q% m
  150.   #--------------------------------------------------------------------------
    4 I* @8 m0 o$ i) q: h( x
  151.   def update
    3 ]* y9 z2 U( x1 j
  152.      @battler = @enemy.battler
    * v& r3 Z6 w5 X; J
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?& g0 x9 S* L) M- @9 R
  154.      if self.visible6 [( W7 g8 s2 _* g" H6 J( b; b& Y# u
  155.        refresh5 W. I" ~+ `( S% [% _% J9 y2 C
  156.      else
    ! ^8 N* g5 i% m, J- k, K& r
  157.        self.bitmap.clear
    % _0 @8 U; [% ?6 v2 x3 p4 O
  158.      end& m1 J1 E$ F- L
  159.   end2 p9 z8 J) ^' L# V" j: U9 s
  160.   #--------------------------------------------------------------------------
    - V# ~6 ?  V4 L, C/ B4 d1 g9 [
  161.   # * Visible Update& D9 {# a. K. I3 O
  162.   #--------------------------------------------------------------------------
    5 m! t0 q0 M. G3 g, i
  163.   def visible_update
      k9 u9 l( K" H# M5 D2 R
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    % M: N5 Y: k' s
  165.        @hp_sprite.visible = false
    # Q( O: p, x5 s" }$ r# w
  166.        @layout_sprite.visible = false
    ' b! u! G& M* _3 `
  167.        @sp_sprite.visible = false' B4 V. P# d# r# G" S
  168.        @layout2_sprite.visible = false
    7 R! {: S* u7 m! N0 h
  169.     else
    $ _7 D0 a' g' W
  170.        if HP_HUD == true6 @: ]7 M2 n! H' q
  171.          @hp_sprite.visible = true
    7 K9 I0 I: v% ^1 c8 @
  172.          @layout_sprite.visible = true5 _/ b4 n9 P! }3 K! K
  173.        else
    ) }6 [& H& g) e/ d" B2 b
  174.          @hp_sprite.visible = false6 m, o2 J- v/ M8 ]/ x7 Z
  175.          @layout_sprite.visible = false
    ; ?. V) D4 i3 v0 a5 a! E2 H
  176.        end  7 G6 P1 ?- ]; \3 ?, ]2 c
  177.        if SP_HUD == true
    ! q2 E" _9 y8 _6 J8 R' G* H
  178.          @sp_sprite.visible = true
    1 ]/ m$ r9 Q" N& n) @
  179.          @layout2_sprite.visible = true
    ) A' w: u- c. l+ b$ A4 }! Z
  180.        else
    * U0 l; V8 o" S9 F% z! ~
  181.          @sp_sprite.visible = false1 V8 `7 ~$ W% \6 C" O
  182.          @layout2_sprite.visible = false
    . H9 }4 B/ }. W8 \
  183.        end   N8 v' x5 q5 ]8 W, [: J
  184.      end  
    4 J; y; O2 K. @
  185.    end 9 B8 ?6 d4 B) i* B
  186.   #--------------------------------------------------------------------------4 A  p. B3 t  m
  187.   # * Hud Pos Update
    6 G! K) W. q# h
  188.   #--------------------------------------------------------------------------
    . g% @/ h2 ^/ P1 h5 [8 b
  189.   def hud_pos_update
    ) ^8 t0 y, K/ K" u, I( [" p2 D
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X- k  _, B! r. f9 B/ g2 }, H6 d
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    ) `, P4 i7 |; Q) r
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    2 z2 w7 B7 X8 _) {
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    0 `5 A6 F3 a, d; H
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X9 n# O% f. a6 P4 A. ^
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    ) A+ b+ _+ X# |: u4 Y' Y
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X+ P9 o1 r( v% o) ~
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     0 l/ S" F8 r0 c/ b6 {' e  v8 j
  198.   end  $ ?2 {- t7 Z4 d, }9 X" G9 o: V
  199.   #--------------------------------------------------------------------------3 n9 s9 ^. L: [  v' I- b3 C# f- m4 @( J' e
  200.   # * Hp Flow Update" B1 r: x8 z: Q
  201.   #--------------------------------------------------------------------------
    # l9 ]. ?6 g, L# z$ C
  202.   def hp_flow_update
    7 D' ]- T2 T; o8 x; }
  203.       @hp_sprite.bitmap.clear  G; ?# X6 s6 q* {7 I2 x8 b" V: ]
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    $ P+ N1 o1 k! ]5 S( R' X8 a2 Z5 H
  205.           #HP Damage---------------------------------
    5 @! F# @, S4 @3 [3 I6 \$ E
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1005 ]# x) ^1 V* _4 o5 U" |. i7 k& A4 f
  207.           valor = 0.5 if valor < 1         
    6 X2 W' j2 z6 N0 l
  208.           if @hp_width_old != @hp_width2 @. u. Z/ n8 @" v* r, Q5 G8 I
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  % E$ e( i$ U: l+ Q1 V# e* D" n
  210.           if @hp_width_old < @hp_width ; G" f& O5 e3 X6 ^' p6 y
  211.              @hp_width_old = @hp_width
    + m# w( {" W" a& O1 `, J
  212.           end      8 e4 N- Y& `9 I
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)/ e" `6 Z9 h9 y
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    ' h! S: e1 n3 V: m$ R3 `- K) f5 {% ^
  215.           end        
    2 Z7 p$ @' I# g' K  `
  216.       #HP Real------------------------------------. c& J+ N/ L" a0 I
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    ' p: C: R# H) T% |# s3 y$ r6 {, W4 L
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          ' H  C  \: s0 n
  219.       @hp_flow += 2  ! `. C  z) ]; @, A6 j4 k
  220.       if @hp_flow >= @hp_image.width - @hp_range" \3 |/ u7 r# J# q2 Z  G/ h
  221.          @hp_flow = 0  
    7 U& f. G6 Y' _! Y
  222.       end
    7 H. }2 o1 \( z/ H( O, f$ {- {: w
  223.   end   
    9 u5 N5 z; q$ X  E& G' p$ E
  224.   #--------------------------------------------------------------------------- H! U& t9 ?0 O/ Q( C
  225.   # * Sp Flow Update5 E6 q( {( F7 l+ U$ x" ~
  226.   #--------------------------------------------------------------------------
    " T* Z& f, W3 W
  227.   def sp_flow_update1 g% u; u* o6 E2 A" e! [
  228.       @sp_sprite.bitmap.clear5 |) T/ G+ a( F8 H" H
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    9 _; M  A/ L2 }# a
  230.           #SP Damage---------------------------------
    $ u2 k: L" w, B2 D' V9 H
  231.           if @sp_width_old != @sp_width+ {0 g8 s, N% M
  232.           valor = (@sp_width_old - @sp_width) * 3 / 1001 k' M; `% ]! A: f7 i
  233.           valor = 0.5 if valor < 1              
    0 U# d' u2 G" K- s9 c+ M
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  ' B1 y$ l( y9 m2 p, j' c
  235.           if @sp_width_old < @sp_width * m* |: x) q6 r$ m- ?# l& }5 o
  236.              @sp_width_old = @sp_width
    , H  |$ ]# t6 ^0 J0 s, S
  237.           end      
    + y3 P0 [. U/ _' h; w
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height). h9 H8 C8 ]9 Z
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
      U$ c& k5 E/ o5 I" I+ C. p- ?  p
  240.           end8 z" r# w# w( M% I/ H
  241.       #SP Real------------------------------------
    9 x( [  i! ]2 U! Z  Z7 O4 @
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    % }0 M+ \  P, u$ x
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    , I7 W# r/ j$ ?
  244.       @sp_flow += 1  
    5 Y2 T# ~. N% _  @/ t
  245.       if @sp_flow >= @sp_image.width - @sp_range6 J' q! q) B3 j$ ^0 T2 t% |7 \9 d
  246.          @sp_flow = 0  
    0 a$ ?9 R6 M" Z- l/ T2 H2 Q
  247.       end0 ?0 H- H3 y4 N2 b2 ^3 b
  248.     end            
    3 h9 F# R4 W7 f1 G, X# D6 u- E
  249.   end( w' b0 }& I/ r7 Q
  250. #===============================================================================
    ( x8 ]3 t: ?( j
  251. class Sprite_Character < RPG::Sprite
    0 B1 v) s. b* B# L( F- L# t5 P
  252. #-------------------------------------------------------------------------------0 [! h; T9 |* V/ u3 z+ g
  253.   alias :xas_emini_hud_init :initialize1 U; g" F6 f* K, K  l
  254.   include MOG
    + Y  ]) U- z4 c& Y
  255.   def initialize(viewport, character)
    ! ~5 b# n2 z. q5 X5 @. }
  256.     xas_emini_hud_init(viewport, character)2 ~; e  Z7 [% B
  257.     @viewport = viewport/ [: k3 y3 Q7 u: O% m
  258.     return if @character.battler.nil?- a+ a/ R; u& h- B, O$ L7 V
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)0 j  s7 u( ]8 G/ x5 M+ d3 L4 g
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    ( I; h* o. M+ G/ O! @4 i
  261.     return if @character.battler.is_a?(Game_Actor)
    $ a/ `4 S5 Z3 f
  262.     @bars = S_Hud.new(@character, @viewport)" V" `; f6 L3 v  R. }
  263.   end( \4 H0 o) N- n( D; B! K
  264. #-------------------------------------------------------------------------------
    , ~$ r7 [7 E% b1 s; [
  265.   alias :xas_emini_hud_up :update" s4 i1 w* a1 G+ m
  266.   def update& _& a1 O" s7 b" b) [. U: n# w
  267.     xas_emini_hud_up2 w/ x0 ?  n/ i5 Q& f% m$ y  c8 \
  268.     return if @bars.nil?
    ' v9 Q; x/ R4 h8 ?
  269.     return if @bars.disposed?& D* R. s  p0 v6 u
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs' }" l) b" F+ f4 e- Q% L
  271.     @bars.visible = (dis <= RANGE)
    / T. {+ d: A& J& I  l* k" ~
  272.     if @bars.visible2 {  o' T$ m! ~3 d1 H
  273.       @bars.x = @character.screen_x# - @cw / 4) ^3 C5 r7 l, \" o! y! \: j
  274.       @bars.y = @character.screen_y# - @ch / 4
    4 `, B% y; H3 k4 |; _/ E& U
  275.     end: l$ |% s1 Q% f! ]$ Q$ P- v
  276.     @bars.update
    ) [, {' p( G" n" l+ B6 O& X
  277.   end
    9 R* ?3 h7 M$ M, U6 a
  278. #-------------------------------------------------------------------------------
    - w3 v; h$ Z! S0 K0 v
  279.   def dispose
    ( g1 x5 N1 ?% ]6 t+ {$ t' ~
  280.     super
      p% c4 X" b+ ?2 T
  281.     @bars.dispose if [email protected]?% z6 T" T) b2 H& b9 l
  282.   end
    4 V/ d9 c& X$ ~) I8 P
  283. end
    ' r. @: l( O+ L5 ^  f/ e

  284. 3 v/ A# @  o% \  k0 E' ^  ~/ u0 Z* t
  285. $mog_rgss_s_hud = true
复制代码
+ f- i1 ~) x" S# z

- v7 ?* x, n: W  q' G8 x2 B
6 c0 h2 ]5 b/ L上面所說出錯的203行內容為
8 R# n/ M" t1 Q4 i' a/ |2 [@hp_sprite.bitmap.clear, a7 }) w% l' I' e
9 V5 j# a* z6 x( A7 o
想知道怎麼解決
1 E6 v% L4 @/ d. U7 @$ Q' B8 S6 p* D4 j
該腳本支持3.82) I! Q- V6 Z( q. J# b

( a& S# f' \0 w3 Y* [下面是圖檔,要塞在Windowskin下. l0 A1 q. x* h! S- ~) D8 g
* M" m( x. O' ]4 X+ n$ I
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
+ W9 v0 C+ O$ t2 {& |# C( b* n
- e6 _, c2 ]& u9 @) V# a7 N8 x7 ?7 i& C
* s4 \2 w2 D  Y3 a; ?, Z9 j  ^" e# Y0 [6 Y* N

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适7 d* [! F- w/ Q5 g5 [- i
结果尝试刷新了一个已经释放的图形" e$ A& }6 {) `* a! w- r
% b- d% N, L( Z

4 i' m7 t, j3 `6 x+ Z2 h1 _1 W6 e; T- q: I9 ]% b6 M' e
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?0 Q# W. k/ t1 `9 x! G/ z; `
复制代码
不要后面那个条件貌似就没问题了。
* k1 B( A' X& \% }) t
/ T- e/ y, X: S7 F! A  U
% U+ ^' ], }- _
4 L/ C9 F- L# [% Y  @& |1 ?  x* [: R

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
# {, i0 B: N3 \$ B貌似是释放的条件不合适
& g2 U- `" ^, Z9 u& X, c结果尝试刷新了一个已经释放的图形
4 M- W  f- b' Q2 C1 A
把後面那個條件弄掉後,的確沒問題了
; a& r* B) N* Q$ K9 y1 R目前從關頭打到關尾結束都沒再彈什麼錯誤! u/ N) h! f9 a* T, ]4 {# ~
非常感謝0 S1 d' h8 {5 k

4 _2 O) O/ O: ?5 C6 m不過我是參照著別人腳本改的
5 u" Q" g- @& S; m6 M/ ^6 V他寫的條件式也是那樣,但我用他的沒什麼錯誤, Q; v$ ]! W, o- X: j3 {" z& J' V+ k
不知道是怎麼回事
" F* a+ V/ A. Z  B6 k/ k是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
' @* j4 m5 u1 e* `2 @/ X+ g我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
; ^' p" T& @+ P6 f嘛..这个数组吧..我在以前试写队友的时候关注过一点# R, J; ]& B- {. @, M
不知道XAS内部对它做了什么手脚还是为啥,
0 s' m8 j! T6 N总有那么一瞬间,没有被消灭的敌人事件也变成了nil# ?/ z% n8 E6 Z

) k& h& f* A4 x) A$game_map.events.values[@enemy.id].nil?
. n. t4 D" `% X* h+ l因此自然而然的返回true并符合条件把图形释放掉了0 e* g1 s/ c# V# r2 l
+ H* n3 p& X  k$ O% Y! ^
LZ应该有注意到吧,2 m/ Y/ o8 K! Z! \
我测试的时候发现报错前几帧,图形会消失,+ s. Z4 C9 ^5 V$ ~1 y
应该就是“误以为敌人被消灭”了。2 l- m% w8 w5 k( ~( a! b* T- R
$ J3 x/ K2 `5 I- j" ]
受限于个人水平,至今无法找出$game_map.events的真相..7 b( u" x+ `9 ~& _

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 8 h! j9 Z1 v, T+ X* o" E( e/ v/ Q
$game_map.events, R8 t5 S& g4 {  t  ?6 Z5 L
嘛..这个数组吧..我在以前试写队友的时候关注过一点% b( H: A5 f6 V( L+ b, V
不知道XAS内部对它做了什么手脚还是 ...

. J8 g/ v# K7 S: s當初我把那個條件式看了三遍,都不覺得他有什麼錯3 a1 A; P  v) {  t0 A1 }$ j
原來還有這麼深奧詭異的事XD/ }' Q9 y& X+ o# @; N( j, N. L

$ E: D( ^9 i; I% K! `- U6 ^0 j$ q錯誤發生前的確會有圖形沒顯示出來
6 P( _9 F! a( q) c! y0 Q- F不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪..." B- O% q, [; `; r, U
沒想到居然是詐屍了XD
# x4 x% s4 r- F! O
  ?9 a6 B" _+ n不曉得3.91有沒有修正這問題...
& j: @+ W$ H& `7 j8 a不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
# B& c0 x, q% a
+ }1 V3 t/ J+ x. ?的确
6 O4 x, x+ v- F用惯3.82之后想去整3.91觉得压力甚大..
3 C# ^. N/ {$ U$ F; g干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
! W* G" J2 X: h( W6 y% y2 G1 x5 _+ J! G/ D/ Z: G- S
然后加一个判断处理的。(我记得有一个disposed?)




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