Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條  t3 ~# }+ F/ z! H, p( U
會在每隻事件怪物的腳下顯示
- z. o7 E0 n* O. ^問題是不知道為什麼; u( j: y& ~9 q' g3 r' ~
有時打怪打一打會跳出
4 L; {( g. u: K$ j3 c6 J2 \- X---------------------------3 R8 v, f. C& ?" Z1 v2 V
XAS2 P: d3 |* i: C
---------------------------
/ Z0 B! K/ @8 Z1 K) O) m脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
- S" L) k) a/ Z+ W9 z
/ i5 o) K0 R: D8 B$ J- P/ xdisposed bitmap$ |+ ]5 M2 x! ^. _/ D4 r
---------------------------
5 }, A; H7 M& C9 _6 |7 m) I+ e確定   4 g, [$ H( |. ?% U
---------------------------
% Y3 v7 F5 t5 c, \* k, @
4 |* W3 T! x2 A1 N% e- k2 J這是腳本9 j) [4 o" T. b: O
4 O5 B1 w$ v1 v( z+ z/ H' M# `
  1. #===============================================================================# B1 X: ^& S: G& R2 f! f
  2. # MOG - s Hud 1.0      ( ]  Y0 H( t: A: l. h  g# r# F
  3. #===============================================================================' p" G. c  `4 a; x: w/ O) d4 u
  4. # By Moghunter : E3 |" F* I) g3 ]8 J/ @
  5. # http://www.atelier-rgss.com0 E" C" A- C$ w$ f2 r
  6. #===============================================================================3 A1 c( Y/ z! a+ c0 y1 d  \- L" f
  7. # Translated by Calvin624
    1 E& b5 Q5 V) K$ N+ ?
  8. # http://www.xasabs.wordpress.com
    1 k. d  A8 r; J$ v, V
  9. #===============================================================================
    , }& b# |/ l% T  ]* r
  10. ###############################-DESCRIPTION-####################################
    * m) Z% R, i% n# R0 g" J9 [
  11. #===============================================================================
    & w+ s- B! x5 _' l$ O
  12. # Personal HUD – displays the HP and SP below the hero.5 [# y  o% E7 z3 h6 X
  13. #===============================================================================
    % r# b1 ?6 b; D) v. e' s8 m
  14. #1 R5 [% U" H6 |9 I, S$ w) X
  15. # Graphics required:
    - ]+ w% s- R3 E7 P/ d$ R* d5 }7 l# X8 q5 Z
  16. #
    6 [( e: q' x0 J' V8 f
  17. # S_Border_HP_Meter.png
    ; S6 w4 D; f; k5 f. M" u7 X
  18. # S_Border_SP_Meter.png
    9 Q9 I- O% L2 {" v. y$ [
  19. # S_HP_Meter.png
    * S) P% O6 O$ ]- X: ]  X. {  {
  20. # S_SP_Meter.png
    0 }+ N) P# ^, f# z# q5 n- G3 q& p
  21. #
    8 ^9 J, k8 ~: \
  22. # All images must be in the Windowskin folder.4 z' {6 ~% R2 }* d* X
  23. #
    / p* m- @" ?/ f
  24. #===============================================================================
    6 t+ n" p& P5 n3 ^6 D
  25. module MOG. U3 R4 U( [% r: @& V
  26. VISIBLE_DEF = false  
    ) m: d! v+ {0 w' \* [  X- d
  27. # Show HP meter?9 d* E9 W/ t, x" A; Q3 t# ?  ^
  28. HP_HUD = true
    ) z# T# G0 T  N+ t9 f: D" P
  29. # Position of the HP border
    " D0 P* d. W' }7 s' n
  30. S_BORDER_HP_METER_X = -24 [, P$ A$ P0 E( I$ ^
  31. S_BORDER_HP_METER_Y = -2  * ^6 C* E6 A+ W, |! Q( i
  32. # Position of the HP meter
    , w% v( x3 y& ]5 V: p6 L$ |% V
  33. S_HP_METER_X = 0
    ( |4 ]5 A" N  X/ h: b
  34. S_HP_METER_Y = 0: Y7 R6 X7 a8 ^5 Q( W$ P1 }
  35. # Show SP meter?6 E# A9 @. C7 I- t8 V. T: N, c
  36. SP_HUD = true
    # H& T5 C& g: R( B0 e- c1 M9 @( P
  37. # Position of the SP border
    , d2 @* x4 l- o$ L( {+ p7 R
  38. S_BORDER_SP_METER_X = 0
    : b, J# o4 j+ M. K
  39. S_BORDER_SP_METER_Y = 10 ( Q8 \* Y; ?" _. N
  40. # Position of the SP meter, l4 R, y& @' f! T/ M  \
  41. S_SP_METER_X = 00 C+ C. ~9 N% X" a0 D! [  S
  42. S_SP_METER_Y = 10' C2 E1 x% _( H# D* j% z
  43. # Switch to disable the HUD
    % Y# j6 a9 ]7 C1 \1 L  H4 H5 U  i
  44. DISABLE_SHUD_SWITCH = 5
    ) O. v0 o( x' J
  45. RANGE = 20% f/ n9 }, g: a. j! d5 w
  46. end
    8 b: b0 [+ p: H$ J* m) _' V  O
  47. #===============================================================================0 Z% B3 z) |, U
  48. # S Hud
    , [* n  A& Y- R/ j* c
  49. #===============================================================================
    5 C- m+ Z' h% O1 ^" Q3 `
  50. class S_Hud < RPG::Sprite) h( a! g- c& m
  51.   include MOG6 T- i3 S! C" K! c/ e
  52.   #--------------------------------------------------------------------------
    $ N9 G! K" a! p# l
  53.   # * Initialize
    ; j) S  P( t0 n  A- ^7 f& W9 Z
  54.   #--------------------------------------------------------------------------
    5 v! O7 _/ x* R: K8 `6 V
  55.   def initialize(enemy,viewport)
    : }* s* |  T0 M# B/ T
  56.     super(viewport)
    ( }5 G* P9 R0 V# R5 e
  57.     @enemy  = enemy
    3 c" g& T. n& F! @& j5 U% I
  58.     @battler = @enemy.battler/ r2 D  \0 K# `# u9 `# X: l) g6 ]) S7 X
  59.     @old_hp  = 03 j; Z+ ~1 t0 f4 q5 d
  60.     @old_sp  = 0
    . M3 y# `. v. H  _2 ^5 G
  61.     @old_vis = false1 A- M2 z- }. F) O2 F/ u
  62.     self.bitmap = Bitmap.new(100, 100)
    ( _, a$ W! ]: U. ?7 X# j* z
  63.     self.visible = (VISIBLE_DEF)#false
    / g+ K& i: W1 r; w7 m) ~3 d
  64.     self.z = 1000 o4 c# A, ^. o1 {' F7 X1 Z
  65.     #HP Border -------------------------------------------------------------------5 l) @" ?+ l$ o2 m' K/ J
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    7 s2 v! }9 P/ z/ n6 I
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)
    * O1 P9 h* C0 g* ]8 J3 c
  68.     @layout_sprite = Sprite.new
    ! j/ l" r4 ^/ W& p7 v7 }; w8 D
  69.     @layout_sprite.bitmap = @layout_bitmap9 r) G% A6 c( Y
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)# Y& Y8 G9 [1 Z
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    ' u- A, C3 x1 S2 T+ d5 b6 l
  72.     @layout_sprite.z = 5001
    2 _7 a% y9 n6 u) p. _
  73.     #HP Meter ---------------------------------------------------/ k/ v7 c7 M% w# O4 J. p* H0 y
  74.     @hp_flow = 0" e1 J( o" V% ~5 Q* [
  75.     @hp_damage_flow = 0
    % g, M! }$ y  ?) f! c
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")
    ; T7 T& f2 c; p/ t- W
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)9 g+ t$ |2 K% R* d8 V+ I
  78.     @hp_range = @hp_image.width / 3
    + U7 q3 a- Z* J* t" S0 R
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  ! S; M0 O, g6 U, Z: h7 n4 K. ?* J
  80.     @hp_width2 = @hp_range / 2  p* `9 t2 W! _" f8 [. \. Q- E
  81.     @hp_height = @hp_image.height / 2+ t& T" @3 j- Q# d) u& H& S, c5 ?: t! Q
  82.     @hp_width_old = @hp_width
    # \8 n* e) |0 [* o* Y+ g) Z
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    9 ~2 B' O" O0 T
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) 2 ~$ j4 N7 D, N  E& c( j
  85.     @hp_sprite = Sprite.new: f) v1 R% E' V, [
  86.     @hp_sprite.bitmap = @hp_bitmap
    * L) X, \+ r! p& d8 x/ b! Z
  87.     @hp_sprite.z = 5002
    . i: _) J3 l1 I; G, f
  88.     #SP Border -------------------------------------------------------------------
    2 h, c9 o3 d5 ]1 [/ _( _
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    7 h/ z- M( [3 j3 [/ Q0 J$ a) `
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    # q1 x( ^+ y% ?9 J
  91.     @layout2_sprite = Sprite.new
    6 B) y- E, X( X, ~
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    % p/ B0 q3 k* S
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)$ Q+ ]$ @& w* G: z* V
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    ) X* V' _6 P- N0 _8 P
  95.     @layout2_sprite.z = 5001    / J, [  |" {4 ~( c7 [
  96.     #SP Meter ------------------------------------------------------' Q- M! N& }, {7 {' C) {  n4 N
  97.     @sp_flow = 0
    $ h3 J" b; m! M4 X6 }3 M
  98.     @sp_damage_flow = 0% [. M/ S1 k; i2 {# P! f
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    . c" v0 h. S5 l2 m9 ?
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)# k& P% t+ G" s- L) o# Z) S) v
  101.     @sp_range = @sp_image.width / 34 }8 k; X5 ~: p6 t
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  
    0 S; }( |( i, y
  103.     @sp_width2 = @sp_range / 2
    0 }% ?1 ?( r" V) R( T
  104.     @sp_height = @sp_image.height / 2$ u5 i. a2 K4 d) b- Q
  105.     @sp_width_old = @sp_width
    ! F  ~, a! l$ E7 j5 l
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)6 J' [" z+ F$ J- p4 c5 @% r
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)/ x: h% `: i6 L3 a0 X
  108.     @sp_sprite = Sprite.new* d, o1 S' m; _% }0 u
  109.     @sp_sprite.bitmap = @sp_bitmap
    % E! c2 g- _0 ^5 T3 ^) W" W/ \
  110.     @sp_sprite.z = 5002
    . L% H% m% Z0 |' n$ `# E
  111.     update5 n% C* Q  d9 j% i& K. B
  112.   end/ r( s! o2 g: h. t# z
  113.   #--------------------------------------------------------------------------
    " _9 r0 j$ n5 k1 r) K* M
  114.   # * Refresh
    ! H5 B" u  i6 D' X  _! L4 H- n
  115.   #--------------------------------------------------------------------------
    0 ~3 D8 B& m. \" T( _8 M
  116.   def refresh
    , b8 l& d3 D9 C! i- L
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible) w. X- Y! h0 P& `
  118.     self.bitmap.clear+ o, x: P; |9 w: `8 n: p
  119.     @old_vis = self.visible
    ' Z3 Z4 c0 u6 Y" o* g1 R1 u
  120.     @old_sp = @battler.sp
    # |+ k% W* V$ f0 M1 g  y& n2 K
  121.     @old_hp = @battler.hp2 l% I# ~  |8 @$ a
  122.     hp_flow_update
    $ Y7 k0 B" ^) |: V0 |7 Z
  123.     sp_flow_update
    # ?( _: b; A6 {; ^/ c
  124.     hud_pos_update9 y1 e9 X* S) ?7 \
  125.     visible_update
    & Q1 X% V8 D) Z
  126.   end/ f' Q2 }: [+ ^. a5 J/ t9 v
  127.   #--------------------------------------------------------------------------
    " P/ d- o4 l1 m
  128.   # * Dispose, C+ W3 o1 y7 \6 ^8 R% p( S: k3 g
  129.   #--------------------------------------------------------------------------8 D' P1 o0 _4 @% a* g; X
  130.   def dispose( c8 d- E& J& n. Z  o, P$ E& \2 R3 m$ e
  131.     #HP Meter Dispose
    ; [- L, w) _1 b, V# ]7 O
  132.     @hp_sprite.bitmap.dispose
    0 M0 L7 J% v& @' S
  133.     @hp_sprite.dispose" x& x( a! t# S, ]7 w3 H
  134.     @hp_bitmap.dispose1 S+ `  A9 U5 S
  135.     #HP Border Dispose5 R/ \, o, c" j0 q- L( I1 ?
  136.     @layout_sprite.bitmap.dispose
    " @) }. g' y+ ^
  137.     @layout_sprite.dispose6 W) _3 e, j. p6 ~7 J0 P
  138.     @layout_bitmap.dispose
    / L2 w, [; L' T' I; E, m# C' T6 Y
  139.     #SP Meter Dispose
    , _% H0 `2 z8 h% e: w2 [1 |# [
  140.     @sp_sprite.bitmap.dispose
    4 \- I5 I; o4 X/ M; {1 M6 A; u
  141.     @sp_sprite.dispose
    - b$ Q: @4 c9 t
  142.     @sp_bitmap.dispose
    7 u3 K! U% a: n+ Y
  143.     #SP Border Dispose
    ; U, A/ R5 s  P# _- G
  144.     @layout2_sprite.bitmap.dispose) q; B, m  ~, U5 h
  145.     @layout2_sprite.dispose* [1 ]3 |- r5 F0 l( {: R% \
  146.     @layout2_bitmap.dispose
    ; r8 z1 D2 @0 l1 M" J
  147.   end% l: M1 g( O4 E7 C0 L3 j* {" n
  148.   #--------------------------------------------------------------------------
    / o8 U+ F2 g7 Q" G1 k1 f% c- W" I  L
  149.   # * Update2 N5 r$ l: f: G0 H2 F
  150.   #--------------------------------------------------------------------------
    % q; @9 ?: o8 C) `$ C
  151.   def update
    6 l& _4 t* G" G) |# j* e+ H
  152.      @battler = @enemy.battler
    ; L+ b2 A1 B3 i  M8 ]2 ^4 e5 R
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    0 k/ e9 [' o+ I! v1 D' k8 I
  154.      if self.visible
    8 X( ]1 M: X: w
  155.        refresh
    9 v' W( j6 m  M# }, L6 A
  156.      else
    1 r# Q& m8 j4 ]! G
  157.        self.bitmap.clear4 v8 c# u* I: [  q! K  t! x
  158.      end( h9 g- n& c& O
  159.   end
    1 `6 a/ z; m. n# S) s/ r+ ]! j) `
  160.   #--------------------------------------------------------------------------6 G! p9 F& ^0 q" r7 E, ^; s- o
  161.   # * Visible Update
    : r' S. }2 z4 ]' ~
  162.   #--------------------------------------------------------------------------0 X- ]( D$ e$ t/ y
  163.   def visible_update
    5 K: }, Y8 o. @- ?$ ~- O# @3 M
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    * z- C" M' D/ k5 ^, V, A: W/ d, M
  165.        @hp_sprite.visible = false  A# @" |( L4 M3 z1 S: N- l& ^
  166.        @layout_sprite.visible = false
    ( y5 ^  d( ~* l/ L3 ]2 i) y) H
  167.        @sp_sprite.visible = false
    7 Y# ^, k' L5 i# ?$ A: Z
  168.        @layout2_sprite.visible = false' ?1 V% f8 L  A- c! m
  169.     else( g1 m; u9 q5 ^- }1 {) ^# z1 z$ x
  170.        if HP_HUD == true
    % V+ o7 U" A! `( e2 q7 C
  171.          @hp_sprite.visible = true! {8 R& g# f9 ?8 t( `8 y
  172.          @layout_sprite.visible = true, t8 [9 Y6 F" a" O
  173.        else9 `3 w% }3 Q/ s+ }
  174.          @hp_sprite.visible = false+ _; ~. s! o+ r  b+ F  l
  175.          @layout_sprite.visible = false
    . x7 q- ^/ @; E3 j; Z
  176.        end  ' |2 ]# c( E3 h- ^2 O
  177.        if SP_HUD == true, |# H/ W- U3 S5 M2 y3 e2 W
  178.          @sp_sprite.visible = true  Y& H) P" t& `  O/ ?5 O! z, }& w
  179.          @layout2_sprite.visible = true" {, W+ F. z* ^, A8 \, z# m
  180.        else8 N( H' T9 K: R+ `% _
  181.          @sp_sprite.visible = false8 X' P& f: y; ]- @$ A  Q
  182.          @layout2_sprite.visible = false% @3 p$ n+ w% I( [& S4 t/ v1 E
  183.        end
    7 x. B' Y" ?! S6 O* ]) L* h) u
  184.      end  
    1 r  r$ b( _8 Q: W6 L
  185.    end $ S5 A& J: A0 W
  186.   #--------------------------------------------------------------------------! v8 H2 R5 {6 p
  187.   # * Hud Pos Update
    $ ~! p" m3 t* b: S3 c+ Y; z9 d
  188.   #--------------------------------------------------------------------------
    + o) F' b& z9 H0 S) O) R$ ]" b8 U
  189.   def hud_pos_update
    : F  Z& Z; v6 Q# s& P( [
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    4 w2 V0 t# S" E6 U) l) D9 y. n
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    ; {) @$ |* d8 r8 p, y- E# k$ E
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    ' b% {) V1 d" s2 D( G1 J
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    . v" z9 l, `- d( B4 q( N
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    0 ?! `. y; e) \! E" d! B; E
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  5 Z2 v/ [! d* q; F: n- l0 o) N
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X+ b4 k/ b% h8 B/ `
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    : p& Z4 F9 i! _
  198.   end  
    $ E/ j' Z1 [' X1 {
  199.   #--------------------------------------------------------------------------
    4 q& U* s' T( N3 Y1 A) u
  200.   # * Hp Flow Update1 @$ e- k# [! ]  B7 {7 U7 {
  201.   #--------------------------------------------------------------------------' P. w8 p7 V' V' }2 e2 ?) |$ i
  202.   def hp_flow_update- w  a$ J2 `+ t3 b! _
  203.       @hp_sprite.bitmap.clear/ G* j: J" N+ j. H/ e' n
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  & _: ~: Z6 d( z6 m
  205.           #HP Damage---------------------------------9 d" U( H  c/ i: C- G: L1 ^
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100. A3 l  X) ~( L* A- a$ F
  207.           valor = 0.5 if valor < 1         
    ' F* _! h$ _7 l
  208.           if @hp_width_old != @hp_width
    , _3 N" k+ ?' _
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width    V$ \4 A( T& o9 n3 J
  210.           if @hp_width_old < @hp_width 8 E, b9 x; F) W" r/ F5 b
  211.              @hp_width_old = @hp_width7 F6 g$ R) A9 B& V6 G& C  l
  212.           end      
    - O) X0 i/ k1 @/ s! M
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)( |" @, @9 |1 f7 l; `- G2 t* f
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    5 F7 h4 {! {2 l1 I) U8 K( |% P
  215.           end        . x6 q- Z& E" l/ M
  216.       #HP Real------------------------------------& {5 n. f5 Q. l, K; R% `
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    $ s1 R2 E9 ]# Z& S$ w- d& t5 k
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          + X$ E3 V4 A7 R' a, D; i8 f
  219.       @hp_flow += 2  
    % |1 s/ A; R9 e' U" M. _9 _# U
  220.       if @hp_flow >= @hp_image.width - @hp_range
    , `2 y% `8 v7 b& r0 A
  221.          @hp_flow = 0  
    ; X8 T9 E2 \9 E! d; H
  222.       end
    6 L( y: ~; B2 B) p# ~
  223.   end   
      y! m* `8 G$ ]
  224.   #--------------------------------------------------------------------------3 i. h% M' q/ N# Q( \
  225.   # * Sp Flow Update
    7 N( p6 @) u9 ?8 j% R
  226.   #--------------------------------------------------------------------------
    ( [0 C: q& b3 Y/ M( z
  227.   def sp_flow_update: X  o  ~* c* l- ~2 Q
  228.       @sp_sprite.bitmap.clear
    9 u; J# p; ]- N( d: W6 s
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp & U% _" X8 h: V* w/ p
  230.           #SP Damage---------------------------------
    6 X: y8 f% ~8 k
  231.           if @sp_width_old != @sp_width" s4 [% b% H4 O$ J* m7 G6 N
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    % k6 T( t, e  w  x
  233.           valor = 0.5 if valor < 1              
    * B5 F, W3 b6 U' U$ D8 L
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    % W' X* b  j5 ^5 o: |( _" n6 i
  235.           if @sp_width_old < @sp_width 7 u# R. p+ G# S& @3 A5 M" C+ @1 s- |
  236.              @sp_width_old = @sp_width$ P- U* `* e( [# \) d
  237.           end      $ D. G) l; y; N# |
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)7 Z  D% E/ C6 c4 Z; O* |  V( v3 m
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
      w' g3 M- a$ {: z# X
  240.           end
      n7 V( _9 ~, z' T' o" R% p
  241.       #SP Real------------------------------------
      E6 s/ S$ }, L
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)6 t( h% g! c8 a# o. d
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)7 a) k' F) f5 _  o) u6 c# v
  244.       @sp_flow += 1  
    . l/ E% K& l6 y9 }- }
  245.       if @sp_flow >= @sp_image.width - @sp_range1 e- J/ i/ A& F( a) ?& ~; q
  246.          @sp_flow = 0  
    9 A" Z) H: c# v( |
  247.       end5 s$ R; R% U" J8 n5 Z
  248.     end            + c+ b* E; R) n& ]
  249.   end/ h6 x5 H: N3 l6 K* ~9 X! b! S* ?
  250. #===============================================================================$ `. K( g1 p1 |* U) t; Q
  251. class Sprite_Character < RPG::Sprite; s0 X* T, b5 {+ Q5 B4 H
  252. #-------------------------------------------------------------------------------( O0 {8 k8 [  f9 A4 _( z
  253.   alias :xas_emini_hud_init :initialize9 v% Q# Q- W0 u* G6 a; B
  254.   include MOG
    7 _% n9 z  x2 E
  255.   def initialize(viewport, character)! M' M) Y( C' j" v' G, `8 H) }
  256.     xas_emini_hud_init(viewport, character)+ z5 H1 E" Z8 g1 O" ?5 R  R
  257.     @viewport = viewport
    ' |' T0 A1 m: F* g/ N( y
  258.     return if @character.battler.nil?& E. ]7 B+ u0 T8 ~! o9 _
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
      ^4 G+ I4 Y8 r$ @% c0 j# }
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    " @9 s; N: y. T. V3 p% I" I
  261.     return if @character.battler.is_a?(Game_Actor)4 L8 u9 m3 _: C5 q: Z  m/ q
  262.     @bars = S_Hud.new(@character, @viewport)
    . a/ N3 X9 Y; J1 a& ?
  263.   end' t$ V- A0 Y0 C3 M
  264. #-------------------------------------------------------------------------------
    4 s- N$ V7 O- x1 }
  265.   alias :xas_emini_hud_up :update
    , D( M1 O1 g0 r- U* F
  266.   def update
    : N8 Q$ A4 N$ S+ H
  267.     xas_emini_hud_up7 a' T$ F  H* j9 B7 g
  268.     return if @bars.nil?
      u( Y+ ]4 E, j
  269.     return if @bars.disposed?8 o$ u  C1 C7 g; ~8 _, i7 A6 b
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    6 h' E) ~- q$ U, }" P- q
  271.     @bars.visible = (dis <= RANGE)
    " z' d  R' S, w9 J
  272.     if @bars.visible
    / b9 U, Q: `  |' D) Z; U- |' |0 I1 T
  273.       @bars.x = @character.screen_x# - @cw / 4/ `/ Q2 V6 N0 |8 t6 A) J% G
  274.       @bars.y = @character.screen_y# - @ch / 49 Z) L  d- p4 [* g+ Q. Q3 z! }& ?
  275.     end7 v/ F4 Q: }+ K
  276.     @bars.update1 r" w  Q  c0 y4 _5 P% `
  277.   end
    ! z0 a; a+ n* a1 ~- u8 V
  278. #-------------------------------------------------------------------------------
    " a. J/ b* h2 ~5 l9 E
  279.   def dispose
    " W8 h+ O7 z% T
  280.     super
    ) f$ X( w2 w7 o  b+ N
  281.     @bars.dispose if [email protected]?
    $ J2 Q5 P* W+ O/ ~
  282.   end
    8 P/ r# l! t3 c8 o0 d- }% r" P$ X! Q
  283. end- z* ^, u9 \3 E* y3 }
  284.   D1 {9 g! r. t' b7 H8 C' t
  285. $mog_rgss_s_hud = true
复制代码
8 Y  G2 F3 q% U0 f6 U% ?# K

* a; ^) k$ ~; s. p+ H
- a8 i) b* ~+ n! W8 q; _上面所說出錯的203行內容為
# S) A6 ~2 P7 K- d7 V@hp_sprite.bitmap.clear
  F% ^# f% m5 [: v9 r) t
' L; R9 y$ d2 t  D* z# n* B- ~& S2 |想知道怎麼解決
5 |+ C. }) r; M; d4 n6 j$ S$ H3 o) V
該腳本支持3.822 H% c, M4 s& v+ ~- {& E
3 |6 F6 R; n& M' e8 O+ }6 X' U
下面是圖檔,要塞在Windowskin下
, f. F, u! m$ W6 d( |, n. E8 s. y/ c/ e# [5 d( C* H% r" s3 T
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49)
  C. O( E* ~7 V$ A  _4 ?% K6 L# ?$ ]
$ |6 L3 _; A& f5 I; K. O& {7 R" H% v  }# ?+ g  J9 t
; A1 q2 L1 n0 W, A1 Y

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
8 `% o! i- ?( y& v: Y结果尝试刷新了一个已经释放的图形3 z" n5 g' Q6 i! g7 f9 B
# X: l0 x1 @; F: d2 E
# l; g+ r( g) ?# W0 b

# y' p. y+ z8 \, j% I- }虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?' K- p' s; ~+ p8 @# r( g. w
复制代码
不要后面那个条件貌似就没问题了。( n# l9 s9 {/ f. P% S+ J

+ a' V* h. C7 Z' a& ], _* |& D7 j* l7 D2 C% J0 ?
$ R# _+ A5 q! W$ c) p; e, l

: U2 Q! L8 {; ?! S
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 9 n2 T  ]' o8 c& a" i- }9 a
貌似是释放的条件不合适' M) s" H7 [1 s/ }; }
结果尝试刷新了一个已经释放的图形
/ }8 ~! R' x7 c$ P* }4 @5 y- R
把後面那個條件弄掉後,的確沒問題了
! f! l! M: M! V. X4 e! g+ M8 k$ i, R$ |目前從關頭打到關尾結束都沒再彈什麼錯誤
4 h7 R$ ]6 \( ]: d非常感謝* M8 R; p" ?; i% B: u
0 j& O1 L, n3 T; X5 v5 A
不過我是參照著別人腳本改的
0 g  |. O: T8 X7 `: G  x: w- ^他寫的條件式也是那樣,但我用他的沒什麼錯誤! i; {! R! j: R. v. e1 p
不知道是怎麼回事
( |; ]6 i  A8 {9 N$ U0 `$ O: `$ ?: v是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
! ^. I% i  T( M" A4 u. I% x我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
! O0 ^- a) ^2 s2 j( l) D5 r嘛..这个数组吧..我在以前试写队友的时候关注过一点
. S4 F9 x+ W# |不知道XAS内部对它做了什么手脚还是为啥,
4 p2 s) _0 m" a8 E+ T总有那么一瞬间,没有被消灭的敌人事件也变成了nil
  j; b5 w) M& Y/ y; K/ q( |( k
- h) Y! h0 v9 }4 i$game_map.events.values[@enemy.id].nil?
( v( p( v# L+ r$ ~* @因此自然而然的返回true并符合条件把图形释放掉了3 s5 `8 o* ]. T; ]: v
, h8 y6 r" k6 K! r. o( ?
LZ应该有注意到吧,0 C% q: Y" r7 K# E. [
我测试的时候发现报错前几帧,图形会消失,# w- ~6 W) j3 Z/ ~. H: O
应该就是“误以为敌人被消灭”了。
% n  _. n; k8 q. o7 N$ }+ B; r9 r+ p+ T' e3 E- k6 A
受限于个人水平,至今无法找出$game_map.events的真相..
% d7 G5 d9 T4 r- R
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19 2 g/ |% k) e# }2 G4 F2 \9 ?
$game_map.events. w: z8 r" U4 a4 l6 f6 G2 ]
嘛..这个数组吧..我在以前试写队友的时候关注过一点8 {% z: h; l' p9 V+ Y
不知道XAS内部对它做了什么手脚还是 ...
' |0 G9 m, W6 c! @
當初我把那個條件式看了三遍,都不覺得他有什麼錯! U, b5 O8 W. Z5 d% L0 S/ v/ u
原來還有這麼深奧詭異的事XD
  T5 @* L) D/ h+ N
9 l, e: E4 A2 c2 }& _/ Z/ A錯誤發生前的確會有圖形沒顯示出來9 K  {' o4 E' A! h
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
! h& M2 i3 p1 j" b7 o沒想到居然是詐屍了XD6 P; |$ j  U; C- n6 g% J
& v0 d3 t" d0 D  O# ]
不曉得3.91有沒有修正這問題...
5 G9 r. R9 V$ V不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。" K' w7 S0 Q: h! C9 h

, m; @1 P# t/ u  W; b的确* p( o$ J% a4 ?) T
用惯3.82之后想去整3.91觉得压力甚大../ U+ |" @1 P0 D" I4 E* @
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。7 o# x1 ^1 P6 u

3 A7 |' m5 c# E! C7 N" g; n然后加一个判断处理的。(我记得有一个disposed?)




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