Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
0 k; n0 |  @* D* T0 ^$ e; h9 x( A; T會在每隻事件怪物的腳下顯示; i7 J- C3 C1 o- o% a
問題是不知道為什麼
4 I3 v; r; m) u- {; d5 c有時打怪打一打會跳出5 s% R5 T9 D3 f
---------------------------+ ]3 A* G4 e+ V9 ]
XAS/ y% R; I6 \$ y; {* s6 u
---------------------------
$ s. l; F8 T9 Q, [0 H脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。2 w4 q- z) r4 t6 l2 I# t

# t$ E. K, ^) X  u: X$ qdisposed bitmap
, K4 S/ _3 m+ {0 M* J4 @# T" i3 a---------------------------
) R8 m: O6 |  o1 R8 n確定   8 K- a% j0 U3 T" z4 k  |# f
---------------------------- e" Q# `* ]# a% V" W$ w3 I
# _+ t! V/ |7 f, m! H5 y
這是腳本
. N6 g4 |. a! M( Q  u& |: z/ E% d4 b, K
  1. #===============================================================================7 _3 j. R# Y4 y5 r% z
  2. # MOG - s Hud 1.0      
    6 G. Z7 E( s/ y; v9 ?! I( g- u
  3. #===============================================================================
    $ p0 g* I7 h& K
  4. # By Moghunter 1 T# Y& a0 p2 V9 k( c9 U3 e
  5. # http://www.atelier-rgss.com
    5 e" X' ]5 R2 W& _
  6. #===============================================================================
    , A  R9 }: i3 ~8 Q2 M
  7. # Translated by Calvin624
    4 J; _& R) c" i# ~
  8. # http://www.xasabs.wordpress.com
    9 v* h) B( v4 X3 e% N
  9. #===============================================================================) p. N  T* x6 r) f4 v4 P+ r9 Q% u
  10. ###############################-DESCRIPTION-####################################% g" O. s1 \' v1 q) n, `7 F& s) _- t
  11. #===============================================================================  N/ y2 }2 J8 F$ B
  12. # Personal HUD – displays the HP and SP below the hero.  f) u  C  s: |$ ~
  13. #===============================================================================! r/ G) B$ c' I1 B: Z2 k
  14. #( U8 ^' s) X2 Q+ d7 {& j; Y2 ?% H
  15. # Graphics required:
    ; {1 T5 ^/ E3 m- {/ F0 b# K
  16. #
    $ l- }$ I6 x8 [. m5 @
  17. # S_Border_HP_Meter.png
    1 L; t9 p$ Y$ u) k: r/ v, K
  18. # S_Border_SP_Meter.png
      E9 ~5 Z' p  q  F9 i( O% L
  19. # S_HP_Meter.png5 K9 a0 V" K* ]' S
  20. # S_SP_Meter.png
    # M! d6 U4 v1 e
  21. #
    0 a8 z8 _& t+ E  q" L8 D+ R5 P
  22. # All images must be in the Windowskin folder.6 s$ i2 t4 c: d# m) l# N- {4 K
  23. #3 K* F: [  a# K3 S& a' L
  24. #===============================================================================$ n+ y' d) P. {
  25. module MOG; c  F6 ]) G5 N4 V
  26. VISIBLE_DEF = false  ) K, N4 Q4 K! p  W' H8 j" ?9 m& f
  27. # Show HP meter?$ U' V( s8 {0 J
  28. HP_HUD = true
    6 M9 P0 a) t9 l# [5 `5 f  D6 Q
  29. # Position of the HP border) _  b! ~9 x8 t
  30. S_BORDER_HP_METER_X = -2! E$ G0 @* h2 T( ~
  31. S_BORDER_HP_METER_Y = -2  . l0 ~9 s% T/ w0 a  K
  32. # Position of the HP meter6 u1 n0 {) w* z" \) J
  33. S_HP_METER_X = 0
    0 x( \, V# r- _" X8 W
  34. S_HP_METER_Y = 0
    8 R$ Y2 x1 P7 o/ Q5 E
  35. # Show SP meter?' D* v9 R  u7 Q+ @+ r' U+ q, |
  36. SP_HUD = true
    0 I. z& L) r# J. j, c& c$ o. V7 I) `
  37. # Position of the SP border
    / o) o9 @8 C& p3 i; {7 t, m: `" {
  38. S_BORDER_SP_METER_X = 0
    % O; i  O' u- w6 D$ k4 W) m( z5 G
  39. S_BORDER_SP_METER_Y = 10 # ~# }; L& p2 B. G1 L+ X2 [7 f' K. ~
  40. # Position of the SP meter
    7 ~0 e9 L) S/ }; Y
  41. S_SP_METER_X = 0
    0 b3 d( z$ D2 j' G0 N, T+ A: x
  42. S_SP_METER_Y = 10
    ! ^! T. A% s  _" O
  43. # Switch to disable the HUD6 k- z* g; l7 R; f+ W# J
  44. DISABLE_SHUD_SWITCH = 5
      {9 w5 L& s% v# J
  45. RANGE = 20
    : I" w+ E% c1 h1 `( d
  46. end0 D6 A7 |$ }! ]" G# n7 r  ?# @
  47. #===============================================================================' T8 I  {& M& B8 q4 v9 V
  48. # S Hud
    . g3 j+ p  e8 j' f4 L
  49. #===============================================================================- e; e% l& r9 M4 Y
  50. class S_Hud < RPG::Sprite
    / y& W% S' G0 i+ Q1 [, N4 ]
  51.   include MOG4 [# u3 L: p: h7 F, U* Q
  52.   #--------------------------------------------------------------------------  o# U! ~9 F% D  T9 b3 F
  53.   # * Initialize
    # `3 c& I: ]4 i3 v% k
  54.   #--------------------------------------------------------------------------
    ) |' Q5 \/ ]! X9 w, g
  55.   def initialize(enemy,viewport)4 Y' y# t6 Q1 H0 L  ?
  56.     super(viewport)
    % o0 h3 G9 H1 e  h, q
  57.     @enemy  = enemy9 e. ]& R2 k. c+ V9 S
  58.     @battler = @enemy.battler
    + x+ k. ~# k* Z, o
  59.     @old_hp  = 0# `4 i: S. I3 c0 |7 T- p) N
  60.     @old_sp  = 0
    ' H: X2 Q+ t8 [1 N/ @/ i! F2 a
  61.     @old_vis = false
    % x( g- q; n4 F1 {$ N# \' E
  62.     self.bitmap = Bitmap.new(100, 100)
    . Q* J+ M( Y9 ]
  63.     self.visible = (VISIBLE_DEF)#false
    " d' k. Y$ g* ?5 W  v9 v
  64.     self.z = 1001 ~, H5 t/ a# x4 R1 V$ m: O: u  k
  65.     #HP Border -------------------------------------------------------------------
    # H4 Z4 g. N6 [
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")) |0 h- E  U0 s
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    ( F) W1 z2 a% M  r) q  K# a
  68.     @layout_sprite = Sprite.new
    ! e" n- {* o, j: L9 d
  69.     @layout_sprite.bitmap = @layout_bitmap
    * l+ J3 D3 ~' \; l9 N
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    3 A' X* i. `5 Y/ n- c- j0 L
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      " `! G2 r2 E( G
  72.     @layout_sprite.z = 5001
    4 c4 ~1 X# I6 n/ u" z5 H" A
  73.     #HP Meter ---------------------------------------------------
    ' m; |. v; `) D- C* o
  74.     @hp_flow = 0- Q, Q( l  h4 T; f( h6 B% J4 _
  75.     @hp_damage_flow = 0" s6 F  p- @+ K
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")" q6 ^% q/ O  W4 l5 [) j3 A! C
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)% Z- R) P' }' e* S5 q! e
  78.     @hp_range = @hp_image.width / 3
    / w2 l; L" X) a; H5 Q
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    ; v0 |/ D) i4 M/ t% G. h! V! O8 A
  80.     @hp_width2 = @hp_range / 2
    9 W" _% G: [0 y" K4 C: w3 G
  81.     @hp_height = @hp_image.height / 2. a% z6 _. ]9 _0 \0 g" m4 J3 _' W
  82.     @hp_width_old = @hp_width
    $ @1 e# y( B9 L' q9 B+ w: p
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)& P1 {. w2 t4 `6 I% [" u
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) , [( o, d/ w  `8 O- E" h/ y8 ~
  85.     @hp_sprite = Sprite.new6 ~2 O, d( H( ]# q2 {& J/ r
  86.     @hp_sprite.bitmap = @hp_bitmap
    2 i  ~/ f& N4 N
  87.     @hp_sprite.z = 5002
    ' {! M+ f4 `$ L% g4 c* J; a
  88.     #SP Border -------------------------------------------------------------------- [3 D5 v/ m' b4 n
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    1 L6 x6 Q; G1 q+ m# ^
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    # H: D# {5 A4 ^. i6 @9 Y
  91.     @layout2_sprite = Sprite.new" {" ]- t1 ]5 I$ ]
  92.     @layout2_sprite.bitmap = @layout2_bitmap/ a: M( `3 a' h6 o7 Z9 U5 d
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)# a" }9 L* b' \& W; G7 @, M" v( Z& l
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    - m! j: m- [3 i! M% X3 K3 N6 g
  95.     @layout2_sprite.z = 5001   
    / ?* f" ~4 X7 ^5 ~
  96.     #SP Meter ------------------------------------------------------
    . {  W  r3 t1 C
  97.     @sp_flow = 0
    2 Z8 L( u( P" C* a( w- I  L
  98.     @sp_damage_flow = 05 g) T% W  l: o2 R
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    , ]! Y8 i9 {$ j; y
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    % B) S! v- u! v; V& R5 K, z- |
  101.     @sp_range = @sp_image.width / 3
    ; h4 \7 S- i3 G0 Q! I2 w" B
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  2 E3 Z, ~4 i% z' M
  103.     @sp_width2 = @sp_range / 2
    1 @3 s" B8 E( I1 L
  104.     @sp_height = @sp_image.height / 2
    ) |7 h- n! |: X4 k& m
  105.     @sp_width_old = @sp_width& t- {8 |" n& N' W3 X
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)8 z9 {* a/ k6 T; W' @) f% b
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)% Z: y. b# |5 o' C1 ]% p4 V
  108.     @sp_sprite = Sprite.new4 O% H( T( I- H' y9 _$ F" `
  109.     @sp_sprite.bitmap = @sp_bitmap2 X$ U/ _7 F& N& d0 q7 D7 ]6 h
  110.     @sp_sprite.z = 5002
    - O6 V) c2 \: h8 q- S
  111.     update6 D% A/ W! E2 `1 D; A
  112.   end
    4 o" d) H' a! |. q  R7 ?% E8 o/ k' s7 P
  113.   #--------------------------------------------------------------------------0 l  ~. Q) q$ A, c8 c) l
  114.   # * Refresh! }& o" x# |" E; m2 U3 k
  115.   #--------------------------------------------------------------------------
    / b2 U* j. ]3 P" v# x
  116.   def refresh. x& M8 J$ Y+ R; J& ]; B* L; Z
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    3 X* A5 q- U' J1 B6 b
  118.     self.bitmap.clear8 B* k( H, ?% q- e; V% ^" A
  119.     @old_vis = self.visible
    - K0 O. F: ]! ?: F! z+ {5 v5 o
  120.     @old_sp = @battler.sp, |+ q3 C7 D4 h0 N3 G5 e
  121.     @old_hp = @battler.hp
    5 z6 G9 T! I2 c  ]
  122.     hp_flow_update) R* v, q1 Q) G9 @/ P8 {
  123.     sp_flow_update) \- O7 \% Y! D9 h, \6 X5 I! f
  124.     hud_pos_update
    : a8 Z7 j- h: X
  125.     visible_update8 M& Z: e+ H& E2 k: {
  126.   end
    0 h0 F. c  V% j4 e# i9 J( `
  127.   #--------------------------------------------------------------------------1 f6 c) h/ \# g, n
  128.   # * Dispose4 Z, Y8 r9 I* Z6 A5 N
  129.   #--------------------------------------------------------------------------
    ; h- r2 S8 `7 w
  130.   def dispose
    7 T6 i# z# f  Z
  131.     #HP Meter Dispose/ Q/ r( L: i% z! d7 S5 q% z
  132.     @hp_sprite.bitmap.dispose
    & u" t1 ^  b2 t# B" L
  133.     @hp_sprite.dispose# g5 w/ L8 H) S4 B5 \
  134.     @hp_bitmap.dispose
    3 i2 P* \1 r8 }8 Y& f' D1 a
  135.     #HP Border Dispose
    ) N' E# G& `, {0 l2 F* ?7 T
  136.     @layout_sprite.bitmap.dispose
    & o) @9 `/ K: T3 f
  137.     @layout_sprite.dispose5 c! L& y% l5 t
  138.     @layout_bitmap.dispose
    : D6 x3 k+ A# l
  139.     #SP Meter Dispose
    , u8 f2 G( N  Z
  140.     @sp_sprite.bitmap.dispose0 I% `8 R2 N2 L1 M6 i1 r) s1 w" X' _% D
  141.     @sp_sprite.dispose9 t8 U& V5 k- c' A0 ]: C* ^& c% w
  142.     @sp_bitmap.dispose  o. Z4 c/ w, D& s
  143.     #SP Border Dispose
    % w. Y+ g% N# l# Z3 L5 ?  Q' I; p
  144.     @layout2_sprite.bitmap.dispose7 T6 q4 a" R. L+ c
  145.     @layout2_sprite.dispose
    7 n8 O" q* S. _
  146.     @layout2_bitmap.dispose
    ' ?4 k0 f; J! w; E3 O
  147.   end
    7 @$ T7 s% ]# Y+ Q* k) @* e
  148.   #--------------------------------------------------------------------------8 X% x: L+ w0 d% X6 F( c( V' f
  149.   # * Update
    7 P- l! R& _# d- N! F
  150.   #--------------------------------------------------------------------------5 ]6 X: e/ j* V! ]! Y( l3 C! I& d
  151.   def update+ q/ I/ M2 j& ^
  152.      @battler = @enemy.battler
    1 q' X2 w2 D& S& Z5 y! z- P- ]- _
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?+ _$ \& p! l. ?# c9 L* _
  154.      if self.visible
    $ L# j% ^7 ^6 k
  155.        refresh' E9 s8 c- U- t: _- S5 H
  156.      else
    # y3 _) A; ^! L
  157.        self.bitmap.clear- T& D0 |3 h4 {" Y! Q+ p% s$ H. |9 H
  158.      end6 I. y, V, X, j  ?3 \1 s1 m% F
  159.   end9 J" F( M& U" q: |7 i
  160.   #--------------------------------------------------------------------------# n6 Z) ]- ^* K* ^
  161.   # * Visible Update
    " D+ O% V# b6 k9 W/ s
  162.   #--------------------------------------------------------------------------& M3 B( M( Y2 G3 T. O
  163.   def visible_update
    # n' k! }8 q, c: \
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    6 |+ C7 A! B& |* \) g
  165.        @hp_sprite.visible = false% j/ S4 M; v/ w2 T
  166.        @layout_sprite.visible = false
    ) t; {* s/ ~2 x& a! ]
  167.        @sp_sprite.visible = false% e. z- v$ L. O7 S. s5 n5 ~: o
  168.        @layout2_sprite.visible = false
    ; U; ^# f" w! @3 Z+ T
  169.     else
    5 ]' z; d  C: b1 S3 c/ O$ Z& N) S
  170.        if HP_HUD == true: E! a+ p& G0 ^! t) Y4 ^
  171.          @hp_sprite.visible = true2 |% N' H1 x+ g' g- q& J) s
  172.          @layout_sprite.visible = true7 h2 `! e$ |8 n) ?
  173.        else: \$ P: F* _; r2 \( H
  174.          @hp_sprite.visible = false( B9 f; S. K8 s$ Q3 \3 C' Q1 w- `
  175.          @layout_sprite.visible = false
    ; l4 J% [' [% y/ g1 |$ I
  176.        end  
    % F! s' q% `# r, H) q2 v! E
  177.        if SP_HUD == true& B4 b  N* D' [9 {  k( q7 G. ]7 K# Y$ B
  178.          @sp_sprite.visible = true. I" Y9 d7 f, ~: k( b9 s
  179.          @layout2_sprite.visible = true# e2 q" c8 d, j1 }/ t; B" D7 M) ~
  180.        else: X0 F& j9 M* P0 M" B- E6 X
  181.          @sp_sprite.visible = false
    ' r3 ?4 b+ l, i! _& X! v7 P; X# ^" {
  182.          @layout2_sprite.visible = false
    + p8 A+ P; t/ x6 w+ P! }
  183.        end
    2 t9 A0 `& \& B
  184.      end  & }4 L8 m9 W# h, ?: I
  185.    end 2 M. l* E# S9 h
  186.   #--------------------------------------------------------------------------
    9 n. D# Y+ r" v# F6 u! ^9 q# }+ s
  187.   # * Hud Pos Update& Y7 ?! G/ x5 p0 Z: Y- u
  188.   #--------------------------------------------------------------------------" Q- X9 X- V3 U
  189.   def hud_pos_update4 Z/ H. @' F- A7 W2 x6 m
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X; m! V2 n$ k0 k/ o4 ^3 |
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    : o  W, `1 [8 r1 t
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    : X$ d6 \/ N. y" d2 [; h$ H* n
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
      R6 G- N' t2 [6 x' G8 I% v" A
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X3 M: V3 R# `/ f/ X# D7 k  m9 E5 l% _
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    ; U/ Q7 e$ z' Q
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X: j7 g( N6 |+ o: j% W) C, C
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     5 r3 Y6 O/ q6 Y7 a& P  S- O
  198.   end  
    + `; B, m" F7 |  A4 d3 V
  199.   #--------------------------------------------------------------------------0 U5 v% G7 b- L4 s7 Z' l7 {# n
  200.   # * Hp Flow Update
    ! R$ i. u5 D$ S* `6 e0 G+ }
  201.   #--------------------------------------------------------------------------9 G6 O6 ]# C! l8 w$ H
  202.   def hp_flow_update0 L' Y2 E3 W7 m% r, N  b3 w  H
  203.       @hp_sprite.bitmap.clear# C" U9 u2 o/ s& J/ p8 w
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  8 B% Q6 K8 l9 l) A
  205.           #HP Damage---------------------------------8 W" R! j) u) {3 ~! O3 x5 d
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100+ h: |% P7 l0 P) H& Q$ L
  207.           valor = 0.5 if valor < 1          3 q) ?; C9 o4 q: b3 |5 y5 L4 S7 h9 @
  208.           if @hp_width_old != @hp_width
    - Y0 d  p" O+ }% f8 E4 N
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    ) I" \( f) Q/ N. F2 c5 [  e, s) K
  210.           if @hp_width_old < @hp_width
    1 n; @% U+ j1 O# [3 R4 f
  211.              @hp_width_old = @hp_width
    ) A* K7 A4 f* M! |. c
  212.           end      , w& D% f  F& O4 s, x1 W/ g0 ^2 v
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)& e% q+ {' D- o( c! K4 u
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    - j. ?, f  a/ {
  215.           end        7 A7 u6 d6 ~1 d7 B! Y; Z
  216.       #HP Real------------------------------------/ t+ ^5 N+ G0 N* z
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    - S" ?" X3 P7 g& a
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          ( K0 D0 p8 ~$ P* R. m8 a  ^
  219.       @hp_flow += 2  
    & S7 I# ^5 _* v7 X, U* |
  220.       if @hp_flow >= @hp_image.width - @hp_range
    , a1 |/ @$ w) `3 J
  221.          @hp_flow = 0  ( C6 {$ H; Z% G' J$ F
  222.       end: I! m) |, e( V$ w
  223.   end   
    3 L. h. v3 P: k9 P' a. Y
  224.   #--------------------------------------------------------------------------
    3 X, \" C4 O9 ]: x6 U. `! b; X
  225.   # * Sp Flow Update9 M( E5 R9 s: m+ C% d9 e; G
  226.   #--------------------------------------------------------------------------- i8 R, [) G+ E6 Z6 \. m
  227.   def sp_flow_update
    7 @! P3 a+ b2 f5 A8 o7 y
  228.       @sp_sprite.bitmap.clear
    # h1 \9 H, D! X. Q7 S# S8 n* k( }
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp & r( q! ^3 `. v0 y* ?3 k( a& J
  230.           #SP Damage---------------------------------
    / [2 i! i5 K6 O
  231.           if @sp_width_old != @sp_width
    % o+ R% K+ ]" `8 }; v3 g' Z
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100' S) t/ n) X. o" w# M, I8 d- X
  233.           valor = 0.5 if valor < 1              / H- t& ?( X7 ?3 g1 K
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    $ _9 V; ?; k6 e/ H6 N
  235.           if @sp_width_old < @sp_width
    + d' k+ k$ ~# c* b5 W
  236.              @sp_width_old = @sp_width+ A" ^) i- A. a& T9 t' W
  237.           end      
    : r) b0 V& \% H" _- H
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)2 c( n- J5 p* X$ g4 D2 p4 N
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    5 t1 g! O2 x' B+ W' H6 S
  240.           end/ h0 l5 T! d# G9 V$ E+ z% C
  241.       #SP Real------------------------------------4 l9 Y$ [( N( k8 ^1 N+ G
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)1 L& P. ]- f7 ^/ s
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    * f& {! |# Z7 n% c& L2 y
  244.       @sp_flow += 1  
    4 I+ t6 t. ^  y$ q* P7 Q
  245.       if @sp_flow >= @sp_image.width - @sp_range1 Z( }+ T6 E" z# n- P) m
  246.          @sp_flow = 0  - W  T- {$ f( k3 D
  247.       end, v0 W& m5 }; I, Q, _$ g
  248.     end            
    6 m- b6 d- r: K6 r; q
  249.   end. [  ]# r( F0 y1 C6 H
  250. #===============================================================================" N4 Y( R& q' ?( @' ^
  251. class Sprite_Character < RPG::Sprite+ r2 |) T/ ~6 c( x# W- m  @
  252. #-------------------------------------------------------------------------------
    1 b. y9 Q( `( d; d3 J6 z3 b
  253.   alias :xas_emini_hud_init :initialize* z& `5 }* [$ O4 f- U
  254.   include MOG
    * s5 @5 |1 Z/ f6 c( n# o( l6 y
  255.   def initialize(viewport, character)5 I  O+ V' I( P: S& A
  256.     xas_emini_hud_init(viewport, character)
      K( p8 d* @! P4 X: |+ p( j  {
  257.     @viewport = viewport9 b4 L" w3 Y4 M  A8 `" l: c8 y
  258.     return if @character.battler.nil?" W8 x0 f- ^. H5 ?& z2 W* R
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
      a2 V0 x0 F4 T% ^$ |/ F7 ^% e, X2 m
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    ! W$ P0 o6 X) L
  261.     return if @character.battler.is_a?(Game_Actor)$ n" b" m) `5 s# O! Q  Z
  262.     @bars = S_Hud.new(@character, @viewport)
    9 M$ ~  W9 d# H# g* @6 g# I/ i: g
  263.   end" k; Z+ y. q( }* N+ l. ~" Z" E
  264. #-------------------------------------------------------------------------------
    4 M4 ?. B$ m% w# q
  265.   alias :xas_emini_hud_up :update
    " Q: a$ s& `9 c) b6 w
  266.   def update, r. ?# h# |8 q9 s/ n
  267.     xas_emini_hud_up
    ' s' l! q8 V1 v+ o) e
  268.     return if @bars.nil?+ L! x' O3 u! `  n% f5 r
  269.     return if @bars.disposed?
    ; D8 {  Q8 {. ]% T
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    8 @1 |" Y; m4 a) y, m4 W
  271.     @bars.visible = (dis <= RANGE)8 L% f( [2 I- a/ M1 n8 r
  272.     if @bars.visible7 j7 O' P' i3 O" Z4 n
  273.       @bars.x = @character.screen_x# - @cw / 4
    $ F- ^7 s1 H1 F4 K: s; \
  274.       @bars.y = @character.screen_y# - @ch / 4  L6 S* F) O* A8 f
  275.     end8 I4 D, @. q0 p4 C
  276.     @bars.update
    8 k" y' n! z4 N
  277.   end
    * h! z/ c( l* `1 y
  278. #-------------------------------------------------------------------------------* f* M/ {$ |- F' x+ F8 y
  279.   def dispose
    % w) c2 O) a2 w
  280.     super4 L" Q6 Y4 I, w7 [% e# v
  281.     @bars.dispose if [email protected]?9 o( D. C% {5 m$ R* V& W& U
  282.   end
    : k; Z2 G5 X- R+ t' M1 ^' x
  283. end
    1 v. ?0 A* U; i' E

  284. - L0 F5 e0 ]  f- q4 F( y( |! H
  285. $mog_rgss_s_hud = true
复制代码

8 y) s, D- E5 \! @' h2 v( `5 z% H* u% E) _( I1 @- {+ o
  F# M4 U2 l% [; w# Q/ C& G3 F
上面所說出錯的203行內容為, Y. P! n9 c* P6 I, b
@hp_sprite.bitmap.clear
" H* o' }, z- e' E; C. f* Y% |1 t
* Q# c! K9 h( ]$ P想知道怎麼解決/ d2 |. [' z' ?( H
5 ^7 d( k. G. `: f/ n( w
該腳本支持3.82
$ A1 E9 {1 z8 U0 ?/ k1 N  R* i, R' a; C7 Z1 e9 W3 x
下面是圖檔,要塞在Windowskin下
) g: N0 t& J% y( G2 A6 l% v% p: `7 ^4 a; C7 R* i7 Z9 r/ |- B
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 0 q/ D8 q+ |. M9 K- X" ~7 P

! t6 O6 Q+ C% S" j# C+ b, Q$ b' r6 x; F

% h9 ?: d4 g- U2 Z  t( h8 F  Z
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适5 P6 r' y% _1 m3 P& u$ B
结果尝试刷新了一个已经释放的图形+ Y( N- L7 G* z6 w* b4 Q/ m' y
  Q+ I/ m6 P2 f: t
7 i& b6 f' j* }3 S( F

; |3 w/ q8 m3 ?( L: k% A+ m虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    " d2 ?: ^( s8 D6 b
复制代码
不要后面那个条件貌似就没问题了。) w! F/ H' r5 C
: N8 ^6 W4 y0 Q! J

7 E/ V  E$ o& a4 p% u  k) g4 c! ` 1 U& R" O4 n" N7 u0 q( t

; K. R- F  o: F3 q" B4 @
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55
' T6 I$ A2 r, O" A9 h2 ]6 H貌似是释放的条件不合适5 K) ]+ m( f# w% }5 E! G
结果尝试刷新了一个已经释放的图形

3 g' d7 |; `- q! [4 X把後面那個條件弄掉後,的確沒問題了
0 X0 R, U, |3 ~  x+ e8 e* B目前從關頭打到關尾結束都沒再彈什麼錯誤* l4 ]5 t0 \& \4 u- m4 O4 N/ {! W
非常感謝! n. `9 T1 t2 f

; L: B; h8 a, a( ]不過我是參照著別人腳本改的
* Q3 N' B' z' G% H: t7 ~他寫的條件式也是那樣,但我用他的沒什麼錯誤
4 |5 b* ?; P' U' W1 k# o1 p不知道是怎麼回事
2 o7 A7 U9 ?( u) w) k是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
  S. E$ X, U2 z% p, Z+ S我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
% g2 {! ]( D, Y1 y  m嘛..这个数组吧..我在以前试写队友的时候关注过一点
/ O: O5 u! h! J+ Q8 F不知道XAS内部对它做了什么手脚还是为啥,
1 ^# m* }0 [" e  u' Y总有那么一瞬间,没有被消灭的敌人事件也变成了nil6 k# z( j6 u. }& Y. \  K2 }
' r# a! Q$ E+ @. ^: E* \
$game_map.events.values[@enemy.id].nil?; Q% q6 P2 S+ a8 @% Z' ~/ t
因此自然而然的返回true并符合条件把图形释放掉了
5 w- j+ _  x2 z! l2 U2 m; G% Z5 ^4 V  @- L1 W" ]
LZ应该有注意到吧,
  N; o+ T, N$ Q% m$ J我测试的时候发现报错前几帧,图形会消失,
/ _/ T- p2 z6 Y6 x- C) J, J6 t/ C& K. \应该就是“误以为敌人被消灭”了。: h$ I% g, u# H7 _+ B5 P8 Q9 s) L& a8 S
. z7 _2 @- @) K' g
受限于个人水平,至今无法找出$game_map.events的真相..
# Z4 e- j: m: O; w4 _' B8 y  F& s
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
6 o4 P/ M6 j& ?' w* T$game_map.events
' a" _; q& h- P5 o6 s嘛..这个数组吧..我在以前试写队友的时候关注过一点
* I" c0 `$ I8 z% \不知道XAS内部对它做了什么手脚还是 ...
7 W1 e- s2 c; h+ y3 W
當初我把那個條件式看了三遍,都不覺得他有什麼錯  s! I6 `/ s5 A0 N* L
原來還有這麼深奧詭異的事XD  c; ]( {/ [- F( J2 R6 }0 h" T
: N+ h! i( ?9 Z# y* m! h& X$ S
錯誤發生前的確會有圖形沒顯示出來
1 E' I8 h2 b; @$ E7 i不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
! B; Z! p* {( i3 L+ ?1 E$ G( l沒想到居然是詐屍了XD
0 T. q3 @3 e  F
% _& N2 m  `4 x5 S0 a8 s) y( w, O; v不曉得3.91有沒有修正這問題...3 d; n8 X6 t+ m0 E* d
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。6 d0 ?1 p* _6 s9 ~% R7 x# v3 h: t% n

7 y* ~8 _! {2 T7 ?  `3 j的确
! l) E3 ~7 m6 ?$ r+ W8 t; i4 o用惯3.82之后想去整3.91觉得压力甚大..
2 Z+ C! ~3 j* G2 O干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。4 Y, Q/ }9 U! t0 |
/ K4 J" }1 t: @. [& M! Z4 T
然后加一个判断处理的。(我记得有一个disposed?)




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