Project1

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

作者: serena718    时间: 2012-10-14 18:18
标题: 自己修改的插件出了錯誤
這是我將官網的S_HUD修該而成的怪物血條
1 m1 {3 x, ]2 `會在每隻事件怪物的腳下顯示
( e- L" v) z$ a問題是不知道為什麼
: f0 @/ h- F& P& O* W# w/ w$ l有時打怪打一打會跳出
( o2 S- _  Q' M0 v---------------------------
$ S  a  i: Z- t" uXAS$ S& H( D! Y0 B2 f7 G  V. M$ s
---------------------------8 s* j# T" M& \! i
脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。; u% ?. u" S# }( x) k0 `7 P

6 l0 u$ `3 t* C, [" vdisposed bitmap
; [1 T7 H: N# [' v---------------------------
. D) i6 J( x  H' q7 _確定   
. B# D1 `) Q3 X1 M---------------------------# Q5 I/ c7 c- o6 J5 C( g
* S$ a5 ]" W; n( e8 F! W" o
這是腳本+ I+ m0 G1 W2 m8 L; \

; @. U7 R  O& A. @1 m
  1. #===============================================================================
    " y& |$ D3 `5 G4 r. }' _
  2. # MOG - s Hud 1.0      
    ; C. A7 w9 t3 ?  s
  3. #===============================================================================; ?5 t# N- \1 }7 `
  4. # By Moghunter
    9 ~% Y* L* N# \4 ~: s
  5. # http://www.atelier-rgss.com
    4 W% u8 v) d4 ?
  6. #===============================================================================6 h- G( n: N% ^- j3 j$ u
  7. # Translated by Calvin624 5 L& Q) W  _% b6 E8 Z: v
  8. # http://www.xasabs.wordpress.com  k* @3 B( R9 D; x  a
  9. #===============================================================================& m$ Y4 g0 ~9 z7 B/ q3 l
  10. ###############################-DESCRIPTION-####################################
    / L2 ?8 @9 N2 q
  11. #===============================================================================* k1 ]" R% S' g9 w- D1 ]# i4 K$ I
  12. # Personal HUD – displays the HP and SP below the hero.
    9 b9 |; w/ u& l) P9 |/ [9 n5 @2 [
  13. #===============================================================================
    2 h) }* p4 C( o& n9 @" d7 _
  14. #8 P$ Z; f1 z# I7 }7 x8 f
  15. # Graphics required:" T0 ]' J& T) U* C
  16. # 9 A1 O/ Q0 b0 i. ~% u4 }& d( G' U
  17. # S_Border_HP_Meter.png# k" i! N- `2 g1 [0 |( P
  18. # S_Border_SP_Meter.png
    9 E) f. q5 [; I0 W, j
  19. # S_HP_Meter.png: p7 v1 e( z( q6 E0 Z9 ~  c% K4 A
  20. # S_SP_Meter.png
    + x, @  K* k+ x% `( K
  21. #. w6 s5 f( m/ u, q6 i! j
  22. # All images must be in the Windowskin folder.
    ! n& s1 K2 P( y1 x/ k
  23. #
    , `* I1 A6 F) X/ S
  24. #===============================================================================
    $ |/ w* W+ R) J8 F" c
  25. module MOG
    ; L' H+ u4 M: ^" I- H+ d
  26. VISIBLE_DEF = false  
    * f1 n- y- E& c, n7 g
  27. # Show HP meter?$ [5 p: }! K1 i
  28. HP_HUD = true0 }. N" T. j7 w  J
  29. # Position of the HP border
    $ Z$ c! d- Y/ G4 u/ v4 I
  30. S_BORDER_HP_METER_X = -2
    , A1 V! c' D& q4 F+ i
  31. S_BORDER_HP_METER_Y = -2  
    ( k& G# W- H3 w7 q+ Y
  32. # Position of the HP meter
    / J1 `# p$ W" t: I. @; B/ H$ j6 Z
  33. S_HP_METER_X = 0
    & \( U( |# b- ]# n4 _
  34. S_HP_METER_Y = 0. n2 c- v* k4 l7 a2 J0 \, h- I
  35. # Show SP meter?7 R1 @& o- ?  j9 X+ _  i
  36. SP_HUD = true* P/ w9 e7 K! @6 |, W) F/ P
  37. # Position of the SP border1 Q4 f. x% u7 |3 b
  38. S_BORDER_SP_METER_X = 0* k+ N( c- m, Q
  39. S_BORDER_SP_METER_Y = 10 . N/ E! y8 w- ?+ G& r- M' Y
  40. # Position of the SP meter
    , ]2 l6 v3 Y- o6 y9 |. Z
  41. S_SP_METER_X = 0' z: G- `+ J, r8 H: e) s0 ^7 E* K0 Q
  42. S_SP_METER_Y = 10
    . f7 r/ j# X; W1 X' ^
  43. # Switch to disable the HUD8 H' v2 ?6 n4 d9 r: h! [
  44. DISABLE_SHUD_SWITCH = 58 s, k6 e2 _8 e# _
  45. RANGE = 20/ V+ ~" n$ n: y& u2 w
  46. end) P6 ^( F, X, e4 e
  47. #===============================================================================
    0 J1 t  @7 t7 ~# I) c! S. p
  48. # S Hud0 K2 ^8 M& }* p4 y' D8 d& e
  49. #===============================================================================# k* P) Z* y' X; N) A/ \% A* o
  50. class S_Hud < RPG::Sprite
    4 ^# ^# F! o& y3 [
  51.   include MOG
    3 Y: h/ n7 ]. d: `# O- G8 X. E  K
  52.   #--------------------------------------------------------------------------. c: F8 Z' _; ^% i
  53.   # * Initialize% l, z9 X2 g9 S  i1 \- P
  54.   #--------------------------------------------------------------------------) [4 w9 s3 m% V) [1 o( P6 [, G
  55.   def initialize(enemy,viewport)4 h* J6 ~' `  _, w  Z
  56.     super(viewport)
    8 Y/ P& k- ?3 H: d
  57.     @enemy  = enemy
    / R0 ]+ A, b1 h( r; S
  58.     @battler = @enemy.battler- u& m; g4 d4 r" O4 e( @7 _" X
  59.     @old_hp  = 0
      B2 J0 Y; I" Q' |7 R* @0 [
  60.     @old_sp  = 0
    2 [5 k( @; u1 b. L! q, z8 d
  61.     @old_vis = false, S% F1 Z% e4 I7 ?. ]
  62.     self.bitmap = Bitmap.new(100, 100)
    # B. n! v# ]1 M# A  M
  63.     self.visible = (VISIBLE_DEF)#false# f8 i/ l, q  ]4 v+ u9 N
  64.     self.z = 1002 u' `4 x! Y- j/ F4 d+ W
  65.     #HP Border -------------------------------------------------------------------# ?7 \. O1 V  M# S% H% x9 E
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")
    ; _+ Z' E) P% H) |/ R2 k
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)8 Z0 [9 [: Z* t9 T# N+ L
  68.     @layout_sprite = Sprite.new
    " A  n) ?/ `$ `. p
  69.     @layout_sprite.bitmap = @layout_bitmap
    4 {6 O3 Z4 M: H8 P, ^, W/ ]
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    & y* O3 r  @3 G& y! H6 w, |- x& ^7 ~
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      
    # v, j" Z  a" \1 N1 O+ M
  72.     @layout_sprite.z = 50012 d9 q/ V9 F' S, d
  73.     #HP Meter ---------------------------------------------------
    ' ?0 l* D, a7 f, [! x% ^4 a
  74.     @hp_flow = 0: {5 x9 T4 T  Q
  75.     @hp_damage_flow = 03 D7 @' G  R' ~/ E# V9 f9 W
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")' ~9 V, M- M$ |0 ]8 j
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)& S1 V" F* j* ]% e$ U% g
  78.     @hp_range = @hp_image.width / 3
    ( l  f; U2 w! N$ \. o7 S0 K5 y
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    5 J6 a9 q0 U$ O$ ]' l! J
  80.     @hp_width2 = @hp_range / 2. f" e" ^/ x7 Z! |4 |$ P" ]/ s
  81.     @hp_height = @hp_image.height / 2. a9 p' v  b- w$ y7 a! l
  82.     @hp_width_old = @hp_width
    % K3 i3 f# i4 {/ T: Y
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)4 t9 O- J! |& h
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)
    9 J: P  J: J" `- Z* Y" M* }; C! b/ C
  85.     @hp_sprite = Sprite.new
    $ y- W$ R0 V0 U0 D3 L
  86.     @hp_sprite.bitmap = @hp_bitmap
    1 w. ]: a: R1 _, e3 W, w
  87.     @hp_sprite.z = 50021 H7 {( L0 I3 X' T$ N
  88.     #SP Border -------------------------------------------------------------------, j. g' ^% p, N6 ]; }
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")2 j# w, D3 Z9 ~
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)% Y# Q6 ~  L4 @
  91.     @layout2_sprite = Sprite.new
    % H& ~/ v. }8 b$ i1 x
  92.     @layout2_sprite.bitmap = @layout2_bitmap
    : h; |* I7 t; D7 [% O7 z3 R
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    $ x' K$ G0 i& U; y3 J
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      / w/ q( B$ H4 l
  95.     @layout2_sprite.z = 5001    6 B. n- V( a6 B, d3 y- u
  96.     #SP Meter ------------------------------------------------------
      b- H6 G# w' n- o4 S
  97.     @sp_flow = 0' F' w% _0 t0 p% p5 j- w! L" _: f
  98.     @sp_damage_flow = 0
    & N* v9 V2 D  s# x' k1 @) x
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    ; o3 w/ ~- s  c$ u2 c2 `
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ( V+ Y, ?* n" ~# ~. O' ]
  101.     @sp_range = @sp_image.width / 3
    ! `) }: O- F. ]
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  5 m: D* \* [# ^* j
  103.     @sp_width2 = @sp_range / 24 L4 p4 D( s( g# E; |# Q2 k3 M1 E5 [
  104.     @sp_height = @sp_image.height / 2
    8 L0 E  ?) b& ?. D3 J
  105.     @sp_width_old = @sp_width
    & `% _1 W. ]/ ~
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)4 u- {9 c' x& ?
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect). l3 ~  e$ G# _+ W( l
  108.     @sp_sprite = Sprite.new
    * `9 E$ s, J6 U" X: g
  109.     @sp_sprite.bitmap = @sp_bitmap4 l7 a- u' T/ u) V3 S8 c& ^
  110.     @sp_sprite.z = 5002
    & A, [* T( e; H' `8 t2 l0 K
  111.     update
    . w1 [0 H# S, o- t
  112.   end* j6 ?3 E; J+ E; ?2 G* j% |4 c
  113.   #--------------------------------------------------------------------------" n  \8 I+ C2 v/ ?
  114.   # * Refresh4 R; [8 u0 ]8 }8 {5 Y
  115.   #--------------------------------------------------------------------------; L. p) e3 I; b0 L" p( r: W
  116.   def refresh! S, e, s, O1 j
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible! {% n& d; X5 j8 E# V
  118.     self.bitmap.clear
    9 H+ K" m- l1 u( }/ [9 F8 ^
  119.     @old_vis = self.visible
    3 z) m; x- o  j0 \6 U. r
  120.     @old_sp = @battler.sp6 C8 \" S9 m7 `# C3 f
  121.     @old_hp = @battler.hp
    ; q2 X) T. j" @4 m: ]
  122.     hp_flow_update$ b7 w* G/ L: A" N7 l
  123.     sp_flow_update
    ( a4 b' ~  l1 _3 A& |
  124.     hud_pos_update
      r% l5 n3 v* Z
  125.     visible_update. Y( C2 j9 e3 Z! ~4 e& ]: i0 P5 @
  126.   end
    $ Q6 g2 J( m! h: N
  127.   #--------------------------------------------------------------------------
    " X9 f) W! t7 g; z1 w9 k8 Z
  128.   # * Dispose
    $ f( Q7 c  }  D& u: T5 s
  129.   #--------------------------------------------------------------------------0 b$ e/ }! h: q9 K# L( s
  130.   def dispose
    0 |% ~7 [  h( @& S& [7 l, c6 x
  131.     #HP Meter Dispose: u: J9 P+ m. S- C6 r1 @
  132.     @hp_sprite.bitmap.dispose
    5 E3 A  u/ B. }; f; o
  133.     @hp_sprite.dispose+ `& x% ~, e  D: H9 n
  134.     @hp_bitmap.dispose
    & L! ?4 L) C! @% g' `
  135.     #HP Border Dispose7 o6 g; F, {- i. ^
  136.     @layout_sprite.bitmap.dispose
    , X1 ^" _9 y3 H, W) P$ v+ s
  137.     @layout_sprite.dispose) m# s. A: }1 A
  138.     @layout_bitmap.dispose6 {0 G. P; ?( `, J
  139.     #SP Meter Dispose* x  n) F0 ]% r. Y  @+ j& Z8 g
  140.     @sp_sprite.bitmap.dispose
    # H( w/ U" O/ `0 ^3 u% M
  141.     @sp_sprite.dispose5 i$ k0 @  i9 |9 d1 s
  142.     @sp_bitmap.dispose
    * Q8 y' J- z' ?
  143.     #SP Border Dispose7 T2 ~) O$ ], g- S) d: g2 \. S7 F, U+ H
  144.     @layout2_sprite.bitmap.dispose* s) w8 T8 b4 ^- E/ B& n; ]9 Q4 Y- x
  145.     @layout2_sprite.dispose
    8 n: }3 v% s- `% @: m: F
  146.     @layout2_bitmap.dispose9 d$ I; `8 n5 i  F6 ^- F5 o
  147.   end/ v: m- H9 j3 B9 A3 u
  148.   #--------------------------------------------------------------------------
    # Y1 Z3 ^+ ^& ?6 J
  149.   # * Update
    ) {- U3 l* ~7 H0 m# p
  150.   #--------------------------------------------------------------------------( H8 v" y9 K. I; F+ W- T; Z  O4 f
  151.   def update- u% o% u. b% W" ~  n" u9 l/ U! `
  152.      @battler = @enemy.battler + g- Y* o0 B, g
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?: F. a. c  o  O
  154.      if self.visible) f" [8 v! j; r$ y% J6 i, v# \* G" Y
  155.        refresh
    . d: y) y6 R) x7 t8 R- F2 V
  156.      else
    2 u5 U. y- G% o
  157.        self.bitmap.clear
    . T5 a. Y1 a- V2 u7 U( r" `+ j
  158.      end
    2 K  p) N7 I6 l/ w) K
  159.   end& z3 X+ o6 W, w; X0 Y# o; m3 p- E% S
  160.   #--------------------------------------------------------------------------5 j5 i8 ?" h1 S7 X0 M' j+ a' [
  161.   # * Visible Update
      ?- ^8 S/ Y- Q9 G$ s; ^
  162.   #--------------------------------------------------------------------------9 ^# {" S/ e( h% y& J. T7 o( S
  163.   def visible_update1 N8 G9 N  v, j* V" a# P/ H
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true& F( B4 }7 c# J4 C' [. C& @
  165.        @hp_sprite.visible = false0 K% a) Z8 g4 m0 W
  166.        @layout_sprite.visible = false
    8 z. P; {6 m2 P5 f% M9 f$ }
  167.        @sp_sprite.visible = false
    0 ?0 u- N. P/ E
  168.        @layout2_sprite.visible = false
    5 u: z: ]/ t/ X# e2 E
  169.     else
    . L* w$ g1 v* {: ?5 E
  170.        if HP_HUD == true9 ^- K# h$ }, J: r: u
  171.          @hp_sprite.visible = true
    8 Z5 I" m* F1 m- F! }: ?
  172.          @layout_sprite.visible = true! C* @) s8 \( z
  173.        else6 Z0 p9 d" h0 `, K  \
  174.          @hp_sprite.visible = false9 r+ [; |1 u( N& `% O
  175.          @layout_sprite.visible = false
    8 D7 z. ]' y$ Q5 p5 z
  176.        end  
    $ o  x: ^6 f3 S. d3 f4 y
  177.        if SP_HUD == true
    , y1 @9 E4 i8 _* V" l# ~
  178.          @sp_sprite.visible = true
    9 c$ c/ {! z' O! f  h
  179.          @layout2_sprite.visible = true  H% D$ L6 e8 T
  180.        else1 y) [& X8 Y3 I# G
  181.          @sp_sprite.visible = false
      i+ j9 J  J* h* A" j2 O
  182.          @layout2_sprite.visible = false
    4 |8 w& u# ]' K8 W3 k' P; Z
  183.        end
    4 U" `$ @# @  c' F
  184.      end  
    : x, w" U6 h( J6 w  r3 Y
  185.    end + Q9 T/ j5 m6 o9 L$ _& k( ]0 `, H' T
  186.   #--------------------------------------------------------------------------) S" ]2 y) x& [0 L7 |
  187.   # * Hud Pos Update- }& r. c* A5 ]9 [
  188.   #--------------------------------------------------------------------------# }$ N# `4 n7 w4 U
  189.   def hud_pos_update
    . D: O1 M9 Q3 D$ B8 K8 Y7 ~( f, p
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X0 k; Y2 Y  ^  i7 G/ u
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  0 r7 G* u( c' e! V% c3 t1 J6 u) W
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X0 f: S" H6 g0 W- ~( @3 r
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y 7 d+ Z0 @" J8 J3 \7 v  ]+ J  c
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    7 m1 P  M: p8 O3 S% P
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  
    + d* x5 G% k: f2 c( i0 H. }
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    3 C* C: b/ X: E+ U
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     3 c+ r5 i8 ?9 Y! y
  198.   end  , r7 h* T- x" P2 T: b2 r. t
  199.   #--------------------------------------------------------------------------* K8 I) E/ I$ {9 c" o
  200.   # * Hp Flow Update
    : A8 m7 b9 G) U& e, y# C; l8 @
  201.   #--------------------------------------------------------------------------
    * A) y5 i6 J. ~: `9 B2 A
  202.   def hp_flow_update4 p* i6 `" C9 s* I! [5 D9 k6 L/ x
  203.       @hp_sprite.bitmap.clear
    ) Y1 ?0 Z' Y  Y, L" h2 j6 W
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  8 p3 F+ w6 _  D; {
  205.           #HP Damage---------------------------------, |9 a- z5 `1 y1 y3 h$ R" \
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    ! A, \/ [* r) S; K& \
  207.           valor = 0.5 if valor < 1          2 s2 ]5 t1 H& H$ W
  208.           if @hp_width_old != @hp_width
    ' I% Q) @: h# K/ {3 [0 }2 L
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    ' a& n: A+ m6 O6 p
  210.           if @hp_width_old < @hp_width
    / W$ ^, ?8 O" m: F4 Q
  211.              @hp_width_old = @hp_width
    " z  c1 S- D+ ^+ }' s
  212.           end      8 Q" h- j( ~. [! p) h- r8 t( J
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)+ U* r+ a. U1 J! s% m9 p
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    7 c9 l* i) h; i" {/ Z% r$ q
  215.           end        
    - ^6 r2 P2 X# b+ u. i
  216.       #HP Real------------------------------------
    9 N6 Y7 t3 o- k8 f1 c1 Q  L
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    8 S0 y; y, Y$ a& z
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    ( C# H( a$ K6 ^/ ^  t
  219.       @hp_flow += 2  
    9 @2 R2 ~! D0 v0 m: H4 S
  220.       if @hp_flow >= @hp_image.width - @hp_range3 x8 }# ^) ]: @4 Q1 I1 b
  221.          @hp_flow = 0  
    : S$ g5 q6 e7 i! C0 H. L, W
  222.       end
    - \6 o/ c9 a( @/ z
  223.   end   
    0 C" k2 {6 C' L. D
  224.   #--------------------------------------------------------------------------
    . v3 Y! W: J+ `" s0 K* U1 O6 o- G7 n
  225.   # * Sp Flow Update
    & m/ R4 k' k1 G2 T1 I0 {2 r# b( z
  226.   #--------------------------------------------------------------------------! l/ t, _8 K  M* v  t. p3 w% G" w6 O
  227.   def sp_flow_update
    : y; V+ |/ `* V9 e+ }
  228.       @sp_sprite.bitmap.clear
    ' B# s8 U/ S. R
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    ' q& R5 |. m( A5 V
  230.           #SP Damage---------------------------------3 L& p2 [* \+ w( Q' k- H/ B$ |
  231.           if @sp_width_old != @sp_width
    6 ]+ H; O% y. _
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    ) {3 |$ B; G( c; y3 h# Y
  233.           valor = 0.5 if valor < 1              
    5 r* B) \2 \7 o/ D; O6 l/ w# C& [% ]1 L* x
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width    O" b# }% C) r+ W5 F
  235.           if @sp_width_old < @sp_width - i# [4 y5 Z  }3 y( v; ?+ p
  236.              @sp_width_old = @sp_width
    3 _4 @8 D) J9 Z9 y3 ^* C
  237.           end      
    9 }7 p! t9 p. r
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    0 c2 u5 `- O: L2 W% H+ ?/ i5 k3 e, |; y, h
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    $ a% Q  k6 w6 \, ]
  240.           end* G" B7 I7 W: S& g# z) i( E
  241.       #SP Real------------------------------------( u- Q# x5 t7 m- P: @: t1 J2 i
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
      [; {5 d( P; x5 S2 a8 ^
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)" y& G" o9 j& |% p" y7 U- H
  244.       @sp_flow += 1  
    : _2 d3 n. }) k; C# A
  245.       if @sp_flow >= @sp_image.width - @sp_range
    8 P! j, _# `! R8 r
  246.          @sp_flow = 0  
    / v8 E" v9 Y' Q. Z4 o( q* k
  247.       end0 l4 b. d$ X4 }+ [
  248.     end            0 y: G' q1 p+ n9 I' R
  249.   end' t" t/ j5 d! |
  250. #===============================================================================
    . h$ Z  k( F' [1 O3 U# B) U
  251. class Sprite_Character < RPG::Sprite
    ( x; }6 t. N& H2 K, s5 e4 k
  252. #-------------------------------------------------------------------------------
    ) ]) k/ d( }5 E3 k) J
  253.   alias :xas_emini_hud_init :initialize2 X) _4 P. n9 E; C# \7 c
  254.   include MOG
    + R1 ?3 E/ ]; h: Q" F# d
  255.   def initialize(viewport, character)
    4 y9 ^$ T+ y& j. Y! R
  256.     xas_emini_hud_init(viewport, character)
    + B& {% o) H4 j+ U0 G" L* w
  257.     @viewport = viewport
    . O- @/ q* \3 C" o- I; i
  258.     return if @character.battler.nil?  T) s- A* ]7 _0 p! ~
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)5 o( e4 c2 S4 Q& u! T* _& r3 P  a
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)7 b2 Q& U- |! G2 @+ {8 I* f& P
  261.     return if @character.battler.is_a?(Game_Actor)
    + @/ E5 h7 e. t, }  g
  262.     @bars = S_Hud.new(@character, @viewport)+ s2 O. m2 K( D1 a, j  ~
  263.   end3 V- C" N: i. S* S) \" ]
  264. #-------------------------------------------------------------------------------
    + L, J& I; d3 {) p% I4 I
  265.   alias :xas_emini_hud_up :update, X! ^& m1 v; Y4 ^; o) E
  266.   def update) {( N3 m2 |* Y4 o; g
  267.     xas_emini_hud_up
    2 N" [' V) p) _# V+ ]- q! r
  268.     return if @bars.nil?6 o1 {6 _6 |$ r) @& h
  269.     return if @bars.disposed?( [7 b/ O! L; p0 g, O- c# X
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs( E; o7 L$ E7 V( F% j: h
  271.     @bars.visible = (dis <= RANGE)) u% U! K8 O# k  k+ N+ d
  272.     if @bars.visible
    6 j1 T) _# K7 w" Q9 M# C6 Q
  273.       @bars.x = @character.screen_x# - @cw / 41 P0 J/ y* @' E, m- w( e
  274.       @bars.y = @character.screen_y# - @ch / 4
    $ M& W" O- e, ?. j
  275.     end' j7 z7 b' g+ H
  276.     @bars.update$ H- O  a+ S4 r! _1 w7 b; K
  277.   end
    8 H2 n0 I; A! k. G2 D+ h6 m
  278. #-------------------------------------------------------------------------------& Y6 u8 b0 K& A9 K' l% Y. v) Y
  279.   def dispose
    ; ^% o) |/ u" R6 ^! f
  280.     super
    9 S2 x$ ^) f! T. [: i8 S
  281.     @bars.dispose if [email protected]?$ u! ]; e. Z  k6 ]9 c2 c% F) c
  282.   end
    0 c! X1 v7 z3 D' g1 }2 A6 }' M
  283. end+ c" i0 l) F1 Z* w( M$ k

  284. ' S9 _& R: q& p# M: H' n
  285. $mog_rgss_s_hud = true
