Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條0 \5 Q* Y& P! i. }6 Z; N: E* h4 k
會在每隻事件怪物的腳下顯示
$ l. Q+ x/ _2 J) H問題是不知道為什麼
  h; h' m3 u0 P  U# C* |* S有時打怪打一打會跳出6 u' f" n0 i& r4 `# o: P* I$ _6 @
---------------------------* Z; K: e5 j( B
XAS& l7 Q3 w1 |" ], T! G
---------------------------
# {$ A/ Z4 p2 A7 X9 q, q! ~* E脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。' M: J% r& ?% j- {- |
7 _! S) P+ I. [, s! o! ?
disposed bitmap7 Z5 t: U: i% v$ X9 F
---------------------------
9 i2 i5 P" F/ F- v確定   0 t! T, |8 y0 [
---------------------------
4 u3 I$ {; b2 w
) Z$ Z/ E& D+ O- T' j: |" v( S這是腳本
# e+ C/ ?# O) D+ T5 y# Z+ H
! i1 t0 a3 }% u! c
  1. #===============================================================================
    7 Z/ M, S; J* }* M, `+ ~( ~
  2. # MOG - s Hud 1.0      
      j9 t+ ?. B; O1 s. q
  3. #===============================================================================
    8 f+ L1 C) z4 y0 s% X) }. V2 |
  4. # By Moghunter 6 [5 O' V  C3 I3 E
  5. # http://www.atelier-rgss.com
    7 u8 @$ V9 O8 Q$ V
  6. #===============================================================================
    1 i  l6 [/ v0 O
  7. # Translated by Calvin624 4 r4 s  Z- O; ]2 b9 c
  8. # http://www.xasabs.wordpress.com7 j2 C+ K1 d+ J+ Q
  9. #===============================================================================
    1 R5 J* V- `0 y- x: b1 G5 S
  10. ###############################-DESCRIPTION-####################################- M4 d2 i- }, _2 R( e, C7 u
  11. #===============================================================================3 F" r& g) Y( I4 p& O$ f( u- `
  12. # Personal HUD – displays the HP and SP below the hero.# V* d0 A! L3 V7 d5 E
  13. #===============================================================================
    * Y; C! k% Z( I/ p
  14. #: f$ U" r2 {/ y% p# D2 J( F
  15. # Graphics required:
    , r. w: i$ ?/ V9 V( v
  16. #
    3 h# N3 }6 Q6 Q0 Q
  17. # S_Border_HP_Meter.png
    ! D8 Z  L& C, x0 I! ~5 ~
  18. # S_Border_SP_Meter.png
    6 a) U( L  ]- E6 H6 s7 k- L4 h1 c* r- U
  19. # S_HP_Meter.png
    4 }7 ~% r" B0 w; x
  20. # S_SP_Meter.png! c; ]( R# c+ z1 I/ u  n
  21. #
    # [  i4 o4 _3 I: }
  22. # All images must be in the Windowskin folder.
    ! y* }* {7 r$ f- a* y  H
  23. #
    ; R' C/ T5 }2 Q( Y
  24. #===============================================================================! m; v) C# ]. I
  25. module MOG
    9 g5 C; A8 v+ \+ B" s
  26. VISIBLE_DEF = false  
    5 {4 N; F+ r" M
  27. # Show HP meter?. y4 p& X9 c5 W7 i1 q5 X' T3 U
  28. HP_HUD = true# g8 _0 {5 C3 s$ r
  29. # Position of the HP border
    ' A' o3 D0 n/ [1 K; Q
  30. S_BORDER_HP_METER_X = -2
    9 S  u- _3 g0 B7 a
  31. S_BORDER_HP_METER_Y = -2  
    $ A  l9 S% O, p! Z
  32. # Position of the HP meter
    3 q7 c. |8 ^8 J, ]
  33. S_HP_METER_X = 0
      G+ a% Y9 l6 N
  34. S_HP_METER_Y = 0
    ( @2 g- t. P2 G6 i
  35. # Show SP meter?( Q. F6 }- K5 i) n
  36. SP_HUD = true' c; d' o0 K; q6 e8 b
  37. # Position of the SP border
    & l, u/ H( X$ h$ e: s7 m+ ^
  38. S_BORDER_SP_METER_X = 0
    " V" t# {) l2 V
  39. S_BORDER_SP_METER_Y = 10 * N9 O5 A9 F$ ]% C
  40. # Position of the SP meter7 q" v! ~4 p4 Z& g
  41. S_SP_METER_X = 02 {5 U3 w4 I9 m# c- \7 |. X
  42. S_SP_METER_Y = 102 }" a; M" \0 U
  43. # Switch to disable the HUD
    7 G# Q$ n  O+ ?
  44. DISABLE_SHUD_SWITCH = 5
    ( r0 ]9 d; u6 \. R, Q
  45. RANGE = 20/ W0 ?; N: E( i6 q& @; W
  46. end; e1 p2 j; y! N$ z$ \
  47. #===============================================================================' ]; ~8 C$ t. K$ e0 a
  48. # S Hud+ v5 v* x; N- g- `4 u1 r
  49. #===============================================================================
    1 I8 o8 A0 p4 {; M9 t7 b: W+ U
  50. class S_Hud < RPG::Sprite
    % m  \$ ^9 @" W$ f/ {
  51.   include MOG
    ; s" P: a9 n* l4 |! a
  52.   #--------------------------------------------------------------------------3 G5 S# z1 H* L
  53.   # * Initialize
    , h* K/ a* N1 o" v. z  c2 h
  54.   #--------------------------------------------------------------------------
      g) M' }1 {* \1 R) G# S7 }
  55.   def initialize(enemy,viewport), a6 `# {+ k+ I% P9 Z
  56.     super(viewport) 5 I8 z% E" o7 @6 h
  57.     @enemy  = enemy% ^0 ^" l6 h9 j2 J: J: Y) Q
  58.     @battler = @enemy.battler
    " c3 Z8 Y! ~1 F! M5 b# e2 q
  59.     @old_hp  = 0
    , E% C7 ]9 x1 a; |# _, r
  60.     @old_sp  = 0- |+ B# \4 }4 R3 B2 Y
  61.     @old_vis = false
    - w& I: i8 ]& F: C
  62.     self.bitmap = Bitmap.new(100, 100)
    1 Y2 q' S+ h% G2 ]6 _
  63.     self.visible = (VISIBLE_DEF)#false
    ) Q+ |& O# R( \% z/ X( d: o+ V3 m
  64.     self.z = 100% K( d" i( F, l; e7 |0 b
  65.     #HP Border -------------------------------------------------------------------, {# p$ K% ?/ A. \8 S* V
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")0 L1 M- {# D6 N  ~' f. U
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)* `+ O; a3 n( ~. [  F
  68.     @layout_sprite = Sprite.new
    : U) t! T! r) q$ }( w
  69.     @layout_sprite.bitmap = @layout_bitmap7 L- Y' v0 B7 m& @
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)  _2 B+ ~9 P- A8 V6 u0 J- t
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      # H& S2 l8 }$ G, |
  72.     @layout_sprite.z = 5001
    3 C- N* A( f( Y2 `
  73.     #HP Meter ---------------------------------------------------
    $ Q% F+ I! E  O: h1 x2 q- N# k4 `  c
  74.     @hp_flow = 0: z7 [! J  M. D7 O( `
  75.     @hp_damage_flow = 0
    9 ?7 Y9 |* M# e; @
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter"). s  B2 G7 H' c
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)
    ( x4 y8 T/ S$ k7 c
  78.     @hp_range = @hp_image.width / 36 x4 N& C7 h% k9 j+ a) e0 [
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  & L1 N( o* z- ^3 W1 g5 h. Y, f
  80.     @hp_width2 = @hp_range / 23 l/ N/ P' J* e# I3 T) y1 l& U
  81.     @hp_height = @hp_image.height / 2- i% H* ?; h% v. `1 f- z3 a; V
  82.     @hp_width_old = @hp_width' m/ s! R4 Q4 T/ o2 ~' a) [2 G
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    , a0 g$ j. a( O9 }+ O6 k
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) * J4 \9 a, Q4 F; B
  85.     @hp_sprite = Sprite.new- a% B( q- X$ ?  c4 `6 e# ]# a* x1 f
  86.     @hp_sprite.bitmap = @hp_bitmap
    / I9 j0 G2 L. w0 q. |
  87.     @hp_sprite.z = 5002$ X2 h* a9 d  b6 Q
  88.     #SP Border -------------------------------------------------------------------: ^8 z2 r3 A) f/ N
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")
    2 b+ d' j: d; h
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    0 {/ a  J) Q. P
  91.     @layout2_sprite = Sprite.new1 _& g) m1 q# K: {% z
  92.     @layout2_sprite.bitmap = @layout2_bitmap. h5 A5 a4 I: K  l- K6 |$ G
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    ! O# t7 M7 j$ I# F: b! j
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    8 q# S& i9 t6 N- g
  95.     @layout2_sprite.z = 5001    9 v% ^( u3 u# t
  96.     #SP Meter ------------------------------------------------------0 J3 C# Z% O( P4 }: h( h+ O7 P
  97.     @sp_flow = 0) j& f8 |& C1 l$ Q$ @! G+ M
  98.     @sp_damage_flow = 0
    7 U9 f  ^, b+ c4 J0 y, p
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")8 f$ v5 X+ x; Z! C
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    2 X7 r3 \# E+ {, R/ W+ n9 Z
  101.     @sp_range = @sp_image.width / 34 Y* o6 T/ x2 p2 c
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  . f! w8 L0 t) T# X" D
  103.     @sp_width2 = @sp_range / 22 \1 n5 ]- g) J# o) X/ k; c
  104.     @sp_height = @sp_image.height / 2
    " X( t3 u8 [0 Y& H
  105.     @sp_width_old = @sp_width
    - o) r/ _: X/ }$ \6 U# \
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
      s' ?5 ]! L+ K# P# U+ X
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    3 Z5 [, A) n$ c9 [! Z$ I* P8 t
  108.     @sp_sprite = Sprite.new& \# {" S$ x: e/ o6 v
  109.     @sp_sprite.bitmap = @sp_bitmap3 R0 ]/ `+ H  U2 F/ b( p* [- Q
  110.     @sp_sprite.z = 50025 E8 G) h+ J% c2 S
  111.     update' M3 s7 v6 e. Q0 d4 B  N4 P- L
  112.   end- `2 u5 P( Y% G* U5 o
  113.   #--------------------------------------------------------------------------% ^# Y. }7 d' J: t
  114.   # * Refresh+ A6 j: L- z0 G1 \8 G6 B
  115.   #--------------------------------------------------------------------------$ v2 g2 I3 m' r$ @. c" P# w
  116.   def refresh
      ]/ }# C( u4 H6 c7 [: c# P
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    : r; ?; ^* L; X  x& K: l6 |
  118.     self.bitmap.clear6 O. W0 w2 L1 l7 D* [, {4 j. G
  119.     @old_vis = self.visible$ o6 [( z8 W1 f' S" p0 x
  120.     @old_sp = @battler.sp
    $ Q1 G: v0 H+ S/ }% P& {
  121.     @old_hp = @battler.hp
    3 A* @: c) S8 `; \  w
  122.     hp_flow_update
    - d) i: d+ d  \  v! T, C
  123.     sp_flow_update
    ' v7 ?$ O- G( k. I
  124.     hud_pos_update9 u6 v) B" F; w, E# F/ |9 `
  125.     visible_update! U7 b9 i2 V* Z
  126.   end0 s! z, r- L; D4 K- A: G
  127.   #--------------------------------------------------------------------------
    1 i! a7 E  s2 U; U- [6 W. O3 k2 [# B
  128.   # * Dispose
    * N0 @9 |+ B0 J: Q* @0 p
  129.   #--------------------------------------------------------------------------  k  G  x: i0 K4 H; m$ X
  130.   def dispose
    5 K" `% h7 E& T' _" T7 S0 I
  131.     #HP Meter Dispose$ }' {2 ?& V' l  z
  132.     @hp_sprite.bitmap.dispose
    5 G, \6 Z; I0 C
  133.     @hp_sprite.dispose1 ^/ J* ?: h2 \( Q% c/ O
  134.     @hp_bitmap.dispose: E" D& @8 m% f9 H2 C* R
  135.     #HP Border Dispose7 v6 P6 o; U8 h. _, p5 q* m- `
  136.     @layout_sprite.bitmap.dispose
    " `5 u  L( {: \6 l7 b. o, k; O+ t
  137.     @layout_sprite.dispose1 N6 Q2 H4 q. _! J) x; ~
  138.     @layout_bitmap.dispose* I  Z3 P: r8 R! ^# U5 L6 {0 O
  139.     #SP Meter Dispose+ U. p) f: @$ J! g
  140.     @sp_sprite.bitmap.dispose5 `' Z, t  m' k# t0 U- F: s7 O; k
  141.     @sp_sprite.dispose
    2 N( j! g" \" r  h' V
  142.     @sp_bitmap.dispose
    3 I) x- d3 Q/ B. e$ H5 z
  143.     #SP Border Dispose* t3 i! p! m2 c
  144.     @layout2_sprite.bitmap.dispose& \' h& h- }, [, w; A
  145.     @layout2_sprite.dispose
    5 q6 a" j: b) ?
  146.     @layout2_bitmap.dispose  b1 I+ }% a2 a
  147.   end7 c. l" Z+ a5 I3 {7 V0 ^
  148.   #--------------------------------------------------------------------------  }. a7 g, x0 u) X. E% F! m
  149.   # * Update
    9 ~! M$ n/ J- c3 A' M5 ^5 F
  150.   #--------------------------------------------------------------------------$ V5 H& C+ x& ^) C3 i
  151.   def update' A' K, k- b' S9 p8 ^9 B2 o
  152.      @battler = @enemy.battler : Q" ^' m" m$ f/ V6 l8 A
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    / B0 Q  ~7 L0 i
  154.      if self.visible7 ~1 G( r" e* x2 Q' {7 p+ I, n
  155.        refresh
    3 N4 J! l4 J9 r, Y/ Q9 w
  156.      else" S1 K9 `; z0 B
  157.        self.bitmap.clear, t" T1 R. b6 g: |; y: |1 D3 f- i* F
  158.      end1 I* _* L: x# V
  159.   end
    & `6 l0 D7 k; j9 _
  160.   #--------------------------------------------------------------------------
    * ], ]% v9 X; |" Y0 w+ H" r
  161.   # * Visible Update
    / c1 ?  O2 P2 B
  162.   #--------------------------------------------------------------------------
    0 ]" Q6 r3 e# r. M
  163.   def visible_update" x2 [/ c( y1 t, V! U; a. C( [# n& T
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    , n8 q. n9 c$ R+ e
  165.        @hp_sprite.visible = false
    + s; c3 v4 j; a" K0 E2 [
  166.        @layout_sprite.visible = false
    7 r8 Q2 |" q" J4 n: J; a! I3 ^
  167.        @sp_sprite.visible = false% _$ p! u; g+ C' a# Z
  168.        @layout2_sprite.visible = false% v/ K( H9 l& K; V( Y1 I
  169.     else
    9 g& S) Y/ ~2 r( O
  170.        if HP_HUD == true
    2 U3 M" k6 b$ j3 ~! b) C
  171.          @hp_sprite.visible = true
    3 X' d& m  |) N7 U
  172.          @layout_sprite.visible = true
    " f! W. J: l' i$ O+ I+ l+ e
  173.        else' k$ d" _% M8 |% M; M5 H- a7 [" s
  174.          @hp_sprite.visible = false
    % c. }9 a# {* g+ [3 f' U; B
  175.          @layout_sprite.visible = false7 w+ f; C4 b  B- R) W
  176.        end  + x/ ^' j) d; U  p% e7 H5 C+ Y
  177.        if SP_HUD == true
    ' e2 [' K3 E0 b7 M8 t+ ^
  178.          @sp_sprite.visible = true
    / x# F0 R9 D; X" B0 s2 \  ?/ a
  179.          @layout2_sprite.visible = true
    ; a% p4 p+ W# X% M: I7 X
  180.        else
    9 R& s! O& F2 m
  181.          @sp_sprite.visible = false( B0 Y- ^1 X" [
  182.          @layout2_sprite.visible = false
    ) e' Q  d0 ?" |% O& \$ g4 m
  183.        end 1 ]; o6 p3 o# n1 {8 b# D
  184.      end  
    % o7 p5 Z6 R% `
  185.    end . v* v$ K+ n/ v  r% B) m
  186.   #--------------------------------------------------------------------------+ Q2 Z' w3 e4 g$ y, ], A
  187.   # * Hud Pos Update
    , ^# J3 D0 o% U1 e
  188.   #--------------------------------------------------------------------------7 }7 y$ J& ^! l. T4 x' E; F1 P7 n: u
  189.   def hud_pos_update
    8 B: s: Y& O/ _, b$ |
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X
    7 t4 N4 `3 k7 a5 \* U
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  : R9 U! t9 R, Y, w: \
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    " I/ M/ o5 i( T% M! _; I+ T6 ?6 {
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y # o/ j* ~5 O# U7 ^: X. ^5 s% N# v
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    - g3 |! e( {) Y) C6 z
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  # H. d; ?' D1 u# V
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X- y5 ~2 J' j$ }
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     
    % T5 w* E: l' J5 q1 G
  198.   end  
    ' b: |7 T9 C4 g" x8 O2 k
  199.   #--------------------------------------------------------------------------5 r0 |, c- [4 E
  200.   # * Hp Flow Update- k- _7 E6 d% G$ t. T7 ?/ ~! D8 G
  201.   #--------------------------------------------------------------------------' U1 b7 Z+ m3 Y3 R8 G7 T- M
  202.   def hp_flow_update
    ) J! V7 {. ?; B) S: k; z
  203.       @hp_sprite.bitmap.clear& p1 }% v7 F0 c" B$ I1 h; p3 L
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  8 I" N9 m1 `- M- y3 ~8 P6 h+ p3 c
  205.           #HP Damage---------------------------------
    , b. M. J3 g( G/ T9 L, C  n- s
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100* i4 i2 t6 h2 X# c! n% I9 l, \
  207.           valor = 0.5 if valor < 1          " n, L& }% \! Z) k- p( S* q  E
  208.           if @hp_width_old != @hp_width
    & d, l# b+ ]$ O( P, d7 y
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    0 V. y; S# @* P4 l) M/ T
  210.           if @hp_width_old < @hp_width : @5 a% u4 c* U2 \6 X' L
  211.              @hp_width_old = @hp_width
    & t! u* \1 \; |6 {0 ]
  212.           end      # j7 u2 B" {9 L) b- o& p; I: u
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)
      j& q- s. L% a% O5 C. \( b
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    ' x! T7 y) T* A" U
  215.           end        & {1 F9 ^' K8 Y: Q( w" A
  216.       #HP Real------------------------------------
    # I7 b9 ?: @! F" O. n) s4 s) R
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)- a. E2 R0 N6 s& ?5 K; [
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    3 h9 n7 E$ {7 i
  219.       @hp_flow += 2  
    ' z1 R# p, t4 r# ], `
  220.       if @hp_flow >= @hp_image.width - @hp_range) z$ ~% _; J  i  m* E# [) f
  221.          @hp_flow = 0  
    # d& W. y/ S# `$ a
  222.       end/ x) u& z: N' P' H7 n& [
  223.   end   
    , @% m; y  R/ k# @* p2 U
  224.   #--------------------------------------------------------------------------* g, M/ N9 J% F6 G/ N4 B" Q9 h5 S& h
  225.   # * Sp Flow Update
    : X% g- k4 E0 _9 E* K/ O, p
  226.   #--------------------------------------------------------------------------
    , u( X) }3 p* _
  227.   def sp_flow_update$ \4 g) m5 Q5 a
  228.       @sp_sprite.bitmap.clear4 w4 X: q0 j% h" n( v0 _, d& L
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp 8 ~8 s2 ]. d# \3 N9 C
  230.           #SP Damage---------------------------------
    & y0 _1 P4 g5 S
  231.           if @sp_width_old != @sp_width
      O- K- Y- r4 S; E
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100: _- p# G# E" D1 ^$ t
  233.           valor = 0.5 if valor < 1              
    / {8 C/ ~: ~* P: b
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  ; X( ^9 O; o' [/ y
  235.           if @sp_width_old < @sp_width
    1 U& n7 U* H. Q* q6 Y" t1 I: {: Y
  236.              @sp_width_old = @sp_width
    ! x$ E$ X  e2 f% p+ P9 X, X$ t
  237.           end      
    * y* |, j6 c9 M9 b
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)2 Q3 r  @# X( o( ?  K/ _+ a5 s# C
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    1 T3 V/ _- f* p) J: ~, E
  240.           end
    - a' q3 E7 m  g" Y2 A. Z
  241.       #SP Real------------------------------------
    ! N0 H3 ]- i' O+ }: y; W  M2 b
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)8 Z0 z0 \* v/ q2 L* R
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)/ \; t1 s! ~4 I& E1 o
  244.       @sp_flow += 1  + ]+ C' d' b! O& h2 D& [
  245.       if @sp_flow >= @sp_image.width - @sp_range
    ; {+ B  G: Q4 P4 w7 Q
  246.          @sp_flow = 0  
    1 k1 h8 I2 R3 Q
  247.       end" r+ [2 k1 U& s8 Y( a
  248.     end            
    " ?6 m* \7 ?/ g& i, \
  249.   end
    4 S1 y! N$ |# x% j, b1 a
  250. #===============================================================================
    2 M  {1 ~5 s! o  m- G
  251. class Sprite_Character < RPG::Sprite8 G  j! s' c9 V* l+ h0 L# A
  252. #-------------------------------------------------------------------------------
    2 u; I5 I$ c  P/ _, g, y$ [) \
  253.   alias :xas_emini_hud_init :initialize' D2 m9 e" d  {
  254.   include MOG
    7 n# p# r* K. O4 F2 o1 z
  255.   def initialize(viewport, character). z/ w6 e, U  @. N* [, x
  256.     xas_emini_hud_init(viewport, character)0 @! [/ z/ E0 y0 p' z
  257.     @viewport = viewport
    1 K- L0 `9 f2 X% h) }
  258.     return if @character.battler.nil?
    ' {9 p3 r( r5 p; \, q/ L6 G
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)  g4 s3 `: \. ~! U" n
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)! M4 d: K3 u. I) N3 T  m
  261.     return if @character.battler.is_a?(Game_Actor)
    % L, J: `0 s3 m. a0 K
  262.     @bars = S_Hud.new(@character, @viewport)
    * X& m- V! f0 v2 `4 }* ?! j' P
  263.   end
    : s/ l$ x* B2 o+ ]9 s0 h
  264. #-------------------------------------------------------------------------------- S+ d9 G# [5 q# W$ q
  265.   alias :xas_emini_hud_up :update
    ) k# P( R  |. G7 g8 w5 R
  266.   def update
    4 _" G9 D9 R6 i7 H9 q& j) L& w0 ?
  267.     xas_emini_hud_up+ \  U9 L& R0 Y5 n* Y& G
  268.     return if @bars.nil?9 ~* k; G, A. v0 d
  269.     return if @bars.disposed?$ I/ v0 |2 S; z$ t$ w2 \& ~7 Q
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs0 Y! B6 B1 k1 ~* i/ h) @0 F" a
  271.     @bars.visible = (dis <= RANGE)3 c8 ?' ^1 L' A  Q7 g* n- `. L
  272.     if @bars.visible
    - M3 M" L% m$ I0 d' m
  273.       @bars.x = @character.screen_x# - @cw / 4
    / l, g! x$ i0 C0 j" a3 y# j# p
  274.       @bars.y = @character.screen_y# - @ch / 4: Q5 D! e) y0 n9 r7 V6 d
  275.     end5 p8 V2 S+ Q  q6 B2 c6 e, s
  276.     @bars.update2 f- R8 D' g- h# W7 o
  277.   end
    , |. `& x7 w" O% U
  278. #-------------------------------------------------------------------------------
    ! z" ^; S3 m5 Z: K# R6 u- v5 E
  279.   def dispose& h2 n& k( L7 ]
  280.     super
    # o4 E" X$ n" s( p# X
  281.     @bars.dispose if [email protected]?
    0 ^! U; p* H; Y* u0 v8 y. _% |  h- I
  282.   end6 o  A# |2 p& x- ]
  283. end7 l! N- Z2 |' L

  284. ! f0 i0 U, x7 g+ }3 m; @; H
  285. $mog_rgss_s_hud = true
