Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
( i& Y5 X; Z& y7 X" U8 f2 u會在每隻事件怪物的腳下顯示
  m2 E% v% q* q' l問題是不知道為什麼) k5 e. L3 i* P% K; ]! h3 i
有時打怪打一打會跳出6 v& }: e2 p& ?
---------------------------0 d7 F' D& g4 ^5 E# q# m
XAS
& t2 a! y! }1 o& e/ @---------------------------
, r) Z2 ~: P/ S脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。5 O  v0 s( O; C3 b
" ?4 [$ M! j$ V' i, n" [6 N
disposed bitmap* ~, C" B  E  w9 d# k
---------------------------" c( ~! d6 ?& W2 _. A6 P
確定   
0 I- ~, }3 Y% W, I/ @& E---------------------------
3 P, j; W" H( u$ r. A
- F+ z4 C. Z& s, A/ G這是腳本5 |; n& Z! S8 [: ?" E/ c( W; S
' q( S  h/ |5 ~6 q" F: D! b; o/ d
  1. #===============================================================================& K6 |* E& b9 u5 z4 b6 U' Q
  2. # MOG - s Hud 1.0      
    ( S" A- [0 C8 s1 K
  3. #===============================================================================1 ^% ~/ J" q7 l0 G0 k* t/ a
  4. # By Moghunter
    ; ]9 a& t( L: j8 Z+ Z& |3 c
  5. # http://www.atelier-rgss.com
    # ?, G: t% \& z) a
  6. #===============================================================================* U. R6 o0 [/ q8 a1 z' o
  7. # Translated by Calvin624
    # F( W. `# j6 v% Z* e
  8. # http://www.xasabs.wordpress.com
    ( G6 @9 ~# P! c/ F: i7 z
  9. #===============================================================================0 {2 P4 b+ Q( ~5 J  @5 e
  10. ###############################-DESCRIPTION-####################################4 U" E/ v0 _- l) Z1 I9 {
  11. #===============================================================================
    ; o( I; u1 l2 N9 y, F
  12. # Personal HUD – displays the HP and SP below the hero.
    - G' {9 K5 F; U. N- ?
  13. #===============================================================================2 o+ H9 T5 l4 f; x
  14. #- c5 y1 e1 l% f% n" ^6 t# j
  15. # Graphics required:* n; [5 b; o2 L( y
  16. # 0 c3 O. S% @/ [, O& U
  17. # S_Border_HP_Meter.png. }5 O% K/ ^# ?; F( E% M
  18. # S_Border_SP_Meter.png. Q: \: w* v* w  ?8 T
  19. # S_HP_Meter.png
    . t, \. [8 U( t( u
  20. # S_SP_Meter.png* B' ^3 s* v8 C& B
  21. #8 H/ K; J: [' U: o) ?0 J2 {
  22. # All images must be in the Windowskin folder.9 ~$ p; A& D$ P7 T3 d
  23. #
    - z9 G8 x% h5 T) e# ?# o! q
  24. #===============================================================================
    4 a& `) k# `9 K
  25. module MOG
    ; e" ]4 r4 H4 S5 z
  26. VISIBLE_DEF = false  4 H6 o! L" \, t# h) t4 C7 v
  27. # Show HP meter?
    4 d1 r7 ^$ U/ L% X
  28. HP_HUD = true5 A4 ^4 C. S9 J- t) A$ t
  29. # Position of the HP border  {* F: Q7 F7 {+ z* C
  30. S_BORDER_HP_METER_X = -2
    * ?  n+ s2 F1 }5 S, l1 O$ n
  31. S_BORDER_HP_METER_Y = -2  : i$ I$ ?6 u% z+ J& Y. Z% l1 }
  32. # Position of the HP meter7 r( a& I. V: b# l: M/ O
  33. S_HP_METER_X = 0& m4 y% f  [( J' i& L* B0 r3 k  v" v
  34. S_HP_METER_Y = 0+ ^- {+ \; T1 w* \" ^) \
  35. # Show SP meter?+ w3 ?" e8 g. O+ Q) e+ I
  36. SP_HUD = true
    : E9 u" i$ @6 M5 V0 q
  37. # Position of the SP border% U$ |5 n2 i; F
  38. S_BORDER_SP_METER_X = 0  h4 P+ u  O% C
  39. S_BORDER_SP_METER_Y = 10
    ' F* w6 B$ P8 `% E9 }7 t
  40. # Position of the SP meter: S$ h. y( v+ L8 n
  41. S_SP_METER_X = 0
    ( G3 D/ x6 m3 o3 Z) R# m9 R
  42. S_SP_METER_Y = 10
    , |' ~8 @) K8 Y' S, |( |4 g
  43. # Switch to disable the HUD  \1 Y, G- v2 c
  44. DISABLE_SHUD_SWITCH = 5
    1 k1 I. N: [6 |4 s" V) O7 r2 r
  45. RANGE = 20
    ' p" o  V0 v1 o+ v0 M
  46. end
    0 z5 ?6 P5 U* Y9 i5 K) S
  47. #===============================================================================3 l, M! T9 S4 g1 j, e
  48. # S Hud
    8 f. w. P/ T1 ~/ J
  49. #===============================================================================+ }- B0 z( E4 n$ P2 Y8 G
  50. class S_Hud < RPG::Sprite% B+ ]5 O, j8 L5 c" b
  51.   include MOG
    4 \( e8 B- O$ S0 j
  52.   #--------------------------------------------------------------------------
    5 {+ `0 Q7 t% Q3 z
  53.   # * Initialize6 h7 X# W# P4 L# i8 f1 o0 ~
  54.   #--------------------------------------------------------------------------
    0 E  U1 V; H/ F1 W% a) Y4 l: d
  55.   def initialize(enemy,viewport)
    5 s1 k& g9 e7 f8 {/ w
  56.     super(viewport) ( ]9 S/ A5 w5 f3 y' _; k
  57.     @enemy  = enemy
    3 U/ Q% r& U1 o$ J! ~
  58.     @battler = @enemy.battler
    7 B0 E' G7 u1 g& \" F
  59.     @old_hp  = 0
    . m1 C, s8 R$ E  X# @3 h. r
  60.     @old_sp  = 0% I0 \2 A# x/ R0 R+ @: Y
  61.     @old_vis = false
    : G  S$ ?6 o# ?6 O- z% t0 M
  62.     self.bitmap = Bitmap.new(100, 100)
    * D9 ?' r1 Z+ \: x- O; G8 h
  63.     self.visible = (VISIBLE_DEF)#false: g9 @+ V: V' T' o& B3 |
  64.     self.z = 1005 e4 F* B* b5 A. g6 B) q2 G
  65.     #HP Border -------------------------------------------------------------------
    % D1 B0 z/ y$ Z+ D' O0 l
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    , }* \& W( e5 ~. k( d: r) g$ u
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)( u- g" Z5 D) I% t  C' ~  m6 ?
  68.     @layout_sprite = Sprite.new
    - M+ k2 n( ^' W9 {8 C2 T
  69.     @layout_sprite.bitmap = @layout_bitmap
      u( s- Z* I' A, m
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    / v% s5 F- E5 G  B
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      2 q! P* q! A0 i8 v+ d
  72.     @layout_sprite.z = 5001
    0 |1 [7 d3 p1 {% u& h
  73.     #HP Meter ---------------------------------------------------( b; c' ]( Y5 r  D0 m" d4 f2 |
  74.     @hp_flow = 07 \+ C- i9 a* o; m5 Q" r4 s9 Q
  75.     @hp_damage_flow = 0' X* p% S0 N1 X3 m* ~* T7 l
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    2 z* Z+ j3 q5 P; g0 ]% z& t
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height): B# x) m$ |- Y! N0 U
  78.     @hp_range = @hp_image.width / 3
    3 ~8 v. p) t. G2 y# q' L
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  + S5 ]" f$ @  H
  80.     @hp_width2 = @hp_range / 2: W( k- E$ a9 y. Q4 C3 I
  81.     @hp_height = @hp_image.height / 2* `! D6 A/ N( \  a
  82.     @hp_width_old = @hp_width
    3 l8 R. P9 n4 \* R- {
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)$ A  {1 ^/ @  A- c; u8 L8 j- \
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    3 m9 R& w, _3 u
  85.     @hp_sprite = Sprite.new0 m- ?0 \2 U0 J$ i
  86.     @hp_sprite.bitmap = @hp_bitmap
    " w9 h0 b+ J* F$ ^
  87.     @hp_sprite.z = 5002
    ' d4 ?, E6 q$ b
  88.     #SP Border -------------------------------------------------------------------
    # F% D) J! C7 `4 F; n
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    - A; q0 N3 G* d5 I, m! \9 L) \3 J/ A
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)& x, O$ }  b* M+ Y4 h
  91.     @layout2_sprite = Sprite.new0 h2 J* u- ]" B% p9 S: b
  92.     @layout2_sprite.bitmap = @layout2_bitmap, l9 r! J7 V% u, s% B
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)3 a3 j5 \9 G$ C* D: H/ J. _
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      ! W# }6 }6 f  A& I- ?  w. f7 i8 S
  95.     @layout2_sprite.z = 5001   
    5 p6 T. I3 }* s& n7 `- @
  96.     #SP Meter ------------------------------------------------------7 X( r) Y% b/ Y9 |
  97.     @sp_flow = 0- B# l: M6 b, O4 o- K
  98.     @sp_damage_flow = 0
    $ R- j7 a% V3 q% S' L( n
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")" G6 C: @$ \( T+ e( @' T
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height): W. r8 v3 N( \/ B
  101.     @sp_range = @sp_image.width / 34 W9 O$ O( F+ V
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    " E! ^' a* c( F+ |* A- Q
  103.     @sp_width2 = @sp_range / 2* L! g+ ^& [/ b2 Y  n" _5 g
  104.     @sp_height = @sp_image.height / 2
    9 l: v3 W, Y) ~) |0 _9 N1 y& N" [
  105.     @sp_width_old = @sp_width
    0 O% f1 n4 n" E/ K6 x& m0 P
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)3 ~# l& K: c" t& g; y3 [
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    3 s' p9 a' ]: B! x% M- w" l
  108.     @sp_sprite = Sprite.new
    # F* |6 x$ n) A: K6 s. [, ^
  109.     @sp_sprite.bitmap = @sp_bitmap/ B) N- X' c& N
  110.     @sp_sprite.z = 50024 K+ N; E) b2 Q: H: c
  111.     update
    3 H5 R3 k( R9 [: X. l
  112.   end$ n$ Y, ~, C8 B2 @2 }; Z% e' W
  113.   #--------------------------------------------------------------------------: E$ D" ?0 W6 W9 Y( q
  114.   # * Refresh
    2 q" E" \* k5 u, J6 I
  115.   #--------------------------------------------------------------------------2 a3 q6 m- W7 X* N3 |
  116.   def refresh; j4 Z! G2 Y) H* S% f, T$ G1 _' j# D
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    + |! ~# Q# H. q1 ~3 I* D
  118.     self.bitmap.clear
    ; k5 g. I, Q- |4 r: \% `& z
  119.     @old_vis = self.visible$ Y* k7 _5 a5 W: u8 V
  120.     @old_sp = @battler.sp
    ; q- c5 _. T: g7 M- N
  121.     @old_hp = @battler.hp3 _  n  Q$ ^, E( _
  122.     hp_flow_update0 f. K2 ^4 q; p8 }
  123.     sp_flow_update8 R& X9 l& e! c- n" b7 f/ a# h  J
  124.     hud_pos_update# {# E! O( ]( R1 M6 M
  125.     visible_update2 {6 z# G1 H( u7 R0 U& I
  126.   end
    7 W! H& P, J2 T
  127.   #--------------------------------------------------------------------------
    % Z+ U( W. ~6 k7 `$ y% Z6 K
  128.   # * Dispose* s/ F# h$ G8 K% o3 z  a
  129.   #--------------------------------------------------------------------------5 v5 q" Z& T6 g
  130.   def dispose
    / ~/ m3 I. q3 X1 u3 P' ?
  131.     #HP Meter Dispose
    % }8 r$ Q/ o# D
  132.     @hp_sprite.bitmap.dispose3 V# u$ h! q* @  J) J% A2 B% `
  133.     @hp_sprite.dispose
    , J# ~, W1 f/ H3 K. P7 v. C& q
  134.     @hp_bitmap.dispose4 W3 C0 A) w! s
  135.     #HP Border Dispose' Z2 ~$ M/ j7 u4 G2 u
  136.     @layout_sprite.bitmap.dispose
    & H2 z7 g4 c( m) P. o. `' N2 D
  137.     @layout_sprite.dispose
    9 K) x+ S/ T) A. k' r
  138.     @layout_bitmap.dispose
    / N! x( o4 b) _$ B$ n- G) [+ a
  139.     #SP Meter Dispose
    ' ~) V6 k0 T! S$ t
  140.     @sp_sprite.bitmap.dispose* L) J" O, m# _: q) v
  141.     @sp_sprite.dispose
    & H, W: x8 y" i
  142.     @sp_bitmap.dispose9 e- `1 a: Q( G, z6 m" O) Y
  143.     #SP Border Dispose
    $ ]/ S$ I- ]. v! K& j
  144.     @layout2_sprite.bitmap.dispose
    + b+ }0 Y: W$ U0 ^/ m% N
  145.     @layout2_sprite.dispose
    - o. \$ R1 V4 M" h1 ~  T
  146.     @layout2_bitmap.dispose
    . F9 X: G- d- I3 ?
  147.   end
    * L8 O( L4 A. g* g$ }% b
  148.   #--------------------------------------------------------------------------
    / D$ X4 \3 N( K, _% A) j- ]8 S" Q4 H& M
  149.   # * Update
    & h* S9 }) C, K; t. J; j- {
  150.   #--------------------------------------------------------------------------+ a) v: t0 O1 M5 k
  151.   def update
    / T- t% }% R2 g6 L3 @
  152.      @battler = @enemy.battler 5 h  f$ E% i% @/ o0 Y1 J  Y6 P
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?7 X3 G1 K. N4 z" ~6 Z
  154.      if self.visible
    7 g2 N# l* [, Z# c5 i/ A  ^# E
  155.        refresh2 V! g8 l- G- v9 F% O4 ^1 u. F
  156.      else/ q9 S1 b/ g8 g& e9 Q2 x: S  a" O
  157.        self.bitmap.clear+ J- M8 M" d2 b5 N1 X
  158.      end
    5 M) r0 V9 b% V" X( A9 y; l
  159.   end0 j; \' H; V3 D9 H4 u9 E5 G; O
  160.   #--------------------------------------------------------------------------0 d6 U! i8 c! i
  161.   # * Visible Update  U. ~" [7 \0 [$ |
  162.   #--------------------------------------------------------------------------
    ( P5 U4 y0 c0 d" t9 [5 O$ J: Q
  163.   def visible_update
    3 V; v- d% \+ M, v& c( M7 C
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true! ^* w( M: u/ @
  165.        @hp_sprite.visible = false6 e* v# j& O6 D# k4 l8 C+ Y5 E
  166.        @layout_sprite.visible = false
    7 }3 h* b- V1 k8 o' F" s) y$ t* c
  167.        @sp_sprite.visible = false
    0 D4 c3 @0 f. T. T. ]- ~
  168.        @layout2_sprite.visible = false
    4 _" K, M  D  ]# F- Z9 Q
  169.     else& ?' G6 m7 J: i
  170.        if HP_HUD == true1 @2 H% V8 q$ m6 V5 E  z  v& I
  171.          @hp_sprite.visible = true
      E) q% D# e6 l( g
  172.          @layout_sprite.visible = true; t8 L) z; f/ ~( S' z
  173.        else
    2 A% h; Z0 W% E
  174.          @hp_sprite.visible = false
    9 `2 e; L& h# ]' ?
  175.          @layout_sprite.visible = false$ S) l! Q0 y6 l$ m6 ^6 L: ]
  176.        end  
    9 x( k" E) c- h  Y# M, E
  177.        if SP_HUD == true% r/ b5 F( ]4 i5 o& m
  178.          @sp_sprite.visible = true* F0 q  \, `' x- J0 s
  179.          @layout2_sprite.visible = true
    7 g* S7 e5 p. A' Z2 Z6 R: o
  180.        else$ V# Z. }! y) c# C" D
  181.          @sp_sprite.visible = false8 V6 {1 k6 J: U$ ?
  182.          @layout2_sprite.visible = false
    ( e: P2 B  {) L! X
  183.        end 9 W2 b7 h! K/ b& C- R  C
  184.      end  ; M5 S+ X; J: I5 F
  185.    end 5 R6 \9 B+ i' `: w* N0 t( ?
  186.   #--------------------------------------------------------------------------
    ' }! b- a- i1 o  e
  187.   # * Hud Pos Update- u4 v5 |  \1 Y
  188.   #--------------------------------------------------------------------------+ f: ^& l+ Z! Y
  189.   def hud_pos_update
    1 p' Z9 j# l7 w4 _
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    - r9 |  `) g! p5 k# z7 g% _
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  1 b& c( K8 m/ W8 U) g5 [6 f
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    0 k  ?4 a9 ]$ x. R: r9 b4 G
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y / Z* D9 o. t6 H4 p7 G; Q
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    ( g/ [$ @3 [; J7 H8 `0 F/ K
  195.     @sp_sprite.y = self.y + S_SP_METER_Y    b: N* E3 r) ^- {1 x
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X4 o; }5 D% `- q, W. r' c1 J9 A
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     . }6 d; Q" [7 f4 R9 n: N
  198.   end  
    3 @, B4 \- J2 Q3 j* K8 p
  199.   #--------------------------------------------------------------------------
    , H! }7 a) ]3 ]8 _
  200.   # * Hp Flow Update: o; E) K6 |2 s- z) q
  201.   #--------------------------------------------------------------------------& x. L3 g) Y4 R8 C0 p
  202.   def hp_flow_update8 M0 ]/ s: U4 p* c
  203.       @hp_sprite.bitmap.clear* w4 @' e1 V, f3 \
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  ) n( F$ {* X+ r2 v* M- v' k5 u
  205.           #HP Damage---------------------------------; \5 d2 A* [, ^# x& a- a) J8 n1 b0 q7 o
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1000 Q6 H% `/ Q: _
  207.           valor = 0.5 if valor < 1          " o; Y. ?. p% m( s
  208.           if @hp_width_old != @hp_width* f, T$ r: i5 O
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  + R' ~; O! q; m) x1 K5 i: k
  210.           if @hp_width_old < @hp_width 5 g9 c; }5 m( S& ^& m% d/ ^4 [5 ^2 q
  211.              @hp_width_old = @hp_width/ r; m. ]( y1 `* ?
  212.           end      * O! b" @2 [, i' `! u
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
    0 C3 k) L+ k1 u% r- G
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)         g5 l, T3 F! |! o9 ]/ [( b4 n; h
  215.           end        
    1 Y# m/ c1 [& v6 K4 L
  216.       #HP Real------------------------------------5 J( q" y3 D# W, \" f% a+ V- I
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    6 }4 D* C0 G6 z4 O1 D0 c
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          ) k* v. l% u) ^8 R4 m: \2 @/ u- Y
  219.       @hp_flow += 2  0 m0 e, p  N$ S5 D
  220.       if @hp_flow >= @hp_image.width - @hp_range1 T, d& [4 q( y
  221.          @hp_flow = 0  ! K, `0 n6 ]1 L* q( o
  222.       end
    ( Y% t8 A' u3 ~- n! R6 K0 f
  223.   end   
    / @) m+ w* X7 a, I* i' N
  224.   #--------------------------------------------------------------------------* m7 D' _& \; T! K9 h0 f
  225.   # * Sp Flow Update
    , P1 \; N, T7 b( [$ \
  226.   #--------------------------------------------------------------------------" i, l$ g7 {0 y* ^
  227.   def sp_flow_update" b) V3 Q5 Z6 n5 [" `% Q
  228.       @sp_sprite.bitmap.clear
    3 U9 k2 ^4 ]1 S4 x: W8 \) _
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    9 q- _8 }- ]% Z% w+ k! D9 F) Y; Q
  230.           #SP Damage---------------------------------: X5 d$ b$ {; \) _8 S
  231.           if @sp_width_old != @sp_width, a, z3 H6 T. x# P
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    - x2 s* Q9 l0 N- U! r( d
  233.           valor = 0.5 if valor < 1              
    $ d) A( w& D0 B
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  # a' d9 t1 B7 o
  235.           if @sp_width_old < @sp_width
    * F6 `8 }7 B4 i1 v) F- S9 j
  236.              @sp_width_old = @sp_width: w7 v0 f) B: }) I3 K/ Q2 v
  237.           end      / ?  s* v( Z$ R& ?$ r# H3 G
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height): }% z: [# _" f& E$ d9 s$ u, h9 D$ @
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) + s* I3 D# S8 y6 e3 k8 s
  240.           end- x5 n1 U& W* i+ V6 R' K
  241.       #SP Real------------------------------------0 W8 F( C, I2 J
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    , N! m! _+ N2 R/ R
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)2 p% L& L# z% L- k1 n+ W9 v' \
  244.       @sp_flow += 1  
    3 J* s/ X2 D' {; g' c
  245.       if @sp_flow >= @sp_image.width - @sp_range% @1 f$ e5 c7 `6 m
  246.          @sp_flow = 0  
    " j; M9 b& g  K3 O
  247.       end+ V. T( E8 X5 `( E( T6 k
  248.     end            
    , O# T: b; d, i$ N& t) z1 \
  249.   end
    ( n. k7 y! f' P8 c8 r
  250. #===============================================================================
    * B! Y  L# S1 K# g! \
  251. class Sprite_Character < RPG::Sprite
    8 z! x8 ~1 ?! z* |- h- t# w
  252. #-------------------------------------------------------------------------------+ L$ J& h7 s1 k) B+ ~  @
  253.   alias :xas_emini_hud_init :initialize
    ' ]4 f; i1 I* f' u/ {
  254.   include MOG8 e* y5 d# J5 T
  255.   def initialize(viewport, character); L. d+ t* n, m8 C- E; M
  256.     xas_emini_hud_init(viewport, character)
    " }+ z8 Q6 @0 `6 p5 X" A
  257.     @viewport = viewport
      ^. {" ~, W. ~5 O
  258.     return if @character.battler.nil?9 n! V0 i/ W: Z+ ~8 J& J7 m$ V( ?
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)! g8 E! I* \/ R
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    7 _1 I! N9 v4 g
  261.     return if @character.battler.is_a?(Game_Actor)
    1 y. k+ u: m9 K. K0 A; ^/ Z+ z
  262.     @bars = S_Hud.new(@character, @viewport)
    ! w+ E9 p, j3 e5 Z
  263.   end
    " ]4 o5 y0 h1 g  E" [
  264. #-------------------------------------------------------------------------------( j+ E1 N' j+ H/ Q
  265.   alias :xas_emini_hud_up :update& i: J; p3 b# C: `
  266.   def update. y/ `8 o2 r+ X1 }3 |6 U
  267.     xas_emini_hud_up
    , T2 g% C4 f1 L
  268.     return if @bars.nil?
    7 `1 p8 y1 t- Y1 T* N
  269.     return if @bars.disposed?, D* |4 e5 [. c; t! U9 X6 g, r) _: Y8 `9 w
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    8 h8 R3 @0 ?* b6 F1 t: A. K
  271.     @bars.visible = (dis <= RANGE)7 o; N( u3 A/ I( v4 [& i
  272.     if @bars.visible
    , D6 F1 D5 b9 \. `: X% U
  273.       @bars.x = @character.screen_x# - @cw / 4# ^. i) Q1 a! r  d$ d; r
  274.       @bars.y = @character.screen_y# - @ch / 4
    2 [! e' L: n$ [" ^, _, Q
  275.     end
    - i( f9 ]# S, a" Y) Y7 m& `7 c
  276.     @bars.update6 a% d9 J- d# Q
  277.   end
    , ]: i5 ~$ Q5 a+ |7 Y
  278. #-------------------------------------------------------------------------------
    . R4 V  P, V/ r4 a) }
  279.   def dispose) W+ y& z, H  X# y) O4 D5 f
  280.     super( S  P( Z) M- B$ K  E: i& y* i
  281.     @bars.dispose if [email protected]?5 w$ W* _+ N% i8 ^6 W
  282.   end) p2 v4 D+ K/ h
  283. end
    1 q; R2 B% a' J8 Z, X- g% u( M

  284. 0 j1 v  ~8 Q! w; |0 ~
  285. $mog_rgss_s_hud = true
复制代码
- B; g5 B; g: Y. L

9 A8 \) P) g- _0 a
- Q" p) A2 Q: H# g$ y: j5 C+ \上面所說出錯的203行內容為9 H* U) t. B) u2 z6 [, @
@hp_sprite.bitmap.clear
% c+ o3 A7 U; u7 c! @7 _0 F% a& T2 P  D) W9 S
想知道怎麼解決
& S  U4 B* E  W6 ?9 Q
8 s5 P! z/ l, O; y" h1 ?該腳本支持3.82
; b, k% G- Q& Y: l6 U1 b, U8 o+ z  Y. G( k' k5 b" m: T
下面是圖檔,要塞在Windowskin下8 d5 f; P7 I) C
" R/ R& J1 |/ W" k
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
+ @4 o* S- B$ m0 T" n! W
2 u& q) b9 e7 C6 u* E+ V# i% s& O1 y; ?
, b9 H( k2 ]. `/ j' c7 M5 k& L, c; p

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
" K  {# M  u' \  g7 K8 {结果尝试刷新了一个已经释放的图形0 N+ z$ U# |* a( n& I# h# z
3 v( e: D0 d* w8 o: \
6 q: U* T$ Y/ [
; s3 O. {  @- {  n+ Q
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    $ I* v1 q! l1 l
复制代码
不要后面那个条件貌似就没问题了。3 D( }. Q/ K+ Y$ B
2 ~, k+ e& C, ^7 Y
4 ^" {; N' I8 }, @/ c( l8 J; y, v
" M9 P3 ~1 p: N: K7 x) k4 k
8 F- k5 F* ~( ~4 y4 [

作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 . e4 s+ W$ o/ J
貌似是释放的条件不合适
2 R) g. j# @9 U+ ?3 Q7 [2 b# X结果尝试刷新了一个已经释放的图形
4 V5 H* J2 K& L8 J! K; l
把後面那個條件弄掉後,的確沒問題了
7 W. O! W# P# I目前從關頭打到關尾結束都沒再彈什麼錯誤* M- A. c8 I  I4 ~: V3 c- H
非常感謝, F. T: Y0 h" j- [# i0 j
* s" i. F3 l( J, b$ a3 }
不過我是參照著別人腳本改的# T5 R: @$ _+ p3 a$ S! W! Y; F
他寫的條件式也是那樣,但我用他的沒什麼錯誤6 x" s  z  a6 d
不知道是怎麼回事3 X8 m7 ^8 @! E
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的9 J$ i0 ?9 S4 F6 a2 [2 g# f* Y( u
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events' n5 h  Q' L: C6 _4 ?# [( r6 R
嘛..这个数组吧..我在以前试写队友的时候关注过一点
! d6 h/ m' a0 Q不知道XAS内部对它做了什么手脚还是为啥,
! A' U; h9 }* V7 i* W8 k, Q总有那么一瞬间,没有被消灭的敌人事件也变成了nil
' x% k/ H% o5 [6 D0 m3 v1 Q5 X, f: A( `
$game_map.events.values[@enemy.id].nil?
6 p5 M5 g: j4 I% Y2 E因此自然而然的返回true并符合条件把图形释放掉了' x- L# U5 e, n! W3 ~4 G
9 ^9 Z5 h+ Y- L" I8 o3 ^
LZ应该有注意到吧,
+ D$ E& q1 }. t. H我测试的时候发现报错前几帧,图形会消失,3 d! I, i# Z8 H/ V4 o
应该就是“误以为敌人被消灭”了。: q" c3 j2 I; w  ~6 a
' \) n3 |0 B2 q1 X
受限于个人水平,至今无法找出$game_map.events的真相..
" i5 t! q6 t& G- j$ ^
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 2 h2 c$ L; H2 o7 o  I' a$ p0 p
$game_map.events
" t0 S" X( _7 e! J* A嘛..这个数组吧..我在以前试写队友的时候关注过一点
& n2 e+ d- a3 o$ S6 m& S7 u/ i5 Y! K不知道XAS内部对它做了什么手脚还是 ...
* y! \6 Z- h$ S6 e3 O
當初我把那個條件式看了三遍,都不覺得他有什麼錯
9 m- }8 s9 G) P3 J3 ]6 }+ U原來還有這麼深奧詭異的事XD
8 Z' f6 c  z" Y7 Z: c
* S, S5 L4 G2 m$ @0 V) ]錯誤發生前的確會有圖形沒顯示出來
: d; |" T1 d- B5 ~/ h, Z% @! X% F% Q不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
2 G! G% m* }; p" C0 z沒想到居然是詐屍了XD
! k. K8 P4 ?/ N1 u1 X
6 E6 j: `7 g9 j/ ^$ }* l" F- \不曉得3.91有沒有修正這問題...
, a5 t) w$ h" `; n5 d不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。% j5 h- L, [* G
( `- \6 X1 `% ?: w% I. q; r
的确" R$ |% b  v9 B/ V* k) w
用惯3.82之后想去整3.91觉得压力甚大... `. M$ D- [% z! R  K
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。3 n) \0 V) h, t, E. [8 B, k
, u. r* F" e' ^7 [: N7 I
然后加一个判断处理的。(我记得有一个disposed?)




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