复制代码
, a" W! F; k! \- t% H; @/ Y$ ?$ M
  Y7 G! m& ?+ {, l& t5 h4 x* ?
% W- z  T+ k8 w8 M8 y
上面所說出錯的203行內容為- ]0 b& U6 R; s1 @
@hp_sprite.bitmap.clear
" Z) a8 A; {4 K) D3 G2 u* |$ g1 B' Y. f
想知道怎麼解決
! M6 C% ~9 K: l( h( X0 w  {! P' b* w
該腳本支持3.82
. @' M! y) d, T0 B9 A( Y. ^3 b8 K3 p
下面是圖檔,要塞在Windowskin下, ~) @- }; ~, M& O

/ F8 u( U1 ^9 y7 q9 D- Z S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) & y$ C6 T( C4 q% T& h" |( o0 q
& k/ q& H  X: w# `( }$ d2 H* ~+ J

6 F8 B' t8 }8 W5 g9 s
3 a- r! T4 n4 l! I
作者: ML4455739    时间: 2012-10-14 18:55
貌似是释放的条件不合适
' t' c& D; A1 v+ G7 X! V结果尝试刷新了一个已经释放的图形3 B4 ?1 i+ ~. l9 i( p2 G9 e# r
1 A! c- ]8 ?( i& y/ O1 w2 o2 n
( W# Z3 ^7 j8 ?
( a. T/ F0 t! a6 p% W0 e7 L2 A
虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    + ^/ x' V. {0 \5 r( Q! f! [
复制代码
不要后面那个条件貌似就没问题了。+ k: G- F* M7 A' {9 q

$ L% G8 C: c! C% t0 @) n; k' M' u& C, x9 G$ _% Z

3 E( \$ G! r3 g& M7 H* R5 G+ k$ I9 ]
' K- U4 D2 V- C6 M8 Y
作者: serena718    时间: 2012-10-14 19:12
ML4455739 发表于 2012-10-14 18:55 2 h5 u& o- W) g
貌似是释放的条件不合适
) _1 L" ^% P, \8 D  ?8 ~结果尝试刷新了一个已经释放的图形

/ P) m' [5 o5 V& X5 O- E把後面那個條件弄掉後,的確沒問題了
2 M$ ?' e. L) ?: N' W: {- @目前從關頭打到關尾結束都沒再彈什麼錯誤! f3 u! j& o! t' l1 i
非常感謝
% Q2 v) {$ p( k# U2 J. c2 l
5 R" {0 S) E( G& D不過我是參照著別人腳本改的
9 F' B. l& h. d. m5 \' T- H" b/ \他寫的條件式也是那樣,但我用他的沒什麼錯誤
; K% K, ?6 V2 w+ |/ f+ Z) W不知道是怎麼回事" F% I) g$ O. o( B0 @! [
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的) @) L; b. i# m: v! Y
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
作者: ML4455739    时间: 2012-10-14 19:19
$game_map.events
3 b& k' I$ a& q9 ?8 r嘛..这个数组吧..我在以前试写队友的时候关注过一点' [) b9 }3 m. w, y, w2 `
不知道XAS内部对它做了什么手脚还是为啥,/ g8 o: a, T0 z1 d. K: t/ J# I
总有那么一瞬间,没有被消灭的敌人事件也变成了nil
3 }) x% p  H3 k2 H3 ^8 k( v4 V2 p3 I2 d6 {# {
$game_map.events.values[@enemy.id].nil?
! Y) j2 T  _+ G- C; v' o3 c因此自然而然的返回true并符合条件把图形释放掉了
, x9 W6 {! W' ^" Z1 R0 u
; I2 H# w" |, J  c/ K" }, X& x: BLZ应该有注意到吧,
4 c( i7 V# }) G# |. ]我测试的时候发现报错前几帧,图形会消失,6 M' C' F' [, v8 Y; J$ g
应该就是“误以为敌人被消灭”了。8 T' v5 I5 t- x9 Q( p( l; c3 p% k
/ F( }) `% v1 ~
受限于个人水平,至今无法找出$game_map.events的真相..
7 W3 J% V' {9 r% O4 S
作者: serena718    时间: 2012-10-14 20:06
ML4455739 发表于 2012-10-14 19:19
0 k; R8 q' i! ^$game_map.events
# x3 L7 }" Z. W5 x$ r嘛..这个数组吧..我在以前试写队友的时候关注过一点) |) v8 i2 a1 K: Y
不知道XAS内部对它做了什么手脚还是 ...