复制代码

8 r. D0 Q: e. `% H+ Y0 l
4 t+ X! ~+ ?, {( k4 F8 v% h, d$ C% c- |8 O- n/ i
上面所說出錯的203行內容為% R' j( S1 u* g0 e) f3 Q- D0 ?
@hp_sprite.bitmap.clear& q! i. X/ h1 b2 M

5 ~6 w+ i; D! _$ b+ r: \8 T想知道怎麼解決
$ G' o6 J6 q: S% ?9 ^5 l' s! F' c+ ~$ ]: D. t% B5 k8 W1 W/ u- O
該腳本支持3.82" d. ^' w$ n# q7 t% i5 f2 {7 H

8 {$ O" _" s# `- ^- o下面是圖檔,要塞在Windowskin下- M& s) z9 d- P9 ~

0 g5 p7 u! v5 _ S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 0 {- E" Z1 X, w/ J; b
- k$ P2 ^) D5 i; G0 q
9 N( S) S+ o' s& A( e. a" h* B

5 `  |% m- Y$ q- ?4 V6 \
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
+ ]  ^& c2 b6 N) ]! M1 o  {7 c结果尝试刷新了一个已经释放的图形( t. @  f/ ~: u  s  g1 w0 K6 q$ T

: y6 o% @$ c) }) |) M3 r
) a1 a: P8 j8 e6 {
4 \1 I% o( p& l2 G* I2 b% g虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?6 Q& l+ s# ]% \. ?) s9 d. _
复制代码
不要后面那个条件貌似就没问题了。" u4 |4 i$ ~% ^: l, V$ g

2 O" {2 q) C7 f$ Y' X% S, Y4 a4 @6 `0 C
/ w# g4 z* u- W+ `

