Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
; P, j% g0 T- D5 Z1 `  d: R. A& B會在每隻事件怪物的腳下顯示/ E2 ^) W# u+ I$ D6 }
問題是不知道為什麼6 ^9 P7 f: W# l: j* m  e. X
有時打怪打一打會跳出; N2 P! l7 }9 Q& Z3 @* a7 x
---------------------------' u- @) ^* N, P9 @7 m+ L5 M  n
XAS
9 ^, V; H# \3 m% f---------------------------: l* |. g/ c  B. ~# H
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。* I" j# X  w& C9 x7 `) e; D3 k/ [: x
: h1 ^! v0 q" m: o3 M. d" \  l
disposed bitmap; E8 v/ {# d! E8 K- X: Z. v; e" L
---------------------------
+ L. Y) s1 @) Q4 p2 a- v確定   
7 H. o) L" o8 X( v# \---------------------------' G1 n5 a0 {0 q
" @7 Y8 g2 h4 y1 x
這是腳本
2 w# g! B' D8 Q2 H
- V6 L3 s2 ]# a$ S/ p3 j
  1. #===============================================================================4 W7 ?3 A0 P+ r+ x
  2. # MOG - s Hud 1.0      
    * N( P: r8 R5 ~( t, X
  3. #===============================================================================6 j" [" R$ Y' O! L3 j
  4. # By Moghunter 7 U" x: v" h9 [1 l
  5. # http://www.atelier-rgss.com
    1 g8 j8 j; Y  p/ L
  6. #===============================================================================) T# N# q8 Y9 G+ p/ H! V
  7. # Translated by Calvin624
    ' c5 c5 S5 I, R+ v
  8. # http://www.xasabs.wordpress.com( i8 }! f) [) d- o0 N1 R
  9. #===============================================================================
    7 y; ]- {- ~/ @( w7 C. j
  10. ###############################-DESCRIPTION-####################################
    : Q5 ?+ N: P7 }
  11. #===============================================================================5 O- K7 k  v) o6 s# \/ j
  12. # Personal HUD – displays the HP and SP below the hero.
    - |8 _5 _6 U3 O" s0 t5 P/ s3 L# [
  13. #===============================================================================
    1 x. ~+ ~3 i5 I. l5 f4 L. q4 e' e
  14. #1 Y/ ]" {9 k* D0 O2 _
  15. # Graphics required:
    ' v+ [! L8 n" H# J
  16. #
    * q. M7 G, p+ ~# q
  17. # S_Border_HP_Meter.png" C5 G% E1 _* m0 I! a8 R
  18. # S_Border_SP_Meter.png
    ! y2 d6 M, S( ?: R6 `. g% o/ c
  19. # S_HP_Meter.png' i# x. X+ ], O8 W
  20. # S_SP_Meter.png
    8 d# ?. V+ [" q& m( o, Q/ A
  21. #- t& f1 s3 o4 @" _" e% R
  22. # All images must be in the Windowskin folder.
    5 Y3 l, G8 T1 L7 N/ O" K
  23. #+ p4 X. c  S0 Y" D$ u: F
  24. #===============================================================================7 o$ W$ p" p" U# N. z* {( o
  25. module MOG
    4 S; z8 }+ z4 A+ i, F1 E# K" e, r
  26. VISIBLE_DEF = false  
    % f. I! t: d2 x: Q% ]0 I: }( M5 L
  27. # Show HP meter?
    + Y* f: [$ w: O, M4 R5 v
  28. HP_HUD = true
    * y5 Y- V9 d  Y5 {: H
  29. # Position of the HP border
    3 X4 k6 G8 X: l4 e# A+ i
  30. S_BORDER_HP_METER_X = -2
    # l! F: z/ j! L2 n3 a9 g5 \, k' Y
  31. S_BORDER_HP_METER_Y = -2  
    $ D% ~5 c: J3 }
  32. # Position of the HP meter3 B6 ?3 F3 f& o# S$ u
  33. S_HP_METER_X = 02 B' N* q0 n0 P7 J" ]
  34. S_HP_METER_Y = 04 _3 h( a- x$ ]7 G" d
  35. # Show SP meter?
    3 j" q1 Y/ h; C/ h5 \
  36. SP_HUD = true
    1 e1 N! ]$ P6 z# m6 F% ~2 Y" U* P
  37. # Position of the SP border- E/ y# w- {  s: E3 a
  38. S_BORDER_SP_METER_X = 04 G: r" m6 F7 V& a- a! T
  39. S_BORDER_SP_METER_Y = 10 : f) i8 w+ m9 N. E; w% Q
  40. # Position of the SP meter. I( H) \& J4 G# f% u
  41. S_SP_METER_X = 08 n7 p* ?, u+ t: k7 @# l9 g
  42. S_SP_METER_Y = 10
    3 d- |8 m1 [0 N( A7 m& @- R
  43. # Switch to disable the HUD' B. J. ]# F/ S
  44. DISABLE_SHUD_SWITCH = 5; Z' `( a5 M" S, I; M4 O
  45. RANGE = 20; G5 N4 U1 E/ [3 Z4 b3 [
  46. end
    * P( S* O1 |, v, U
  47. #===============================================================================% a0 T" S: |+ t/ k
  48. # S Hud
    . L+ a( G8 b" h2 v+ Q0 Z1 r
  49. #===============================================================================3 w. k$ U3 s) d! v
  50. class S_Hud < RPG::Sprite
    , w; k6 u+ f2 S2 F( Q; e' e
  51.   include MOG% w+ ~: ], F/ u5 G4 ]. K  I
  52.   #--------------------------------------------------------------------------- d3 ]% B- h6 E9 s
  53.   # * Initialize
    / E: C+ a2 l3 B2 d, U. d; P& O! A
  54.   #--------------------------------------------------------------------------* W8 M+ N2 u. a2 Q! C
  55.   def initialize(enemy,viewport)* M2 S9 W# q, m% n5 j
  56.     super(viewport)
    ! _8 n, b2 v0 s" _
  57.     @enemy  = enemy
    4 ~" e+ x1 l9 x% `- `
  58.     @battler = @enemy.battler
    ' t2 S$ j1 o! H( d( U  f
  59.     @old_hp  = 0
    $ ?( `, Y7 P) v- f& H9 ]9 Z
  60.     @old_sp  = 0
    $ l$ ?' v" p, b% I# L: \* i/ g* U& f/ I
  61.     @old_vis = false
    / ]. |8 T5 A- x1 F
  62.     self.bitmap = Bitmap.new(100, 100)
    5 i  U1 x/ k5 F- s9 W/ r4 j
  63.     self.visible = (VISIBLE_DEF)#false7 C$ C8 B* A8 V" d
  64.     self.z = 100  ~7 M: d- _( \  x+ ?% O. l
  65.     #HP Border -------------------------------------------------------------------
    5 J2 e, v9 m9 R3 P3 P, ?2 O
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    # o! [3 A# o  D
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)/ I: H  D. \1 G  q# x9 V
  68.     @layout_sprite = Sprite.new1 X! \6 U8 Z) Y/ z( T9 C5 v
  69.     @layout_sprite.bitmap = @layout_bitmap6 V& R' w$ q4 @! p% z1 I. T
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)5 f# x' |+ x1 Y1 v/ t
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      7 J: Y2 A: E% z) C  w
  72.     @layout_sprite.z = 5001) z  z$ K/ ]9 f* ^5 k
  73.     #HP Meter ---------------------------------------------------; Q+ |" J' S; X  w5 z
  74.     @hp_flow = 0
    # }$ q/ ?! a4 y" t2 k
  75.     @hp_damage_flow = 05 h* O1 F* M2 _8 B# c
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")- J4 s. j, j: K
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)2 v) ]3 I' ]% @7 G1 X
  78.     @hp_range = @hp_image.width / 3
    6 o% p9 f( {" R. Q, A! |
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  . M: K6 M7 t8 R
  80.     @hp_width2 = @hp_range / 2
    # C! h4 b; U& {( u
  81.     @hp_height = @hp_image.height / 2
    8 E/ h2 z, r) x- p
  82.     @hp_width_old = @hp_width% U# m% Y7 M+ l- B% \2 S' Y. @* {
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)/ N' m1 p" ?6 @9 Y/ O& o0 l
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    0 e( \1 V1 y1 |  {' x
  85.     @hp_sprite = Sprite.new5 ^5 C& \. \8 F4 A( {$ A1 q& w3 Y
  86.     @hp_sprite.bitmap = @hp_bitmap. [4 l$ D8 [7 u$ Q# E9 f
  87.     @hp_sprite.z = 50025 H3 \8 N, O: Q
  88.     #SP Border -------------------------------------------------------------------
    ; O1 O4 f  Y1 d6 l% S
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")& [) r7 d# h3 Y2 z
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    2 d7 A1 g& }6 v# ]- }
  91.     @layout2_sprite = Sprite.new3 D- B  J) n) R! p" Z; \5 z- i
  92.     @layout2_sprite.bitmap = @layout2_bitmap0 o2 b, T. u  o* U
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    0 |1 f1 h9 x: }' e% O& ^) E% k5 ^* U
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      
    ; m% G! V, b+ T! i- X
  95.     @layout2_sprite.z = 5001    % W) M7 g+ V- @, u0 S3 o; Q
  96.     #SP Meter ------------------------------------------------------6 ?% `9 C# u8 K6 M( M
  97.     @sp_flow = 0
    3 `6 m3 @" `8 ^# k% c
  98.     @sp_damage_flow = 0
    / R, d' y3 s5 S1 [: O
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    - C& I* \( f9 i/ Y# k
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    1 A5 _* E+ Y. G! n$ c" {
  101.     @sp_range = @sp_image.width / 3
    - Q, v7 q8 Y5 ^6 n' l
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  / c; M6 A9 G- s
  103.     @sp_width2 = @sp_range / 2
    + Y. u1 V; a" e$ d$ @9 r3 }
  104.     @sp_height = @sp_image.height / 2! K& x5 \) Q9 Q' a" l# r( S
  105.     @sp_width_old = @sp_width. z# X5 P- O; ?0 ]- o, H
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)( k6 \( S' H% p4 A0 l; B
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)% l" T7 K( D  X1 c/ B5 f
  108.     @sp_sprite = Sprite.new! r4 N( e! A/ J& ?6 w
  109.     @sp_sprite.bitmap = @sp_bitmap
    7 \- B; c2 d  K2 \( _
  110.     @sp_sprite.z = 5002
    & t. b2 N* K2 g' k0 ~& ?6 O5 p; d$ I
  111.     update: H3 K+ m8 d2 _  e1 o
  112.   end. P/ }: W/ J% P& P7 i$ T9 |* K
  113.   #--------------------------------------------------------------------------
    , P; ~& q! \% R# C2 \  Q- S. Z4 H
  114.   # * Refresh
    3 R. o; Z2 z% M7 w0 u* O  d2 C* H
  115.   #--------------------------------------------------------------------------3 c4 b- L3 y5 h: R. r8 S: A
  116.   def refresh1 `" q. a# Q- T& t3 U$ Q1 O6 _
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible* v. Q' v6 i% {' P% W4 L
  118.     self.bitmap.clear, o; I* }0 B) ]) y
  119.     @old_vis = self.visible- H+ l& [) `  d. g0 m6 e
  120.     @old_sp = @battler.sp& `& `1 B7 D. Y# C( {
  121.     @old_hp = @battler.hp
    4 B& B6 d4 e9 Q& _9 D( \0 D3 V
  122.     hp_flow_update
    1 i; L3 M9 n' q( V4 ?
  123.     sp_flow_update( R5 f( N# q6 C* {8 P7 ~) G6 D
  124.     hud_pos_update
    3 {3 A  O4 V/ m3 v5 O% X* ?$ I
  125.     visible_update. P% ~3 G2 u, q: P
  126.   end
    ; I- k# M& v  T
  127.   #--------------------------------------------------------------------------9 D: v2 W  d7 f) F9 Y5 X
  128.   # * Dispose
    - }& p  [% T" C& v* K+ I, B' j
  129.   #--------------------------------------------------------------------------& B- |5 Z- h1 W! s' a- }
  130.   def dispose8 P# f- W2 y, ?, V
  131.     #HP Meter Dispose( J) p5 R! `; e. I3 l" m- G0 b
  132.     @hp_sprite.bitmap.dispose
    $ j: s) \- L9 |. z
  133.     @hp_sprite.dispose
    ; o( t5 j0 g+ i7 n' ^
  134.     @hp_bitmap.dispose1 h- ]# e$ {0 N! t: k2 |3 L
  135.     #HP Border Dispose) h2 J9 B) Z. K  Q& `$ i
  136.     @layout_sprite.bitmap.dispose, p! ]. M6 y8 S5 Y9 f9 L
  137.     @layout_sprite.dispose9 w9 F& n& i: t6 X# H, [# D! ^( G
  138.     @layout_bitmap.dispose
    1 s* U6 X; ?2 R1 }& q0 X) J
  139.     #SP Meter Dispose+ E, K1 o: @1 M2 f; K
  140.     @sp_sprite.bitmap.dispose
    + u6 w: S* Q4 o% L
  141.     @sp_sprite.dispose! }7 D- @0 r1 ?. e5 {* n/ b, {
  142.     @sp_bitmap.dispose
    - f6 E: {4 `$ |$ M2 r% c
  143.     #SP Border Dispose  R# D9 t( r4 \) d+ Y6 y
  144.     @layout2_sprite.bitmap.dispose- N) y% C2 N7 X$ s% D1 ?
  145.     @layout2_sprite.dispose
    2 x, c( n- l% m/ l6 d
  146.     @layout2_bitmap.dispose& w/ v7 w3 m7 Z. d4 {+ v) d6 U
  147.   end0 k8 z; Q5 [4 S6 |: D
  148.   #--------------------------------------------------------------------------
    4 v$ i7 q: _+ F* n
  149.   # * Update
    % F/ Y+ R+ Q0 v6 M4 Q9 W
  150.   #--------------------------------------------------------------------------! N6 y, Y! e0 }+ e
  151.   def update
    % K6 H1 C- q/ c& b2 k  i# [5 P
  152.      @battler = @enemy.battler $ y: Z1 \( y, L7 A! {: h
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?; h+ N8 A  x6 ^
  154.      if self.visible! X. p, f6 e) R( T' d
  155.        refresh; x7 z1 H6 u! O
  156.      else! |% [- S+ k: G
  157.        self.bitmap.clear  v- o" s$ B0 v( y6 c6 s6 |
  158.      end: [4 e: S. E2 N* Q, a
  159.   end, i) u% E2 Q& J: Y0 P$ t& ]7 y! R
  160.   #--------------------------------------------------------------------------
    8 j4 [6 `5 r8 I
  161.   # * Visible Update
    : A7 d+ u8 Y+ B' I$ _' J+ x
  162.   #--------------------------------------------------------------------------
    ; F" t! f8 q6 f2 f  k% h. L7 f
  163.   def visible_update
    ' q3 l% {& n; H2 s' x  b, x1 V
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true4 w# t, j9 ^7 P, w- C  [9 D
  165.        @hp_sprite.visible = false0 w% e4 j. M9 Q, \3 R1 O5 e- i
  166.        @layout_sprite.visible = false, W( i# K  ^: S4 f6 }* I" h
  167.        @sp_sprite.visible = false* U: [% a; D  |3 s1 ?2 ~
  168.        @layout2_sprite.visible = false8 L1 R3 W" }( y3 ~2 i9 y4 Q
  169.     else) F" l: `2 l0 h. r- F* ?% C
  170.        if HP_HUD == true) C1 u9 A9 L3 Q3 ~) @1 k/ i
  171.          @hp_sprite.visible = true0 Q4 }, G7 u) ^" |9 M
  172.          @layout_sprite.visible = true
    , `/ M# E) c" g' Y- P2 G- t1 t# y/ t
  173.        else% A3 G5 M5 m3 \3 N: u
  174.          @hp_sprite.visible = false
    ! C, v' h- j# `9 [; }0 k
  175.          @layout_sprite.visible = false2 W( W* Y( A/ ^/ N1 Q# h
  176.        end  
    3 n$ }1 D8 n) f8 [
  177.        if SP_HUD == true
    ! v% ^/ `+ c9 y- s6 s7 [
  178.          @sp_sprite.visible = true
    ) q. Y1 U9 b5 r1 Y
  179.          @layout2_sprite.visible = true
    $ ~1 c- d9 D! b) t- L' O
  180.        else
    # T  {1 s! _5 w: G
  181.          @sp_sprite.visible = false
    8 T4 Y3 r5 j  F
  182.          @layout2_sprite.visible = false# k" o( c) T$ S
  183.        end ) \' `$ \; Q* x# ^
  184.      end  # z6 n1 y  V- w8 P
  185.    end
    5 z/ M4 _0 x3 m. B+ \) a& f, Z
  186.   #--------------------------------------------------------------------------) E1 w" E7 Y, T3 |% o
  187.   # * Hud Pos Update9 v# i" H5 Q* I8 Q8 l+ T7 y
  188.   #--------------------------------------------------------------------------9 Y  r0 m" ~9 |7 N9 P8 C$ t
  189.   def hud_pos_update
    ) S  b& u" E; j% ^* R) Y
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X% X* `$ i7 k, X/ l# k
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  1 \2 V0 t3 }7 C7 r. J+ y# V! A
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X$ S- |3 `: ~' o4 _/ B$ F
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y ) _# p/ H0 z: \0 n
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    2 L: R; w" G& _9 y9 x
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  # {* p* Q- V" c" J
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X$ W" p0 f/ S8 \* F1 {$ y, f
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     ; S  L- D* V+ O: T. [( H
  198.   end  ! ?5 r+ i* T3 [- w! K, t, j# X9 }
  199.   #--------------------------------------------------------------------------* C: n' z4 G; H$ [/ y
  200.   # * Hp Flow Update
      Z& z  j5 {  N
  201.   #--------------------------------------------------------------------------
    ) {/ c* o9 _/ U: w" E# L4 t
  202.   def hp_flow_update2 @& n+ d- C- j3 X! x* F$ F2 I* X
  203.       @hp_sprite.bitmap.clear  H! n/ P- ?* B) _7 N6 S$ Z
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    ; J, c0 G5 c' v: r0 b% X. r% {6 r
  205.           #HP Damage---------------------------------* t: A0 M3 y+ Y5 A) i' y/ h; p
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100* V& o* V1 F7 ^' Q  L) s- o
  207.           valor = 0.5 if valor < 1          ! h1 }0 {5 E6 M/ H1 Z9 g+ P3 D( j# p
  208.           if @hp_width_old != @hp_width
    # H3 N3 M6 `- S6 S9 M
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  9 o( g# r" z1 {5 ~5 r
  210.           if @hp_width_old < @hp_width
    ! Z+ I: T5 A; J$ R
  211.              @hp_width_old = @hp_width& q- J, p: |/ E
  212.           end      + @9 M! X- R1 s0 v
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)" S. C; I, P& \- D$ M' l/ Q
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       5 l  ~# @$ A2 ?6 e; b
  215.           end        
    ( b4 J/ K7 W) J
  216.       #HP Real------------------------------------
    ; w& {& k; K6 x& |% K/ k, u  @
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)# U1 p, d7 J4 c4 C
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    2 u+ T2 u* @0 N1 E, u
  219.       @hp_flow += 2  
    $ x& @0 L9 n# d& \% l8 |5 N- E
  220.       if @hp_flow >= @hp_image.width - @hp_range
    ( N. Z3 y0 M) Y4 M  y
  221.          @hp_flow = 0  
    ; A$ ?8 S. o, h( V1 e7 q
  222.       end
    . J# X6 t( b! @# g9 U
  223.   end   
    - p# Z3 K& w% A% ~3 }( {% ~$ n$ \
  224.   #--------------------------------------------------------------------------( U6 N4 n% y" }# ?4 |4 r! C
  225.   # * Sp Flow Update* ~" f$ P) x0 l. `1 U
  226.   #--------------------------------------------------------------------------9 c9 k/ C8 D- ~' {
  227.   def sp_flow_update
    , O# q; {6 w9 ^% k6 j0 S& h6 R; p
  228.       @sp_sprite.bitmap.clear* v2 b. l% j  t. _7 D
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    + v+ j# {) b) v% i/ J
  230.           #SP Damage---------------------------------
    ' B1 ?( K3 c! l3 |& Q) D
  231.           if @sp_width_old != @sp_width. b5 E' c" p" ]
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100. {. |" \5 \- ?
  233.           valor = 0.5 if valor < 1              + R: c- ]4 _) h3 p% r( l% x3 X$ G
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  7 h4 B/ ]0 U( E* ]7 V
  235.           if @sp_width_old < @sp_width
    , r7 W* ^: |! g) e
  236.              @sp_width_old = @sp_width
    " Y7 I9 P; [1 y+ P
  237.           end      
    " g9 c# y+ M( @3 B, d' D
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    $ d+ t& b( l9 {: b6 k' J& m4 ^0 V: [
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    ) |+ q  L- ^3 A  y( T
  240.           end
    7 V* Y$ z3 E0 _# O* f
  241.       #SP Real------------------------------------
    ( O8 s- ]! B- p
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height). v& O7 Q: a% ]! J' J+ r. @
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    9 u6 _% D8 Y+ L( b1 m2 F$ p
  244.       @sp_flow += 1  * m. \2 o+ ]0 N2 C! G( G/ v5 [
  245.       if @sp_flow >= @sp_image.width - @sp_range+ _3 t: y( B, y5 F. `
  246.          @sp_flow = 0  
    : Y- d3 ?9 M- O$ h) y" N+ K. |
  247.       end
    & U% M& {9 O/ \( ?% U
  248.     end            
    2 T9 P3 J' x( X# O! J3 k. S
  249.   end* g9 s! d" M3 K: [2 K, r
  250. #===============================================================================
    3 z+ W2 a  r' b( Z" T
  251. class Sprite_Character < RPG::Sprite( j7 s0 W) l# C. J* h9 g' n5 k
  252. #-------------------------------------------------------------------------------4 E1 F" H; p1 K; i  R
  253.   alias :xas_emini_hud_init :initialize
    2 s/ F$ l7 x/ b7 y
  254.   include MOG
    1 R: O( v3 ^: C0 A! d4 L
  255.   def initialize(viewport, character)
    9 x1 M. L, a+ e
  256.     xas_emini_hud_init(viewport, character)
    ( @+ i# ~  O$ V0 Z( H' k7 K8 q
  257.     @viewport = viewport' m: y  m3 n( S& k
  258.     return if @character.battler.nil?
    5 z) [4 R$ _# b6 m& p+ y
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    * f) T. X/ R  C/ `
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)
    ( I' y; V+ }; i: J# M
  261.     return if @character.battler.is_a?(Game_Actor)
    " n& \. ~- [6 {4 a& f
  262.     @bars = S_Hud.new(@character, @viewport)' n- }$ F* C% m
  263.   end
    & Z1 Q4 V7 H7 S& _0 J1 Q
  264. #-------------------------------------------------------------------------------7 x/ M* A* k8 U& j
  265.   alias :xas_emini_hud_up :update
    ' a! k. z% h& X; L
  266.   def update2 g! R, g* I( P3 d6 |# k
  267.     xas_emini_hud_up
    5 J4 b* T6 H6 s8 t  X6 `7 O. C
  268.     return if @bars.nil?
    ' |! ]# ?  }3 o# F6 P9 @
  269.     return if @bars.disposed?
    . `( s% U% [$ l. [3 ^
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    / O# W$ o% G$ i4 _; z
  271.     @bars.visible = (dis <= RANGE)
    & i' _6 H2 [, |5 _* q8 E0 q
  272.     if @bars.visible
    & Y( k; B+ U" b" T. B) o
  273.       @bars.x = @character.screen_x# - @cw / 4
    6 d- C- ]! t; h. ~4 Q9 {  e
  274.       @bars.y = @character.screen_y# - @ch / 4
    7 X; P* _* M$ |7 I$ i
  275.     end
      ^. x& K+ I+ b1 u/ ]/ G# R
  276.     @bars.update
    5 g7 X* H6 i+ A
  277.   end
    + _: S  C  y8 F/ ?$ r% G# J
  278. #-------------------------------------------------------------------------------
    ( z* L( u" R% V. o/ P
  279.   def dispose
    ) i4 |* M& l, U  M7 c
  280.     super
    ) r1 S. m& ], R$ ?2 c$ K
  281.     @bars.dispose if [email protected]?
    : s) Z" ~! H/ r$ p% \! d9 i
  282.   end
    8 V! f% m& C* N$ \
  283. end
    3 V: L5 g4 R/ q6 ~! E1 U( n' O
  284. ) Y! _- S- j0 O7 v1 [+ L
  285. $mog_rgss_s_hud = true
复制代码
" A+ k: @2 p4 g0 G

! D! W9 s* P0 T5 a/ B* v7 J6 t
0 v1 I9 f3 V* {* {3 R! o! z% b/ v6 \6 ^上面所說出錯的203行內容為
- j2 V/ J% ]8 W& x- q9 O@hp_sprite.bitmap.clear
8 z. K6 m0 ~1 P' C2 m0 D5 D  ?  o4 [* k" ^7 z, g/ t
想知道怎麼解決
, r0 ]& N4 f  t; }/ P/ a6 B4 a6 q. R/ G; k, |/ A+ Y( N0 J1 v
該腳本支持3.82, R7 n7 w. T9 j% {6 E

: s( g: N. c/ `  y# y下面是圖檔,要塞在Windowskin下
$ U# H; F  E. u- c& V. _! t3 |: t
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) 3 u, W' W3 E, _4 U+ z
4 {! r/ |3 h1 T- V  i
( [; l- b; W9 b9 \5 E1 ?# z
' u+ C1 F9 R+ i) g. a, W

作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
0 H: i) u6 X( ?+ x1 g结果尝试刷新了一个已经释放的图形
5 a& d8 G/ U* P" H9 T$ J3 P
2 j* w5 h- B" K; Z% _' Z5 R- \
6 E/ {. I: |( s; B0 W7 G) e9 H1 v
( o0 S9 e6 g" X/ _/ `( b虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    ( ^7 y9 q8 {8 J2 Y0 K, ?" H8 S
复制代码
不要后面那个条件貌似就没问题了。
  l, K- N7 [( r. d) m) N( F. k" l( ^) k( c, n

$ i* h: _- C1 V9 e% I& I6 |
  |% f6 |5 f- c/ a) ?6 ~
- {8 D% |" c2 b; d; W$ \
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 & @8 E1 \* W2 i8 A4 }
貌似是释放的条件不合适
- U; \" t$ Q* O3 O结果尝试刷新了一个已经释放的图形

- j( T5 H' j+ x  X9 T把後面那個條件弄掉後,的確沒問題了
4 C* Q" O6 W$ |目前從關頭打到關尾結束都沒再彈什麼錯誤
3 l/ X+ a: C; D非常感謝6 n( m: `" C  n& a" G  G9 s; a8 T  v

+ s( \* p; `6 e# {( D, {不過我是參照著別人腳本改的
, _' V# h  D1 s( E他寫的條件式也是那樣,但我用他的沒什麼錯誤
! T1 k0 o, Q# o7 i: @: ]6 b不知道是怎麼回事: h* B. q& A' w6 U# k
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
& _: m7 d. m. L- E% d" H我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
! b' J" o) w# P- K嘛..这个数组吧..我在以前试写队友的时候关注过一点
. P7 b- h, F" s( |1 J  S1 W不知道XAS内部对它做了什么手脚还是为啥,
+ t8 k% J) Y2 z7 o) [1 w: `0 u总有那么一瞬间,没有被消灭的敌人事件也变成了nil
' a& p5 B4 |$ ~$ u2 y! w  Q
/ ^6 ?4 h9 t: T2 X4 d3 r# M6 g$game_map.events.values[@enemy.id].nil?
% \8 I' ^' \5 q  _9 k, o因此自然而然的返回true并符合条件把图形释放掉了- }2 i) z+ {+ k8 |! N' `" j. O# {

4 t- C8 t* {1 @  U: z# n2 h; J; {LZ应该有注意到吧,
$ W, t- f2 c3 S% E+ h我测试的时候发现报错前几帧,图形会消失,5 U: @& p) N" s  t0 d
应该就是“误以为敌人被消灭”了。
- P, G/ ^$ M  H0 P6 U% G6 O$ q6 G" y& \4 {" a
受限于个人水平,至今无法找出$game_map.events的真相..+ E4 D& _. F( H$ J3 s

作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
+ R  w$ H8 i+ S! B$ U1 s$game_map.events
* `2 ^, o0 W9 e& h5 v嘛..这个数组吧..我在以前试写队友的时候关注过一点6 `, r" m( G/ M  m$ W* W" |
不知道XAS内部对它做了什么手脚还是 ...
$ l# `, N+ u) F& v
當初我把那個條件式看了三遍,都不覺得他有什麼錯
' g8 N; j5 z+ x( y7 _* ~2 h原來還有這麼深奧詭異的事XD
- y& D% b% _- _( z( `% ]" Y) p! P( ?+ `& D
錯誤發生前的確會有圖形沒顯示出來
4 {  e4 f( t; s, u不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
+ g8 O2 B" V" H5 _3 S$ |沒想到居然是詐屍了XD
( e. o& g0 Y+ p* U' x8 U& i, k: ~( f& [6 V2 p: q
不曉得3.91有沒有修正這問題...+ C" M8 F- ~* D3 |2 t( b
不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
/ m# N( }8 K/ P* z2 L( T
1 c& D2 m+ W$ n1 j的确4 i6 B2 h( @0 ?+ l8 j
用惯3.82之后想去整3.91觉得压力甚大..1 Z. L; d8 t5 T- ]1 H8 Z9 p
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。! T! i; B% z! H
* E: L+ N$ G; }
然后加一个判断处理的。(我记得有一个disposed?)




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