Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條( l3 _; N5 K# `% S$ |1 e
會在每隻事件怪物的腳下顯示* A( _& p2 k. E
問題是不知道為什麼
+ \5 L  |# n0 E& ?有時打怪打一打會跳出
' ^/ T' \$ X2 A# C  _) ~---------------------------
% @  m& V8 n- qXAS9 @1 l+ \3 ^/ @
---------------------------
. ^3 r: `& F- g4 P  G9 k7 I  G1 p- R脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。4 C: j7 ]& B6 p1 e

  m$ ~9 w! y. [7 Tdisposed bitmap
% d* Y9 A7 s( j; n---------------------------( @0 C0 T) w, B
確定   # V) s1 Z8 z/ o# o! i1 x( P
---------------------------5 k7 Y: b# I# z1 u4 J% f
- @- s/ B9 [6 Z$ E
這是腳本
  t# B4 H( b! v8 J! W, ]
5 q- a3 H- o9 B5 d: Q7 z
  1. #===============================================================================: n6 J, H% e6 o# U1 q
  2. # MOG - s Hud 1.0      
    ( ~0 Y. w3 T) y  @; |
  3. #===============================================================================7 i! M9 h, i# `" J* C0 a
  4. # By Moghunter
    4 |; [6 R5 H. Y# T+ A: \$ j+ N$ d! B
  5. # http://www.atelier-rgss.com$ ?1 y$ h# b/ [0 z! t: C3 b
  6. #===============================================================================" @0 E. ?5 I; x5 T
  7. # Translated by Calvin624
    5 U- h) w, C7 h) |  C
  8. # http://www.xasabs.wordpress.com; K1 y9 v" ^8 n) _0 m$ t! T+ C) M
  9. #===============================================================================% v# F7 b; i& K/ D! Q5 `
  10. ###############################-DESCRIPTION-####################################( W+ q4 ~% }" H0 D! ~! c4 W) e* k
  11. #===============================================================================
    / V- a" J9 S5 B( p& \( q+ Y
  12. # Personal HUD – displays the HP and SP below the hero.9 L, k1 B# b* i# g+ t
  13. #===============================================================================. E: e9 C( ^1 ]! [" o* Q6 R' h
  14. #
    4 V8 h. ]/ g) I& x
  15. # Graphics required:
    9 v" V+ ]+ s+ A! Z4 J2 Q4 @; X
  16. # 6 x2 E" O6 t8 T1 j  T& p- {
  17. # S_Border_HP_Meter.png8 s9 z- _) Q8 u0 `9 a* t$ n4 S( H
  18. # S_Border_SP_Meter.png
    & }" m: b, q! n2 S5 Q
  19. # S_HP_Meter.png0 s6 H5 P& V8 }
  20. # S_SP_Meter.png
    , Y! Y+ Q+ O7 g, R5 f/ Z
  21. #2 I2 J7 w' h& m5 F2 ]
  22. # All images must be in the Windowskin folder.- C: j9 k9 H/ D  ?
  23. #
    ! D1 t4 ^7 i5 j  _: x3 U  [# B
  24. #===============================================================================" O2 v/ N7 K. y0 z$ T- R6 v. g
  25. module MOG& l' d7 m0 Q% |' o$ C; |
  26. VISIBLE_DEF = false  
    8 i5 r* m! Q4 l; B- E& k
  27. # Show HP meter?
    " f5 q. ~3 a: k, C, l2 ?1 F: s0 e; W
  28. HP_HUD = true
    8 a( X4 K+ I* o' u7 ^" X9 T, z, u
  29. # Position of the HP border( V% l- z  l! H3 a! {
  30. S_BORDER_HP_METER_X = -2& d  b5 y1 F7 C" W2 u
  31. S_BORDER_HP_METER_Y = -2  : @3 j  F0 U  R: C- r% \- [' ?
  32. # Position of the HP meter
    1 n, M" E' e& W: A8 s' n/ G
  33. S_HP_METER_X = 0
    ! ~, s8 ]  w; Z* S# F
  34. S_HP_METER_Y = 06 ~# W( s# M7 C* a& H
  35. # Show SP meter?7 O6 }5 x8 ^4 z/ n$ I0 [' J
  36. SP_HUD = true+ e- X4 M: q$ G6 s4 U" c; u
  37. # Position of the SP border* `  W: Q. Q. t+ Y  C
  38. S_BORDER_SP_METER_X = 0+ S# p/ s7 Y' s) }5 C
  39. S_BORDER_SP_METER_Y = 10 0 s- v, f* s* s9 X
  40. # Position of the SP meter
      Z4 D" u9 o( C* Q# z
  41. S_SP_METER_X = 0" ]* Q: t- }5 T' j$ X* D
  42. S_SP_METER_Y = 10% h6 r4 e: ~% @" w
  43. # Switch to disable the HUD
    # W( H" B5 I+ C; F0 c. O. N
  44. DISABLE_SHUD_SWITCH = 5
      u2 ~' _3 ?7 ~2 D! L" u0 L
  45. RANGE = 20
    ) [7 L  U+ V7 t) f
  46. end
    : }  S3 T; D- H; w# Y
  47. #===============================================================================
    " ]9 K% n  }2 R# e/ G# n
  48. # S Hud7 M$ V1 c, R3 l, K
  49. #===============================================================================
    % t: Z/ ~1 D- Z( c$ ~4 ]. z
  50. class S_Hud < RPG::Sprite& M! ]( H5 N7 B/ I8 ~
  51.   include MOG
    % u+ D  e1 o9 b. i6 v
  52.   #--------------------------------------------------------------------------
    % w5 M& R$ z/ s0 W* v) b$ A/ G
  53.   # * Initialize+ @0 I" ?1 B2 X( ?0 g. N5 n/ }
  54.   #--------------------------------------------------------------------------8 h+ h$ u# R  I" d- J) q
  55.   def initialize(enemy,viewport)
    * Y& K! ~) A3 s, w  K
  56.     super(viewport) : j1 x$ c  G# K1 ~1 J0 r
  57.     @enemy  = enemy
    ; B' y+ ~& i& b! r8 m' b
  58.     @battler = @enemy.battler6 L3 H) J9 j: g1 C; r7 S
  59.     @old_hp  = 0$ O0 q- n* {6 t. u
  60.     @old_sp  = 0; p  i# Y- V, R3 p( y& ~/ Z
  61.     @old_vis = false
    $ Z: c, ]6 ~9 Q& A+ [% c
  62.     self.bitmap = Bitmap.new(100, 100)1 F- @9 c. U& g/ ]' k
  63.     self.visible = (VISIBLE_DEF)#false) w1 L3 S) T) Q3 t1 P6 y2 \
  64.     self.z = 100
    2 [7 \/ B3 A" w8 |# i4 X
  65.     #HP Border -------------------------------------------------------------------/ O0 C, a, v: s/ @
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    : v. J# {% m! C  n+ z
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    + p+ N  y4 P2 h0 d+ B" S# o7 V
  68.     @layout_sprite = Sprite.new8 n" }2 H9 m" `; O3 f2 j
  69.     @layout_sprite.bitmap = @layout_bitmap  ?5 j; G! \, t1 {3 w
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    + Y( W1 c! t$ n, \3 o
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    : `& x, w5 U$ p- g. {$ j' i) Z+ h
  72.     @layout_sprite.z = 50016 }# A! u5 P% B1 u$ u
  73.     #HP Meter ---------------------------------------------------
    5 }% Z2 y* q8 S+ b( n+ s6 C
  74.     @hp_flow = 0
    * h2 r2 J9 }' `9 Q1 U7 b
  75.     @hp_damage_flow = 0
    * X! p# }( z0 J2 n8 O3 o
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")( `4 Y1 q" N) B: u- R# t8 H
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height). {; S7 ~& E$ O( v. D3 X+ L- l2 q
  78.     @hp_range = @hp_image.width / 3, D8 v+ p# R& M8 v2 i3 D
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    7 \" X1 i. k3 L
  80.     @hp_width2 = @hp_range / 2
    . T1 @9 W+ d7 a9 D% z- }
  81.     @hp_height = @hp_image.height / 2
    6 B7 {! @& g) y! g6 ~
  82.     @hp_width_old = @hp_width
      m6 p$ W% M  ^  K' W. l
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)! j# Z) j* l, m1 G
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) 4 B/ A8 T4 R/ N- S- L3 T2 _
  85.     @hp_sprite = Sprite.new
    : c" _" J) M/ F* `
  86.     @hp_sprite.bitmap = @hp_bitmap, n7 W8 k% q$ v' f3 g
  87.     @hp_sprite.z = 5002
    # `3 P7 |* |, l9 v6 O4 B
  88.     #SP Border -------------------------------------------------------------------  x; M; b& N# f, S3 t
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    " ^* m. S7 `1 P, U  P
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)$ J8 T8 a  S6 l( d; w+ q
  91.     @layout2_sprite = Sprite.new
    0 ]) Q( u$ A# p4 v7 a$ f
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    - E3 i' h1 s: Z1 O
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    + h9 |! B$ K* l1 R1 Y1 e2 L
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    1 f) f- e, K2 j  A  Q$ ]
  95.     @layout2_sprite.z = 5001    9 p! s( @! G  ~' K7 [/ j; w: ?
  96.     #SP Meter ------------------------------------------------------
    1 Z: l* a5 c, h" y2 j0 C6 M
  97.     @sp_flow = 0
    ( c! n: G9 K7 a9 i. Y7 I
  98.     @sp_damage_flow = 0
    + [0 u2 @/ _* Y+ `$ Q
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    ( u  p% w4 O) A: ?
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height), }1 y7 p" B! O" q5 \3 l
  101.     @sp_range = @sp_image.width / 3( Z; n; u4 w+ k; C5 m/ x6 G
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  3 j0 v4 Q7 C. U" I  w
  103.     @sp_width2 = @sp_range / 2
    ' o; ~) M: `0 w* |# r: I
  104.     @sp_height = @sp_image.height / 2
    * Z9 c0 R; [- L. g% Y
  105.     @sp_width_old = @sp_width
    " {2 ]  ^# z  T5 k6 V
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height); o% X# @3 r4 O* \. w$ [. u) f
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)7 B! m, Y/ a$ H8 U; c3 L
  108.     @sp_sprite = Sprite.new; l2 u: W7 f( L4 ]0 ]
  109.     @sp_sprite.bitmap = @sp_bitmap+ L5 L' d2 {7 T: d" I- ^& C
  110.     @sp_sprite.z = 5002+ a# R4 K; @* n3 [
  111.     update. `1 ~5 `5 o4 |+ o+ w
  112.   end: B1 ^: y! @/ t- X
  113.   #--------------------------------------------------------------------------, b# I" p+ {& f. Z8 @) J2 y
  114.   # * Refresh
    2 ~& I  w; Z/ p8 q" ^! x
  115.   #--------------------------------------------------------------------------
    # S+ ]0 G' u' ^+ s' j
  116.   def refresh
    7 t. [. Y! W4 _4 W4 w6 p  H+ w
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible( ]/ n+ _' S$ o) ]0 N
  118.     self.bitmap.clear
    + A, Q. s* R) K: \( k! N+ `+ j7 G, l
  119.     @old_vis = self.visible. J) V7 {# p9 ?. Q, ~, i' p
  120.     @old_sp = @battler.sp3 I9 p; h6 Y. e" Q
  121.     @old_hp = @battler.hp9 e( O' `8 j8 G) b% Z; v
  122.     hp_flow_update- a/ u- D; S$ Z, Y# G
  123.     sp_flow_update- t5 ]: Q& F; ?2 b. i
  124.     hud_pos_update
    6 I7 z% C4 P* Z; Z1 B
  125.     visible_update
    7 O) R8 ]- e8 T1 I
  126.   end- d; Y' L4 w5 O9 F
  127.   #--------------------------------------------------------------------------2 h; W5 S9 f  |8 M; G
  128.   # * Dispose0 D; ^; K2 s7 P' b
  129.   #--------------------------------------------------------------------------
    8 i' y- I: T/ k7 Y9 Y1 N- w
  130.   def dispose
    - T5 C" g% j$ d4 }
  131.     #HP Meter Dispose1 G. V9 K) d% G, r" |
  132.     @hp_sprite.bitmap.dispose1 g7 ?! a% k. Q, h. A
  133.     @hp_sprite.dispose
    . |3 ?+ o& \+ V- {% R( r) R% V6 b
  134.     @hp_bitmap.dispose
    3 p& ~6 a& A! I. }
  135.     #HP Border Dispose, m; `- |5 c3 ]. M
  136.     @layout_sprite.bitmap.dispose* l& R% {" z2 o* t; W8 A6 C7 [
  137.     @layout_sprite.dispose+ ^) ~4 F( @9 [
  138.     @layout_bitmap.dispose, P$ X3 A* y( h
  139.     #SP Meter Dispose. c* I7 Q1 C) A3 t7 h0 Y8 A* n
  140.     @sp_sprite.bitmap.dispose
    8 L  |& r& G! P  O# b! y
  141.     @sp_sprite.dispose9 Q' v$ w) Z2 B7 W( g
  142.     @sp_bitmap.dispose
    % w' W2 [1 h; U2 t3 _: }+ p
  143.     #SP Border Dispose( C+ f8 r0 ]0 K2 ?( e- P: ?
  144.     @layout2_sprite.bitmap.dispose0 ^' e9 h( P, N3 Q: d
  145.     @layout2_sprite.dispose+ y3 L2 F" s( ~: X: @$ Z
  146.     @layout2_bitmap.dispose& F4 o# B# L, g$ U& o. Z
  147.   end
    " S: Y8 O5 {! k& p# n- ?3 Q+ L
  148.   #--------------------------------------------------------------------------
    1 U1 W# _$ A+ i# m( n+ P
  149.   # * Update6 ^- N" i9 D/ P  u
  150.   #--------------------------------------------------------------------------  D* }9 r5 ?% F0 ~' W0 ?" C% ^
  151.   def update
    - s2 B$ Q: b4 [
  152.      @battler = @enemy.battler # r9 z! c- L, M" J3 O0 B
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?* ~- J- u+ c- |" d' V4 z5 E
  154.      if self.visible6 P* a  b" o7 W  U
  155.        refresh: a( F3 o* X( x' p
  156.      else9 V$ @* I3 @- I$ R/ a# Q3 t1 j+ j
  157.        self.bitmap.clear4 Q  [6 X3 P! M# ^1 Q9 t) H
  158.      end/ Y: z6 X. x2 v9 m: }+ K
  159.   end
    ' ~( D; y# `. F6 s" {* n6 g5 N' P
  160.   #--------------------------------------------------------------------------
    ' n1 c' ?7 o9 R# J" X! n, K
  161.   # * Visible Update
    2 O3 w3 n0 o$ O. H
  162.   #--------------------------------------------------------------------------
    1 m3 k8 t; r8 |' u4 w3 m
  163.   def visible_update7 o4 T7 r; h: c( U" v' A. ~: i
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    ' s6 u- ]% ~" A% K5 a  S# K
  165.        @hp_sprite.visible = false8 e! V8 I/ Z! q! g* I
  166.        @layout_sprite.visible = false2 \# a+ n& l- y5 Y
  167.        @sp_sprite.visible = false, P1 U8 ]  U) B' O* J! }1 N
  168.        @layout2_sprite.visible = false
    ' ?3 o) |1 ^/ T, v1 n) t4 [
  169.     else. e. f9 {7 L3 |+ @4 ~6 e- t% r+ ]( P
  170.        if HP_HUD == true
    , J7 o/ F. Q. V: l
  171.          @hp_sprite.visible = true$ Y3 E) |6 X% M# k  g. Q* w! u
  172.          @layout_sprite.visible = true: {! X/ X6 a# n! @0 n9 z+ D
  173.        else1 C0 [+ @3 l0 _5 g9 d& g5 m9 b
  174.          @hp_sprite.visible = false
    4 \0 t) O5 V" L/ s/ g
  175.          @layout_sprite.visible = false0 r% c/ T9 f/ {0 D! y6 G
  176.        end  1 F1 B, s% @* N6 m* b! G
  177.        if SP_HUD == true
    6 R8 [- Z+ T2 Y, ^9 x9 e% m
  178.          @sp_sprite.visible = true
    - f" f1 p  }* A% X
  179.          @layout2_sprite.visible = true
    6 y8 P6 M8 I# z: Y5 i
  180.        else
    + U* r( u  R: a( \
  181.          @sp_sprite.visible = false& e/ m- G- s' I2 A1 R
  182.          @layout2_sprite.visible = false
    ! d, m% U$ R& ~7 S6 ^' o
  183.        end - f$ f  Y+ I( @1 V
  184.      end  ! u) Y& `, l' H9 p
  185.    end
    ) E" s. ?8 M1 N2 D, S# Q* e5 Y
  186.   #--------------------------------------------------------------------------
    ( e, u* M9 Y4 P4 v! N. E
  187.   # * Hud Pos Update9 G2 i0 X9 |$ s& O6 _9 Z
  188.   #--------------------------------------------------------------------------
      V- z. P2 R0 ]- L$ m% E6 x  Q2 F
  189.   def hud_pos_update
    2 Y5 C6 F" v0 f6 t" ^8 y! ^$ i: n- _! z
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X  E% q, R- X1 V3 \2 f5 ?% i
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    : l+ f4 Z; c- h# @, n$ c- l
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    ; c( e* V% o* x% _. h1 p
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y + |% k4 ?% d4 Y2 q) a# {# n
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    1 U5 O# i, r0 g; f
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    & _( d; m1 x/ a7 T! f. P
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    ; q% d7 G$ ~; I. Y; p5 g
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     * N/ U6 {, |& q5 ?6 X1 T% u3 d& i
  198.   end  
    & m  ]9 y6 b+ B0 G
  199.   #--------------------------------------------------------------------------# _6 Z1 S0 X0 R; ^" j2 _
  200.   # * Hp Flow Update
    * h  Q1 T! E7 A5 f
  201.   #--------------------------------------------------------------------------
    ! X6 C! `& k8 M2 Z. K2 n( W) d
  202.   def hp_flow_update2 a# X7 }8 _! Q7 @8 P
  203.       @hp_sprite.bitmap.clear
    6 z3 `3 |4 z  i. y/ f- n6 V
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  0 t9 m4 w  _1 I8 s9 [
  205.           #HP Damage---------------------------------
    + T( Q  Y2 n4 N2 e3 h8 m
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1007 }( }8 d8 o9 d
  207.           valor = 0.5 if valor < 1          4 d6 g% W. O- z8 n
  208.           if @hp_width_old != @hp_width
    : q! u3 a: z# i9 Q' |2 Y; B) w
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    & d4 x* A! `/ U, Z
  210.           if @hp_width_old < @hp_width " S# P2 v9 K) Y3 `
  211.              @hp_width_old = @hp_width
    0 }9 u& M5 t5 |2 t0 n
  212.           end      
    2 V: U& d/ M+ M4 j/ S
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    * C* b. [6 j# |) G& n+ d. y
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    & S' n& i3 H9 |* d; [
  215.           end        8 h/ V4 ^, y: k5 N$ J% {0 K
  216.       #HP Real------------------------------------
    . r" i* c4 d* G: e
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)8 D! r. k% c5 a
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          & r- X- ~0 D5 t! Z$ W$ H
  219.       @hp_flow += 2  : W2 Q. h3 g1 F& s) W
  220.       if @hp_flow >= @hp_image.width - @hp_range7 ~, i9 U* W0 P$ Y; o& T! X0 C+ w
  221.          @hp_flow = 0  
    3 I/ t8 U' v# D
  222.       end  {# V/ L$ Z) C0 \  D9 _0 G3 H
  223.   end    / B* \1 q/ ]# d3 W0 \
  224.   #--------------------------------------------------------------------------
    / H. X: s3 b. f8 }- c2 S' E5 G
  225.   # * Sp Flow Update
    $ Y' U8 A& w6 w, i+ A4 o/ w7 c* W
  226.   #--------------------------------------------------------------------------1 g' R/ x  n6 H- y# R4 Q+ F& K, h
  227.   def sp_flow_update
    ! y$ U. E9 P3 u% ?6 h0 a3 f
  228.       @sp_sprite.bitmap.clear7 c& Z& N8 j# a' ^# Q  z. W
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp $ o3 v& e6 o2 R: ]$ ^9 T. |
  230.           #SP Damage---------------------------------
    - d; _$ B1 s1 N# _  i" R, O
  231.           if @sp_width_old != @sp_width
    9 g8 P6 w( X2 R$ Y$ ^& q
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    , i8 L& Z- u# a3 w
  233.           valor = 0.5 if valor < 1              - z4 j/ r# ?4 a
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  1 {% _0 @+ I# J
  235.           if @sp_width_old < @sp_width 9 S- v5 g! W# b4 k
  236.              @sp_width_old = @sp_width* E  A- i; C: g5 G6 `
  237.           end      ( q7 z, I  A2 X+ m( ~9 O' ]
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    9 H; r/ t4 O. q) I# v- B) O
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) & U, {7 s5 {* {+ r0 ~
  240.           end
    9 w7 L/ u+ @- W2 |6 M
  241.       #SP Real------------------------------------
    # J" ]- n0 k/ e9 A+ h' q
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)6 p  A+ Y1 d# s8 N- X
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect); m1 j* v' D+ G* E7 R) F0 {
  244.       @sp_flow += 1  ! C. b9 l8 T* m, {- Y
  245.       if @sp_flow >= @sp_image.width - @sp_range; S: K3 a# [6 t# {: M2 `) M+ Q
  246.          @sp_flow = 0  - r2 g+ l4 J) n
  247.       end. w0 T; Z& ?. i8 {. R2 K
  248.     end            
      q9 e, t5 O& }/ g3 Z& }
  249.   end, q5 L. N) b8 r$ _! Z4 y) p
  250. #===============================================================================+ J% o- X$ {9 ]" ~) M; r
  251. class Sprite_Character < RPG::Sprite
    9 ~" X  Q$ M6 L/ b5 d5 d
  252. #-------------------------------------------------------------------------------
    2 y) i/ G0 ]6 R. e" }: I
  253.   alias :xas_emini_hud_init :initialize/ A! `1 n/ S3 N" M; w# x
  254.   include MOG
    9 d- j; |2 r+ [4 ]& L( ]! U
  255.   def initialize(viewport, character)
    - }" N( J1 D' G$ l6 q6 J; O8 ^
  256.     xas_emini_hud_init(viewport, character)
    $ `; ?5 D9 ~7 _& J/ i7 U, L: z; W
  257.     @viewport = viewport
    " V/ c. J# l  f4 A/ D
  258.     return if @character.battler.nil?
    8 j. v- B, j1 ?7 a2 a1 E6 w! J
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    9 e7 D* x" q" j3 Z' w
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)- W6 T( \: P9 O
  261.     return if @character.battler.is_a?(Game_Actor)2 a3 T0 c: w" \/ z) r. I6 q
  262.     @bars = S_Hud.new(@character, @viewport)
    ; u1 H8 L' d* H- X
  263.   end
    . @$ `5 m2 s) p+ W
  264. #-------------------------------------------------------------------------------# Y0 W8 x. ]* O' Z
  265.   alias :xas_emini_hud_up :update% ^; q9 P' Z# @5 H' {4 k
  266.   def update$ o4 u0 ~! U2 B
  267.     xas_emini_hud_up" e$ z8 b3 U- s& l$ _3 C' z
  268.     return if @bars.nil?
    , l! [# H+ f; a7 B4 ]
  269.     return if @bars.disposed?2 b- _! R/ |8 X* Z' h+ w& |6 k9 [
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    9 F7 M( F# X: c! h2 H1 U, ~) _
  271.     @bars.visible = (dis <= RANGE)
    - Y- B. ^/ X8 ]' i& d
  272.     if @bars.visible' X* q: H8 |6 I
  273.       @bars.x = @character.screen_x# - @cw / 4# n/ s6 y/ U1 K, _1 N
  274.       @bars.y = @character.screen_y# - @ch / 42 d, Y7 z9 q. g: y# d
  275.     end
      M+ ~5 |- R1 m1 q
  276.     @bars.update/ v3 [" R7 [4 H4 T0 w
  277.   end6 |( r- E8 `/ _4 M2 a7 c3 g7 f: ]
  278. #-------------------------------------------------------------------------------1 `8 n) w% n$ C, T' K) i7 o
  279.   def dispose
    * s% r' R8 X, ~+ i* H7 V8 L
  280.     super# J7 ^* t8 Y9 q6 ]
  281.     @bars.dispose if [email protected]?
    , s5 Q* @3 X; L
  282.   end
    0 ?/ n! Y. \$ l
  283. end8 t4 I; q  T4 v* @
  284. 4 N$ K6 v  X$ a5 d( v
  285. $mog_rgss_s_hud = true
复制代码

1 C7 U) s) G) m$ [* w2 h1 p! ], y( u5 c

# C+ z1 c. m- l- ~0 f2 u% ^3 M上面所說出錯的203行內容為
( @1 J9 e: }+ N# N@hp_sprite.bitmap.clear% [1 W4 D. u, @( d$ `0 o

5 z, b( [" m! @2 X9 k想知道怎麼解決5 t! ~6 f( y7 v
$ X3 D" G: P3 h/ B$ |2 T# a# A: J
該腳本支持3.82# t5 M, A8 V: K9 o$ K4 A  N3 t# v
# P$ N5 J  w2 h3 {* N
下面是圖檔,要塞在Windowskin下
" [5 q, Q4 @. {2 O2 q& r' _+ S0 \
. |* y  T7 j$ i/ }) T# _ S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
4 @; R1 R  W3 Y* c: O! V% v7 X! P7 p
" ]' N% m; C- T3 }% G; K4 P0 `+ |; k8 q( i/ X$ Q8 D( {! b

! k. h* n6 S9 G! S
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
- ^: s, C/ k5 Z  \9 j; k$ `& ~, m结果尝试刷新了一个已经释放的图形
5 a4 ^5 V- X0 x
& |& o5 |2 |' U+ v) b8 Q! i) F4 i; l0 @$ R! ]" i5 s
/ N' ]6 D. p) T1 Z2 V! s4 w
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    6 S8 x6 d  G7 F9 ?. B" K
复制代码
不要后面那个条件貌似就没问题了。3 |9 c$ R6 D, S9 ]: A

+ [1 n! c, c; D' c0 A3 S, L' j2 V
: S3 P6 `. M( t( U1 A0 O4 H ! v3 x6 j4 q, X

0 y6 d+ v! Y3 G/ }* g) V+ F
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
. [# w4 ~2 T$ c2 t# n' Q% |: {貌似是释放的条件不合适$ Z* k  T/ y* f/ p% a) {% B
结果尝试刷新了一个已经释放的图形
+ T' I1 c. {0 Z9 w+ E2 z! e
把後面那個條件弄掉後,的確沒問題了
2 Z* v, i, z# A+ K目前從關頭打到關尾結束都沒再彈什麼錯誤/ o) E5 k( I6 n4 L$ t
非常感謝
4 \& U" b: ^. Y
& H! i5 t7 u5 J4 {- N; d' Z7 e3 s不過我是參照著別人腳本改的
+ G! N  v8 ]1 N, m他寫的條件式也是那樣,但我用他的沒什麼錯誤
+ `& \3 v1 W$ Q( x8 u/ l- W1 h+ B不知道是怎麼回事! x* Z  v1 G+ u1 w
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的9 I) x+ D* x, K6 m  x4 D0 p! ~* m
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events8 q0 f+ f& I' ~  a
嘛..这个数组吧..我在以前试写队友的时候关注过一点2 T! ~2 k8 S- P( Q4 _* d# G
不知道XAS内部对它做了什么手脚还是为啥,# S, }/ p! H% j" D- l* ?! m( @
总有那么一瞬间,没有被消灭的敌人事件也变成了nil
% z; ]# P0 s+ M4 x
( e! n- V: b% H3 |- L2 h; D$game_map.events.values[@enemy.id].nil?
* Q, G" ^) V7 _, T& M5 M/ j* h; C因此自然而然的返回true并符合条件把图形释放掉了4 a# E2 D% o! p# ?6 I
% b8 g+ ]( |/ b1 S
LZ应该有注意到吧,
: E7 R% j% e' r6 M, j1 R我测试的时候发现报错前几帧,图形会消失,
! u3 J$ H; M( Y8 a! V应该就是“误以为敌人被消灭”了。
  R( H/ ^- g& ?) H, J7 J7 Q* K! ?. `1 T: T' v  }4 u4 b
受限于个人水平,至今无法找出$game_map.events的真相..
+ {( [6 \7 i- h+ f% N
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
# L6 Y- U4 S1 E+ c1 B$game_map.events
" n  M& f( Y* N0 f; Y嘛..这个数组吧..我在以前试写队友的时候关注过一点
( ]* K& l# O* S' x9 ?不知道XAS内部对它做了什么手脚还是 ...
5 `  x: |" ]- Q6 o
當初我把那個條件式看了三遍,都不覺得他有什麼錯: W" Z, H1 l4 Z2 s
原來還有這麼深奧詭異的事XD* O8 i( T2 w" I2 Y

# ^: }# A7 ?$ @1 C$ x/ |錯誤發生前的確會有圖形沒顯示出來
) a: ~' f( Q) u不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
- R' v# G' ]! p& F* f3 Y1 h沒想到居然是詐屍了XD
4 U  h4 i/ \0 X/ I% ^, f  ^" p/ k, X
不曉得3.91有沒有修正這問題..., S( [9 [5 H, J
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
5 {4 G* T5 m+ y% q1 ^3 S: [, `3 l
/ l) k5 W) f" m( v: J的确
% u% A- |, K. u8 L. a用惯3.82之后想去整3.91觉得压力甚大..6 Y6 P2 f  w  |& U$ e( z- b8 m( n  v
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
4 C  ?( X$ }' U2 j+ h5 q) n7 T5 a& _/ n; t3 Q* s/ s3 G
然后加一个判断处理的。(我记得有一个disposed?)




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