9 I/ }  L. _, c0 w
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 : U8 n2 v& ~6 U* l  S8 P
貌似是释放的条件不合适
  g: V8 S# ~$ D$ i结果尝试刷新了一个已经释放的图形

; D" F, W7 O5 D$ I) p; Z3 w把後面那個條件弄掉後,的確沒問題了
! E2 m1 k4 s* {: e) Z" S' I. E目前從關頭打到關尾結束都沒再彈什麼錯誤) X' D0 X4 l. r5 U$ G* Z
非常感謝
6 p! r- Q2 r& ?/ ~) T& r- L) E, H3 t8 q$ I3 ^" A' E3 U# {
不過我是參照著別人腳本改的
; c2 z* A3 ]& @- r8 p他寫的條件式也是那樣,但我用他的沒什麼錯誤" s. m# L9 [" I
不知道是怎麼回事
  G- e5 G! u. T; q( N5 K是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
/ o& I3 ^! C* v2 G8 s: }- o# V/ W我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
: p) p8 v, J* g' k, \嘛..这个数组吧..我在以前试写队友的时候关注过一点* t. ^& B4 x5 N$ d
不知道XAS内部对它做了什么手脚还是为啥,
8 G" ?* ~" l/ @总有那么一瞬间,没有被消灭的敌人事件也变成了nil+ d4 P9 q" q" G/ t  ~# s8 J+ s

