Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條" X3 ]+ g" w- ?0 L1 d5 m
會在每隻事件怪物的腳下顯示
* [4 n  z. o6 G1 ]問題是不知道為什麼
- i- c+ |  s# z有時打怪打一打會跳出
7 J3 i! P# Y4 R1 \6 O4 x---------------------------3 G! D/ T; V, I0 T0 e/ B& F
XAS: z: U) t2 }  u; M3 `
---------------------------
' ?3 s/ t+ Y# F4 b4 o/ b3 @$ S脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。8 ]! p* R' ?& v# t

% ~. Z4 B4 J% b( Cdisposed bitmap  l, k; U- }) ^/ v" {& ]
---------------------------* b% u$ K# }4 R0 u6 J; f# |
確定   ) G* x% O8 B( U+ Z2 M: P9 B" ~1 c
---------------------------
. i0 T* {2 Y' l  O
) A1 ^6 d5 M2 ~/ E( l' D! H這是腳本
; g, w. P. s$ R6 Y1 N0 a4 l' @5 Y; s
; ]- F9 s0 |9 U7 O; c/ D& o
  1. #===============================================================================
    # w5 K6 Y+ p; z. w/ x
  2. # MOG - s Hud 1.0      
    1 Y6 f. X! ^: u: S# x
  3. #===============================================================================  p( u6 H0 x" O- H9 x, C$ N# i
  4. # By Moghunter ( A! O* d* P- z  n! d
  5. # http://www.atelier-rgss.com5 [" G8 I: i  T, d- m/ i
  6. #===============================================================================
    $ S( |. ^0 Z: t5 I- v# s! z' I$ h! x
  7. # Translated by Calvin624 & F/ l% w  w% r
  8. # http://www.xasabs.wordpress.com
    4 U3 ]. |( y0 c$ L3 w, u( y
  9. #===============================================================================2 q7 ]: R8 C4 W$ z" G# r
  10. ###############################-DESCRIPTION-####################################: M+ n6 ~& M  Y/ V
  11. #===============================================================================
    ! r$ A# L; S) e; v4 |1 f' e  H7 s! y. T
  12. # Personal HUD – displays the HP and SP below the hero.. y& W+ u6 X1 u' k$ o/ E6 \1 u
  13. #===============================================================================. T1 R( G' j1 Q0 ~- |* ^$ ]
  14. #) G" d2 M7 k% A/ A( R3 t5 ?$ q
  15. # Graphics required:  |4 I" L0 c$ |: {
  16. # * D2 [7 v% ~- \
  17. # S_Border_HP_Meter.png9 J& w8 u* R' k" e. K1 A' W# V
  18. # S_Border_SP_Meter.png
    ; o% t; {* I; t' s3 U2 }* e9 w
  19. # S_HP_Meter.png7 A& `+ q9 e( B% G9 W
  20. # S_SP_Meter.png4 o4 ]3 `9 ^  \( A$ |; e: ^- M
  21. #
    4 d; L1 A) [1 I
  22. # All images must be in the Windowskin folder." O, T( w+ \" S7 S* Q# k
  23. #
    & }* |+ h" g" J$ Y! u% D  Z
  24. #===============================================================================, f; ~) F% }# r& Y' z; i  Y
  25. module MOG6 l* X# D' D/ Q
  26. VISIBLE_DEF = false  
    1 \8 ^$ W1 S) V
  27. # Show HP meter?
    1 X4 ^- d" B( ]
  28. HP_HUD = true
    $ N% |4 X4 A: ?2 ~! R4 L& }3 V: ]
  29. # Position of the HP border
    4 s4 |/ r) b6 L% S
  30. S_BORDER_HP_METER_X = -2! @* M# t2 m( k, U4 d4 |9 `0 c
  31. S_BORDER_HP_METER_Y = -2  
    & T) G) ?- P3 D3 C# D
  32. # Position of the HP meter4 m' g" Q$ Z. H, N# R) B. }+ |, w
  33. S_HP_METER_X = 0
    5 N! |5 w4 ~5 C7 v# J
  34. S_HP_METER_Y = 07 w& L+ l* o) v& f! L
  35. # Show SP meter?
    ' H: B- F4 k: O  \
  36. SP_HUD = true
    ! `/ C) K+ j$ a( \' r& ~4 E! M
  37. # Position of the SP border$ v. ]+ k9 t% l( U. x
  38. S_BORDER_SP_METER_X = 0
    1 Y+ c7 o( V. x, I5 I/ x
  39. S_BORDER_SP_METER_Y = 10 - a! H) v' }  A/ k9 r% d6 V
  40. # Position of the SP meter7 V, C/ V# g% w# k
  41. S_SP_METER_X = 0& w3 x5 \4 F2 n8 e, t
  42. S_SP_METER_Y = 10; L8 k% [8 E1 B" G6 O5 j
  43. # Switch to disable the HUD
    ) b8 T9 Y5 @5 y
  44. DISABLE_SHUD_SWITCH = 5
    & p( n8 _7 A( [/ k
  45. RANGE = 20  a1 @& d6 b3 E
  46. end
    0 l$ o  e; S% _# q  r; A# f
  47. #===============================================================================" y7 z! l6 S! N
  48. # S Hud3 O/ _: V" y/ y0 h( h8 T
  49. #===============================================================================
    / `" V2 f9 ^, T: n
  50. class S_Hud < RPG::Sprite
    + u) x6 r: l2 i% x: y( _
  51.   include MOG1 c9 p5 L% m/ u3 J  u* @
  52.   #--------------------------------------------------------------------------
    7 C, ?4 o5 j* W% B
  53.   # * Initialize0 b3 ?4 f! C$ Q3 V0 U% E! Q+ O
  54.   #--------------------------------------------------------------------------9 T5 g  g5 c9 o+ d6 s3 t9 J
  55.   def initialize(enemy,viewport)
    0 ~& i0 }: L' V2 `3 X
  56.     super(viewport)
    . m6 S- v& [5 t# T8 M! }- r
  57.     @enemy  = enemy
    7 T: @- h. S2 h9 g$ A
  58.     @battler = @enemy.battler
    ) k' _' d/ E' v. y
  59.     @old_hp  = 0
    - q2 G- L6 S3 j# N
  60.     @old_sp  = 0
    5 z6 A7 q$ ~) Q$ A
  61.     @old_vis = false
    5 g, V& D. n7 l* @+ ~
  62.     self.bitmap = Bitmap.new(100, 100)! m5 D# v; e) i5 J
  63.     self.visible = (VISIBLE_DEF)#false
    1 ~6 V+ [6 ~) ]9 H  o
  64.     self.z = 100" V! |$ v6 _5 e3 T
  65.     #HP Border -------------------------------------------------------------------  T4 j( s2 W7 B9 }# u3 d: a
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")+ C, Z. i  C2 a/ C7 K. ?. j9 ]5 D
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height), e* J7 t( ?& j; l1 Z
  68.     @layout_sprite = Sprite.new4 h; C3 {: U' q% m
  69.     @layout_sprite.bitmap = @layout_bitmap2 A, F0 h' e0 q' \; n% `$ [
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
      H" Q0 Q& R6 {# h& C: Z
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      7 Q% ?: y/ k0 B; z8 V, x
  72.     @layout_sprite.z = 5001
    $ A7 C3 E4 I1 F* c$ G. X' S
  73.     #HP Meter ---------------------------------------------------
    ( B% t9 j; }/ Y# @
  74.     @hp_flow = 0
    # W& \! B8 s1 {1 ^5 b$ R9 f# J$ ~
  75.     @hp_damage_flow = 07 L+ I0 w6 L% U1 ^. }* Q2 T3 Y
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    ! W" N$ S% C3 y7 t
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    ) c; R+ [" {  B0 o0 P# @$ l
  78.     @hp_range = @hp_image.width / 3
    - r2 c+ g6 C; d4 K$ i
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  2 M& J. B7 ]% X2 \$ d% V5 u
  80.     @hp_width2 = @hp_range / 2
    2 D8 Y+ H# \# Q
  81.     @hp_height = @hp_image.height / 28 Z& m8 `0 r% m& [
  82.     @hp_width_old = @hp_width6 b: q- ~( S4 ?% X
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height), `" B( T; Q9 t$ ?# n. O7 H
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) + @; g* Q  C5 e2 f
  85.     @hp_sprite = Sprite.new
    1 f8 k/ ~0 J% D
  86.     @hp_sprite.bitmap = @hp_bitmap# ]2 v1 U* P: m5 R0 x+ y
  87.     @hp_sprite.z = 5002
    0 k7 O' t7 N+ y
  88.     #SP Border -------------------------------------------------------------------
    % n/ N  g5 Q2 y3 ^( X5 u/ e% v
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")4 X0 F6 {: ]9 ]1 H7 _
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)4 p9 s) n. U$ u# b  O' E
  91.     @layout2_sprite = Sprite.new
    4 q! W+ w: a  g+ R
  92.     @layout2_sprite.bitmap = @layout2_bitmap& K4 g8 M+ L8 F. v: e1 J+ B
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)6 F+ \$ z" I: v& j* i$ s
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      / B$ P; ?; r! i" F- g$ k0 g
  95.     @layout2_sprite.z = 5001    - r3 @. k# G% N6 w) m
  96.     #SP Meter ------------------------------------------------------
    # Z, A+ e* e3 A3 w
  97.     @sp_flow = 0) K# \8 n% h) S) Q1 N- u
  98.     @sp_damage_flow = 0
    % H5 o* C0 t$ s
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    / Y9 a; u+ }; N2 ]
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)4 m3 z) E5 q! D6 o
  101.     @sp_range = @sp_image.width / 3
    9 E9 ~/ w7 @4 t; y3 a5 R' n& P
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    4 h3 n. B, L- A5 a8 F$ m
  103.     @sp_width2 = @sp_range / 27 `" G6 V" C# b! l3 k7 V# p% C
  104.     @sp_height = @sp_image.height / 2
    8 }* F6 J9 O* b- I
  105.     @sp_width_old = @sp_width0 b  T+ n. Y; ?' A
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    2 y! K1 ^7 [' Q" A* v6 Q+ z: e
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)9 x; O' Y4 Y5 d" T" `0 t
  108.     @sp_sprite = Sprite.new
    , o. r* [& B8 v  L) o0 Y6 a. w! ?4 }
  109.     @sp_sprite.bitmap = @sp_bitmap
    - X: [/ l$ U: L% M/ i, H- R
  110.     @sp_sprite.z = 5002) k& s- V3 U- l, E
  111.     update
    7 o8 B1 D5 q1 R! q; i; s1 k' o: r
  112.   end
    " {" t! g9 q( U  y4 Y/ z0 N
  113.   #--------------------------------------------------------------------------. C& \4 b' P$ c8 c$ m6 c
  114.   # * Refresh3 k" {, N" K5 b& Q5 r( C- Y
  115.   #--------------------------------------------------------------------------* t. ~' T  a8 P: Y( F9 j
  116.   def refresh
    6 j7 |8 s! c& b; ~3 B! y* Q; D
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    - h0 K% D  Z- ~! O8 R, S
  118.     self.bitmap.clear% ~: H* l  F; y' p
  119.     @old_vis = self.visible, T1 c+ T$ e4 u% r
  120.     @old_sp = @battler.sp( q# o0 @  `6 b) Q8 J
  121.     @old_hp = @battler.hp
    7 t7 A9 [  B# A- F) _
  122.     hp_flow_update1 O. d" v& t- V
  123.     sp_flow_update
    ' L6 T8 j. V$ p
  124.     hud_pos_update
    7 A+ @$ N" Z( l; s3 ~+ f
  125.     visible_update; D/ S* v2 V1 p& x
  126.   end
    8 {, ?8 P8 X3 ~/ C
  127.   #--------------------------------------------------------------------------! H  T) f+ `; C
  128.   # * Dispose
    ' _% F) g+ M) r* O) Y
  129.   #--------------------------------------------------------------------------
    , F% c7 _* |( U
  130.   def dispose
    : Z& O, J4 l5 D9 G9 j. _) S
  131.     #HP Meter Dispose" Q, E3 N; j/ e2 ?
  132.     @hp_sprite.bitmap.dispose+ V0 t& ?% h/ g- Z$ c  w8 i' |3 V
  133.     @hp_sprite.dispose6 l$ a: E2 `5 Y/ H% R5 {4 \
  134.     @hp_bitmap.dispose  W/ E4 z& u( Z0 @6 l  D( w* T
  135.     #HP Border Dispose
    - V5 m  i# ~8 E7 G3 z9 D: k& A8 m
  136.     @layout_sprite.bitmap.dispose( }1 N" S1 @" @. a* R) @% g6 ?
  137.     @layout_sprite.dispose7 T  [3 ?7 }. z
  138.     @layout_bitmap.dispose; g  p. o/ r# W
  139.     #SP Meter Dispose/ y. j9 T4 v- [( _/ Q' F$ Y
  140.     @sp_sprite.bitmap.dispose; K$ F$ [) Y' R( g+ ?7 D
  141.     @sp_sprite.dispose+ k7 @6 y5 h! p, f* R( O0 e" v
  142.     @sp_bitmap.dispose
    ' Y, j4 Q( p/ r% A+ q
  143.     #SP Border Dispose
    ( w* Q7 H' o8 P- j
  144.     @layout2_sprite.bitmap.dispose
    / n) d% M4 _2 [. A4 N
  145.     @layout2_sprite.dispose$ y" g! V! d0 a! u! t
  146.     @layout2_bitmap.dispose
    . r4 j7 W  T8 Y& |) \+ c
  147.   end
    * H' c% i% _9 f
  148.   #--------------------------------------------------------------------------5 d& O# P1 V8 b1 _) z
  149.   # * Update) A9 @, W  E5 S( Y' z! n0 l
  150.   #--------------------------------------------------------------------------
    $ F, e0 T+ R% s4 J$ C9 I9 d1 t
  151.   def update
    - `# @- M! ]! `
  152.      @battler = @enemy.battler 2 T; L; f; c4 |0 N
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    $ e$ K( G0 a+ Z! a* b$ L0 O5 |* `
  154.      if self.visible6 E3 L0 z; }+ n9 y+ d: @$ B6 y* T
  155.        refresh) X) S7 X/ J7 u5 [
  156.      else
    ; o! A- @3 y5 w  R
  157.        self.bitmap.clear6 q+ p+ e6 K& y2 e/ _, ]1 I
  158.      end
    , r; [( b% \* Y. x% m+ _# M
  159.   end
    ! a0 Q3 c- O" b
  160.   #--------------------------------------------------------------------------3 Z, r/ i9 D) I1 b, v' h' ^* B
  161.   # * Visible Update  l, r* c( \7 m) u  P: Q
  162.   #--------------------------------------------------------------------------
    2 C3 a- B- Y2 X* _3 P( y: _$ a5 X& j
  163.   def visible_update
    % L! X( Y0 q( j. x. T
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true8 }9 f# R: |6 D1 n2 H1 Y
  165.        @hp_sprite.visible = false' z: J% p  p- k- i/ t
  166.        @layout_sprite.visible = false7 Z& X7 u1 s3 i9 \2 k; ~
  167.        @sp_sprite.visible = false
    ) i/ L5 h) h, b& M1 e: ]/ C$ V, K
  168.        @layout2_sprite.visible = false
    $ a- I. J  R6 ]. a1 g( i& m
  169.     else
    & l2 C/ p& H- M' n$ r' @1 [8 k% b
  170.        if HP_HUD == true9 _4 y' @1 {0 V/ m0 X
  171.          @hp_sprite.visible = true
    % \* O. j+ p( q- v0 r4 f- q
  172.          @layout_sprite.visible = true, A4 i' U7 C$ c( c
  173.        else5 ?1 h, }" h* |% S5 \, c4 x6 e
  174.          @hp_sprite.visible = false6 R, f, N$ _5 g) Y3 {" x# X
  175.          @layout_sprite.visible = false
    # o: E2 U8 O: h
  176.        end  
    0 J4 V0 X" B: @5 K" n8 I
  177.        if SP_HUD == true
    % ?. M  Q* d: z" v/ x/ F
  178.          @sp_sprite.visible = true
    * e# r8 ]' g5 I
  179.          @layout2_sprite.visible = true: o2 \! Z  ^) h; L
  180.        else# b8 p$ Q8 Y1 }, k
  181.          @sp_sprite.visible = false
    % q$ T* h# g" @; [0 |7 _6 }
  182.          @layout2_sprite.visible = false
    ! c9 A- j: ^( u- x3 U( A* F" K4 O
  183.        end
    ) X7 `+ p- E9 v- F. v' n
  184.      end  
    6 h" m7 z) u: y) N; d
  185.    end ( m' y; a% g) Y% y9 [. G* M; {
  186.   #--------------------------------------------------------------------------
    2 C9 d: G$ a6 D' H4 Q
  187.   # * Hud Pos Update$ J; }! [+ f, ^( j+ I- y, F; @
  188.   #--------------------------------------------------------------------------
    - d! _3 Q* [* a& l1 A+ t6 `
  189.   def hud_pos_update
    % B( P) p# A, k  y& B
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    4 x8 o! l( S% u4 o5 n, d! ~  H
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  ( a+ _5 Z# n/ a( c- u" f+ n
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X  e& N* R$ B$ k$ p3 G) @
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y " N7 R- K5 h  h( a/ ^
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X0 c+ k0 l, h8 g: ?& z9 t0 a
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    " ^) f# `  {2 a; e# J  ?( Q/ |
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X9 R8 t, [0 M6 G5 w
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    / q$ n) ~6 b" m0 D1 H, g
  198.   end  , j7 y/ ?( i$ N: J& u
  199.   #--------------------------------------------------------------------------
    5 q! ~) X) a6 X% |# q# o
  200.   # * Hp Flow Update
    , o; h! y% g) f  E& M0 I
  201.   #--------------------------------------------------------------------------
      m# E# \. j/ L7 f* H" m1 C
  202.   def hp_flow_update" J# [4 J6 o1 G/ h0 S
  203.       @hp_sprite.bitmap.clear' Q. X, v8 q0 J7 v, r$ K, \
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    $ k4 o4 }. Z( f+ I, @& q
  205.           #HP Damage---------------------------------& \' t' ]) O# D3 y, l
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    ( o  f7 x5 r. b" l
  207.           valor = 0.5 if valor < 1          ; V& S8 D1 U" E3 E- G
  208.           if @hp_width_old != @hp_width' U' i3 C0 z8 e6 b9 h/ S1 H
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  % g- r, I) g; _" q( j
  210.           if @hp_width_old < @hp_width
    % r9 S3 I( I9 v
  211.              @hp_width_old = @hp_width
    ) p' }3 ]/ ~* u# B* `( N
  212.           end      8 t  l- X7 x# T: r8 t# k3 j
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)$ u" Q7 u, Z& N% ^* T: V
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       8 L0 [9 `2 G2 X; j
  215.           end        3 e+ n7 i) {& i$ v# c* g
  216.       #HP Real------------------------------------+ P6 O+ b( k" s8 u
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)( r( g1 L+ T3 m
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    / {2 s. ?& E8 V" S/ M$ P; N
  219.       @hp_flow += 2  1 q9 S* X7 g( e( O) b
  220.       if @hp_flow >= @hp_image.width - @hp_range1 x+ Z" p$ J$ T$ e- r
  221.          @hp_flow = 0  0 [$ L$ S/ E/ w/ `5 ~% D
  222.       end3 d' m5 R& t* Y3 a' @+ J
  223.   end    ! u1 b) g5 }/ Q9 ]  |
  224.   #--------------------------------------------------------------------------' Y+ G" a" N. C
  225.   # * Sp Flow Update
    9 O2 L% @" |5 b" ]- Z0 R% U
  226.   #--------------------------------------------------------------------------8 a( v9 m5 ]6 j$ S  a
  227.   def sp_flow_update5 S! n& W2 d) Z) X
  228.       @sp_sprite.bitmap.clear
    2 l: \+ y) J9 j4 G- {+ J+ y" \
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp + f, Z8 a  x% M! M+ V
  230.           #SP Damage---------------------------------0 I/ y( Q% v! _, K% I/ t! S
  231.           if @sp_width_old != @sp_width4 a5 r/ t* q3 c4 \5 N# N7 q: l
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    4 ~1 W8 z+ k3 Z& B
  233.           valor = 0.5 if valor < 1              # }. J) ?# r3 [' V% J) b9 X
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  1 h8 g2 p+ |/ R- ^& U9 g$ G1 I
  235.           if @sp_width_old < @sp_width
    ! J. t  U' Z3 N! k% `& q
  236.              @sp_width_old = @sp_width% Y$ L+ C: \3 _) j: f) I
  237.           end      
    + M/ e, g  O8 O1 d8 \. ~6 T! I
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    . Y( C0 m. `; C. X2 x2 h
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) ( U$ V% z$ B2 D
  240.           end
    . Q+ L" w4 ~8 J- w
  241.       #SP Real------------------------------------, t) k& t; P$ `" T; y; x7 I
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)" w" D7 K. Z: h* }! E! R
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    2 Q, b1 m4 z. g& a1 `; k
  244.       @sp_flow += 1  9 w6 d5 P, {- @
  245.       if @sp_flow >= @sp_image.width - @sp_range9 |- E7 `$ s  i
  246.          @sp_flow = 0  & t! `8 j7 b; o3 R
  247.       end
    $ a' [( @$ R& r) J3 V
  248.     end            % T* d. Y7 k6 x1 Y' U: S
  249.   end4 ]( ?. E/ X3 b, s3 c) }$ Z  V
  250. #===============================================================================
    4 i) E: n' T* ]* h, X
  251. class Sprite_Character < RPG::Sprite3 }( P7 }) G0 X' g* T
  252. #-------------------------------------------------------------------------------
    * e5 ^- R* k) p8 `( l2 _) X
  253.   alias :xas_emini_hud_init :initialize
    4 Q7 f% q4 @4 e& X7 W) }+ W
  254.   include MOG
    - _' D& L3 H" T! b: ?, V, T
  255.   def initialize(viewport, character)
    ) [" J: E+ G; _3 G! F6 X  G) A/ J$ B
  256.     xas_emini_hud_init(viewport, character)( V7 V8 ?/ P: O/ o9 }
  257.     @viewport = viewport: q: W7 V. k) f# B  R* M
  258.     return if @character.battler.nil?7 h, k/ P0 t) X* m6 y
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)* L  m2 _4 S- x6 ]$ K/ q
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    # h3 M' J! ~: x
  261.     return if @character.battler.is_a?(Game_Actor)$ v. p6 Z5 A# S4 J( w6 U- \8 y6 R+ b4 q
  262.     @bars = S_Hud.new(@character, @viewport)
      M# j& k8 g( a: d
  263.   end6 O( c) g/ G* d# V7 m2 V1 v) `
  264. #-------------------------------------------------------------------------------/ k& z# K* [# X* r% z( }( O
  265.   alias :xas_emini_hud_up :update1 x& ?- G* [- D0 }
  266.   def update0 Q2 f$ N" Q. m8 u$ Y
  267.     xas_emini_hud_up5 E; a; k. w* n  h  l
  268.     return if @bars.nil?: P% K! d; e, ]- o7 J! J
  269.     return if @bars.disposed?
    & S; @8 Z. H1 G$ Z8 W
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs6 _2 o$ b! w! \7 I! C" s6 i
  271.     @bars.visible = (dis <= RANGE), G- r6 q1 ?( e' a# q% i$ d
  272.     if @bars.visible
    7 d/ V; D" }. i/ `0 l: |
  273.       @bars.x = @character.screen_x# - @cw / 4
    / k/ R& i" n; R  P! o
  274.       @bars.y = @character.screen_y# - @ch / 4
    2 C  I( b- f- i6 t0 z- m
  275.     end  F4 u$ H9 _/ N, d, B
  276.     @bars.update# }/ F" x; R' M" Z+ j% {
  277.   end+ T5 [" q& D* p9 U
  278. #-------------------------------------------------------------------------------" Q, {! [" r( T5 t1 m7 P' ?' n
  279.   def dispose
    4 p, a- f$ a# G! z
  280.     super
    " L- k1 t0 b8 a6 u3 M$ z
  281.     @bars.dispose if [email protected]?( F+ ^; f: A# c
  282.   end
    4 ]4 A1 D' k  x. p  y
  283. end& R1 f) [  U; b3 r! D$ ]; w9 w. A
  284. & d# q5 S% T  g4 [4 m1 w. i
  285. $mog_rgss_s_hud = true
复制代码
* I4 H3 m: f# Q$ N0 D, I; q( b

2 d' M* i* n. C! t3 c& L0 q/ T4 T0 A- H' \0 [9 [
上面所說出錯的203行內容為
+ E+ H7 h$ M- E9 [$ [- F@hp_sprite.bitmap.clear& ]. l8 f. y5 c  Y. A: Y7 G' P

0 v5 B  L* }. P9 b9 I$ Z1 j. ]想知道怎麼解決7 U8 G- v/ P1 l" `) Z# {

7 \6 ~* d( N5 E. H( T5 ?該腳本支持3.82
6 P6 y& B! {  |* ]. k& X
) I1 c, {5 U& u: r下面是圖檔,要塞在Windowskin下
2 d5 l. a* y! r* n7 G. J; H( L6 J4 ~. B: \2 V
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 0 V8 h1 O2 n! A. f$ c+ ]

2 q" i( X8 r. L* B
: w* i8 C! P9 F& C/ p" I* I$ A& h8 l1 L* ?) \) j

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适1 V* X7 _& L* M/ z! N
结果尝试刷新了一个已经释放的图形0 Q! @8 P# R! c. _

) K1 w" j" X  H# V  d, W
2 o# a$ R3 L6 r# W1 B2 t- s+ T  p# X7 u* O9 p$ S9 P+ A
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
      a% s: H+ X; @7 ]5 r* p( J- S
复制代码
不要后面那个条件貌似就没问题了。
* D2 V- I- L+ K: \9 S& F
# j, G4 i7 C6 v6 `/ `5 p
* X9 _! |7 I# p3 `7 l # t6 N' s; T5 u

7 N9 L( [4 ^2 ]* N
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 " G- k  L6 d& E8 ]  X& X0 U2 n
貌似是释放的条件不合适1 e  D9 [; Q0 _
结果尝试刷新了一个已经释放的图形

( E( \3 z0 r/ N- ]  s把後面那個條件弄掉後,的確沒問題了# c5 X; ]7 L0 B4 C8 s5 ]# T" ?
目前從關頭打到關尾結束都沒再彈什麼錯誤) |" O5 P' q5 g) f* M$ |
非常感謝0 F! C. K- s! m$ y: V6 \5 j
+ l7 Q( z1 ^) a6 h8 Z, e
不過我是參照著別人腳本改的- r3 K. ^+ J2 s) t7 q
他寫的條件式也是那樣,但我用他的沒什麼錯誤
* l5 S2 u0 y. _/ ^( Y不知道是怎麼回事
+ C$ a8 @) u1 M. ~, a9 K8 t是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
' b* W3 e" P6 G+ n/ t我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
; d2 @4 w  }- v+ A嘛..这个数组吧..我在以前试写队友的时候关注过一点2 [$ ~! T6 a+ c7 b
不知道XAS内部对它做了什么手脚还是为啥,
" }6 v, `, _5 k* u总有那么一瞬间,没有被消灭的敌人事件也变成了nil
# L# Z* T$ `- a' O/ s: H4 e7 V) T6 d7 j) s' L7 b" l
$game_map.events.values[@enemy.id].nil?
; Z$ |8 F* K% t# y+ \因此自然而然的返回true并符合条件把图形释放掉了
7 h3 \3 a$ E+ }# |; N* S! X3 S' i
2 O" |. B) S) P5 q' V* ZLZ应该有注意到吧,5 C4 _& |% x3 R$ u- V6 F+ y
我测试的时候发现报错前几帧,图形会消失,2 i$ H6 o) _" j
应该就是“误以为敌人被消灭”了。
2 _, ?; C% h6 W/ i7 T
0 {" z- o2 u1 y1 e受限于个人水平,至今无法找出$game_map.events的真相../ o# q- V$ S+ C2 j' d

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 " l) r$ C* Q2 Y/ R3 E" N
$game_map.events9 b7 }5 T+ z5 B% q) i% b
嘛..这个数组吧..我在以前试写队友的时候关注过一点7 M0 ^, t9 L3 S3 a( K/ V
不知道XAS内部对它做了什么手脚还是 ...
5 k, @/ X3 b) b5 l& ~, L
當初我把那個條件式看了三遍,都不覺得他有什麼錯
  f8 N' n" N$ S原來還有這麼深奧詭異的事XD
6 V. p, G" [9 H# [* }5 z* {, _7 X6 o" K; ?: w; x* D
錯誤發生前的確會有圖形沒顯示出來5 X& N" \8 w+ b6 y
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
) u1 p) a6 I0 }4 u8 L0 B+ i沒想到居然是詐屍了XD
' N8 q" b- n" m* J# v4 _" {; a+ X, c$ w+ L
不曉得3.91有沒有修正這問題...
7 v0 U9 @$ ^  s不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。- L* l4 l' T! s: D2 o

: |/ \7 n# {9 H( d的确
+ M0 ^( S6 c3 K6 Q& J/ h用惯3.82之后想去整3.91觉得压力甚大..
. ^, z$ T) D1 X! p' m2 ~干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
8 ]- R3 L5 a! J1 s: U
( u6 O: B# \( }1 M0 M然后加一个判断处理的。(我记得有一个disposed?)




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