Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
- q$ v5 C" q/ c% ^6 q: u+ R會在每隻事件怪物的腳下顯示7 p1 S: u9 N/ n
問題是不知道為什麼& m5 v/ G$ f9 I4 P+ ^
有時打怪打一打會跳出2 V( }3 ]. L1 m; a
---------------------------# c- F. g" o0 p
XAS
: B: S( C" G. c; o6 B1 ~( K% o---------------------------
' l+ R; O4 V! I$ i脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。3 D1 }$ o' o& z7 T) `. k

- H, h1 a9 M8 O7 R9 R* _3 W3 jdisposed bitmap
; L- |" L9 t' a7 W4 u---------------------------
) L, b& M" j* H/ a- ]確定   
7 x1 i  O0 M* ^---------------------------
% X8 _2 y- H* y9 J3 D/ I
: G; }& L1 I/ f( s8 O/ Q這是腳本) |* p- y$ x: ?+ E: m3 }8 r

; T8 s1 Y4 T4 R" D, y0 O# s
  1. #===============================================================================
    8 ?$ Y$ J, F4 J/ S. K3 [
  2. # MOG - s Hud 1.0      
      }& c4 {8 J  \2 p
  3. #===============================================================================+ X) d3 S( C( D7 W
  4. # By Moghunter 3 _) e( m4 H4 E7 K; c
  5. # http://www.atelier-rgss.com+ o; U# ^9 {- d$ K. {  j
  6. #===============================================================================4 i# i, Q, u6 R$ U6 o& \; W
  7. # Translated by Calvin624
    % ~0 }# L% c! O( v
  8. # http://www.xasabs.wordpress.com' [& @/ |4 L1 j# p
  9. #===============================================================================
    * i$ B. |- d, l" r/ R
  10. ###############################-DESCRIPTION-####################################( W: f' y& u. g0 g! H1 A! ]# V
  11. #===============================================================================
    " I( v) ^6 P) j: n: U
  12. # Personal HUD – displays the HP and SP below the hero.
    % n/ F( Y& R# _$ S! V. B
  13. #===============================================================================$ @% L, R; y. T% \, q% v
  14. #
    ; [8 B: p8 N- G6 p
  15. # Graphics required:6 y: E! U! y, i  U- @& W# M3 j
  16. # 6 m( `5 C6 N. w
  17. # S_Border_HP_Meter.png) {+ {9 n+ i. J: l! D7 v9 K0 H' Y$ E
  18. # S_Border_SP_Meter.png
    1 I; v7 J: ?+ \+ i4 K) v6 N+ i2 y" S
  19. # S_HP_Meter.png1 }9 J. e- E- S2 c
  20. # S_SP_Meter.png0 \0 ]% Y+ C/ E) `7 }+ ~& {
  21. #6 j  r/ T) D6 l# H
  22. # All images must be in the Windowskin folder.6 T, M/ }" h8 X: x9 ^
  23. #
    % v/ s* U5 P! b9 `  d4 Z. {
  24. #===============================================================================$ R8 @( T' U; c5 h3 J) B+ S% p8 f
  25. module MOG
    ! a  t/ Y% ~% O
  26. VISIBLE_DEF = false  
    7 C9 I% \: J1 J0 s
  27. # Show HP meter?! C" k5 O! G- t( C8 R
  28. HP_HUD = true
    , D% G! C! t* u2 C
  29. # Position of the HP border
    & a* x- R% F- r3 A/ U6 B
  30. S_BORDER_HP_METER_X = -2
    . w6 K- p- E, ]# y1 R7 n
  31. S_BORDER_HP_METER_Y = -2  4 N2 E; @& D3 n; Z  h7 G* r
  32. # Position of the HP meter
    % v2 v9 |# S/ k; l+ _
  33. S_HP_METER_X = 0
    # A$ S# e3 e' F/ i
  34. S_HP_METER_Y = 0
    ) b! }' s! I$ s6 W* c( x9 M
  35. # Show SP meter?6 S7 J2 X  `; q
  36. SP_HUD = true
    1 n" B5 }* j& t+ e8 g
  37. # Position of the SP border
    " F0 ?7 i7 l) h% K' y& h
  38. S_BORDER_SP_METER_X = 05 M' J, S" D0 J
  39. S_BORDER_SP_METER_Y = 10
    8 A9 x8 I  y' t* X: p6 ?# S5 F4 }$ g
  40. # Position of the SP meter
    : |  w; j( f# I- F. D5 o5 n. x+ ?
  41. S_SP_METER_X = 0& q& l  V% e* O- ]
  42. S_SP_METER_Y = 10
    & F8 R  D; E3 ~1 O/ M4 Q
  43. # Switch to disable the HUD, y8 y% A- a! o& S
  44. DISABLE_SHUD_SWITCH = 5
    2 A6 i+ B* G' J
  45. RANGE = 20  x+ q$ n. Z  Q5 {1 E. x
  46. end. B/ g7 R9 ?! Q* E
  47. #===============================================================================/ j2 n9 f+ |. s# I
  48. # S Hud* V/ I: R$ }: S5 b  L4 ]
  49. #===============================================================================
    ! b( \( N5 m1 @1 g  P1 D
  50. class S_Hud < RPG::Sprite+ r9 ^2 \; D' u1 p% ?  E( f4 z1 i% M
  51.   include MOG* e0 R- u  D$ c% i# g0 K
  52.   #--------------------------------------------------------------------------. M) P( a1 s7 _" v$ A' \
  53.   # * Initialize
    5 K4 f6 h2 _2 u
  54.   #--------------------------------------------------------------------------
      a1 {! n2 S2 D" Z, @, k' B
  55.   def initialize(enemy,viewport)" K- Q0 E4 X: \
  56.     super(viewport)
    # e: m, I$ G. T1 G, Z* q
  57.     @enemy  = enemy9 e' b5 a* t8 [' {
  58.     @battler = @enemy.battler
    ! ?2 q3 E: Y# [" ]6 i* ]- Z
  59.     @old_hp  = 0
    " S' I& m4 ?! t- c7 ~, m
  60.     @old_sp  = 0
    % {# H' Y: Z9 O4 F4 J6 ~4 J. ^0 \
  61.     @old_vis = false/ C! q6 r6 a( I/ t4 ^/ y
  62.     self.bitmap = Bitmap.new(100, 100)
    ! S4 t7 y3 X8 c5 N- O/ _. c
  63.     self.visible = (VISIBLE_DEF)#false+ L* t; p2 _5 H, V4 \0 R# |. o
  64.     self.z = 100. e; H' s2 _: b/ G
  65.     #HP Border -------------------------------------------------------------------4 Z$ s% N% p& \5 |
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    - k( K, e; O3 i
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)2 Y+ {" C$ b2 y
  68.     @layout_sprite = Sprite.new' V1 B6 O# D7 I7 V3 p
  69.     @layout_sprite.bitmap = @layout_bitmap3 @8 K! T, W+ m4 J- d8 N7 r
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    % \$ }# S, c  H/ ?' ]$ l
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      # D4 k7 a, J9 ~( v
  72.     @layout_sprite.z = 5001
    9 n# S: @; G+ K& {. y  O3 Y- v$ X; ~
  73.     #HP Meter ---------------------------------------------------
    # t1 _6 K! _6 k5 k2 U7 S5 m, J6 X
  74.     @hp_flow = 03 r: {1 A' {: z/ s! k
  75.     @hp_damage_flow = 0" L* }0 E" M: O1 V9 c
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    / z: |4 M! A& W' B" u+ V* e
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)  _, W7 G! X0 T$ O& h3 g- o# v
  78.     @hp_range = @hp_image.width / 3
    ( `  y6 X0 {, S- t. G0 U
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  % w. @9 L+ L3 g9 ]4 @4 L3 H( B* i
  80.     @hp_width2 = @hp_range / 2( _" Z  [3 {9 k. j" q
  81.     @hp_height = @hp_image.height / 22 G; o2 A1 @0 K' b+ u' `/ `
  82.     @hp_width_old = @hp_width5 s7 N+ @: V6 ?& @
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)) P7 S8 q- q8 C- V- q
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    - a+ Z, ~  O5 R9 z
  85.     @hp_sprite = Sprite.new
    * P4 F, T, G0 K3 d
  86.     @hp_sprite.bitmap = @hp_bitmap# f5 A7 \0 `: r' [3 v' ]2 ~& y7 M
  87.     @hp_sprite.z = 5002) n7 i  R( o* o$ _3 [! _, |
  88.     #SP Border -------------------------------------------------------------------  K' ?# H5 m+ A1 ^. O/ I- p, b. L
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")9 p1 T& D- [) v
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)& m. w7 Q$ ~3 i/ |
  91.     @layout2_sprite = Sprite.new1 f3 a. y- {$ O9 s* V1 ]
  92.     @layout2_sprite.bitmap = @layout2_bitmap& W6 d* t* z$ L" E% n" o8 R9 O% O
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)$ j5 ]; w( S- Q7 s; q' s
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      + ]% @, @" Q" w' t3 g. O
  95.     @layout2_sprite.z = 5001   
    $ @& R7 g6 ]5 F0 U! Y
  96.     #SP Meter ------------------------------------------------------1 x& v) [) ?/ O2 K9 V
  97.     @sp_flow = 0
    6 [# ~9 H  j3 N8 R* _4 L  u
  98.     @sp_damage_flow = 0
    8 ^) h7 k+ B+ F; }! Z5 c
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    ' t. k0 |" N4 B, @
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ! ?! _1 _7 \5 [6 F$ \, e0 l5 ^
  101.     @sp_range = @sp_image.width / 3
    8 ?  V* b  ~) y- O: p, ~
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    5 L- {) e0 [! y; j2 W5 c, i
  103.     @sp_width2 = @sp_range / 2) p9 t% Z! k1 |% \( G
  104.     @sp_height = @sp_image.height / 2
    & |5 A& _: X, Z2 I# j4 j
  105.     @sp_width_old = @sp_width' c/ N4 |0 M. R, A' n
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    1 y# b1 d7 O% b; v  p  d$ x6 g3 m& b
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ; C* |. K6 _+ B+ h8 {
  108.     @sp_sprite = Sprite.new
    , x9 R* v, x4 s. y/ u; j
  109.     @sp_sprite.bitmap = @sp_bitmap
    ! ?1 g* d2 j9 Z7 b0 B+ Q
  110.     @sp_sprite.z = 5002
    % d2 m; x/ H- Z
  111.     update2 q6 g7 \7 l$ H7 H; o
  112.   end
    8 T9 B7 K9 w  ]; {5 u2 a
  113.   #--------------------------------------------------------------------------) E2 b0 |  p' N. K/ c7 Z) p
  114.   # * Refresh) Y6 p) [; |, F* ]5 o% }) J2 \
  115.   #--------------------------------------------------------------------------
    8 P# U3 m+ {8 V+ e" u6 v, n
  116.   def refresh/ b5 l2 h7 P+ ^
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible3 w1 M# W$ S1 c$ V* h
  118.     self.bitmap.clear
    . h, p2 w& ?, L' S
  119.     @old_vis = self.visible
    % \! y- b. o6 u$ ~5 v2 ]
  120.     @old_sp = @battler.sp) o+ f- S) q8 F9 X
  121.     @old_hp = @battler.hp
    7 y$ {4 P* v' X
  122.     hp_flow_update5 U4 Z8 n6 o! Q- W7 K" f7 k8 n5 F
  123.     sp_flow_update; T! i4 F+ U/ o2 S8 F+ A# O
  124.     hud_pos_update
    0 f9 K( y+ a. S! U, r7 S5 w
  125.     visible_update+ `3 j2 o1 e( R6 }) Q
  126.   end
    ' a: F1 n0 @3 X+ S! r. n1 g( ^( Y* g
  127.   #--------------------------------------------------------------------------
    + L  W3 |1 `; y3 f
  128.   # * Dispose
    # C: t, _; s5 s8 W" L2 x
  129.   #--------------------------------------------------------------------------
    6 q4 e' n' f1 C( x7 U
  130.   def dispose
    # A$ ~4 I' ]1 B+ |9 x0 @$ g
  131.     #HP Meter Dispose
    ) d1 i( G; q2 Y
  132.     @hp_sprite.bitmap.dispose
    $ U" e& r: G4 T$ E' q% y% d; Q
  133.     @hp_sprite.dispose# F; [5 \: [3 y
  134.     @hp_bitmap.dispose0 }1 j$ o6 ~( m/ x& ?
  135.     #HP Border Dispose
    , _: D& i" _3 {0 }* z) u
  136.     @layout_sprite.bitmap.dispose, i* K% N5 J8 E7 G" N, p
  137.     @layout_sprite.dispose" I$ a: _" B) z7 g3 Y. x- C( ~: O( D  T
  138.     @layout_bitmap.dispose; s- s4 \5 N' e) z' I: }! D! J
  139.     #SP Meter Dispose
    " Z7 _/ F" d2 U( y- ^
  140.     @sp_sprite.bitmap.dispose
    8 v3 F' H% L' R. }+ M* d9 r% v
  141.     @sp_sprite.dispose8 l! C5 E/ T7 F& k9 B' ?' E
  142.     @sp_bitmap.dispose
    + [( R  k9 k: A9 N% L
  143.     #SP Border Dispose9 a. C7 i/ Y# u$ }: @4 S5 R$ w
  144.     @layout2_sprite.bitmap.dispose$ ]9 t6 @8 _9 Z+ F0 s" ]! D
  145.     @layout2_sprite.dispose; _% A& |. d$ }, G, a+ J3 v" e( ^! Y
  146.     @layout2_bitmap.dispose
    ! k" l4 E; U2 s8 M
  147.   end% m8 z0 d- w3 H" ~$ q$ B+ Y7 {9 d) M- c
  148.   #--------------------------------------------------------------------------
    # j) I+ [% P5 N/ q4 Q, u
  149.   # * Update
    * y  M8 v5 r, y% n) ], Y  X
  150.   #--------------------------------------------------------------------------
    * Z, B, \# R( S% J" B
  151.   def update
    6 K7 X" h- E1 O+ ]3 e* U
  152.      @battler = @enemy.battler
    3 @  U! B# J0 f; f3 v$ y
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    + y. b+ g7 d; t; ?* u. a
  154.      if self.visible
    . [; O" |1 [8 D, g) e
  155.        refresh( @7 {9 `0 L: Y
  156.      else2 Y( z1 y0 }9 W1 D: R- J
  157.        self.bitmap.clear2 w* x6 g/ C. p4 y- M8 B: R
  158.      end
    ' \7 i$ E- M$ d$ B* T4 n
  159.   end
    8 m9 G9 W; }  ^4 p: U# d  H
  160.   #--------------------------------------------------------------------------6 z  v& p# K" j5 y3 p$ K) p# p
  161.   # * Visible Update
    3 `& j" i8 a7 ^  G6 D( @
  162.   #--------------------------------------------------------------------------0 X8 Q# {; o3 {. j. p- \9 H
  163.   def visible_update
    5 A: b+ w! P4 j' x2 T* B! y
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true# n+ p$ w7 a* R  j! ^
  165.        @hp_sprite.visible = false# ]" B- E4 W0 |' x! u5 m
  166.        @layout_sprite.visible = false7 s+ C" X+ R) |; W5 i$ z) I! o2 V
  167.        @sp_sprite.visible = false
    , ~& j9 [: M7 o( C* k
  168.        @layout2_sprite.visible = false5 B; ~. N8 w8 N& |& ]4 G; t" }
  169.     else* f# t8 Q0 y: I* q
  170.        if HP_HUD == true
    , Z) z7 f( X1 b1 Q# A( r
  171.          @hp_sprite.visible = true
    8 {# X( m- d4 [" h# ^
  172.          @layout_sprite.visible = true
    0 U# }; [" ^8 E7 [$ V: ^- F3 {! l
  173.        else
    6 h2 A- r8 V3 c8 d
  174.          @hp_sprite.visible = false
    ( O. p) n0 a- N  U5 W$ c
  175.          @layout_sprite.visible = false
    " j+ ~  Y. u. M. m* }9 V1 R$ E+ s
  176.        end  " S+ Y* x( w0 z
  177.        if SP_HUD == true
    + E1 P$ m: B7 h+ k3 p
  178.          @sp_sprite.visible = true
    # D% P8 r2 K5 E& ^9 b5 m
  179.          @layout2_sprite.visible = true7 a( Z, V; i; |  R! J& Z# M
  180.        else8 v  p" X# A7 S# \- l
  181.          @sp_sprite.visible = false3 m) }, B1 I, f  ?  W
  182.          @layout2_sprite.visible = false
    * M1 V6 q$ o7 E/ p
  183.        end
    5 E2 u% R7 T2 U3 ^6 @. l* G
  184.      end  5 U" L( H3 F3 W7 q  N: n8 m% n
  185.    end % ~) _, U' d; I, e6 b
  186.   #--------------------------------------------------------------------------. T4 u8 Q  R+ _* `8 H0 z. ?; G
  187.   # * Hud Pos Update6 x! H- t" W  x& {
  188.   #--------------------------------------------------------------------------5 p0 B( \5 T- T: g9 r9 U& m# c$ e
  189.   def hud_pos_update' _: I3 d9 H- i7 \7 J
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    & E$ c- `0 ]( e( S! n
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    $ `/ [. T* |0 n5 o
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    # H7 P! t: G3 ~" K5 k' s
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 4 ]0 x7 R9 f, z+ d' P8 w, |
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X7 C7 K1 r% L7 G7 ~3 \2 O
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  1 h2 u8 d: s$ R1 k% T$ R
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    , q; X& l; b& m" ?# I2 V% r4 t
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     * l  k6 ]" e4 \, G
  198.   end  ! y2 ?5 ^) v3 b. p
  199.   #--------------------------------------------------------------------------
    - v7 B2 d* [3 h- ^4 I, S# j4 \. v# {
  200.   # * Hp Flow Update' g7 n4 P$ v& T2 r8 V, d
  201.   #--------------------------------------------------------------------------: K% Y% k& r: b# {9 m
  202.   def hp_flow_update& L% {$ s# N& g3 [4 v5 L7 u
  203.       @hp_sprite.bitmap.clear/ B1 }+ {% a: o$ }4 {3 v1 o
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    9 M  i: U$ h3 }  H, O  a4 H
  205.           #HP Damage---------------------------------9 A; M# q) F1 a. Z8 O5 h
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100; _) b5 L8 o2 q% p" a2 i! }7 F- r3 g
  207.           valor = 0.5 if valor < 1          ( g8 u" ?- [6 m1 Z
  208.           if @hp_width_old != @hp_width+ s3 Y5 W7 s4 v9 [; G. z' e
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    ) e; S- K& }" t; F! j/ r
  210.           if @hp_width_old < @hp_width 6 B# a, s- n# F, G
  211.              @hp_width_old = @hp_width
    . A' s& \8 ^5 G3 F, ^' j, P
  212.           end      # L' K* `9 N- O0 `# ^
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)1 c9 w) V' |4 L7 Q
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)         Q* F' M: Z0 S3 U" @7 |5 N
  215.           end        
    + k- x) p, z7 c6 r9 }
  216.       #HP Real------------------------------------' q1 O1 I$ j# B; Y$ V. n3 T" ~
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    0 j$ V/ ^5 t/ a0 K1 c. k6 e
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          4 y# f. b6 F! @! b
  219.       @hp_flow += 2  
    4 ]$ B0 j$ S, N" S# c4 m7 E3 Z
  220.       if @hp_flow >= @hp_image.width - @hp_range& Z! X1 A' x8 a: q1 j3 Q: i
  221.          @hp_flow = 0  9 V1 |) m9 U0 M9 H% w; ^$ G6 z0 X
  222.       end
    : m" y4 t7 L4 y9 v' m
  223.   end   
    8 E0 z& E; Q! k% y: P: j& w
  224.   #--------------------------------------------------------------------------
    * j3 W, G6 j. Z" M7 ^, B7 L
  225.   # * Sp Flow Update% j2 E* ]* {" v+ Y  Q
  226.   #--------------------------------------------------------------------------" J% [6 A6 Z* w1 z- ^) d
  227.   def sp_flow_update5 C9 e) S9 f: L- O! H
  228.       @sp_sprite.bitmap.clear& Z5 _3 g; ]' W$ ]  D+ W/ [4 G
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    & m4 W3 r2 P$ z- w( Y+ o
  230.           #SP Damage---------------------------------
    % w1 X3 D; K1 ?
  231.           if @sp_width_old != @sp_width
    / u$ F% _+ y! b- t; n% T0 w
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    ' n% v4 \  P1 {( ?
  233.           valor = 0.5 if valor < 1              9 K* a3 H* |6 v+ Q6 O7 Q; O( i
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    " a2 D. T5 |7 T# d/ W! l
  235.           if @sp_width_old < @sp_width
    # ^5 i1 ^- W: a- i5 a2 H, _
  236.              @sp_width_old = @sp_width
    9 h  [- V7 e" F1 N& m( M; b% Y
  237.           end      3 a; x/ `- g% M- X3 Y( q" F. v
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)$ A" G! T( U% y' E) v5 {4 \
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) 3 V% R7 f: W! n% ~
  240.           end
    1 d4 w9 c1 `( V$ ?! Y& M
  241.       #SP Real------------------------------------7 s5 h: E- T3 ~% O
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    ( V& r/ O& p4 l& x5 F. I4 D9 m; A3 Z3 c
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)6 b' f1 M5 p* H1 ?& O+ z! J
  244.       @sp_flow += 1    i9 ]& `- O/ T5 Q, }
  245.       if @sp_flow >= @sp_image.width - @sp_range
    ; y! C$ ^3 V0 u! f
  246.          @sp_flow = 0  , |/ j8 K: B, `% R# e: d" F
  247.       end7 T+ q6 s& i2 L! _! g
  248.     end            
    - q5 {- y  Q5 \( M6 _
  249.   end
    $ S5 s1 j% B+ X0 Z5 m& J3 }
  250. #===============================================================================5 ]. ?2 X. B" P
  251. class Sprite_Character < RPG::Sprite
    ( S$ q" o/ j9 _- j+ M! Q
  252. #-------------------------------------------------------------------------------- e2 y0 a6 K5 P
  253.   alias :xas_emini_hud_init :initialize2 e" z; N% m, p  z/ `+ H4 k
  254.   include MOG
    ) z* h- }6 y7 U- `5 A  Q4 h
  255.   def initialize(viewport, character)
    $ a/ q+ B  {- U- ^5 u
  256.     xas_emini_hud_init(viewport, character)
    1 `: }- T/ k0 ~1 R% ~2 e
  257.     @viewport = viewport
      J. m- w" y) m, G# w3 ^& O) x3 Z: a$ \
  258.     return if @character.battler.nil?2 F$ [8 y8 Y; W
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    3 t/ N8 Y: A+ Q+ @) |" V
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)+ w, {2 D. l1 J$ ~+ {
  261.     return if @character.battler.is_a?(Game_Actor)0 S: O. r3 T/ G4 H9 B. a
  262.     @bars = S_Hud.new(@character, @viewport)
    7 o! u; L2 @6 C" W* G$ ~  ^2 D9 J
  263.   end
    : b8 _& j1 R- j0 w
  264. #-------------------------------------------------------------------------------  K) U3 @' U- P
  265.   alias :xas_emini_hud_up :update+ \4 i5 B$ u! \* F' ^8 K
  266.   def update6 T: P) a: n( C* D/ O
  267.     xas_emini_hud_up
    * U$ V1 v) r! j; ~8 D% t- ~
  268.     return if @bars.nil?
    3 F0 O* e- g* R
  269.     return if @bars.disposed?
    ( v# M$ `. @( V( x- [( k, |
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    5 P: u0 s$ e) c
  271.     @bars.visible = (dis <= RANGE)
    ) h5 A: o$ w3 Z) W
  272.     if @bars.visible6 u" T& V$ K% T$ B; C
  273.       @bars.x = @character.screen_x# - @cw / 47 D2 C% d5 N! E7 L8 Y
  274.       @bars.y = @character.screen_y# - @ch / 4+ |/ O( K( y  H+ \
  275.     end
    : D) g* ^& M3 k7 O% J7 J
  276.     @bars.update
    . m  Y" j7 w1 ?# d! r
  277.   end
    , r  Z$ ?7 q2 o5 S
  278. #-------------------------------------------------------------------------------2 O4 O5 Q( c' J+ L- V/ N( z' m& C
  279.   def dispose/ }7 X4 M3 _! @, |7 H
  280.     super
    / g8 _/ ?* q3 @. x; L8 E3 P5 u
  281.     @bars.dispose if [email protected]?5 J: F: T+ g5 O
  282.   end
    , n8 n+ ]' d$ _% d9 P( Q0 c
  283. end, C2 _) Q9 R' s5 x+ Y
  284.   e# K9 v, n$ Y2 J+ Z: H% T  k' e
  285. $mog_rgss_s_hud = true
