查看: 2159|回复: 7

[有事请教] 自己修改的插件出了錯誤

[复制链接]
梦石
0
星屑
687
在线时间
1808 小时
注册时间
2009-7-12
回帖
416
发表于 2012-10-14 18:18:31 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
這是我將官網的S_HUD修該而成的怪物血條+ ?" J3 }. b: `
會在每隻事件怪物的腳下顯示
8 P' X$ e, {1 i問題是不知道為什麼. z" y+ P2 O, v" O* Q2 e5 Q% M
有時打怪打一打會跳出1 C. x  d2 H+ T# j3 x
---------------------------
. G6 f' W7 k# nXAS
# R. K* O4 z( n; D---------------------------
1 }- V; ^* m% S- e. L/ G) G脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。- l+ g9 H" e' m* K

) O5 H5 t. c/ Wdisposed bitmap2 d& E2 F' L  t( f7 h. L; I
---------------------------
' l* @& r, ]3 V3 q  k  Z確定   
7 G+ Y7 x: }% _3 c+ z---------------------------
6 J7 M: V: D7 k( j' ^' Q7 m( N* P3 G9 u1 f( l4 J; W9 ~
這是腳本' c$ i: |' \& m2 g. A; \/ k, [2 C
5 `+ O+ R, {- p1 u9 F
  1. #===============================================================================
    1 H2 ~) \/ E7 Y+ {$ \
  2. # MOG - s Hud 1.0      9 U& R  R9 {' D: ^" Z( [3 S
  3. #===============================================================================) Q2 d+ `4 k4 X: q  S3 O9 Q
  4. # By Moghunter ' l1 l( u2 j* Y! o$ m/ \
  5. # http://www.atelier-rgss.com1 W9 B" X; {- N# K  u: G- X
  6. #===============================================================================
    # K' ~9 ~9 A+ v, ]; N
  7. # Translated by Calvin624 ! ^; q7 G0 f  B" ^
  8. # http://www.xasabs.wordpress.com
    4 \  g1 T2 T3 W9 m& s! a
  9. #===============================================================================. `7 Q* X, k! o3 D
  10. ###############################-DESCRIPTION-####################################3 A+ n1 }/ p4 B
  11. #===============================================================================
    : K0 l1 ~- l# c' i
  12. # Personal HUD – displays the HP and SP below the hero.( V6 R4 D9 w- w- O# A
  13. #===============================================================================9 ]; M/ l/ S: z6 Q- z
  14. ## e! P9 \: O) E( }8 `3 z9 A
  15. # Graphics required:+ v- i; J- T4 W6 n+ ]
  16. # 7 N. B3 |9 I3 X$ t' H$ Z) A  o
  17. # S_Border_HP_Meter.png3 A  ?8 f0 ]6 p% E1 ]* R
  18. # S_Border_SP_Meter.png) f! C8 t" ?: A& Z
  19. # S_HP_Meter.png" g! m$ T0 z) @4 v) r6 L3 r# Y" P
  20. # S_SP_Meter.png. a' k6 K4 L" `+ {1 f" X
  21. #  Z' j# x5 p. e. P
  22. # All images must be in the Windowskin folder.
    - i5 ~( A$ D7 a6 s6 y& n% J
  23. #
    ( ?9 Q: T: c( n
  24. #===============================================================================& e4 a6 O1 D) ]" ^$ Q" ?$ Y
  25. module MOG
    ( o4 J4 V! L( s$ [8 V
  26. VISIBLE_DEF = false  
    - t: b7 B! B' J# T2 k9 f
  27. # Show HP meter?
      S: _# W" b! s* O# I
  28. HP_HUD = true
    6 \" B9 p$ G7 L: s
  29. # Position of the HP border
    . l, K. B1 a5 ]* c: `
  30. S_BORDER_HP_METER_X = -2
    * E) [) q9 P5 t) l9 M
  31. S_BORDER_HP_METER_Y = -2  
    # I  h! d8 O0 G! ]- @, X$ D
  32. # Position of the HP meter
    / O5 W- ]) @  H" Z  C
  33. S_HP_METER_X = 0
    8 c# E9 d; ^+ X5 A. b, q# H' @
  34. S_HP_METER_Y = 0, s  L- s7 h- [8 I2 @; r  s
  35. # Show SP meter?1 Y4 f& r* ~% Y* V+ F$ [# V
  36. SP_HUD = true
    4 G  k3 S1 s1 |" k/ K9 Q
  37. # Position of the SP border6 r7 v2 v  R, b' R, D/ _( T, H
  38. S_BORDER_SP_METER_X = 0
    ) S; F% u3 e6 _# h. C
  39. S_BORDER_SP_METER_Y = 10 ! }0 C3 g' S5 z( t, \$ |
  40. # Position of the SP meter' z. C/ P% C, X4 [% s
  41. S_SP_METER_X = 0
    2 @# H) Q, L6 D$ x* x5 y# G
  42. S_SP_METER_Y = 10& j+ x& F- Z* P+ ]; R& a; H1 _, e
  43. # Switch to disable the HUD: E  n* G5 R& _; h* z
  44. DISABLE_SHUD_SWITCH = 5
    & @8 b6 h/ ^: P( v7 k, T+ l
  45. RANGE = 20
    / k& p: q8 q  c4 k0 I
  46. end
    1 c8 c2 f7 q, }( h# K$ z
  47. #===============================================================================
    - F2 c0 S6 R9 B
  48. # S Hud
    7 k& S, Y8 u* f+ U
  49. #===============================================================================! Z" g- j- J; I9 l. S
  50. class S_Hud < RPG::Sprite
    ' D2 R, h' ~! Q. b0 g5 y
  51.   include MOG2 S! g" g/ W' S0 h& K: ^6 B
  52.   #--------------------------------------------------------------------------
    4 }7 |0 n. J9 f% ?% R3 D
  53.   # * Initialize. g7 R  g! }: U  M
  54.   #--------------------------------------------------------------------------
    ) F+ O% N3 J8 j, [  I( {
  55.   def initialize(enemy,viewport)7 O4 a8 b: \% K: `3 S  |# o
  56.     super(viewport) ) Y5 X* ?3 P* p! H
  57.     @enemy  = enemy3 i! m7 h& M) x
  58.     @battler = @enemy.battler
    9 W/ `" [. a: A+ R
  59.     @old_hp  = 0
    8 _' W5 ?/ c' f' q3 P
  60.     @old_sp  = 0
    $ u, M9 K  L  n+ G
  61.     @old_vis = false0 a1 S6 t: s+ U2 m7 K/ p
  62.     self.bitmap = Bitmap.new(100, 100)
    8 q, `; ]' ~# S) I3 A& m. v$ T
  63.     self.visible = (VISIBLE_DEF)#false9 C2 L3 M$ `9 {# T0 N6 q6 _) ~
  64.     self.z = 100
    4 P- e1 Y7 s$ P. D$ i
  65.     #HP Border -------------------------------------------------------------------
    ( G* h+ ?$ w% u( l8 _2 g
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    ! J' ~- v% A2 W6 o2 U4 O
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)  s' c* F$ Z6 \- r
  68.     @layout_sprite = Sprite.new
    + D2 U- A6 q$ x6 Y$ k
  69.     @layout_sprite.bitmap = @layout_bitmap( T7 l" r2 [0 Z" v3 _  }
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    6 w, j. j7 d# ^! f* u% Z% B& }
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      $ Q/ H0 Z$ A$ N. c8 ^
  72.     @layout_sprite.z = 50019 c$ j/ q' u' T
  73.     #HP Meter ---------------------------------------------------
    ' I0 ?# s6 V* V0 o
  74.     @hp_flow = 03 t- a2 S2 Q( e4 _! k
  75.     @hp_damage_flow = 0
    , q/ z" f6 f; O& f# ~1 R
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    ! Q6 D# [/ M! |. @0 r0 x& P
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)$ \$ d9 W5 U* Y8 c) _( z
  78.     @hp_range = @hp_image.width / 3
    0 g. O" g" \. h( E* V+ c2 w. j5 k
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    . M: k' A  G- R
  80.     @hp_width2 = @hp_range / 2+ B# g1 a+ _) f# J$ D1 Q) r, q
  81.     @hp_height = @hp_image.height / 2
    0 p, E# f2 n- V% T6 X! J/ k
  82.     @hp_width_old = @hp_width7 M  W1 b% ]" {' `8 v( Y2 l) ^& t
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)5 n$ n1 B( t) V2 M+ f) S+ ^
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) . B4 O' }* ~. n% _* ^; o
  85.     @hp_sprite = Sprite.new! g( d8 Y6 F) o% `/ v4 g# B% [
  86.     @hp_sprite.bitmap = @hp_bitmap
    + v9 ^; v) V8 E' @
  87.     @hp_sprite.z = 5002
      ~! x6 E4 J# ~  ?
  88.     #SP Border -------------------------------------------------------------------
    . D1 w7 h0 C' s! E! R, e$ ]; h
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    - t% l  k+ D) s# n
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)$ M$ n8 ?  f6 X4 @
  91.     @layout2_sprite = Sprite.new
    ! O/ t$ b; j( ?! v) C3 q6 r- I( y2 i- b
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    - p- C$ x" Q5 u+ F$ w
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
      c. Y$ l  S. O( ?. O3 a6 Q
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    5 v* j) O6 X& V) G1 K9 P7 ~! p
  95.     @layout2_sprite.z = 5001   
    , P: l; t2 c& x4 g2 R9 e
  96.     #SP Meter ------------------------------------------------------
    & n  ]" E2 z/ g  {; s1 q" G
  97.     @sp_flow = 0
    + ^) G. S7 B* G7 A: W! y& j% B
  98.     @sp_damage_flow = 0
    9 w9 v8 F7 R7 ?9 B* }7 S! @! e
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    $ y6 `* l& U( M# Z( D& l; e% ?
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height). f  s' o8 ^  i
  101.     @sp_range = @sp_image.width / 3% b1 \7 `. Y, @' Q
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp    L" Z$ [3 D* I% W+ W% Z
  103.     @sp_width2 = @sp_range / 2
    - O1 j& M' q9 F8 E3 V0 i
  104.     @sp_height = @sp_image.height / 2
    3 H; r% u0 M3 t+ M
  105.     @sp_width_old = @sp_width
    : t# e. ~, I6 t
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    ; `. {( ]# I: V) I# Y& \7 h
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    # k- a' T$ b5 X5 O2 p! h1 C
  108.     @sp_sprite = Sprite.new! j, [' I) v8 ^# Q
  109.     @sp_sprite.bitmap = @sp_bitmap
    4 f7 l# i: Y& X5 _( P, i" k9 I
  110.     @sp_sprite.z = 5002$ j/ x' A$ j' X; B+ Y& ^
  111.     update
    ' q" |9 L6 f/ z- d1 D
  112.   end7 ~$ R# V) i0 R; W! e
  113.   #--------------------------------------------------------------------------9 U, V/ G# g" R
  114.   # * Refresh
      p& t( e& x+ h  b- w6 q
  115.   #--------------------------------------------------------------------------
    . ~+ u" x' i" Q7 J- M
  116.   def refresh
    6 W0 u+ \  {) ]
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible0 M' U8 ?* q8 j
  118.     self.bitmap.clear
    ' B7 ?4 d$ ?9 L
  119.     @old_vis = self.visible7 W3 R8 r' }4 Y4 V5 s. t
  120.     @old_sp = @battler.sp
    0 v9 h1 |# m% w. u4 A' Q2 P& h" Z
  121.     @old_hp = @battler.hp
    7 b! K/ t; H  H- k% j" v
  122.     hp_flow_update: M5 B7 D5 k3 L8 M
  123.     sp_flow_update7 c, H2 s: H& q( d* C
  124.     hud_pos_update9 ~/ c  p* B9 r+ Y0 i$ _
  125.     visible_update' n8 y" o2 Q2 u$ W1 Q9 J/ ]+ s
  126.   end4 q7 l3 c, }+ D* L) @
  127.   #--------------------------------------------------------------------------4 j5 S) G2 Y: _/ l) z
  128.   # * Dispose
    ' ^- m1 a0 {/ _- c; r
  129.   #--------------------------------------------------------------------------
    & A" B* }7 L4 [
  130.   def dispose
    4 M3 Q1 ]* n4 F
  131.     #HP Meter Dispose
    2 z4 L. Z7 F% F4 z. f6 @
  132.     @hp_sprite.bitmap.dispose& @5 I; q) {: S
  133.     @hp_sprite.dispose
    . l+ W! ]# a( U) `3 \5 m1 ^
  134.     @hp_bitmap.dispose3 Q' B) H+ Z! c4 ?2 H% N( G1 S
  135.     #HP Border Dispose. l+ n' z) P% ^3 I! N9 a" N
  136.     @layout_sprite.bitmap.dispose
    ; G( X( _4 S8 K% j0 E
  137.     @layout_sprite.dispose
    3 ?" m  m1 O9 S+ q. b, [8 p
  138.     @layout_bitmap.dispose3 a; v9 J" e# d
  139.     #SP Meter Dispose8 @& R1 |; {6 b* I
  140.     @sp_sprite.bitmap.dispose' }. [" e) u% b
  141.     @sp_sprite.dispose$ F6 M( f6 ~2 N& U0 x
  142.     @sp_bitmap.dispose+ h! l( g3 T8 z1 S' y9 C) q
  143.     #SP Border Dispose
    ' G, U1 d+ e3 n4 e: u% ^( k6 F* P
  144.     @layout2_sprite.bitmap.dispose
    5 ]1 P; ?6 D$ K4 U1 x) B
  145.     @layout2_sprite.dispose
    + f3 P9 j( V2 A9 u4 j& w! _
  146.     @layout2_bitmap.dispose
    - M9 P! F$ I2 q0 U* v
  147.   end
    " j, U  V/ \$ v
  148.   #--------------------------------------------------------------------------( \1 P4 q/ d5 W8 V
  149.   # * Update
    3 g0 o1 g* z9 N( T; H1 I
  150.   #--------------------------------------------------------------------------
    1 S$ V5 p% e3 \: ?
  151.   def update
    6 @$ \9 l/ V' z9 r
  152.      @battler = @enemy.battler
    7 W2 V4 L. o* B/ h" q, Y
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    & V& A; n- ]7 ?% P- p
  154.      if self.visible( y( R  p7 z* w9 ?5 ]: U+ L
  155.        refresh
    , ]- F) h# H8 h$ w
  156.      else
    & z$ \2 C: }. H: a6 \
  157.        self.bitmap.clear: f' q) |  Y1 V. k1 d9 R
  158.      end( x; B9 G9 Q6 Y( ]
  159.   end$ U# n1 j$ h: w" j
  160.   #--------------------------------------------------------------------------
    9 }  W) e3 E8 l+ ~8 D% e% f
  161.   # * Visible Update1 F$ V7 U0 k% G& G. J
  162.   #--------------------------------------------------------------------------8 ~$ c! {* i. f( G/ t6 \
  163.   def visible_update  t/ c, Z# O6 @$ M
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
      f9 g! v) {" a( l4 w# t
  165.        @hp_sprite.visible = false% N# j( h! S% P" t; r- z( b
  166.        @layout_sprite.visible = false
    ) S# r% [) i0 `: X
  167.        @sp_sprite.visible = false
    & @# K( S7 c8 s  W; ]# I
  168.        @layout2_sprite.visible = false. y- T+ ~9 F+ s: C* d" X; \- G
  169.     else1 U) ~/ c0 L* ?, q" q1 q" M
  170.        if HP_HUD == true
    , i4 s3 Y, \1 k1 M
  171.          @hp_sprite.visible = true% F3 k1 y3 I+ W1 z% w
  172.          @layout_sprite.visible = true
    $ w( N3 v0 p; [
  173.        else' a5 I$ u# D( n# F, e$ s+ j3 M0 Q
  174.          @hp_sprite.visible = false
    5 J3 e. D4 w$ `# n5 v
  175.          @layout_sprite.visible = false" u9 M0 l5 I7 j  |, n
  176.        end  
    4 w5 E; P( s5 R/ M$ i
  177.        if SP_HUD == true
    * P! j- W( F( ?9 G7 O8 R& O* ~
  178.          @sp_sprite.visible = true8 I- P/ N% N( v9 [8 ^5 N* |. I3 r
  179.          @layout2_sprite.visible = true
    ) W5 u9 z- [8 S8 T
  180.        else& g, L) m! d5 J) g; i
  181.          @sp_sprite.visible = false
    # c$ D2 ]( @8 Z) ~. k- D) ]0 q
  182.          @layout2_sprite.visible = false' m! E& T9 r$ K, v6 o3 U
  183.        end
    9 u) E& h5 _1 a
  184.      end  8 c+ ]  y( d4 q7 T/ c9 O
  185.    end
    8 s5 g$ z) f5 p6 a) S. v
  186.   #--------------------------------------------------------------------------
    3 i/ I' {% t* H0 t; O# _
  187.   # * Hud Pos Update: x, j% Z" o* l8 I2 Q" L% p. `
  188.   #--------------------------------------------------------------------------  q( \8 i& L9 d$ c: v  N) W0 `
  189.   def hud_pos_update8 r1 R  C3 U. z" [8 S
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    ; s: }7 H" ^0 K
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  6 L7 \2 ]# t/ Y" L  ~9 Z3 _
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    ( M! y! g* Q9 s! B
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 0 _  n" |6 d0 C( ?
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X4 j( ?% z# n' V2 N; v3 l% d
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  - U' Q3 Z4 ]+ U- }4 M6 N4 u9 K
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    & w3 I- }2 J. s4 h) ^% R/ f
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     . {: r/ F  `6 p7 S- y# {
  198.   end  
    0 l( I5 ~" B, J4 V
  199.   #--------------------------------------------------------------------------% N) w4 S+ v! C( G
  200.   # * Hp Flow Update
    , F; G4 e2 i1 e5 f( P
  201.   #--------------------------------------------------------------------------7 ~( `) E% d& B6 Z
  202.   def hp_flow_update
    - l8 R( `$ W! T3 R# z2 b
  203.       @hp_sprite.bitmap.clear
    % I( ]# A5 w) X% F
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    . T3 m8 A& r6 g6 @# t* M( D
  205.           #HP Damage---------------------------------! q2 ^+ s, V" x
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1000 Y! w* k( f0 V' f
  207.           valor = 0.5 if valor < 1          / {2 A! B; Z# \9 o* k
  208.           if @hp_width_old != @hp_width( E& T+ ^4 I7 `- G
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  : `- i+ {" Y' L0 ]/ Q* B- \. r
  210.           if @hp_width_old < @hp_width   b' c* g- J9 d7 w$ J
  211.              @hp_width_old = @hp_width
    0 d$ x* G5 p8 a$ Q( ], }
  212.           end      
    1 |9 u% p. D) E5 M" R+ X2 y
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    $ L4 Z7 w$ Z" |1 V: D
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       7 V, c2 D! ]! Q$ _/ U2 }
  215.           end        0 h6 V5 B' ?) ~0 p
  216.       #HP Real------------------------------------
    " g$ N1 x7 z! i' @6 g& G8 z
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    9 O* M2 r& l  \0 Y: y  B
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          ' Y+ {4 m" B8 s. b* F5 f
  219.       @hp_flow += 2  
    6 |1 f  ]- K9 F
  220.       if @hp_flow >= @hp_image.width - @hp_range
    ) t1 m9 t4 f/ S, P! c8 I
  221.          @hp_flow = 0  5 s3 A6 Z/ ]" a2 f' P
  222.       end5 K+ j9 e3 G6 X- c. y* t
  223.   end   
      F* g( Y& L; R. N
  224.   #--------------------------------------------------------------------------
    2 u4 s* q) w0 }8 f9 P5 g7 B4 U8 \& A
  225.   # * Sp Flow Update
    ! e: K2 ~$ U: J! k1 p) B7 m9 \
  226.   #--------------------------------------------------------------------------
    4 O: P1 W; a! k+ s  i
  227.   def sp_flow_update( c  |2 R0 ?0 S, Z- s
  228.       @sp_sprite.bitmap.clear; X9 h$ r7 J4 @) v* ]& x
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    * B$ h7 K7 |/ n' Q; j( G1 h1 S
  230.           #SP Damage---------------------------------, ]4 P6 t  N" J8 h, `
  231.           if @sp_width_old != @sp_width1 z. f2 x+ q2 e, w/ g7 p- \
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    1 _1 o( `9 t8 a: S0 w' Y7 J/ D5 Q
  233.           valor = 0.5 if valor < 1              
    / w9 e( _9 j3 Q% e; @
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  5 V  e; D& |7 V0 ?" B8 I
  235.           if @sp_width_old < @sp_width
    - E; [8 p" `; [
  236.              @sp_width_old = @sp_width4 W3 R4 }7 O0 ^+ V. \$ T9 A0 M
  237.           end      # a; I( M% y$ \( h2 q
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)+ Y0 G. }/ R7 ?  G# G! n' G
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) 0 ?$ u- E9 X( o/ T# ~! r
  240.           end- _- T6 K* p; P4 }9 E) |' G! D
  241.       #SP Real------------------------------------
    ' k$ h# a( X/ R4 k/ M0 g9 B
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    : C) b% E$ J/ [% ]8 G3 y
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    & r, \* L1 a; M- l. u# C' I
  244.       @sp_flow += 1  % P7 ^5 a" y5 M: q
  245.       if @sp_flow >= @sp_image.width - @sp_range
    0 {+ B( x& [5 S' H( T
  246.          @sp_flow = 0  + b7 O  C! d* W
  247.       end
    6 d( {. O4 F1 c6 |
  248.     end            
    / [, e- P# ]& Q  s7 Y4 g/ F
  249.   end1 h8 q8 s) v  Z
  250. #===============================================================================2 i! W3 u; X! `( q
  251. class Sprite_Character < RPG::Sprite
    0 X1 @: i' [: p& K, U
  252. #-------------------------------------------------------------------------------4 p) r: }9 e, e. l
  253.   alias :xas_emini_hud_init :initialize
    8 m& u) F% n( J! {! K
  254.   include MOG
    ! N% x; E. J" k
  255.   def initialize(viewport, character)' H! Z( E+ l, @8 G# I5 ~
  256.     xas_emini_hud_init(viewport, character), x' P( }6 O0 i# z  ?2 C: X: V
  257.     @viewport = viewport
    * z* N" z7 a2 S4 J
  258.     return if @character.battler.nil?
    1 u( `  D' w! V
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id); C0 }7 U" w" h; S5 l2 h
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)% X8 @$ p: ~8 t; m/ z
  261.     return if @character.battler.is_a?(Game_Actor): _( G  H* s7 a
  262.     @bars = S_Hud.new(@character, @viewport)2 A  Z1 k- m# Z6 S9 F7 A+ w; e
  263.   end
    2 h/ L3 }- \/ Q9 C
  264. #-------------------------------------------------------------------------------
    , M+ @+ M/ Y: |/ }2 b+ u% y
  265.   alias :xas_emini_hud_up :update
    # E$ g: s# V# P# o4 _
  266.   def update5 q- Y6 P/ n3 y
  267.     xas_emini_hud_up
    ; e1 W/ W8 J2 [) N
  268.     return if @bars.nil?; ~) @6 h7 a( C$ F
  269.     return if @bars.disposed?
    % B9 @( P4 p. N5 s, a0 N+ a. P
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs" |3 O5 k' l. N' d3 @* b/ w
  271.     @bars.visible = (dis <= RANGE)
    & F/ H& f: S! X
  272.     if @bars.visible
    ' m# W/ c. V: w$ w
  273.       @bars.x = @character.screen_x# - @cw / 4
    4 s9 Y1 q3 W8 k% r0 r" i6 t, [
  274.       @bars.y = @character.screen_y# - @ch / 4
    8 R- B' o1 u% v- V  D) L
  275.     end  M$ d- O. I; J  e) P; ?2 b/ ?0 n
  276.     @bars.update
    * m( l) R/ x# r/ v: U6 g* S* v
  277.   end
    9 E5 L& ^" w- C; i1 j, U
  278. #-------------------------------------------------------------------------------" s/ f5 R$ X, k; P: \# _
  279.   def dispose( C/ c/ g8 D7 J% Y( B3 Z  B
  280.     super
    / K5 C  k+ |$ `* R. \9 V
  281.     @bars.dispose if !@bars.nil?
    " r- K( a# L0 w; ?
  282.   end
    8 C; P  v/ z$ i, d" k
  283. end
    9 J. ^: U0 C2 f( `  J, B3 W

  284. 6 O2 ]& `$ q/ [6 ]( m) C: f
  285. $mog_rgss_s_hud = true
复制代码
4 d, B0 H0 G; ?% `7 A

$ d( n9 m: O4 F9 ?$ i- F8 S# u; X* |' W
上面所說出錯的203行內容為* x/ r' z4 X2 y" C0 A, ]8 ?
@hp_sprite.bitmap.clear
3 T; u' O4 c0 `" ]! X+ p4 R3 q7 u/ Y: Y: E3 D1 C
想知道怎麼解決5 `" x4 d8 M3 I  O  H* S: I, M8 _
9 d7 C! b7 H" c! w- a5 K& r
該腳本支持3.82
  U$ M, R0 k$ `# u; Y/ z" a, |1 @+ \  M9 R+ d8 G1 t
下面是圖檔,要塞在Windowskin下$ i' J& y1 |/ ?9 b/ o4 w+ W: m6 D
$ k! Y$ y4 R* g: `' ]4 Q/ ]
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) & Y; `& n8 `/ g. ^$ F" G

6 z' B( ~. N+ a
2 u2 @# c: q. H6 ?, H9 p# ^. L) a" ?
: y5 _8 k9 h/ @
梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
回帖
571

开拓者

发表于 2012-10-14 18:55:09 | 显示全部楼层
貌似是释放的条件不合适% C0 t. j) [# Z/ S% B
结果尝试刷新了一个已经释放的图形' X' O2 p. Z* w, j+ C5 m
! v8 a0 N+ X- G
2 J5 k( H# F/ C" s; k% r

" @5 P6 U5 N  l虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?. \- A( }4 U0 o5 Y( [2 }. F
复制代码
不要后面那个条件貌似就没问题了。
5 t# Q+ h, f0 V( p
- m$ z" h6 x) k% R. X8 H6 N1 c6 D7 q* W; v
9 D4 E+ P3 ~6 g
' D4 Y8 S" Y$ y
往事简直不堪回首,稍微做点想做的事吧
回复

使用道具 举报

梦石
0
星屑
687
在线时间
1808 小时
注册时间
2009-7-12
回帖
416
 楼主| 发表于 2012-10-14 19:12:00 | 显示全部楼层
ML4455739 发表于 2012-10-14 18:55
' @1 H( |' E2 G5 c  j' E' M6 V貌似是释放的条件不合适
  t8 y0 C* J/ H7 O; W结果尝试刷新了一个已经释放的图形
0 r, k" k# F3 r# O
把後面那個條件弄掉後,的確沒問題了
% C+ C6 C  A$ r& K6 n3 g目前從關頭打到關尾結束都沒再彈什麼錯誤5 E. }$ x1 [' Q  n0 y, N, O
非常感謝% t* E% V; O+ n
0 q2 \$ G. C2 {* n# E
不過我是參照著別人腳本改的
" y/ T; L3 H, k3 ?1 q9 N他寫的條件式也是那樣,但我用他的沒什麼錯誤
4 ^' u8 w# ^3 w# ]不知道是怎麼回事, U6 O& R3 X5 a5 o9 r0 K
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
" V9 V( B: m+ Z我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
回复

使用道具 举报

梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
回帖
571

开拓者

发表于 2012-10-14 19:19:14 | 显示全部楼层
$game_map.events
+ `4 o# I7 ~! ?9 |+ ?嘛..这个数组吧..我在以前试写队友的时候关注过一点% A$ T; `" q+ {( K* n
不知道XAS内部对它做了什么手脚还是为啥,3 W- j6 @9 U9 h+ _
总有那么一瞬间,没有被消灭的敌人事件也变成了nil
" w2 Y6 M/ P" c" f$ ~1 c) s
# m4 [2 m. H* E. y9 L; c$game_map.events.values[@enemy.id].nil?$ S* _$ B1 h; g' q5 E* H" T& e$ J8 U
因此自然而然的返回true并符合条件把图形释放掉了
- |" D+ m" f% j2 A* a+ a. s
, S1 E4 |7 t2 R3 Q7 m9 g- t8 `3 H9 CLZ应该有注意到吧,
& k$ ^1 s2 Z3 A4 S/ o) F$ E8 G我测试的时候发现报错前几帧,图形会消失,/ j( |8 S; O2 g$ }3 _2 w
应该就是“误以为敌人被消灭”了。
1 v9 I# o1 \" d2 \  `9 \
  N2 _5 @4 E8 B- n9 ?受限于个人水平,至今无法找出$game_map.events的真相..# r9 a* d, T7 F# d
往事简直不堪回首,稍微做点想做的事吧
回复

使用道具 举报

梦石
0
星屑
687
在线时间
1808 小时
注册时间
2009-7-12
回帖
416
 楼主| 发表于 2012-10-14 20:06:40 | 显示全部楼层
ML4455739 发表于 2012-10-14 19:19
$ c1 E8 j4 r) i9 y- f/ y- h! e- o, g$game_map.events
$ `4 M" k% ]. ^0 X& f: J# J嘛..这个数组吧..我在以前试写队友的时候关注过一点4 j4 F9 j# s! I5 S
不知道XAS内部对它做了什么手脚还是 ...

) z! a* ^. P% x# u5 \% l  ^! B當初我把那個條件式看了三遍,都不覺得他有什麼錯
/ g* W, q7 x: V原來還有這麼深奧詭異的事XD
/ V+ P7 F7 z$ A6 m, u! Z2 |% a- @
% ?$ V1 `9 |. n* c( b/ V. l錯誤發生前的確會有圖形沒顯示出來. K0 r% h0 C3 |' `, p' ?
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
( e  W3 E/ m3 C4 o& Z沒想到居然是詐屍了XD
' q" u3 N5 ?# P, s7 z6 `6 V0 T  T  C8 d- {
不曉得3.91有沒有修正這問題...
" q; e: E* K& r, x不過3.91改太多,實在有點沒動力去剖析他...=___=
回复

使用道具 举报

梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
回帖
571

开拓者

发表于 2012-10-14 20:09:57 | 显示全部楼层
恩。。没问题的话姑且这样吧。# a9 F( k3 f9 ~0 @
1 j4 g; ], z7 O* b1 f" Z% Q
的确
; Z/ |0 Z$ L- B: z  o用惯3.82之后想去整3.91觉得压力甚大..% D# J1 O$ I, _: _  O; D
干脆就等XAS4了。我知道那是天坑。
往事简直不堪回首,稍微做点想做的事吧
回复

使用道具 举报

梦石
0
星屑
14555
在线时间
22062 小时
注册时间
2010-10-24
回帖
302
发表于 2012-10-14 22:09:20 | 显示全部楼层
LZ是触手,鉴定完毕。
噫
回复

使用道具 举报

双子人

梦石
0
星屑
3205
在线时间
3619 小时
注册时间
2009-4-4
回帖
3901

开拓者

发表于 2012-10-16 12:37:42 | 显示全部楼层
在那个脚本里面找一下“dispose”。- @) ~. ]7 a) \$ ?
8 ?$ }- P9 Z5 n
然后加一个判断处理的。(我记得有一个disposed?)
回复

使用道具 举报

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本发帖返回顶部