Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條+ D3 p: `6 N; m2 c$ T' Q) ]8 f8 e
會在每隻事件怪物的腳下顯示
6 f- x2 L4 |  ?問題是不知道為什麼
$ n$ A$ `- E# Q! u2 \有時打怪打一打會跳出. b" c6 F% H$ u3 C9 b
---------------------------9 h# W% R; \2 S) `2 _9 J
XAS. m! f# S9 L- L( G% C; d# @
---------------------------
' ]8 V' V, A+ x4 g; P3 x2 ^& ?脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。7 |# t: K& c7 a* |

% |; O6 C! w% F' m6 g7 ?6 t  `8 e2 odisposed bitmap4 T$ c; m/ _0 ^, V
---------------------------
+ O/ s% X  Y) O7 K* m9 L  _. l  e1 U6 O確定   + H, y- u1 i# a' E: b  T) H: J
---------------------------
9 ?0 {; c) c7 }9 T( g( J  v+ R$ }* j/ k: v
這是腳本
+ ^( B9 x. J- J0 M4 Y3 e
. N2 S: ]6 x6 l: i
  1. #===============================================================================+ y4 B" Z* z/ b+ v
  2. # MOG - s Hud 1.0      
    ( X% _/ w+ m2 H  K
  3. #===============================================================================" m  m& j  o& z+ ~& o6 D/ d: Z
  4. # By Moghunter + z' W( y" l) t' u/ [
  5. # http://www.atelier-rgss.com
    / q: J9 n8 o/ s$ b; b( A
  6. #===============================================================================! g6 B) W- z0 J
  7. # Translated by Calvin624 8 V6 B- M9 I5 K, Z$ I" @
  8. # http://www.xasabs.wordpress.com
    * c, `( K4 l; q5 b
  9. #===============================================================================
    ; q, a# J2 l$ |. n
  10. ###############################-DESCRIPTION-####################################
    * j& A4 R% O7 H% }: s
  11. #===============================================================================( _7 k6 {8 m! t* k
  12. # Personal HUD – displays the HP and SP below the hero.
    0 c, k; P, t; o3 X% r$ {
  13. #===============================================================================
    5 {2 o9 m& y* t) n5 |  {& ]
  14. #
    5 A! A0 o0 m; B9 L7 o- b; @9 ~
  15. # Graphics required:
    % A7 k; H( ~5 o$ X% s" h
  16. #
    ; K" \) A9 R0 b: c, M+ Y# _
  17. # S_Border_HP_Meter.png* B. [' ~! z! g9 T& h
  18. # S_Border_SP_Meter.png
    ' N. E9 k0 g' f  d7 _0 b. c
  19. # S_HP_Meter.png
    5 P" `! n' q2 U& @% e
  20. # S_SP_Meter.png* @2 L7 e9 m% \6 ~6 i. X- t
  21. #. J+ N2 _" a8 |' z" d9 B
  22. # All images must be in the Windowskin folder." T' C/ F8 O9 j7 k; P
  23. #3 s. ?- ]( c. F, X6 R" l3 @. g) C
  24. #===============================================================================
    , c+ u; X/ C  w# z( [& p
  25. module MOG
    2 D( e4 y- a* s+ c
  26. VISIBLE_DEF = false  % t! v6 S$ k5 Z, u3 {5 i
  27. # Show HP meter?
    ' \# v" b# J( ?; h4 A1 C
  28. HP_HUD = true
    9 v2 O3 S! Z/ G6 ~# N0 p; E
  29. # Position of the HP border
    ) V  G' Y$ U& ~; G- X
  30. S_BORDER_HP_METER_X = -27 s9 c8 M- r7 u2 d- J
  31. S_BORDER_HP_METER_Y = -2  + R$ w1 X6 t! j& r& n
  32. # Position of the HP meter7 z2 \0 M8 L5 [; H* Z- m7 p( y
  33. S_HP_METER_X = 0: B1 a; o* G5 O, L  P+ v  T
  34. S_HP_METER_Y = 0, O3 Z. H2 ^  N% ~3 |$ W, w+ R" ^
  35. # Show SP meter?# o; ^. P% ]5 F" [$ L& d" ~7 L
  36. SP_HUD = true
    2 I( f& D0 w0 A) \
  37. # Position of the SP border5 G# W7 w8 e* X8 `
  38. S_BORDER_SP_METER_X = 0
    # ?( n* P. e) M
  39. S_BORDER_SP_METER_Y = 10
    0 _% z" o" ?. j( ~  H
  40. # Position of the SP meter
    4 P& _( x! I. k0 g. S% l
  41. S_SP_METER_X = 00 V+ J+ B/ q% U) z. p  E
  42. S_SP_METER_Y = 10
    ) ^/ Q4 w+ [3 E& I( ~
  43. # Switch to disable the HUD" P0 R  a1 C# N
  44. DISABLE_SHUD_SWITCH = 5
    & O9 ]4 R% `: U' ]
  45. RANGE = 20
    ( U4 F: q5 B1 {  Q& H6 H* b( D  n
  46. end0 ]( t0 g" j# G/ D' ~9 M% v4 q
  47. #===============================================================================' S* ^/ o; T" i+ G! a. N3 D+ Q
  48. # S Hud
      P3 e" I1 O7 Q  M1 M& T9 v
  49. #===============================================================================2 B' u  N1 W5 n6 N) C6 e6 A8 b
  50. class S_Hud < RPG::Sprite
    4 V) \. J% W3 {% o
  51.   include MOG8 Q+ A& _2 {* a& P
  52.   #--------------------------------------------------------------------------: K' \! @9 v' V$ F+ e% x
  53.   # * Initialize
    0 H+ s& h2 U; D+ P
  54.   #--------------------------------------------------------------------------- |: l. |- H! X4 @
  55.   def initialize(enemy,viewport)6 ?4 ^! r+ B$ A( j6 ^, z: e
  56.     super(viewport) % q8 q2 m2 d( H3 m7 |! t+ t2 E1 B* H
  57.     @enemy  = enemy0 }( {% S( b, n1 O' V
  58.     @battler = @enemy.battler
    7 I% Z6 r, J9 T  S( l& ?' v1 ~& {" r: h
  59.     @old_hp  = 0
    ; j- n% R  g9 f
  60.     @old_sp  = 0
    * F# K: K# q9 r, ~
  61.     @old_vis = false3 |1 f+ B' O: b/ r( {8 g8 c* e
  62.     self.bitmap = Bitmap.new(100, 100)
    ! u- {9 w: F( l3 G/ R+ Q; n4 A7 U7 l
  63.     self.visible = (VISIBLE_DEF)#false/ {+ ]% \) L8 v" |* n
  64.     self.z = 100
    5 ~+ G2 b' v+ s' ^0 {5 {2 C5 ~
  65.     #HP Border -------------------------------------------------------------------9 {9 n6 n+ X- o7 x7 R# R
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")* U# b/ ?8 V2 x
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height): W4 i+ V! [; ?
  68.     @layout_sprite = Sprite.new
    ( W8 M8 J5 T, `' ~6 U
  69.     @layout_sprite.bitmap = @layout_bitmap
    # {  r0 v+ u+ V9 n( {3 _
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    1 _) l' z: C; u6 z+ `
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    + O: G* X( ^2 r+ z( X# h; o- m
  72.     @layout_sprite.z = 5001' \2 R5 K: f5 B& E0 Q8 Z" ^) t
  73.     #HP Meter ---------------------------------------------------
      I8 a) H: g* Y% g  |+ k
  74.     @hp_flow = 0
    4 _9 H  f0 h$ P
  75.     @hp_damage_flow = 0. J: ]' X/ ?( T4 T
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    ) D- T; n) h2 w  o5 a
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)2 h( a7 ^8 l: P. _7 x
  78.     @hp_range = @hp_image.width / 3
      f0 R, r$ m# S6 E, l% M3 T7 U
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  # P: P4 M) x) ]7 `. j# \
  80.     @hp_width2 = @hp_range / 2' _: d/ v0 H! q' H8 Y# w6 u5 I! ]
  81.     @hp_height = @hp_image.height / 2. @( L  x' o$ m$ L1 n* ~$ K
  82.     @hp_width_old = @hp_width
    3 S4 f! `" d. S& p# l1 [+ }
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    8 c% n5 |) K) G; |% |
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    + Q+ l2 t1 @/ o0 \3 |/ M  A% K- Z
  85.     @hp_sprite = Sprite.new4 K, M2 o! q! ?* T  {! Q- G' W' {' ?
  86.     @hp_sprite.bitmap = @hp_bitmap# ~9 `9 `3 v+ [1 f
  87.     @hp_sprite.z = 5002& G9 [, B. z/ o. f+ h: E
  88.     #SP Border -------------------------------------------------------------------! R% |. w! D2 q4 O: h( b
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    + Q8 b# ^1 {4 C
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height), c( j3 [; V8 _5 S# n  X# [3 }
  91.     @layout2_sprite = Sprite.new
    2 g& b1 ]( K% ]; D
  92.     @layout2_sprite.bitmap = @layout2_bitmap: Z6 l5 S. k6 C! `2 P5 V4 d
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    ; A& `* p3 \+ ^8 z
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    0 T, t, Y% }. X
  95.     @layout2_sprite.z = 5001    4 q' V: {7 I4 S9 v% M
  96.     #SP Meter ------------------------------------------------------
    3 Z) [7 N+ P0 Q: |
  97.     @sp_flow = 0
    : l9 |0 S- j  Y; e
  98.     @sp_damage_flow = 0; K, `  B3 f- ^0 V
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")& p) d5 r' [0 p7 \
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    : Z! i+ B: l; r3 X& M
  101.     @sp_range = @sp_image.width / 3
    , o5 c, N$ o# f, o$ L) ^+ \( ]% p
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  ) A/ n, {) b5 p* s' v
  103.     @sp_width2 = @sp_range / 2
    : g5 f; Y; I5 ?# `
  104.     @sp_height = @sp_image.height / 2
    % J2 s1 J9 a( B. P! Z
  105.     @sp_width_old = @sp_width. x& S; O& p' e+ D
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height). l/ ^8 x& M1 W1 P
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)( r9 N$ A# c. N$ }
  108.     @sp_sprite = Sprite.new
    # @; q7 J- h, a# y
  109.     @sp_sprite.bitmap = @sp_bitmap
    - o# p$ _% g/ G  g: I  }+ i
  110.     @sp_sprite.z = 5002' w& h, W5 \1 K& l: ^) E4 Z8 H0 `' C
  111.     update5 N8 z0 }( T, k( A& T  \
  112.   end, P& m0 d; D4 d$ E. q
  113.   #--------------------------------------------------------------------------/ q& J. e5 F+ \
  114.   # * Refresh8 q4 I/ ]2 F; \% Y7 f
  115.   #--------------------------------------------------------------------------( T8 q6 x1 }/ r, ?! h. l
  116.   def refresh
    . S% Q1 S2 f% q
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    3 ]5 S+ ~! e0 B
  118.     self.bitmap.clear
    0 }& s9 J' n8 G  \' }: u
  119.     @old_vis = self.visible
    : Y4 K; K6 S" K' r  @# k2 S
  120.     @old_sp = @battler.sp6 T; }- Y8 I5 C# l; ?* g: e
  121.     @old_hp = @battler.hp$ n- ]. r- w4 f
  122.     hp_flow_update
      D# H$ a! N5 j% [: ^+ U
  123.     sp_flow_update
    ) R# y  O  ~6 Z. N9 Z4 I
  124.     hud_pos_update
    2 ~% q! ]$ w! M9 M: B" }
  125.     visible_update
    " x7 m% T8 @; ~1 {# o# a1 U* `
  126.   end
    # G. Z2 A1 O8 U- G, A
  127.   #--------------------------------------------------------------------------& E4 @" a' ~; C8 j) y9 w% ?
  128.   # * Dispose
    : Z2 ~% g# a4 m, V# Z3 n  H6 W
  129.   #--------------------------------------------------------------------------
    * n$ |1 W9 ]# b7 p/ R' Q
  130.   def dispose; o$ u+ A! z$ O1 ^7 g" f
  131.     #HP Meter Dispose
    " \+ v  X+ \& s3 N: T6 ?' X4 J
  132.     @hp_sprite.bitmap.dispose
      r8 R. x8 Y, F
  133.     @hp_sprite.dispose
    1 d+ X' S% w/ @- N' G3 E" }6 H
  134.     @hp_bitmap.dispose8 ^" h& J- o) ?* n8 w3 H
  135.     #HP Border Dispose- b1 F+ L( K/ ^, i/ K& s
  136.     @layout_sprite.bitmap.dispose
    4 A' Z, Z9 U' ^- e1 w0 N
  137.     @layout_sprite.dispose) {! d% A9 t& J; f# P* t
  138.     @layout_bitmap.dispose
    8 [2 \" ?! @! A+ r# S  `0 ~3 P
  139.     #SP Meter Dispose9 B: _1 W; C* m- U4 i+ z
  140.     @sp_sprite.bitmap.dispose
    & G# [9 c0 {% @
  141.     @sp_sprite.dispose
    ) M' l6 g8 b! _1 J
  142.     @sp_bitmap.dispose1 m3 f8 V. W) J: N* p- l
  143.     #SP Border Dispose
    , M2 n7 I. Y) Z7 x6 _+ ^
  144.     @layout2_sprite.bitmap.dispose' G( W# Q( L, |5 O# b8 b/ ^* g& r
  145.     @layout2_sprite.dispose
    6 ]# e2 N* Y& U& L+ ~6 C
  146.     @layout2_bitmap.dispose
    4 b1 K( T0 J# ~4 _, j
  147.   end
    $ `$ M( M3 s  Z8 ]$ n" q
  148.   #--------------------------------------------------------------------------
    , L+ K1 R# E0 O" F
  149.   # * Update* R0 ^# |" |  u* r- q" Q
  150.   #--------------------------------------------------------------------------5 E' K$ l  P4 z& R2 j+ a
  151.   def update
    " ?5 L5 K9 f! @8 z
  152.      @battler = @enemy.battler
    3 R- ]$ O0 n+ w
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    9 }% D2 g; p* i# J
  154.      if self.visible; R% j: [8 U* D3 Q- ^6 L" M
  155.        refresh- u% d1 C1 S* M% L# r8 x
  156.      else
      ]% _. Q4 I9 u3 s0 {+ U1 H
  157.        self.bitmap.clear7 q& Q( c5 Y) c2 P, _7 M
  158.      end" v/ ]& E3 \! T$ U1 X. S
  159.   end6 t7 I: M" m" i0 b; I( @& {
  160.   #--------------------------------------------------------------------------0 [# z9 i# {9 ?" A
  161.   # * Visible Update" r( @! \/ }: o3 ?+ c$ J7 t1 _
  162.   #--------------------------------------------------------------------------& Y* x' M( |% r/ w: b* a! H8 a
  163.   def visible_update% j  Y- O8 }  o: m; L' f
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true- q! H  I) e2 [; i3 C2 A5 D: S
  165.        @hp_sprite.visible = false& U" @8 t( K3 u. k2 N
  166.        @layout_sprite.visible = false. }! r: N: Q8 {6 O9 Y% p0 Z7 i
  167.        @sp_sprite.visible = false. O3 ^4 B) d  @6 M1 y; @
  168.        @layout2_sprite.visible = false) ?' ^3 P6 R6 B$ o
  169.     else
    ( k; |& Q5 [: M3 e6 Q' M
  170.        if HP_HUD == true) Y  K- k. e. B0 I: ~+ a
  171.          @hp_sprite.visible = true
    * J. \* n& y$ l6 _! n
  172.          @layout_sprite.visible = true2 ]5 t% ?; J3 e* S% V
  173.        else: ~# ]. }5 f$ X- o
  174.          @hp_sprite.visible = false
    : ?0 I# u0 t$ n; ?
  175.          @layout_sprite.visible = false4 ~( v+ t. p! z5 Y$ J: n& S- a
  176.        end  5 K1 R' \3 d; V  i) R
  177.        if SP_HUD == true
    ( a! g' C: e! ^2 L
  178.          @sp_sprite.visible = true
    , j& J, I& M6 Z; p' L$ A/ f3 L
  179.          @layout2_sprite.visible = true* `! P* R: x; N# Q5 f
  180.        else
    ( \9 v5 |& y: s
  181.          @sp_sprite.visible = false8 x2 r$ `8 e/ c1 v
  182.          @layout2_sprite.visible = false: Q/ b7 t( c, f4 x: s1 p
  183.        end . O# u; `+ H. c# c. K2 x- c& L
  184.      end  5 t; k6 [8 ^' b4 Z1 v$ v
  185.    end
    0 b" E4 V; l3 `5 G6 i* ?- V" m# o7 r6 c/ u6 q
  186.   #--------------------------------------------------------------------------
    8 {  Y' [7 D5 D. x+ [
  187.   # * Hud Pos Update3 Q) S; k0 O- D5 {/ S
  188.   #--------------------------------------------------------------------------
    ! {; P* b5 G8 n. r) W& K
  189.   def hud_pos_update
    1 w+ v- S" p/ J0 ]* p1 T0 _6 M$ o' Z& B
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X3 S3 J- F& H# V# g  b& a3 H
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    + G' ?# v/ ~2 D4 Q4 P
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    2 b% _3 G1 k0 P
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    / u" u9 u) B' P( D) v, L
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X6 _/ C- w) S* b$ ]' j$ }" A
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    $ d5 ~2 T) I4 ~* n
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    2 G5 `! L: i) v
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     , d4 T2 N0 ^( D
  198.   end  . `7 W! m, R- q* P: A5 h$ m: @$ [
  199.   #--------------------------------------------------------------------------
    5 m7 S, s1 u$ z$ o" ^* @
  200.   # * Hp Flow Update
    & ]  E# t- \- r2 E5 B% O
  201.   #--------------------------------------------------------------------------
    9 F" D1 T+ t5 a9 Y! g$ z) \
  202.   def hp_flow_update) X$ `8 J9 I- F2 p
  203.       @hp_sprite.bitmap.clear
    ( C; K) p' _7 o( m6 q
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    # O( q% g+ m7 Z9 K* R" }5 ~
  205.           #HP Damage---------------------------------
    # S- X# W+ V' L
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    # {' Y. o3 L! v8 o9 F6 E8 w5 \
  207.           valor = 0.5 if valor < 1          * `9 f/ R1 _# P$ `2 ?* h- ^$ i
  208.           if @hp_width_old != @hp_width! F8 c8 I$ {! I
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    4 H8 P" ^  d) m' ]0 x' j7 V
  210.           if @hp_width_old < @hp_width " _, ~. V& p; N8 P7 D; W: A
  211.              @hp_width_old = @hp_width
    : ^  U; g% b' _7 f' D
  212.           end      
    6 y9 ^- o" d& E# i( K; W; _* M- `
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)& x$ S5 B' Z" c. G, {( [, X
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    ' n* {& H2 Y  F+ n
  215.           end        
    4 p1 w& ~5 S  ~- k" ]) g; W& h1 d
  216.       #HP Real------------------------------------
    3 B' h+ t9 l( T: Q' Z
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)8 o# L; x5 u2 g" U
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          8 r1 w4 Z. K) ]
  219.       @hp_flow += 2  ) j0 Z6 w4 m; [- {% b# M
  220.       if @hp_flow >= @hp_image.width - @hp_range  r; s" M! f; F; B4 H0 o6 A0 G
  221.          @hp_flow = 0  
    ( f9 Q) K  w! y% W) N& G
  222.       end
    7 f8 W+ B+ ^* R( r
  223.   end   
    7 H$ f+ F6 P  P
  224.   #--------------------------------------------------------------------------
    & B3 j0 I6 V: |0 X
  225.   # * Sp Flow Update* w9 i4 W5 x5 W& L" e+ y
  226.   #--------------------------------------------------------------------------
    # I, |- `' w" v  [8 k
  227.   def sp_flow_update# @) \; [1 i) h6 a& \
  228.       @sp_sprite.bitmap.clear4 |; a. X3 j/ E- t
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp 8 K) G! [( U, G+ \7 ^
  230.           #SP Damage---------------------------------- i( L6 g' q4 F- [- \& ^6 p1 L
  231.           if @sp_width_old != @sp_width
    ; u- ^) z3 x; f7 Z3 X8 A0 z
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    & R# b4 T( K6 a7 P" F' P2 x9 ^' F
  233.           valor = 0.5 if valor < 1              
    ) b8 O7 P- Z( ]& }4 k' S
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  $ R% Q$ @1 h$ x9 ?" D; T
  235.           if @sp_width_old < @sp_width ( A# {1 W8 F- ?5 g% g# H
  236.              @sp_width_old = @sp_width
    7 [8 \! c% Q) ~9 x4 n- q$ U
  237.           end      ; C6 `$ k) m: G: t. W* h# i6 Y$ W
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    , [  F5 z$ a1 }( \0 _5 c$ x* r
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) 5 V. d) y, ]0 k1 D5 h
  240.           end
    ' G. t0 W6 B* n5 T
  241.       #SP Real------------------------------------) D* B9 k; L0 E3 O/ T
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    1 h. n: b, S7 f7 H  c0 @
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)1 D( ^% a( L8 P2 y3 c0 B: _9 ~
  244.       @sp_flow += 1  
    ' y& J1 T- d7 D
  245.       if @sp_flow >= @sp_image.width - @sp_range9 {: }$ [9 _& F- [* Z* q
  246.          @sp_flow = 0  ' V# \* g2 O+ x
  247.       end& W0 t7 p) r6 f' f9 Y* J
  248.     end            4 ]8 z9 S- `' Y( a- Z$ P
  249.   end
    6 z7 K4 P2 p1 y; ?
  250. #===============================================================================
    ' J8 ~. d) h5 i' H2 A$ O
  251. class Sprite_Character < RPG::Sprite
    9 q  q; Q, e5 k+ e6 s
  252. #-------------------------------------------------------------------------------% ]5 t$ S; d( f/ U3 d& b3 C
  253.   alias :xas_emini_hud_init :initialize1 m1 C) F3 I. Z: q! l$ d5 c* M
  254.   include MOG; h' g: w: [) P# z% x
  255.   def initialize(viewport, character)
    ' }! ?( L  k4 \
  256.     xas_emini_hud_init(viewport, character). `4 H* }- v1 ^( E2 O- I( c
  257.     @viewport = viewport6 @- b+ I5 I: j8 S6 F9 a
  258.     return if @character.battler.nil?4 q$ y% W9 \. B6 I$ Y
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)6 K% S, K1 r# K% v# M" z
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)1 m; k8 D* n* D9 F$ ?" \. j  X: K
  261.     return if @character.battler.is_a?(Game_Actor)
    % \" T* P0 o0 {
  262.     @bars = S_Hud.new(@character, @viewport)0 Q* D3 j$ l" {0 w3 ?0 I
  263.   end. F6 M1 q0 b4 v
  264. #-------------------------------------------------------------------------------
    # C* ]& B& d; y# Z9 W! L2 f+ c
  265.   alias :xas_emini_hud_up :update
      o, ?3 j2 c) l  `. c9 M9 }
  266.   def update
    , ?8 v7 S( M3 E+ n9 a  U
  267.     xas_emini_hud_up/ a0 f# i3 T, D8 R/ g% H3 x/ [
  268.     return if @bars.nil?
    - V: O1 v2 ?: I. T$ B3 k$ c
  269.     return if @bars.disposed?
    9 n  H/ n% u6 E
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    " A, }% _5 b9 J( I  U; E
  271.     @bars.visible = (dis <= RANGE)& P/ g, r2 G( F7 X* |; a
  272.     if @bars.visible9 j& O9 M$ R' V
  273.       @bars.x = @character.screen_x# - @cw / 4" ~! H+ J; U" }& {0 R5 m
  274.       @bars.y = @character.screen_y# - @ch / 4
    % s  J8 N  U& W2 C' N
  275.     end
    1 K; ~/ ?2 V8 z
  276.     @bars.update- _- Q/ ]0 D% G5 U5 m+ n. n
  277.   end5 i. Z; i( p* u+ A$ C% |
  278. #-------------------------------------------------------------------------------
    8 K  v) y8 Y1 o* J$ G! Y( t0 C
  279.   def dispose
    1 z* e2 L4 g; @( ^- o  V
  280.     super
    5 ?  B+ W$ j" f. T8 l. J0 v: ^
  281.     @bars.dispose if [email protected]?
    . U3 z2 c  g, G+ j2 }; C- Z
  282.   end
    * j, W6 ]9 s: m8 X; k! G; ~# w$ A
  283. end, H" B, I3 _* H6 |2 ]
  284. ! b, ~5 ]( K' ^! d. Z- Z9 t
  285. $mog_rgss_s_hud = true
复制代码

& l% F6 K- a6 L
9 m1 q- k2 l3 V+ k0 r6 `
! u" F: U. Z' t! }上面所說出錯的203行內容為: `/ f4 }6 @2 N$ v0 ]
@hp_sprite.bitmap.clear
( ~+ W8 |! j0 H% F- ]' I  `% b( y: R0 `6 u1 M+ _
想知道怎麼解決. T; u( g# ~9 N5 U' k( v! j
+ q7 j( u& [* l/ N- r. x0 L: C
該腳本支持3.82
9 O, a9 h$ H# s+ {1 x, _
& t8 U# X% L8 S- o& Z0 R/ B下面是圖檔,要塞在Windowskin下* w+ `% W& z, S" |
5 k& l2 o+ o8 Q
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
; z+ N2 x- K) ~% h- X, \$ U8 n# B/ N8 J! F4 o

- {$ Y- b) ?$ |7 n) @4 [
0 ?$ o5 q4 X: _: \) W
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适" `0 S. B$ l5 v- t
结果尝试刷新了一个已经释放的图形& Y1 Z2 G: E, ?# U$ J! f  m; B
5 i/ I- }" v' L  k2 u- x