复制代码
- i; u1 b& c5 m* o1 d

, t6 j6 E) n& [9 }
& d- M/ b2 V: t2 Y6 ], e上面所說出錯的203行內容為  H2 Q8 ]  F! R2 `" ]
@hp_sprite.bitmap.clear' z+ b9 d/ O6 f/ Z: v8 m! G' p
# _) R/ w+ E  F: E# d& ?
想知道怎麼解決
4 ^# g/ c4 [# C# u/ m0 y! i" n0 ~# d  e/ a- K
該腳本支持3.82- f: l5 Q; {6 H( m

" a  P* E8 h0 z% q# Y下面是圖檔,要塞在Windowskin下4 D. B2 }% v- t! d! O  V8 `6 T
0 ~0 F8 V$ t3 Y! }& x$ @. o
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 9 w% y+ q/ w8 N3 h& r. [
) R' U, Z; n" v1 a9 ^
7 p( t  {; S; @- V3 S1 t* B/ b$ \

8 z( g: [  A! e2 {, l1 U
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适  P; i/ I3 U$ g
结果尝试刷新了一个已经释放的图形
9 ]. B8 S9 x: w7 F/ ?# N
4 \7 Z& R4 f& H' _; M, I& r4 H# Q5 K% [! J# x. _3 R- [

, P7 W9 A  v# ]/ [- X; x/ g虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?1 \- c6 o- c" a8 b6 Q: u1 @# i' l
复制代码
不要后面那个条件貌似就没问题了。
  B4 d! I, q8 c& `! R  }' P$ ^5 v- X# j2 i" W0 y+ `4 }' `& {
! B# u6 ], \& H
, {" i' L' I0 e, K( T
3 O+ R( I8 g2 k# f5 T. ?: T  o* l

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
  C  [# }7 ~& D! S/ ~貌似是释放的条件不合适: N0 s* }/ j+ `5 c; k2 C
结果尝试刷新了一个已经释放的图形
8 s1 E  h4 H4 a( u
把後面那個條件弄掉後,的確沒問題了) |! m) W! k; e4 J9 z- u
目前從關頭打到關尾結束都沒再彈什麼錯誤
' |! _3 G/ b4 Q! F! M. C7 [, ^非常感謝
9 k$ }7 y) J+ o! G7 R
3 h3 c- i3 e; u0 f不過我是參照著別人腳本改的% T6 L$ I. C" V2 p3 o5 q- m5 E4 m
他寫的條件式也是那樣,但我用他的沒什麼錯誤
1 b) x. e, k  n9 f不知道是怎麼回事
- Y  C  k7 Q! r+ l是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的% v" ~+ Z- n. |& ]$ U- u
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
. r* m5 e$ {: K* }6 w# I嘛..这个数组吧..我在以前试写队友的时候关注过一点
9 Q6 w% @; E  m) x  E* r不知道XAS内部对它做了什么手脚还是为啥,
7 e, G* l1 f; i8 h* M$ a& \: i6 c总有那么一瞬间,没有被消灭的敌人事件也变成了nil4 Y( \9 h/ R4 M2 W/ A! ?8 \' g

; K1 O% g6 m$ k1 z& p$game_map.events.values[@enemy.id].nil?' d; i0 a5 p( x  o/ {
因此自然而然的返回true并符合条件把图形释放掉了
- T# [2 @( A" J4 m/ {8 V+ A
8 Z+ Y% G' t* D  `- O. i* SLZ应该有注意到吧,
: u( I  u" ?# i6 f8 I. ]7 }我测试的时候发现报错前几帧,图形会消失,
! y1 \) Z) u) {& O8 B, g2 R9 m) |应该就是“误以为敌人被消灭”了。
3 V1 }  w1 C/ W; e
. h. d* T* G+ G, a+ n/ Q受限于个人水平,至今无法找出$game_map.events的真相..
4 z: ?2 R$ c) B" s2 N7 A
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 3 A, c& p+ @9 M# N/ D8 _  [3 f
$game_map.events
4 l8 G3 t6 t" e. g8 F3 R嘛..这个数组吧..我在以前试写队友的时候关注过一点& s* ]) Q3 [% |, {- ?! I  c
不知道XAS内部对它做了什么手脚还是 ...

; @0 H5 t% w  o, [6 _- K& `  T& c% G當初我把那個條件式看了三遍,都不覺得他有什麼錯3 D8 b* n3 d: T
原來還有這麼深奧詭異的事XD, q# g7 U" J' U1 g# h

6 ^/ N) d1 J$ s* l錯誤發生前的確會有圖形沒顯示出來
/ a4 A- {  K1 w& Z" B+ O4 K不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...* s7 P2 b- ?. W
沒想到居然是詐屍了XD( q4 c9 |1 V& X: ^+ q

- F9 a6 U& \" Z( ]: B" y不曉得3.91有沒有修正這問題...2 _: X$ |  }* ]) y- q# t9 T. T. o6 @
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。! u8 q) G( Y5 }8 q4 j. |" z
5 [1 E' A& I7 D- _: G
的确0 Q/ M( M/ I0 _( o2 }9 X* j0 F# O3 F9 p+ R
用惯3.82之后想去整3.91觉得压力甚大..% M4 o" N) N7 A* C- `2 E5 [
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。4 P& x- C4 o, S- n% O5 P  h
6 A3 w- V! j6 z" |/ ^7 x# ^
然后加一个判断处理的。(我记得有一个disposed?)




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