0 ^! W$ O2 Q) t8 c) N: }/ \當初我把那個條件式看了三遍,都不覺得他有什麼錯* h& ]- Y7 l* y1 o$ B' I. M
原來還有這麼深奧詭異的事XD
$ Y) y# c. t8 B0 ^4 D
9 Y  ?9 o! K' g7 V7 F錯誤發生前的確會有圖形沒顯示出來
; G/ U6 R- g/ `不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...% v3 S/ f% s8 d( |* K  A$ `
沒想到居然是詐屍了XD
, B3 E6 p1 o& j8 S! {( c: U( \- E( |8 g  @% K* V4 g7 [
不曉得3.91有沒有修正這問題...
; C0 N$ b. P/ A/ Y不過3.91改太多,實在有點沒動力去剖析他...=___=
作者: ML4455739    时间: 2012-10-14 20:09
恩。。没问题的话姑且这样吧。
( ?8 H& @: Y9 e0 n* t1 V, I# d/ q  {( ^1 _
' o( S) d4 T# W( Z9 m9 [' F, x的确
3 x7 f' ^! W! z7 C. z( {用惯3.82之后想去整3.91觉得压力甚大..- s# x; s5 w& }# Z- K
干脆就等XAS4了。我知道那是天坑。
作者: imsy    时间: 2012-10-14 22:09
LZ是触手,鉴定完毕。
作者: hys111111    时间: 2012-10-16 12:37
在那个脚本里面找一下“dispose”。
# \; q8 u1 Y* c% q6 q
; T9 V: F) Q, u然后加一个判断处理的。(我记得有一个disposed?)




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