3 ?4 W; m) `! Y  F* W9 H# Q! {1 G  h
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    * J0 c! C6 Z( {; a5 j3 E4 p) Q
复制代码
不要后面那个条件貌似就没问题了。+ @$ s9 |1 N0 H/ u) L, T/ L
6 u% n0 E8 ]$ {# t% z. x9 o; a

3 p  N' a4 F# R' J7 F 4 B; g# g, H7 `$ z! l, A

% \( i3 r- @" F4 f
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 0 B: P3 g7 P8 n8 [2 C
貌似是释放的条件不合适. `; ~+ G. I* e2 L' n
结果尝试刷新了一个已经释放的图形

+ g$ O2 z5 _( G+ e. W" L把後面那個條件弄掉後,的確沒問題了: T% `. y( t- ]) x6 S, h
目前從關頭打到關尾結束都沒再彈什麼錯誤; a7 d! {1 _" b0 p2 C
非常感謝
3 f# N+ M2 u8 a, N6 N
% Q3 Z) `+ r6 m# J, Q' g; z不過我是參照著別人腳本改的( m9 A: P  ^+ z1 _9 ?
他寫的條件式也是那樣,但我用他的沒什麼錯誤
! H  G0 e/ |9 c不知道是怎麼回事  r) F3 x, S* m6 Z: U0 y
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
/ w) S7 o4 ~( {我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
; ~0 E5 F, H( @* n* U, ~. X, r嘛..这个数组吧..我在以前试写队友的时候关注过一点
; I1 Q: _! l; F0 X& o. z2 p不知道XAS内部对它做了什么手脚还是为啥,
/ g5 ]! P+ V& {- t( p. n$ z  Q总有那么一瞬间,没有被消灭的敌人事件也变成了nil
& E* ?  s7 l' |' i0 S& N- E+ C! g% r! m/ n% P! [
$game_map.events.values[@enemy.id].nil?
  T0 [& p! ]0 B1 }因此自然而然的返回true并符合条件把图形释放掉了
  Q! }0 `' O: i* e. z; `! ^' r. n3 V3 {8 |- j+ z
LZ应该有注意到吧,& D1 Q6 i! l4 t3 t
我测试的时候发现报错前几帧,图形会消失,9 c. n1 N& ~8 c4 o! A) @- f! Y
应该就是“误以为敌人被消灭”了。
! H/ u) ~) ^+ F% D5 p* m
, [1 w: m5 z7 O" ?# [- J) F受限于个人水平,至今无法找出$game_map.events的真相..
9 T" y1 _  U- M
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 9 t" y# X5 K; Y& {' ?/ U) m6 E
$game_map.events
1 q. b3 f. K# W1 @) E2 V  X& C6 O; N嘛..这个数组吧..我在以前试写队友的时候关注过一点/ l8 Y3 z9 X" B# f5 D
不知道XAS内部对它做了什么手脚还是 ...
) ~. H3 H/ e5 o' H
當初我把那個條件式看了三遍,都不覺得他有什麼錯
. ^" f1 n* E- c4 D% c7 n7 Q9 @" [原來還有這麼深奧詭異的事XD
; X5 A- z# e2 \7 C: [2 p4 \( O
* V( [5 p* h8 |! x3 {" h5 X錯誤發生前的確會有圖形沒顯示出來) J* @" ^# G  H! y/ [/ ]4 S
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...3 x1 j/ {9 R8 i. v1 \
沒想到居然是詐屍了XD3 v$ Q7 w0 e( {  r, A9 k

  l. M! C* M% |. M2 h# A不曉得3.91有沒有修正這問題...
; x; g' p: |; i' ^7 A不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
/ t+ _* ~& Y; x, d9 Q: v* t* m6 o9 M. y5 i  R5 S0 F- q$ y3 j7 @# L
的确7 l! B+ N$ I  e0 J0 u* k
用惯3.82之后想去整3.91觉得压力甚大..
( e' U6 q% H) ]' U3 |; A  v干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。" A, \1 q9 C  I8 |4 Q8 i- y' L
/ D8 R+ H+ t0 i3 o( f
然后加一个判断处理的。(我记得有一个disposed?)




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