Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條8 \' {0 v6 F2 _: @- }  p
會在每隻事件怪物的腳下顯示
4 x8 L, Y- Q; X" ^( D( J, u問題是不知道為什麼
/ e; e. \- t+ ]  J4 b有時打怪打一打會跳出3 l4 O' f/ K& A0 j+ M  u8 @
---------------------------- I' e' R6 Z0 f+ w
XAS
' w, y2 U; `6 c- s) o* E; x! ~/ {---------------------------
2 I1 ^# \$ `1 ]) a, V4 C# i3 a脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
7 K5 x* v9 G4 p. K! i6 [1 Q4 X& Y5 k! R/ G$ J
disposed bitmap) F/ C* _+ S/ ?& H$ u
---------------------------* h7 O+ ~# D, a. U. ^" R
確定   - ?7 K( L" Y& D
---------------------------
7 v8 b+ @$ \6 b0 v9 j# N' c: @% a! s
這是腳本, ?: \6 b- L9 y6 `9 N

; h2 A& S  t3 C
  1. #===============================================================================
    8 a; R; f* B- d4 T4 L% P8 ~/ ]5 B
  2. # MOG - s Hud 1.0      4 Z  l- |. j9 ^& {8 J' h* ]
  3. #===============================================================================
    ( Y4 I) X6 {, v7 a* v
  4. # By Moghunter 2 C8 c. V8 Q, h% S
  5. # http://www.atelier-rgss.com7 h9 y$ a& g7 p$ W4 i
  6. #===============================================================================
    6 Y8 G7 Q" M% P
  7. # Translated by Calvin624
    ; s; n! ~9 [$ |( O4 x
  8. # http://www.xasabs.wordpress.com. J& H+ S+ y5 j3 D! O* t
  9. #===============================================================================
    " E* S# }3 v; H0 v  N+ s
  10. ###############################-DESCRIPTION-####################################
    6 c4 d, J4 y0 i. N/ x
  11. #===============================================================================2 e8 j- T$ G0 l0 X
  12. # Personal HUD – displays the HP and SP below the hero.
    & z8 g+ U0 E' n. W2 W
  13. #===============================================================================
    ' U; M/ [: B; Q. X- ]% w- I+ q
  14. #
    ( B6 J9 M  }6 O) S5 x# L- X1 y0 Y' |
  15. # Graphics required:
    , Q5 J+ H+ e5 g- F( b5 C2 ^
  16. # - C6 z% k! _0 n# u4 ?7 h) \# h
  17. # S_Border_HP_Meter.png7 Y# x! n4 E; M% {
  18. # S_Border_SP_Meter.png
    8 L  k0 U5 g: l9 l+ X. t; e
  19. # S_HP_Meter.png) `; Z: L5 H5 I# v3 l* s2 U
  20. # S_SP_Meter.png3 b6 M0 Z4 L" [. p
  21. #
    7 z# {' W7 B; v& T- s" [: s# f+ {
  22. # All images must be in the Windowskin folder.
    ( H# C9 s8 l- I! ~) x: e
  23. #
    ) a% J% Q& \9 o
  24. #===============================================================================$ K+ w" }) w/ W
  25. module MOG
    : n& E  G/ d8 N% h% p
  26. VISIBLE_DEF = false  / Y& V! E1 L7 _7 _( ^9 c; Z
  27. # Show HP meter?
    0 W+ y2 @7 f. G( D6 j/ |$ m8 O
  28. HP_HUD = true7 R  O" e3 T1 B# N( [; F& T
  29. # Position of the HP border6 e- Y- Q2 {/ ^( u
  30. S_BORDER_HP_METER_X = -2
    + P# f+ D% L. s" q. m& v1 n  k7 N
  31. S_BORDER_HP_METER_Y = -2  
    ) z8 l$ w( l4 o+ u2 E
  32. # Position of the HP meter/ P$ `/ N* A' c( C, ~2 @
  33. S_HP_METER_X = 0- o' d- F9 c! y, Q2 A8 ?
  34. S_HP_METER_Y = 0& N/ @7 B! {3 b$ i3 \  r4 z% v* Z
  35. # Show SP meter?8 r+ E' D+ ~( V% P% ?
  36. SP_HUD = true# O. c/ ^& ?' D
  37. # Position of the SP border
    , o1 @6 |! g, [& {
  38. S_BORDER_SP_METER_X = 00 B2 r6 ], U0 A- Q/ J1 _
  39. S_BORDER_SP_METER_Y = 10
    ( q9 @% `. ^( d$ |
  40. # Position of the SP meter% S% u& Q$ ?7 V# I2 G
  41. S_SP_METER_X = 09 N0 ]; J: f' t, l  ?, \; g
  42. S_SP_METER_Y = 109 y) x/ C* J2 ^8 U3 d- s
  43. # Switch to disable the HUD1 |) C* r) d5 W5 f% U! L  k+ E
  44. DISABLE_SHUD_SWITCH = 5
    & N- q+ Y2 S2 J& x3 u+ z
  45. RANGE = 204 z9 ~6 G; L/ L4 _6 J- ^
  46. end: a. `& o- W9 p: \! B) C4 Z* j! |
  47. #===============================================================================4 C) w* f- ^& e& O) w$ h1 P0 \% z
  48. # S Hud
      Q3 N9 J& E, q+ p; x7 f
  49. #===============================================================================; x4 x) O; d4 J
  50. class S_Hud < RPG::Sprite9 j! c4 Y5 o% i3 d2 r% x. X
  51.   include MOG
    & i% {/ h  q8 M
  52.   #--------------------------------------------------------------------------! i: C/ c) F; W( ?& N0 t+ D
  53.   # * Initialize
    , Q0 c& q' X6 U# W4 n+ E. ~
  54.   #--------------------------------------------------------------------------
    ( z2 B! B1 h& {7 v" ]( z! _, r
  55.   def initialize(enemy,viewport)
    - l- D% k0 o, W! K% N1 i0 U7 ?' ?
  56.     super(viewport)
    * z3 H2 ~8 t0 {! d
  57.     @enemy  = enemy  b$ Q) O( S+ I! f
  58.     @battler = @enemy.battler
    5 o# X- H0 p. y6 o+ j+ o( O& X) d
  59.     @old_hp  = 0
    ( G" D7 i( X# y: d: N* b
  60.     @old_sp  = 09 N. ?9 s/ F+ _0 u# p
  61.     @old_vis = false- V* P  A' `- k
  62.     self.bitmap = Bitmap.new(100, 100)1 e2 ?3 X7 \- l" d( m
  63.     self.visible = (VISIBLE_DEF)#false0 O6 t; y9 X, V& X) g2 G" m
  64.     self.z = 100$ c( a# J* l/ D2 b
  65.     #HP Border -------------------------------------------------------------------  Z0 V0 c; z+ d5 Y
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    ( {6 h' ?" W+ ?7 h
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)1 T' z' W8 T, Z( C, n" K
  68.     @layout_sprite = Sprite.new) w! A2 e5 b0 r- z" ^4 w
  69.     @layout_sprite.bitmap = @layout_bitmap' e! N; i7 k% v" i6 s" X
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)# u& G' t( q! |: I
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    3 N1 d3 h  B* H, T( ^$ l! {
  72.     @layout_sprite.z = 50012 V" q0 |; H6 `1 i" o
  73.     #HP Meter ---------------------------------------------------
    2 i# W3 k; h6 K" L5 |5 N) w
  74.     @hp_flow = 0' B& w8 ~" t. q! Z/ k
  75.     @hp_damage_flow = 0
    - j/ W/ Q& J, I
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    , _% a3 K' U' A% M
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    1 P% S* u1 t; D0 X
  78.     @hp_range = @hp_image.width / 3
      }- h4 i) N7 ^# `$ [) f% l; X  L
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  & {: }0 z3 e5 \$ \/ H
  80.     @hp_width2 = @hp_range / 2
    # v: ~" Q: |/ H
  81.     @hp_height = @hp_image.height / 27 Q8 a6 F# _1 j" X9 s' b9 @
  82.     @hp_width_old = @hp_width
    % v  B/ N# {+ Y  }1 Q
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    " f4 h! f% K. e- g
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) & b# ^: s  _5 b" j- t
  85.     @hp_sprite = Sprite.new
    ) D# w; p3 B. }9 ?' G! A
  86.     @hp_sprite.bitmap = @hp_bitmap
    % O0 H/ d  _3 ]
  87.     @hp_sprite.z = 50025 w1 N& T1 ^: o
  88.     #SP Border -------------------------------------------------------------------# z3 B6 p; j& y8 T# {0 y
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    ' v0 G+ Z4 o6 }  |/ z, J/ }3 S+ n
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)5 R* N& s, r0 P: w9 c+ B$ b3 b
  91.     @layout2_sprite = Sprite.new
    : ]# R9 U2 U) h* o# W/ ]
  92.     @layout2_sprite.bitmap = @layout2_bitmap8 M3 `$ x! ^1 \# w+ C4 `0 _8 s. I- n
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)8 r# y( I0 }. ^. T, R  L6 V
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      % U% l, F2 N5 C0 G# Y4 G
  95.     @layout2_sprite.z = 5001    7 |, {5 S6 \7 a* G- e3 k" U# s
  96.     #SP Meter ------------------------------------------------------
    0 D3 q! e6 D! Z7 Y& A) M
  97.     @sp_flow = 0. {6 h% Q; v) Q3 {" l0 n; {
  98.     @sp_damage_flow = 0
    - H1 i/ u) Q( h2 R
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")8 U4 R) u. `5 O: P% S
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)( }- H$ m# G6 |* d( l
  101.     @sp_range = @sp_image.width / 31 h' {  s* c& ~2 h7 A3 N3 c5 F
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  9 O' |- f- y* r! e; E
  103.     @sp_width2 = @sp_range / 2
    , \/ w. ?  `' Q- p
  104.     @sp_height = @sp_image.height / 21 B4 A1 O# h- L+ b: s9 S- @
  105.     @sp_width_old = @sp_width
    $ M! ]$ v  ?/ e& |6 f% }" b
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)' A) D5 Q* C" [6 A* q
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    / M6 N8 T$ ]" M9 _
  108.     @sp_sprite = Sprite.new/ C! F4 d! u, C% ^6 m% u
  109.     @sp_sprite.bitmap = @sp_bitmap
      ?+ u. a7 u# J2 D/ I" I
  110.     @sp_sprite.z = 5002
    ; P( D' T% I3 X. O' Q
  111.     update6 i( \; ^9 p( N: k
  112.   end# r( L/ x0 y  E% a) k9 S) u
  113.   #--------------------------------------------------------------------------) W" s5 l! _% r3 j& E0 O4 B
  114.   # * Refresh
    % y- p$ @9 q; F1 I' J( E
  115.   #--------------------------------------------------------------------------* B" i4 ^( j& O+ }* d3 k
  116.   def refresh
    1 s$ S! I5 R  P) i0 P4 V( s' m0 f6 k
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    4 p# \/ |  i) W. }  Z
  118.     self.bitmap.clear
    ) m, e( M7 _4 _3 |2 A9 R" ^5 h
  119.     @old_vis = self.visible  N" d, e7 h: J9 N2 y$ P
  120.     @old_sp = @battler.sp
    7 ~; P) E3 X& Z. Q( h- M* p8 Y/ X
  121.     @old_hp = @battler.hp" q3 A3 k1 _/ F& f* Q) z
  122.     hp_flow_update+ D- q( n8 L. ~3 n1 Z6 d) ?
  123.     sp_flow_update& F* P! f" F! L* Q2 ?) z1 N
  124.     hud_pos_update, ]  y8 V9 x: U3 k5 }; |5 O
  125.     visible_update' V: ]% X% S3 q# u# c
  126.   end
    / S: ]- v# F: N) D# }
  127.   #--------------------------------------------------------------------------$ ]0 q' t' u. `5 P3 Z: K& G
  128.   # * Dispose- J/ W8 v7 Q( b# l% R+ x  `
  129.   #--------------------------------------------------------------------------# u7 _  r6 ?4 P( Q0 w( i
  130.   def dispose- A+ Z0 `* ?2 g4 T; d
  131.     #HP Meter Dispose* H/ R  s1 U) ]* y' W$ F! @. N6 C
  132.     @hp_sprite.bitmap.dispose5 b+ j8 \2 ^% m" y. h
  133.     @hp_sprite.dispose; J/ _3 l6 k1 H" p% {
  134.     @hp_bitmap.dispose
    ) d! p( g9 C+ c9 d& }3 u6 l
  135.     #HP Border Dispose) ?0 `; h- L2 p5 [3 [
  136.     @layout_sprite.bitmap.dispose2 H( I3 I4 {8 o) R2 Y% v. d, Q
  137.     @layout_sprite.dispose# ~6 g9 \' J6 Z
  138.     @layout_bitmap.dispose* P+ R: T) s1 D9 o/ u4 d
  139.     #SP Meter Dispose1 Z$ n$ j; C6 l- P2 C' e9 q- c
  140.     @sp_sprite.bitmap.dispose
    7 T. E5 E7 ^- h$ N; C! V% \& {9 k
  141.     @sp_sprite.dispose
    $ d& G& l: L) {1 @
  142.     @sp_bitmap.dispose
    1 h7 W# K1 }; M
  143.     #SP Border Dispose
    3 W+ M# A% }9 E, ?
  144.     @layout2_sprite.bitmap.dispose
    8 i+ |3 H: A9 `7 s+ u
  145.     @layout2_sprite.dispose8 j  l) n1 L$ n# _
  146.     @layout2_bitmap.dispose
    5 a8 a9 A7 ?: ~8 C- O
  147.   end
    0 s8 i$ L4 \  K* t
  148.   #--------------------------------------------------------------------------
    2 E& m. E, |) T- [
  149.   # * Update! Q/ o/ ^, q- [& F* A
  150.   #--------------------------------------------------------------------------
      ~: q( L8 p' p7 l6 c9 `/ [; y
  151.   def update
    % Q1 Z4 ~( s1 {3 C% ]; U7 \3 r
  152.      @battler = @enemy.battler - z  q0 M5 ?1 ^
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?: h4 d# F% G5 U6 C0 r4 c8 [$ z% d
  154.      if self.visible" I8 X- Y3 _8 _$ l/ [
  155.        refresh# E( w1 p5 T$ A
  156.      else
    7 ^- p* t, G& n" j+ c
  157.        self.bitmap.clear
    : k- m% [/ N  P3 q1 J
  158.      end0 C$ t& E% {* S, C+ l+ x
  159.   end3 o. u) w1 O. Y6 n4 z
  160.   #--------------------------------------------------------------------------
    * w1 u8 S9 X$ `3 O/ j; o
  161.   # * Visible Update
    ) v- G+ s3 Q/ v7 l% F
  162.   #--------------------------------------------------------------------------8 j( ?* I; n! M' t
  163.   def visible_update, {* ]0 }7 Q. w( s8 D4 e! V
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true& v+ W; R. P: C% P% a
  165.        @hp_sprite.visible = false
    ' B3 H$ ]$ ~2 B
  166.        @layout_sprite.visible = false
    $ \% W8 U: ^0 \6 r9 d
  167.        @sp_sprite.visible = false6 W1 W1 h0 R: [7 @8 L5 k5 X
  168.        @layout2_sprite.visible = false
    - r: X3 V1 F3 P" m3 j
  169.     else! B! M5 \  l, x% A3 Z- g+ Q4 p$ S
  170.        if HP_HUD == true
    7 k) r' ?6 o4 L& e% {4 u) J3 p% X3 X
  171.          @hp_sprite.visible = true
    $ l% o% U3 u  @( E; s" a( e
  172.          @layout_sprite.visible = true5 P: H& C+ k: x
  173.        else
    2 ~" i! `& f+ K% Q8 X: I' H
  174.          @hp_sprite.visible = false6 E  J7 @3 [$ f
  175.          @layout_sprite.visible = false
    $ c3 Z# d* x- x$ A" a" g0 H/ v
  176.        end  ! V) b$ r# t+ {* T3 J1 x1 y
  177.        if SP_HUD == true
    % q, d# u+ L5 L6 q
  178.          @sp_sprite.visible = true4 @8 U# d5 T+ s
  179.          @layout2_sprite.visible = true
    3 R5 \. [8 S9 r
  180.        else4 `* F1 O6 n: r4 V0 U
  181.          @sp_sprite.visible = false
    0 m! J1 D/ a% R& g# b/ f1 x
  182.          @layout2_sprite.visible = false
    3 a# g0 W6 S7 F3 u8 s) c1 Q2 j+ @
  183.        end 1 x0 [2 F# \4 h5 C. b
  184.      end  
    1 R9 j: H& [- _$ g  K- m4 y) V2 o
  185.    end
    + k# B) f8 X2 R4 v* }
  186.   #--------------------------------------------------------------------------- ?; w! K( M* b7 g! ~$ e
  187.   # * Hud Pos Update
      ?, o- V! Q5 v0 B( N' R7 [
  188.   #--------------------------------------------------------------------------
    + A. L: ~4 K' p- S
  189.   def hud_pos_update
    * }9 d+ T2 g0 ^( t: E  r
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    8 E- i  u, o! R. f8 g2 R
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  5 G; `! d" K) A" [& P2 Z
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    1 c. @1 Z* T9 s  d3 \
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y ! A0 ]/ e% ]2 x
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    2 i4 @# q9 Y: B; f; {/ D+ q8 t
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  3 k$ ]; u; v4 K8 ~# ?$ ]) x
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    ; U6 _$ ^) Y: ^! [5 [5 Z
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     8 d& Q7 x" V3 G$ x
  198.   end  " N3 l! m! l. _
  199.   #--------------------------------------------------------------------------
    $ C. N/ x0 Z. V- A; Y: o
  200.   # * Hp Flow Update
    & z' ^5 P9 S5 l$ a# n
  201.   #--------------------------------------------------------------------------
    8 v% E' m- T! b5 T  o3 i* W, |
  202.   def hp_flow_update
    $ j/ O$ u9 S9 m7 F
  203.       @hp_sprite.bitmap.clear
    3 x6 \7 @4 w8 t+ V, {( C
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  . P4 ?0 @/ i: |/ d0 M5 o
  205.           #HP Damage---------------------------------4 a* D, E+ i8 c5 N* P
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    5 @) `; _- M6 g4 s1 ?
  207.           valor = 0.5 if valor < 1          . A: G, {0 f9 ?
  208.           if @hp_width_old != @hp_width
    . n; i1 H) F5 J  t  }( b
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  5 L( k% `  e! P) m/ o, y( R" `
  210.           if @hp_width_old < @hp_width # m" N1 s) k! ~+ j2 L7 ~4 J$ s) w
  211.              @hp_width_old = @hp_width
    , [! A3 c. f& @2 O9 w
  212.           end      # s, f3 I- t- G9 x3 B) Y  ?/ v
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)0 L2 Z/ `; Z/ _2 g; Q" O
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    / G) T5 Q0 |) d% G) p
  215.           end        ( ^) |2 x. I- ~+ e3 d4 N  ?6 }) m
  216.       #HP Real------------------------------------
    0 L1 `4 ~/ M; R2 X, k& W8 l
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    ! s; q8 H6 S$ e, P
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    : ]! F4 u2 f8 ]1 _$ E5 d  S
  219.       @hp_flow += 2    e6 z3 M. {3 S0 I
  220.       if @hp_flow >= @hp_image.width - @hp_range4 Z+ J" s4 D# ?8 ?& @& h) ^
  221.          @hp_flow = 0  
    3 g6 ~  ~& r7 M! Z6 j# {) v$ T
  222.       end* i$ n* Q: u; Z6 U; n
  223.   end    ( W5 ^/ d- r- x, X% E
  224.   #--------------------------------------------------------------------------
    3 q6 Y  k5 H. E/ t% i
  225.   # * Sp Flow Update
    ( o' h" B$ {& v2 ]" t
  226.   #--------------------------------------------------------------------------: ~$ t8 W4 P0 U% p
  227.   def sp_flow_update& l, _# S. P- A9 \  g, B$ F
  228.       @sp_sprite.bitmap.clear8 ^5 w& Y/ C" V% Q# b
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    8 V% g, A  j; t4 y" F9 j2 T) A
  230.           #SP Damage---------------------------------
    6 f! @. J4 x* Y7 G6 Z. `
  231.           if @sp_width_old != @sp_width
    ; _) o# ~) x) D+ u! B
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100. [% j- m; Q2 j! t6 F
  233.           valor = 0.5 if valor < 1              . o! E) F& x3 d3 [. c
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    ) t- O1 ?8 X6 J$ B" @
  235.           if @sp_width_old < @sp_width + l3 i/ {; i7 v. `$ U2 X  X5 H1 g
  236.              @sp_width_old = @sp_width5 S$ p- R7 D+ B4 K
  237.           end      9 {) o" u+ Z9 t) p
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)+ V' l6 y1 R6 [; z2 Y' n- ~
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    ! ?4 h( [' |! r6 F
  240.           end6 `: Q6 r1 C$ v5 A
  241.       #SP Real------------------------------------* ^8 B0 J& L9 d! ~9 b0 R; a+ ]* X
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    , i+ x" y: [! A
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    - s8 K* I6 v- c: M
  244.       @sp_flow += 1  
    : h1 W" N- F/ @, X
  245.       if @sp_flow >= @sp_image.width - @sp_range
    " t7 [! w( Q% _7 _( n
  246.          @sp_flow = 0  ' [5 c, Z4 D' f
  247.       end
    - C/ k& [3 [+ l. A8 C; j. \
  248.     end            
    , ^( ]8 ^, L3 W& B' a
  249.   end0 r! v8 ~  j& N/ R
  250. #===============================================================================
    1 a, g/ @8 S' |5 h
  251. class Sprite_Character < RPG::Sprite
    4 s9 m9 {. b" m: m  B  O# G
  252. #-------------------------------------------------------------------------------
    * f: v3 i9 C1 Y% |" Q
  253.   alias :xas_emini_hud_init :initialize2 u8 f6 Y) P; P% `! x9 w9 O
  254.   include MOG
    / p: o5 W6 q: z9 K- m3 A( K4 U
  255.   def initialize(viewport, character)7 Z& }& E# _5 J4 f7 C. h/ B7 `* e
  256.     xas_emini_hud_init(viewport, character); m( `$ L6 Y, m8 D0 ]" P+ k! d
  257.     @viewport = viewport
    + J6 `4 s( i& `5 R+ a% u
  258.     return if @character.battler.nil?
    % O8 l" L" @* P0 a  Q
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    + C! ]; s5 ?% }: p0 F# B1 ]2 O) q* d3 T
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    2 B$ T# h% q, o5 q: q5 z, ~1 Y" u! t
  261.     return if @character.battler.is_a?(Game_Actor)
    ) d" M2 E# X' @- N* @& l
  262.     @bars = S_Hud.new(@character, @viewport)+ F4 @. C* C0 {* A* F2 F
  263.   end  m/ Z2 O4 Q& B3 T+ N" A
  264. #-------------------------------------------------------------------------------
    3 l" Z: q7 g! ]/ s
  265.   alias :xas_emini_hud_up :update; C7 {/ c$ `; X0 W; r
  266.   def update
    8 \, u- {$ Z, a1 Z
  267.     xas_emini_hud_up3 K+ i6 |5 [; L  Y# [0 ^: `) H
  268.     return if @bars.nil?
    $ _5 v! k: Q4 x  E0 N& A7 S7 W
  269.     return if @bars.disposed?
    . A8 q* ^2 o7 I( ^/ P7 k' s
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    2 R0 p0 Z5 x4 T$ m6 N5 W8 H
  271.     @bars.visible = (dis <= RANGE)
    / O2 ~' N4 n3 t
  272.     if @bars.visible
    . U1 x; P+ W/ q* ?
  273.       @bars.x = @character.screen_x# - @cw / 4; i$ S; d# E% O4 |8 W$ Q2 \; @
  274.       @bars.y = @character.screen_y# - @ch / 4
      @" {. F: V$ |& m
  275.     end
    ; t/ L1 ?/ X! ~! E3 {9 S/ A/ K4 k
  276.     @bars.update
    3 g3 S- X% I. v( d5 P) }& I- d( h
  277.   end
    4 x' E% B, H! L4 s
  278. #-------------------------------------------------------------------------------: z/ ~" ?: Y( ^! z3 B4 U) B9 X7 \. j
  279.   def dispose' |/ _8 H3 [5 O
  280.     super
    + u8 a- `3 _6 A; U5 L& {
  281.     @bars.dispose if [email protected]?4 ~* I. o8 ]# u
  282.   end9 ?  u, o4 q) P7 O: ?
  283. end) W9 A; F0 d) }

  284. 8 \8 {' }5 ^, C5 O+ T3 d
  285. $mog_rgss_s_hud = true
复制代码
+ ]8 k) {! n/ a5 r4 M9 ^
( N5 j$ B: H% [5 M, e6 n: g" F

! [) f: X% N. v* a: q上面所說出錯的203行內容為
+ ?* a7 M1 s' e& h3 C& e- I# @@hp_sprite.bitmap.clear
$ X7 f( r8 R9 c2 b: @. y
, s- P( Q1 p; k8 G4 @5 ^# U想知道怎麼解決
( ]5 [# K  j/ r% W! p7 I/ u/ \" {+ f4 T. B" ?
該腳本支持3.82) N3 C9 j: m3 m8 Q! ^8 ^2 U
6 }* N7 `3 r8 |; Q  D+ {, D' v
下面是圖檔,要塞在Windowskin下
/ s# b8 q7 l' p; E* K, k( @# P! t) i
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) - g# W4 m0 t" C! F+ ^! F4 K0 O

/ \7 o* n) p+ |9 D  N0 Z. H2 }( C. N* }8 p& D  b) Z. C

  e6 o6 }3 y3 p% j
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适% `* O$ ?0 N9 V
结果尝试刷新了一个已经释放的图形
" c( F2 _* }8 S! y" o+ W% O* Z. S2 z* Z& I
) J5 w" k3 b) i- M" f

" l; n% T5 z# `7 L% m虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    9 ?3 I4 v0 w% V
复制代码
不要后面那个条件貌似就没问题了。" s5 d2 d2 y% G( {5 J: _! Y

8 I7 [! v( l9 y' S4 d  y$ m( C* {/ F- ?/ R; g, {9 g
. u. u2 t$ H/ i9 Z  C! w( M6 w
: s4 N/ ^1 r' t0 a0 v: Y% F

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
) o8 _$ V6 m9 P# l5 B貌似是释放的条件不合适
$ F% s, _) V' Q结果尝试刷新了一个已经释放的图形
- H$ S1 t1 O3 L5 ^/ N1 W
把後面那個條件弄掉後,的確沒問題了
! Y4 q) s8 `! k' [7 k目前從關頭打到關尾結束都沒再彈什麼錯誤
0 X9 V! k% U5 q$ x1 O非常感謝
: A% |" e6 d! p  |3 ^/ C/ |, x# U6 z1 x5 s; b
不過我是參照著別人腳本改的1 E6 ]" a, p! T& D3 _& [2 h5 D
他寫的條件式也是那樣,但我用他的沒什麼錯誤8 x) j  S! s% c% B3 g
不知道是怎麼回事' p4 l$ H- V; Q( l# U6 @2 u' b
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
" w5 i2 S( Q+ X) U我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events1 e& y! N9 C- ^* \
嘛..这个数组吧..我在以前试写队友的时候关注过一点
$ h9 I$ E% c" ^6 s9 v不知道XAS内部对它做了什么手脚还是为啥,
$ _8 q5 f0 X+ V总有那么一瞬间,没有被消灭的敌人事件也变成了nil! u6 |% |0 {( F7 |  R! F  w* w
8 l9 p2 S; t2 N6 M# Y7 J# y
$game_map.events.values[@enemy.id].nil?! k! w* ^% o& ^4 n% m& E9 Z
因此自然而然的返回true并符合条件把图形释放掉了+ ?7 a  X' G* v

. C; |8 y* S7 `$ K; O/ O0 HLZ应该有注意到吧,
$ {4 V, L- p1 {% H" V, A5 j0 O我测试的时候发现报错前几帧,图形会消失,
  y2 c  r( v) _7 e! l/ ^& v, m应该就是“误以为敌人被消灭”了。( X8 ?/ g( k- Z9 ^
/ u5 E0 @0 w3 `/ J) G
受限于个人水平,至今无法找出$game_map.events的真相..
& I5 Q' q& T3 \) p
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
: f0 \0 [6 O' h% R% x3 a' J$game_map.events9 Z! ]( O! G4 s- T/ b4 {# q
嘛..这个数组吧..我在以前试写队友的时候关注过一点
% Z5 y$ _" ]% B2 w不知道XAS内部对它做了什么手脚还是 ...

' H% L, J9 x9 |9 C當初我把那個條件式看了三遍,都不覺得他有什麼錯$ n. ]; |+ F4 X9 ~" O$ k4 q
原來還有這麼深奧詭異的事XD0 R, R% b! }  T) Q5 A* G3 [; G
# g/ [( [7 T5 g1 V6 m7 h
錯誤發生前的確會有圖形沒顯示出來
4 c( r( z2 z  v' Q不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...2 h" [5 R& l$ p. I# z0 B0 o
沒想到居然是詐屍了XD0 u) e8 @+ y/ A& Y8 p! C5 E5 J1 S
: ~( E4 S5 A7 h1 N- t
不曉得3.91有沒有修正這問題...
2 m2 V7 a& v4 @% ^  K, H- W/ C* k不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。  C" e: C( b; X- C4 D
  i% m$ H: C6 _( E4 U
的确
7 v' _. a2 g5 A! B- p用惯3.82之后想去整3.91觉得压力甚大..5 F+ h) }% Z9 x) d" k
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。* O2 J% a. _" O- J- z' `1 b
( g" |# |2 F; i( R6 C: {
然后加一个判断处理的。(我记得有一个disposed?)




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