Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條9 l/ y. n: t9 D9 B3 V3 }
會在每隻事件怪物的腳下顯示" z# k( |! l( x
問題是不知道為什麼( W  D$ b. q0 c% n5 L: d
有時打怪打一打會跳出8 j2 ]+ l4 M( D) ^6 R! C1 G) Z
---------------------------9 t, {$ l) F; V5 l7 H
XAS
/ G3 G* {- v" m% V- m8 K% M7 v---------------------------  ~/ s4 h/ ^4 U" k: ]
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
$ Y8 y; D0 j: f  b' \* _2 ^
5 m2 J0 `# O) bdisposed bitmap
) o. b! ^$ R- ^7 B  y5 j---------------------------1 Y3 b4 Y4 ^" Y5 d
確定   
0 Y1 ^. h' q5 ?$ ^2 p: ?---------------------------
: a( M+ y. ~6 V8 K1 t4 b
, `( s$ q, Y9 ]! j$ P& {/ _這是腳本& ]& s; q; N0 f# w6 `0 {

) w; V- ]; p4 t3 u5 z; _; c* y0 z
  1. #===============================================================================9 U& X# I: N! p3 n- z) ?
  2. # MOG - s Hud 1.0      
      `4 L8 J  B% s' J+ \
  3. #===============================================================================
    6 {! ~1 F$ G( O
  4. # By Moghunter
    ' C+ f" w, f3 V  L6 b5 j+ A4 _- {
  5. # http://www.atelier-rgss.com( K' R  J" t( P  {* V
  6. #===============================================================================
    1 s* Z7 M5 {  u
  7. # Translated by Calvin624
    , B; ?& ^1 r5 `( p
  8. # http://www.xasabs.wordpress.com
    % r' r) }# F, y; G1 c
  9. #===============================================================================
    - L- Q$ y% }1 B, j3 C
  10. ###############################-DESCRIPTION-####################################3 ?" _5 I* T$ I% P) w
  11. #===============================================================================9 ~" B' k; C& ^$ g
  12. # Personal HUD – displays the HP and SP below the hero.
    8 ^  `. F4 A! @
  13. #===============================================================================, x( i  L! P! t  b0 b' {
  14. #$ l& ?1 T( |* b7 A3 m
  15. # Graphics required:
      g8 |$ X9 T' K9 s. U  J: i
  16. # - H0 N! M0 |, B# d1 X" H3 v
  17. # S_Border_HP_Meter.png) B" T- G2 v1 @) d+ X
  18. # S_Border_SP_Meter.png( [) Z, t- s4 x
  19. # S_HP_Meter.png
    4 p. x8 r* l; \& e
  20. # S_SP_Meter.png
    . s; V7 F  ?( P, P7 S
  21. #: U6 d+ w% B2 Y5 f, D
  22. # All images must be in the Windowskin folder.
    3 d9 I, L: Z+ t1 y
  23. #
    * I6 S& k, z& ?+ V# g' P8 h5 ~
  24. #===============================================================================5 ~: C2 j! r# D$ v: j$ T
  25. module MOG+ W! m# a' n! Q1 \7 L2 c
  26. VISIBLE_DEF = false  
    9 e( Z4 E% y$ h; k. |; @5 K
  27. # Show HP meter?1 _' k& o. g5 |: x2 H+ K1 p$ j# n
  28. HP_HUD = true
    3 t' @6 t$ p6 w( o/ Z4 M
  29. # Position of the HP border% w7 _9 ?+ W8 `! O
  30. S_BORDER_HP_METER_X = -2
    2 }7 M5 t! m! K
  31. S_BORDER_HP_METER_Y = -2  
    4 L) ?7 c* D+ e
  32. # Position of the HP meter
    / h0 K6 m4 n2 w1 T+ [
  33. S_HP_METER_X = 0
    - {2 O" H* n  r) B/ R" J
  34. S_HP_METER_Y = 0- b5 r0 y" z+ M; C1 K
  35. # Show SP meter?) J' k. {* j/ `, n8 X' f/ w
  36. SP_HUD = true
      J4 h) g4 l& E  V* {
  37. # Position of the SP border2 T2 P. e% }0 s* Q1 j$ [9 W
  38. S_BORDER_SP_METER_X = 0
    " C) S" P7 K9 H9 m6 c( t: I
  39. S_BORDER_SP_METER_Y = 10
    4 G! G+ ^7 Q  {3 Q; d8 x7 \
  40. # Position of the SP meter
    - l' h+ m, o9 n' s. v, g
  41. S_SP_METER_X = 0
    1 E, h* z4 A0 W0 U8 z
  42. S_SP_METER_Y = 10
    ! d% g7 e" k4 H" E/ c. V
  43. # Switch to disable the HUD  P0 A9 k8 p: _6 J  d
  44. DISABLE_SHUD_SWITCH = 5+ }9 I; S5 I1 ?9 b* O) Z
  45. RANGE = 203 c4 ?& G1 F% [5 I( w" c& p
  46. end, i& p! `" r2 W% a# f4 S  ^
  47. #===============================================================================* z& m/ T/ B+ {) p
  48. # S Hud
    " j) Q" w6 W& p& p% K
  49. #===============================================================================
    ! r9 P1 J% o* ^1 ]9 u' d
  50. class S_Hud < RPG::Sprite3 F+ T* A) z9 ?, d% j
  51.   include MOG
    * _- q7 \0 x7 p, d0 l4 S1 |) E
  52.   #--------------------------------------------------------------------------0 E' E' ~- x. w; b* z
  53.   # * Initialize; F3 g4 j& Y/ r: [! I( b" m
  54.   #--------------------------------------------------------------------------$ e6 Z6 A! U* J4 F( ^' O% }
  55.   def initialize(enemy,viewport)
    " s" W' n  T' @8 w' ^6 E
  56.     super(viewport)
    ; z; Q9 {0 r) ~9 t0 \3 L5 }
  57.     @enemy  = enemy
    - o: N7 o( j8 K2 c& ?
  58.     @battler = @enemy.battler) o0 K' D9 S4 H$ V$ R
  59.     @old_hp  = 0! I1 B) x. \2 i- p. H% z
  60.     @old_sp  = 0
    # `7 O+ v# b  q1 v0 S7 x$ K" M/ `7 c
  61.     @old_vis = false
    % n5 @9 a, n5 q* a$ \
  62.     self.bitmap = Bitmap.new(100, 100)
    ( q  |6 H4 t2 s
  63.     self.visible = (VISIBLE_DEF)#false
    ' E$ w1 A8 q; J# E" l) k
  64.     self.z = 100
    * J( s& ]4 z" W6 Q: o" s
  65.     #HP Border -------------------------------------------------------------------/ k5 y% F. J" z! L% f+ T3 m
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    , Q0 Y  w( P3 M6 b, X. M5 o
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)# m1 \6 ^* i) M8 T! q
  68.     @layout_sprite = Sprite.new
    7 E/ y( z- P# T( c) [/ k& G0 F% M
  69.     @layout_sprite.bitmap = @layout_bitmap
    6 f% m  ?" r- p! v+ K* |$ K9 [
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)7 p$ T% W8 t$ |( ]9 j6 S5 d$ F9 B4 i9 p
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      : o$ `/ V& F/ a7 O
  72.     @layout_sprite.z = 50010 U% o/ j& \6 I+ X( Y0 n/ @! o
  73.     #HP Meter ---------------------------------------------------( _( y! c( F! g) l! s
  74.     @hp_flow = 0
      M  t% R( o/ G) L7 [& v
  75.     @hp_damage_flow = 0' r1 ^' r' h% [7 w, j
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")7 W' q5 k4 B. i1 j2 K" V
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)* ^% U2 [" t8 S9 p
  78.     @hp_range = @hp_image.width / 3' {1 z8 i: f; N; ^/ w1 o7 q
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  3 n, j# T% R5 K. C( q
  80.     @hp_width2 = @hp_range / 2% d1 ^4 w1 Z/ x& A5 ~6 ?$ q
  81.     @hp_height = @hp_image.height / 21 n2 q( ^5 c* E) L/ }
  82.     @hp_width_old = @hp_width
    ( e" V9 t/ {. x2 U
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)( Q, m: g/ I) ^! W5 D. Q
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    / U6 h& D' `, T* W" m* X0 q3 x
  85.     @hp_sprite = Sprite.new+ g: a7 F2 h* e( P4 R: v8 k0 I+ h
  86.     @hp_sprite.bitmap = @hp_bitmap
    . V0 h& s, A$ h9 }
  87.     @hp_sprite.z = 5002
    " {; R3 V: ^) t
  88.     #SP Border -------------------------------------------------------------------
    8 x6 _  s  |. @* v
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")4 S5 G; G# x' q# ~
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    ) u2 _- f* P! J3 u% C$ G* ]
  91.     @layout2_sprite = Sprite.new
    4 B6 d( N1 g. f4 ]* A/ d. e
  92.     @layout2_sprite.bitmap = @layout2_bitmap8 E9 [2 W3 V& ?+ V+ ~
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height), k/ N1 v% M3 _1 _* _8 T9 f
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    % \- E- P; b3 o% Z
  95.     @layout2_sprite.z = 5001    ( V  R8 O: X2 a7 Z7 `1 b
  96.     #SP Meter ------------------------------------------------------# D$ m# U0 T' V* o  L2 q* |
  97.     @sp_flow = 0
    3 @* r) Y5 ]% [2 K' I6 ?
  98.     @sp_damage_flow = 0
    2 d) O1 a( [4 }" u% t5 X
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")# H4 V3 M% Y- }7 w) I
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)! ?4 ?) \: _5 \& Y- j
  101.     @sp_range = @sp_image.width / 3
    % U' \; I8 z  K" F3 }
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    & ?" f) D; |( B* P1 y: E0 S
  103.     @sp_width2 = @sp_range / 2! h6 `2 J, m$ g' l4 y, E) T
  104.     @sp_height = @sp_image.height / 2) D" S# ^& [3 Y
  105.     @sp_width_old = @sp_width
    * z/ s# p5 s6 j- i( K- L# c7 z
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)% R0 I/ C9 J; ]
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)" J0 G0 W, m/ e! A2 @; W1 k
  108.     @sp_sprite = Sprite.new
    , s3 T" ]  j, ~1 ?
  109.     @sp_sprite.bitmap = @sp_bitmap
    " g. N1 F  H, M6 o
  110.     @sp_sprite.z = 5002
    ) Y1 H% P! c, p2 B! u
  111.     update
    $ u8 N3 j$ m$ x$ j, g% X
  112.   end
    / V& _" N2 w; k( v6 z' |
  113.   #--------------------------------------------------------------------------; x* g0 R9 N+ m; w
  114.   # * Refresh* S* e3 d; A1 j- o( t# V: f
  115.   #--------------------------------------------------------------------------
    + S+ u# Q( m; P1 g, m: g
  116.   def refresh
    : e- |( @8 J; K0 G& `
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible# H' c+ R) `' a. p3 V
  118.     self.bitmap.clear
    2 @+ b( r: z, H
  119.     @old_vis = self.visible
    3 B/ A# ~2 v) ], a4 v
  120.     @old_sp = @battler.sp" Q: f" e( E% |: \) T% K9 e4 ^0 V
  121.     @old_hp = @battler.hp. ?5 c9 ]" [1 d5 e
  122.     hp_flow_update; f- u" M7 a: ~9 i7 x* _1 h
  123.     sp_flow_update! W8 ?4 u, Q2 n% F5 a5 [$ u
  124.     hud_pos_update# k+ ?* `: n; U" A+ O
  125.     visible_update
    8 o4 f9 U4 ~) F  E
  126.   end
    $ ^2 @: s0 R: C/ W- u
  127.   #--------------------------------------------------------------------------3 S8 p: `  H# \; C- z' H
  128.   # * Dispose3 P" N" H& X6 \5 }& f1 b, H
  129.   #--------------------------------------------------------------------------) m- |& h3 S0 d7 r) J* F, K4 e& N% G
  130.   def dispose
    6 b+ C: X$ J! P) D6 J2 _2 o; n! ?
  131.     #HP Meter Dispose
    ; n7 A! D! u* k
  132.     @hp_sprite.bitmap.dispose
    " e7 R! _3 K- U9 W0 g1 Q
  133.     @hp_sprite.dispose
    . I' Q- l! X  I* ^/ D' d* r
  134.     @hp_bitmap.dispose
    9 h2 ?2 O& E7 F
  135.     #HP Border Dispose3 W1 E( J2 b8 Y  J& X. w9 x
  136.     @layout_sprite.bitmap.dispose
    6 B, U: Y' m- L& g( \0 L
  137.     @layout_sprite.dispose& t. e* o7 P0 Y9 B) u6 X& ~- F
  138.     @layout_bitmap.dispose
    ' g+ [! K: @! L  z! i, I! @
  139.     #SP Meter Dispose; G# b' R: k8 ]7 k6 O7 Z, L, m
  140.     @sp_sprite.bitmap.dispose
    ; |" n" b/ {0 O/ }
  141.     @sp_sprite.dispose
    - E# s1 C1 A5 a( f3 o* W
  142.     @sp_bitmap.dispose
    , J# h6 G+ x/ q
  143.     #SP Border Dispose0 M# n2 X! w5 n- E7 ?# b
  144.     @layout2_sprite.bitmap.dispose
    ! l8 k7 T/ m. p+ L+ Y& b
  145.     @layout2_sprite.dispose
    1 o3 P1 S2 r& V  Z$ U6 j
  146.     @layout2_bitmap.dispose
    0 s& ^6 Y* ~5 ^6 _/ f) N9 g  V
  147.   end' ~( L- A( o7 z! n- A# ?  M
  148.   #--------------------------------------------------------------------------2 t2 p9 u' p0 J3 F5 Q
  149.   # * Update
      Q6 R/ \! s% t: r
  150.   #--------------------------------------------------------------------------
    9 g% b  {. w3 a5 B
  151.   def update) Q3 @, W% M$ P: Y/ L
  152.      @battler = @enemy.battler
    % K+ x4 k3 s" M6 Y2 ~
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    5 i6 }0 w/ B' L7 m
  154.      if self.visible% ~3 h/ X) O) a) K1 B- _% O
  155.        refresh
    / p8 n8 Z5 R2 a" w
  156.      else
    9 T9 f3 G; g' f& I% u. |
  157.        self.bitmap.clear0 z# p* j* i7 b7 x9 d
  158.      end( x  y, ?# B+ K. n% C. f
  159.   end8 W; x% V" _  l" Y7 w# K
  160.   #--------------------------------------------------------------------------! a5 V7 e: N' E; q3 o
  161.   # * Visible Update0 o6 B# X" I6 Z; T$ O& m
  162.   #--------------------------------------------------------------------------2 b' K6 O1 B: v8 ~
  163.   def visible_update8 d( p0 a2 n1 A" N) k7 s
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    * [" H  u+ Y( _' z3 D6 U% Q& z6 \
  165.        @hp_sprite.visible = false
    9 x, P7 A/ G, o, [9 H: k* K
  166.        @layout_sprite.visible = false8 K' p! o) i$ v: w; l
  167.        @sp_sprite.visible = false# U# D' [; H  K8 |
  168.        @layout2_sprite.visible = false2 V+ g$ q- O( S# h( r2 |
  169.     else% ?) j# L0 ~" P+ N8 r6 a1 R7 G
  170.        if HP_HUD == true8 f3 b4 Q2 ~6 f; m6 p7 m
  171.          @hp_sprite.visible = true* p2 v" \6 [6 _$ a5 m
  172.          @layout_sprite.visible = true
    $ ~" i  A' f/ _" t
  173.        else2 z5 o( E# O8 x: G1 F1 s* @. L
  174.          @hp_sprite.visible = false, r- ~7 B( d6 |) e( H7 s  z( R
  175.          @layout_sprite.visible = false9 N1 |' R6 y: H+ T* O8 ~
  176.        end  ; ?4 G! D1 R" B% V
  177.        if SP_HUD == true
    7 x4 d' |! a+ M) x9 f
  178.          @sp_sprite.visible = true
    8 D2 o% c9 s/ E" j3 j2 m8 g
  179.          @layout2_sprite.visible = true9 x5 U0 S; \( \; o
  180.        else0 ]1 n; a, i2 h* S* r
  181.          @sp_sprite.visible = false
    ' ?9 l3 I; E, x$ T
  182.          @layout2_sprite.visible = false
    4 w! q2 D  ~* a4 _6 @6 {% P
  183.        end
    4 L6 b4 F/ f- {" g# w9 \4 l, H
  184.      end  0 L+ B$ b+ C# e
  185.    end
    $ x/ z. C- p9 V. X% N! G
  186.   #--------------------------------------------------------------------------: C+ a) S" M/ H, A; F$ x
  187.   # * Hud Pos Update
    $ A9 [* l' f% B+ F
  188.   #--------------------------------------------------------------------------
    . I- f: G2 l! ?" u
  189.   def hud_pos_update# P( e) q) f# r* _5 {: c8 t0 g
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    : K. m& [0 V) b$ K7 R
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    8 l- U  D" |, ^) A
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X8 {$ ]0 i( F+ z% R; y& ?5 w& k
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    ! B' ^$ ~9 {' h7 i# N
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X6 {6 d! L8 y1 c  p- e
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    / b7 j  B" K& \0 e  l6 R
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    3 Z# o: c2 O3 \
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     # r/ ]5 C, m  _. _0 e& |1 q
  198.   end  
    - Q. Y9 \/ e& u$ I# e# K! \2 ^
  199.   #--------------------------------------------------------------------------( u) t/ Q" m& @" d) u
  200.   # * Hp Flow Update. _2 f: }, |- X2 v
  201.   #--------------------------------------------------------------------------8 o1 ~* k- F7 \
  202.   def hp_flow_update0 ]. P% n2 Q/ f, O6 z, v" n- g
  203.       @hp_sprite.bitmap.clear0 N2 a( F  C1 r- w8 e
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    6 y5 e" E& o6 Q7 m) ~  B
  205.           #HP Damage---------------------------------, ^  ~& n2 h' u! g7 k2 g
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    % R2 ?: N) Q$ f! b; C1 ?
  207.           valor = 0.5 if valor < 1          / W7 T& h9 v8 |9 A1 Z1 b1 w; m2 n( t. V
  208.           if @hp_width_old != @hp_width
    4 T, H% L. D. W
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  9 @( C7 _! c6 A
  210.           if @hp_width_old < @hp_width
    5 z/ P' E5 o: ^* y. k# D% p
  211.              @hp_width_old = @hp_width  B( \$ X: k6 {' Q  g
  212.           end      2 F) Z9 S9 b9 t5 y: u1 d8 \
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    1 ?4 M5 |2 F8 E8 Y# L" c$ g
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       & h+ `2 U3 \6 X
  215.           end        
    + F( u% ?0 \: v; [
  216.       #HP Real------------------------------------
    9 \) ?6 |4 r" k( o
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height); {. E% L2 G% ~" N
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
      V) @" N: d1 ]( l& b/ o
  219.       @hp_flow += 2  ' b: b3 e$ ~+ L3 J8 G' u
  220.       if @hp_flow >= @hp_image.width - @hp_range
    ! i* g  U9 ?+ I" g# m
  221.          @hp_flow = 0  $ X1 o9 z+ P& E5 @3 _: r
  222.       end
    - a/ J, i- Y9 T
  223.   end    & I5 l9 U0 e( n. {$ O' S
  224.   #--------------------------------------------------------------------------/ S3 \) M2 }. f; g+ o: {4 K( H
  225.   # * Sp Flow Update
    ; G1 A8 t) C# I" B" Y
  226.   #--------------------------------------------------------------------------
    - J8 i8 T- P/ {. a3 S6 U" o9 f
  227.   def sp_flow_update- S7 Y' E) U+ s& ]. M3 @+ Z
  228.       @sp_sprite.bitmap.clear; V+ c8 \0 d! m& L
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    # C& N/ P" u8 t
  230.           #SP Damage---------------------------------# b; X. h" Y8 B: \) X
  231.           if @sp_width_old != @sp_width
    6 X  |+ J) `  O; d4 ?9 T+ h# g
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    3 `; V0 {- Z, v$ ?
  233.           valor = 0.5 if valor < 1              , q! A8 K0 U* O0 x! _) N8 s0 B% Q. a5 y1 v
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    1 J1 H) ^! B& C; z
  235.           if @sp_width_old < @sp_width ( j3 x! D0 ?1 r/ E- U
  236.              @sp_width_old = @sp_width
    4 i1 s8 |3 v. u
  237.           end      
    # ^  h0 S& V& h! t: }# c
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    8 w- r4 r# C5 C0 O
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    ( M- I% m/ p$ i' g
  240.           end, D/ L8 q0 V2 s
  241.       #SP Real------------------------------------! ?$ [; P" t3 Y2 ?$ \3 ^
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)" ]6 T# d: W( W: ?
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ! P+ ]3 {' X- y* u0 j
  244.       @sp_flow += 1  ! q4 S( B; ]6 k
  245.       if @sp_flow >= @sp_image.width - @sp_range
    ; b: H, X0 d& \! _) \3 C
  246.          @sp_flow = 0  
    5 m0 a' G* A5 i3 c& S! W
  247.       end; ^3 l3 ]/ C/ M% w9 z3 N; A
  248.     end            9 O- S1 j( i: N! D
  249.   end. X& H! r) m) w2 v
  250. #===============================================================================
    - E; u0 K/ I7 g; R* P
  251. class Sprite_Character < RPG::Sprite$ Z8 i1 d: b* A+ V, o: u
  252. #-------------------------------------------------------------------------------$ |1 g2 [+ M9 v! f+ B! H# b
  253.   alias :xas_emini_hud_init :initialize
    . p$ X$ d. D; b; M0 M
  254.   include MOG
    4 M6 `8 Z- w0 o$ O8 A% Z& _- q  l
  255.   def initialize(viewport, character)
    & D* H4 D" i8 y, v" A
  256.     xas_emini_hud_init(viewport, character)
    3 q/ k' t' u2 T4 ^# T( M7 ^
  257.     @viewport = viewport: p! f  J: T- U# ^
  258.     return if @character.battler.nil?; ^3 {) e% x- I8 O2 \# h) H
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    & @3 w! ~3 l  t" V$ Y% r
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)3 q$ W2 u8 T4 k) T9 S
  261.     return if @character.battler.is_a?(Game_Actor)3 O6 J) W8 k1 ]  I! W# |" D
  262.     @bars = S_Hud.new(@character, @viewport)! p* H. d. k' H- e4 _' z" O+ m/ O
  263.   end
    - L/ U4 ^; ?, T- U1 y
  264. #-------------------------------------------------------------------------------
    : I. w' c' S0 {& B4 @" @
  265.   alias :xas_emini_hud_up :update
    / f; N# K. |2 @. r- t3 W
  266.   def update
    ) K9 `( R+ b* ?5 z1 C/ Y
  267.     xas_emini_hud_up( G' ^$ {; y5 d/ t4 ~
  268.     return if @bars.nil?4 ~# G4 n' w' o2 L2 p0 H! ^. k
  269.     return if @bars.disposed?
    2 n1 V% d5 [9 Q; `8 J
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    5 W: f% h5 ~6 M- B+ K$ h$ G
  271.     @bars.visible = (dis <= RANGE)# m- D9 C9 C! T0 U: S
  272.     if @bars.visible' N  p: U# U, t( j
  273.       @bars.x = @character.screen_x# - @cw / 44 S. n8 C) C: P$ L& a7 N+ f
  274.       @bars.y = @character.screen_y# - @ch / 4
    5 M' J$ f0 X6 o
  275.     end1 n8 r" j$ y& e
  276.     @bars.update. D) p% t7 u8 P: _5 o6 A& t; x' v
  277.   end& O7 }. n& @0 W- R
  278. #-------------------------------------------------------------------------------3 R5 E0 {/ i2 G$ v6 K) E" f1 @0 E
  279.   def dispose
    0 G2 I5 A; I; S3 N! V0 O
  280.     super
    9 k5 ~6 q3 y% b) K: P, j6 z
  281.     @bars.dispose if [email protected]?
    : m2 B) X' L8 }# K, ]4 P
  282.   end
      I4 M, ?( \/ v1 s
  283. end
    ) S6 H! X8 n. r; F, f0 w
  284. 8 T* u+ `8 n3 F" `, P" S2 y  K; ?
  285. $mog_rgss_s_hud = true
复制代码
! I2 j  J  a( \- M" {- y

6 \9 e6 M- W+ {. d2 Q# i. v8 `  Y0 A4 R1 i% i& S4 `! f/ `
上面所說出錯的203行內容為9 L. l3 Q% }; n6 n
@hp_sprite.bitmap.clear
0 J: ~; X" K' M; L* R
( w. L  O# s1 g8 x8 D1 e想知道怎麼解決+ z2 ^  E, H" `4 j8 z

1 v9 Z+ c) [1 v8 N該腳本支持3.82
3 z! d0 K2 ]; }4 g5 S1 p4 D* U, S3 A% v( m% M* ^
下面是圖檔,要塞在Windowskin下
4 c1 e: B7 n! y$ ~5 ?4 N9 w) O
$ D' o% f6 f3 L6 N: S6 k S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
% K& @) O- J2 ]1 ?% o' Y$ d
1 q5 E) X2 {, t* S4 T5 J; Z' |) g! C& l
" N* v0 i% D; `

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适& u3 ~) i# |1 q0 z; i% T" c7 V+ x
结果尝试刷新了一个已经释放的图形
' D0 M) z  g& M& ~$ l+ s( C- b4 y
2 r, `; c6 \( O. L8 K
+ A* p1 [: Z6 K+ I. h
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    , h8 Y. I8 H/ Q0 z+ q/ C* a
复制代码
不要后面那个条件貌似就没问题了。
3 A: ~# N# H" S3 n% l8 ~7 M, M9 e1 t

  D. `/ K# {6 d8 V2 q& _2 T   O% u4 a/ I$ m. X# J

+ D* E7 R% p3 z% Z7 \, H0 L
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 % w2 G' t% I1 }8 ^7 x
貌似是释放的条件不合适1 B" J( y" o: e! {. Y; ~; ~7 `* m
结果尝试刷新了一个已经释放的图形
2 h$ M1 l0 W  y0 e& \- j
把後面那個條件弄掉後,的確沒問題了/ ]; r3 G& Z% a$ ^6 A4 T. z% a
目前從關頭打到關尾結束都沒再彈什麼錯誤
! ]7 E% }: z9 s5 F( Y+ |非常感謝9 s. e& y; A0 a& w# t1 E1 p5 f$ V
" a, a- O& L. N0 x2 n/ u
不過我是參照著別人腳本改的
8 x& t+ I' Y2 s/ w" ~5 D他寫的條件式也是那樣,但我用他的沒什麼錯誤% l* x  W. u7 I/ v: |1 Q5 ^
不知道是怎麼回事
2 V' U* J9 S* |& H是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
# l# {. d5 f* O' {+ M! R我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
8 C6 W5 X0 r4 f3 J7 S; \嘛..这个数组吧..我在以前试写队友的时候关注过一点
' l3 c# H$ l/ Q; L不知道XAS内部对它做了什么手脚还是为啥,
# Z$ s4 ?, Z) t$ Q) N总有那么一瞬间,没有被消灭的敌人事件也变成了nil* y4 h, C5 u! v# Z. `

+ u3 g' J: k/ m$game_map.events.values[@enemy.id].nil?# ^! _2 r5 r, w
因此自然而然的返回true并符合条件把图形释放掉了
0 S6 o, z) v6 \" A. f6 ~# {; E- ^6 B+ |% t& p
LZ应该有注意到吧,& Y$ d- R# B0 ]+ A0 U
我测试的时候发现报错前几帧,图形会消失,9 i6 F( `: K4 u0 g$ r2 H# u- b
应该就是“误以为敌人被消灭”了。+ u8 r3 u5 \( l& R% t, e) g

$ T2 z5 H1 l; K6 w. k1 M: f受限于个人水平,至今无法找出$game_map.events的真相.." ^1 ~( r; Y4 H- s

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 $ z3 m7 X9 p! `' d
$game_map.events
; o. W! v# @3 w. [9 O; \嘛..这个数组吧..我在以前试写队友的时候关注过一点4 `( ^& s0 g; p4 q
不知道XAS内部对它做了什么手脚还是 ...
2 S0 F$ G1 k, C3 r; ?7 t4 D) R9 i7 j
當初我把那個條件式看了三遍,都不覺得他有什麼錯
0 [; L9 t8 Y, u$ C原來還有這麼深奧詭異的事XD. L) m% D1 g1 c3 I

' V) ]8 p/ q% l! L1 h0 p錯誤發生前的確會有圖形沒顯示出來
' [# L1 _6 R  K8 S) [不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
! R/ X& L) D6 w沒想到居然是詐屍了XD
; j. a7 N9 m9 b) R) Q
! }. t0 c% f: s1 Z: Z5 v+ s/ |不曉得3.91有沒有修正這問題...; k: N; ^8 Q, g9 }) r1 s3 U
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。5 A1 ^6 l9 r/ C' A& [* u

# ~3 R: C' g9 `9 n2 E的确# _1 ~+ k' b$ T9 s7 M+ U1 A+ F
用惯3.82之后想去整3.91觉得压力甚大..% J, w% c0 c2 h" N/ [
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
& w0 N1 e0 U" B: R( I, w7 w; d2 {8 g( _
然后加一个判断处理的。(我记得有一个disposed?)




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