5 u% D0 H# E( P1 Z2 V) X$game_map.events.values[@enemy.id].nil?
# c) M& p' ~  l& c" @( B因此自然而然的返回true并符合条件把图形释放掉了+ O# Z4 E1 o2 q
" V9 Z- X2 W' A# x# b0 b5 j
LZ应该有注意到吧,4 j5 z; Z& p. a. M
我测试的时候发现报错前几帧,图形会消失,( W5 @& A5 ~2 H
应该就是“误以为敌人被消灭”了。
6 ]+ r4 R( \5 ~/ m) m
7 N- v  _) z. f7 u受限于个人水平,至今无法找出$game_map.events的真相..
( C; l! y5 ^# `
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
# V3 G& F) f8 ^6 g* e, l$game_map.events* k9 b- G0 W0 ]3 G: Z7 f
嘛..这个数组吧..我在以前试写队友的时候关注过一点
# x" t8 y9 h  O/ F$ W' h; j" s不知道XAS内部对它做了什么手脚还是 ...

7 U; I0 e/ b& @  ^1 G, J當初我把那個條件式看了三遍,都不覺得他有什麼錯
/ b, k9 b( v7 K5 Q; ^) s4 d原來還有這麼深奧詭異的事XD1 {9 p+ Z4 _! M. n$ s: ]

* J/ g( b: A% O- |3 C' [! b: |( H+ j) L錯誤發生前的確會有圖形沒顯示出來9 Y0 ^/ v& e$ n# ^9 ^
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...; ]5 c* q- ?, O# f
沒想到居然是詐屍了XD
3 T# {5 Q4 ^% g3 `- e! f7 ]3 X1 A* L+ C8 f& _( [3 x
不曉得3.91有沒有修正這問題...
( Q+ D. O6 g; x9 S: o8 C6 L不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。+ c0 m# Q9 \5 G7 W# ~/ j
" `: v' c& [' \- Z
的确: ?0 u  o6 C  v5 f- `
用惯3.82之后想去整3.91觉得压力甚大..1 V& J; y2 a' s2 F$ e
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
5 M) t" X; b; W6 `2 Q) w. p, F( M/ G7 }0 ~, Q" _1 D/ _
然后加一个判断处理的。(我记得有一个disposed?)




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