设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2097|回复: 7
打印 上一主题 下一主题

[有事请教] 自己修改的插件出了錯誤

[复制链接]
梦石
0
星屑
687
在线时间
1808 小时
注册时间
2009-7-12
帖子
443
跳转到指定楼层
1
发表于 2012-10-14 18:18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
這是我將官網的S_HUD修該而成的怪物血條# y, _$ ?- }% g
會在每隻事件怪物的腳下顯示
( f- f! X$ \* O問題是不知道為什麼
& r9 J# Z! D0 u  m# O- G0 I有時打怪打一打會跳出
/ Z" r9 C" o3 t9 u- C---------------------------& q/ p" t. }9 m% x$ g- J; c6 M
XAS# d0 c1 v0 ?: Y2 W6 f
---------------------------
; Q. I/ V% {7 w0 t( X8 e; `6 ^脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。3 H: C7 Q: r4 \" S% s4 j% n

# D0 m! \! j8 n7 z5 ^disposed bitmap
7 a- y- i# }7 }: X---------------------------
6 z% J2 l4 z# T確定   
! j1 D, v+ V5 N1 `, G- C. D) L/ L---------------------------9 s) @5 |: B* m) q1 j

: L# {) C! g; D5 t1 h" b; m這是腳本7 U9 F0 I  `. b/ A
  s2 q& E' `1 U5 ~
  1. #===============================================================================
    % r. }3 o2 U0 R+ w: h
  2. # MOG - s Hud 1.0        ~' }% r9 ~' C' u
  3. #===============================================================================
    # n" E7 _7 A! @- d. C$ ?$ Q8 Q
  4. # By Moghunter   U8 Z3 D/ g& G
  5. # http://www.atelier-rgss.com
    $ `9 p& K& a0 v" {& D
  6. #===============================================================================
    / S3 H4 N# F! r
  7. # Translated by Calvin624 5 A3 n* f# T0 U- d6 t
  8. # http://www.xasabs.wordpress.com$ O( D" i' m0 C0 F  m0 |8 k
  9. #===============================================================================
    # F* u; p; R1 Q, [) C" N
  10. ###############################-DESCRIPTION-####################################
    & E; @$ V- g% M9 S0 }
  11. #===============================================================================2 w' A) V6 J" A0 V' |
  12. # Personal HUD – displays the HP and SP below the hero.. m) W6 n- Q5 i; [/ Q
  13. #===============================================================================7 B+ R9 N  x. q/ f
  14. #
    ; N/ \! E' u0 U& E6 b
  15. # Graphics required:
    $ G4 d' _+ x5 g8 e. {) s
  16. #
    5 e# y& J8 B- S! ^0 I1 g
  17. # S_Border_HP_Meter.png/ e; O' P: ~8 F; I+ P3 X; Q
  18. # S_Border_SP_Meter.png5 D; M; X9 h  T1 @
  19. # S_HP_Meter.png
    2 T" A$ v+ @$ |6 T
  20. # S_SP_Meter.png
    ; V. R! ?4 k& d6 m! H7 ~
  21. #
    7 |" P+ P( c- s6 Q. X* ]5 D
  22. # All images must be in the Windowskin folder.
    % `: o( f; F. [$ v. t7 D
  23. #
    5 t  S; u' I/ a) ~/ n- f5 M
  24. #===============================================================================
    ' m- e8 a! |' L, q1 k7 x2 t# H7 z
  25. module MOG
    ' B6 u% C& p$ i9 l7 M4 w( n: h) p
  26. VISIBLE_DEF = false  ; e/ z8 P) _/ f' m  R
  27. # Show HP meter?
    9 d' I) J$ w* [/ @
  28. HP_HUD = true
      v# i& H! f( S' j2 B6 N+ q4 z
  29. # Position of the HP border0 |/ `' g7 J' z& {$ T
  30. S_BORDER_HP_METER_X = -2  X. l: L+ A1 q" `* c" I1 z
  31. S_BORDER_HP_METER_Y = -2  
    & O! F  Q( ~' o  c: n/ J
  32. # Position of the HP meter
    ' [7 {6 e; x( V
  33. S_HP_METER_X = 0
    ( J8 G' Z. u! m. }/ `
  34. S_HP_METER_Y = 0# l& O1 B+ ~' R- l9 I
  35. # Show SP meter?
    0 z4 ]9 S7 D& B3 m9 B; }
  36. SP_HUD = true, t  r4 H) ^& T) j  B
  37. # Position of the SP border
    # P7 @1 L0 f1 j' j  b
  38. S_BORDER_SP_METER_X = 0
    % S; C* `& d& w  \8 p/ _
  39. S_BORDER_SP_METER_Y = 10 ) g8 u- t$ ]3 g. S4 |8 g* e
  40. # Position of the SP meter7 B& k; e3 j& V; y( U
  41. S_SP_METER_X = 0
    $ p- S; ^; d5 b( U7 ]1 i; S3 @9 S/ h- F
  42. S_SP_METER_Y = 10
    # E) N! R, v$ G
  43. # Switch to disable the HUD; B# `( L1 n" S( @9 o" G
  44. DISABLE_SHUD_SWITCH = 5
    ) M& f  X: a- j' ?) ^0 S+ E+ V% v
  45. RANGE = 209 p* y& n4 G/ U; C5 \$ x) j% d
  46. end; k* v6 i% G. f0 f# e' x' G- r
  47. #===============================================================================
    ) C! _/ V9 Q' t0 P+ I2 J+ U' ?
  48. # S Hud
    2 [8 U- Q% h% J. Q8 o
  49. #===============================================================================. {! y8 i; {1 \) ~  I7 X/ e
  50. class S_Hud < RPG::Sprite
    ( S8 v/ ]7 {5 W  Q: b
  51.   include MOG
    9 K9 a% v$ l) C
  52.   #--------------------------------------------------------------------------; A8 }5 B7 Z# K, m4 v; f
  53.   # * Initialize% E# J2 t2 m; S# g' G& ^
  54.   #--------------------------------------------------------------------------
    7 c7 u  ~7 a0 b6 _, T3 h
  55.   def initialize(enemy,viewport)
    3 Z3 [3 t! u: h9 u, S6 o  d
  56.     super(viewport) * b$ v- L7 X+ p$ F1 k
  57.     @enemy  = enemy3 f( ^4 U! s' Q0 m! P
  58.     @battler = @enemy.battler* B* Z" I" e( |
  59.     @old_hp  = 0
    ' ^/ l0 [: g/ R% P
  60.     @old_sp  = 02 e2 k: Y' G( M5 x; T7 q7 k) |3 E
  61.     @old_vis = false
    4 M4 ]' O. E9 D% p: @
  62.     self.bitmap = Bitmap.new(100, 100)1 Y0 C: u, }  F$ i7 V  W
  63.     self.visible = (VISIBLE_DEF)#false
    2 H0 ]% G6 b* R# H' C7 g- s
  64.     self.z = 100
    2 Z5 M  d7 L) s5 s# ]* P
  65.     #HP Border -------------------------------------------------------------------5 c7 K( `. w6 e0 R8 ?) Y* A5 H% q
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")# F3 E( g9 s+ U
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)+ Q& L2 t- K) u; H$ T( I
  68.     @layout_sprite = Sprite.new  p2 l4 a. v5 a! F' O! n
  69.     @layout_sprite.bitmap = @layout_bitmap& u8 ^$ S: P  H
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    $ Z5 D& q6 y2 v
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      1 f  Y/ g3 a3 X; t& w
  72.     @layout_sprite.z = 5001
    # L6 s$ k" G3 [& q6 H
  73.     #HP Meter ---------------------------------------------------- |8 ^3 B) K/ K4 b1 A' U3 w
  74.     @hp_flow = 0
    2 U4 t7 Z/ M/ k# }  U  W
  75.     @hp_damage_flow = 0) L- \9 E0 z. U8 y5 V' d! @
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")/ p/ `, G. a1 U
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)/ s9 f2 H! o4 j6 Z# r* @' Z
  78.     @hp_range = @hp_image.width / 3; p# L9 m9 u* M; ]
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  ! V( q( E  T# M+ N/ m  M
  80.     @hp_width2 = @hp_range / 2
    ) a) A/ J: A: c
  81.     @hp_height = @hp_image.height / 2
    + R, S+ P1 B( I$ n/ Z: G' ~0 y
  82.     @hp_width_old = @hp_width1 L3 C/ c9 S9 _! }+ D
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    1 f' L( C( E- y( y, O
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) " o8 r9 _2 h! B0 }- o+ L. i) V  x
  85.     @hp_sprite = Sprite.new* S& z6 O# k7 `( t* k. K7 X
  86.     @hp_sprite.bitmap = @hp_bitmap" i6 Q8 U* {3 m+ V. n& k0 N( w
  87.     @hp_sprite.z = 5002
    9 x$ Y" H0 |9 H9 {
  88.     #SP Border -------------------------------------------------------------------" b, ?7 E7 b$ t& [# C4 p! X. }# j. H
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")5 v6 _0 ^+ `: W
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)7 h& x* I) h- M3 b& t0 _" t
  91.     @layout2_sprite = Sprite.new" G" V% `+ N7 o/ o! ~$ q# ]
  92.     @layout2_sprite.bitmap = @layout2_bitmap3 n1 `8 |$ i4 |
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)4 q7 }0 B2 d0 b) `( x4 E; l" U( h1 K
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      : O% o% u$ u" g7 K* Y
  95.     @layout2_sprite.z = 5001   
    8 e& |; A! z: G' S
  96.     #SP Meter ------------------------------------------------------
    : N1 w; X' T: O, u7 o$ T5 u
  97.     @sp_flow = 0
      l+ m$ G1 p- H  v6 l/ `
  98.     @sp_damage_flow = 0
    4 k2 P; n- N0 ?, n$ ^( ~
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    . ^- g3 j' ?  [
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)- [+ ?1 I  B/ v2 a
  101.     @sp_range = @sp_image.width / 3# ?" a; ^* K/ }: Y; g( g
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp  # w, e. M+ S( R! Z) |
  103.     @sp_width2 = @sp_range / 2$ l0 \2 W$ w2 H7 J4 `
  104.     @sp_height = @sp_image.height / 2
    8 r, ~+ ~' _, Q3 g7 W+ |) _2 W1 T
  105.     @sp_width_old = @sp_width4 V1 [/ h9 }( ^" D6 R. {; w1 y
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height)
    9 s, t7 Z- a) I& V; [4 T4 p
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    # B* ]1 U8 y. ?. \- J
  108.     @sp_sprite = Sprite.new" X- |, g" k8 O
  109.     @sp_sprite.bitmap = @sp_bitmap0 W# C4 v, _0 M+ H- r* L& K
  110.     @sp_sprite.z = 5002
    ' w5 v' T/ g; B( f& G
  111.     update
    # R4 }  ^! l7 h4 D, m- v
  112.   end, g+ N7 P; K+ f/ K$ s
  113.   #--------------------------------------------------------------------------
    9 Z  Z3 U: W2 d# ~
  114.   # * Refresh6 M- W) D8 b, e$ V0 v4 }. E  @1 B  b
  115.   #--------------------------------------------------------------------------+ c7 _# L3 a" J2 j' P; V/ Q% ~/ o
  116.   def refresh5 H& H- \3 k) o! s2 ^6 Y( J$ h
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible5 U* d$ ]* i5 t3 ?) p3 C
  118.     self.bitmap.clear! q! ^5 F- H2 n1 w+ i! M
  119.     @old_vis = self.visible3 r0 L9 T) ]5 ^& H5 t0 n: K9 u
  120.     @old_sp = @battler.sp
    ! ?* q, V* z1 y+ K- V
  121.     @old_hp = @battler.hp" I9 r; i) c" V% `
  122.     hp_flow_update
    - C0 h" M  w- a) i
  123.     sp_flow_update+ x$ A8 t9 I2 O& |% Z+ m
  124.     hud_pos_update
    2 I( o  l  u/ {
  125.     visible_update
    # e3 l3 C2 V! _! ~1 `: ~. J% o1 }
  126.   end
    0 o& g: y: [8 W$ T
  127.   #--------------------------------------------------------------------------
    " F8 T% g5 j$ W/ Z9 Y
  128.   # * Dispose
    3 o5 s* t; `7 ^: Q4 x" L4 d) p! J
  129.   #--------------------------------------------------------------------------
    0 V) ]2 @& }+ j! _& K2 E' U4 p
  130.   def dispose1 z! q/ m1 r1 Q* T/ }
  131.     #HP Meter Dispose0 z/ a9 l' C4 m) {" A, Y
  132.     @hp_sprite.bitmap.dispose
    5 o6 |1 L) V9 @* A
  133.     @hp_sprite.dispose
    ) T/ ~5 `: j5 E6 z. v! P% Q
  134.     @hp_bitmap.dispose
    , f- V$ c7 G; A/ L' G/ ]& N) p' X
  135.     #HP Border Dispose
    , x$ {4 \: b) Y2 l  O! D* s
  136.     @layout_sprite.bitmap.dispose
    0 _4 K7 @4 {( e$ V- c7 R
  137.     @layout_sprite.dispose- H" _! F; ?. x7 g4 S7 T
  138.     @layout_bitmap.dispose2 r& x9 F) W1 T$ P, }1 H5 B
  139.     #SP Meter Dispose
    . ^" _. L# Z$ y' Q3 ]0 i0 J( x! E
  140.     @sp_sprite.bitmap.dispose" p5 Y- ~9 V& v  h! J: j
  141.     @sp_sprite.dispose# s7 R, R5 T7 v- I( Q
  142.     @sp_bitmap.dispose4 R% M. b5 ~5 c- H3 o1 X1 f
  143.     #SP Border Dispose6 z" j8 S! M# P! x+ B
  144.     @layout2_sprite.bitmap.dispose
    8 W: e' J% ^8 t3 K! }
  145.     @layout2_sprite.dispose
    " Z  X3 `: y; ^1 e6 t& x; L
  146.     @layout2_bitmap.dispose
    9 s2 K  q+ r9 @: N) b. [- D  I/ \
  147.   end0 b5 P- r) o$ Y: y
  148.   #--------------------------------------------------------------------------
    7 L2 w8 Y+ }. g+ I+ ^: B+ a
  149.   # * Update
    ; r- v+ r! c8 H
  150.   #--------------------------------------------------------------------------
    1 g' u. @9 c! p& V6 X
  151.   def update
    0 }, ]" z# E, D
  152.      @battler = @enemy.battler
    ) `0 Y+ T  l2 r  q1 k, _, p
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?
    " _8 r! B3 i! Q9 H4 M
  154.      if self.visible7 e1 }9 c5 i2 Y4 w  F( [
  155.        refresh4 E3 y" X9 x6 r( M) F
  156.      else
    7 P0 [3 D, ?$ T; C
  157.        self.bitmap.clear* t) x" D8 D: p4 y
  158.      end) c; F# j) ?: w% s  a, [  a8 i
  159.   end
    . `, r1 o8 u0 O& O9 [$ _+ q; U( P
  160.   #--------------------------------------------------------------------------( D1 Q: b( X3 ?( \: W6 p
  161.   # * Visible Update
    $ w* d+ ?9 x- c
  162.   #--------------------------------------------------------------------------
    7 ~; E0 ?: ?( z% @; D2 C
  163.   def visible_update, P9 P8 a5 q" \" |. s
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true8 p  `% V5 c) p
  165.        @hp_sprite.visible = false) L4 a' `0 R+ F7 f
  166.        @layout_sprite.visible = false
    # `, N$ N/ N( _+ h0 x& P" k
  167.        @sp_sprite.visible = false
    7 G( N* ^$ a! N, S' x8 S
  168.        @layout2_sprite.visible = false
    ' B( E; x6 w7 g, k
  169.     else
    & a# g0 y; I- @& \1 H
  170.        if HP_HUD == true
    9 e  d( \* S8 X- L6 _" }" o1 Y9 e
  171.          @hp_sprite.visible = true3 m5 F; d) E* L0 j4 ~2 o
  172.          @layout_sprite.visible = true
    2 x/ B% o  F: G: i
  173.        else
    ' J9 M3 v7 ^2 U  `$ U
  174.          @hp_sprite.visible = false& {& S9 T2 r  ^' q
  175.          @layout_sprite.visible = false1 Q6 i0 ^( T! }( m
  176.        end  
    9 _3 n: \, K" M) _
  177.        if SP_HUD == true
    . _" R5 N. i1 Q* U. v0 x
  178.          @sp_sprite.visible = true
    ) C; R1 u* N$ B4 Q& n  v7 D
  179.          @layout2_sprite.visible = true
    / f! m6 T3 g, |
  180.        else  u+ G: }8 r' U7 i$ @! h
  181.          @sp_sprite.visible = false
    2 v7 U& {0 e' M5 e- S
  182.          @layout2_sprite.visible = false7 e: l# A! @* n8 T) c/ D' t- n% s
  183.        end 9 a4 a$ g4 m# H- V: a& d! y
  184.      end  
    9 Y" s: y' y4 m  H4 w$ N
  185.    end
    ; g  |* e4 m) c# _" g; [; e
  186.   #--------------------------------------------------------------------------+ }+ [$ E+ J/ X6 ^
  187.   # * Hud Pos Update! h8 U. K2 |$ H; @1 l
  188.   #--------------------------------------------------------------------------9 w8 I1 d1 Z) Y& B1 u7 x
  189.   def hud_pos_update
    ! J3 b- a+ t0 B
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X5 p; T& J9 L) i  G- w1 f
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    ) q3 n# g$ X! X; D. I  o
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X% G: f" j5 P; c; s
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    - v9 I3 P6 F2 A; ?0 ?  f
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X
    4 J, Z+ y2 w# M3 |9 ?8 J
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  + R( G$ C! M7 g# _! G( |
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    : t5 A' o  H' Y7 a5 {& `9 T
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y     0 T) I, D2 b- Q! ~. J0 W+ i
  198.   end  
    4 M) N, H# Q1 `+ s. p
  199.   #--------------------------------------------------------------------------6 q7 f0 o4 E* f, V
  200.   # * Hp Flow Update1 A! B5 R4 s% d" r  k7 X
  201.   #--------------------------------------------------------------------------
    & G6 b% V' g5 H# K1 K5 N
  202.   def hp_flow_update& K  I: _% i' X5 p/ R! s9 e) U
  203.       @hp_sprite.bitmap.clear
    8 ?9 s6 t5 M8 b8 |6 K) t
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    4 V" R* D0 r" R8 [4 d% I) z
  205.           #HP Damage---------------------------------
    6 x9 R8 Z  g% N  J
  206.           valor = (@hp_width_old - @hp_width) * 3 / 1008 Z+ \( f. `2 W0 I
  207.           valor = 0.5 if valor < 1          : j5 M% p' v9 {. w4 @
  208.           if @hp_width_old != @hp_width
    8 A4 i1 p/ X+ Y" r  s
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  
    9 P5 w- i8 ^: c" x$ w4 n
  210.           if @hp_width_old < @hp_width
    7 [2 p7 x. D# ?! H4 z' s$ ^
  211.              @hp_width_old = @hp_width4 t* w' r- F, t
  212.           end      
    " U5 [9 U: O% w. J
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)8 u6 t' ?1 A4 f( s0 E) r5 k
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)      
    + \' r6 `, D. r" U) G5 E  P. W) W% j
  215.           end        
    9 y0 O* {7 u4 S) Q2 @# G
  216.       #HP Real------------------------------------& k4 B7 Q$ i0 N8 ]
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)" o( E( J+ \+ h5 ?$ R" i
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)          3 V6 A, B7 l8 _, w+ b* ]
  219.       @hp_flow += 2  5 H$ ]! u+ p8 h% r- ?
  220.       if @hp_flow >= @hp_image.width - @hp_range
    # E$ I* G' o2 e, I  K% [0 o
  221.          @hp_flow = 0  * @, L* S- R  i
  222.       end
    " l+ P5 Y$ p( I: y0 t7 v
  223.   end   
    & N3 z: s' B( A1 {
  224.   #--------------------------------------------------------------------------
    0 h$ `. z0 s4 _4 _3 A7 q6 G& U
  225.   # * Sp Flow Update" v" w9 c& i: Q' {( L
  226.   #--------------------------------------------------------------------------* W! j5 H" U# K* e5 `  Y$ D
  227.   def sp_flow_update
    ; c- \' ~; W8 S4 H: X" J7 N  [
  228.       @sp_sprite.bitmap.clear
    9 s6 @/ P- _# O9 }
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp
    ' q$ p; v& B; z) R' u; V1 }5 J+ A
  230.           #SP Damage---------------------------------7 H; i! k% Q- B3 T% s4 V
  231.           if @sp_width_old != @sp_width
    5 t" S# P( S0 i% C
  232.           valor = (@sp_width_old - @sp_width) * 3 / 1008 W. I( ^. W* J3 k; K& y# E
  233.           valor = 0.5 if valor < 1              1 k& y+ x% N; a7 W( V0 g* \' k
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  - q5 f3 |3 @2 @( a1 A4 @
  235.           if @sp_width_old < @sp_width 1 y  ?7 Y, E' y
  236.              @sp_width_old = @sp_width+ S# u0 h# h5 I+ a; G
  237.           end      
    " h  ?, x' j, v( {2 n
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height)
    / G) \: I* @+ B, B8 A% I
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old) 9 D3 U. Z/ F# z2 N
  240.           end8 Y+ d+ A; \/ z, K5 H
  241.       #SP Real------------------------------------
    : `/ L1 e. f0 u2 v
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height)
    0 Y; x9 \# E1 }/ |# ?7 Z
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ' o7 ]! ]  O8 O1 n' a/ r2 n
  244.       @sp_flow += 1  
    2 \8 ?; A7 _3 h1 v2 S& z
  245.       if @sp_flow >= @sp_image.width - @sp_range
    . l- K% v$ U5 X( ~
  246.          @sp_flow = 0  1 U+ E! Q$ i+ i
  247.       end" R) x2 Q: e2 s2 D5 z
  248.     end            
    7 i3 E  r: `$ t2 d1 c
  249.   end
    5 J- D9 m" n8 j# `
  250. #===============================================================================/ x6 ]4 f! k# {0 P+ M4 Z3 L0 g
  251. class Sprite_Character < RPG::Sprite
    0 U8 j+ l( _  [6 H
  252. #-------------------------------------------------------------------------------
    , s7 F' m( d$ K/ q
  253.   alias :xas_emini_hud_init :initialize7 x1 z" l- K1 b0 ^8 |
  254.   include MOG
    # K# F; `4 O: K8 O0 x" u+ |4 n
  255.   def initialize(viewport, character)
    3 W9 F4 D% l3 {; T: ?7 B% e  W( b1 d% N
  256.     xas_emini_hud_init(viewport, character)9 g$ G- [* s! @2 B8 k. B
  257.     @viewport = viewport0 z6 Q0 v6 t% s
  258.     return if @character.battler.nil?
    $ k7 K3 l; s) H$ D  E0 R
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)
    , w# t0 P( c6 z0 y3 g- `( F% N
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id): _4 V! l# R! Z! E) M; A" o' u' {
  261.     return if @character.battler.is_a?(Game_Actor)) U4 S9 w# N2 R+ U% N+ i6 _- ~$ S6 m
  262.     @bars = S_Hud.new(@character, @viewport)
    1 E3 r. B# v3 M. p
  263.   end
    . g' F+ Q0 B" f( B
  264. #-------------------------------------------------------------------------------9 q3 a2 v# k8 {
  265.   alias :xas_emini_hud_up :update1 p' {- h' l, B$ k5 b
  266.   def update4 U5 B8 i3 y. o  ]- o2 r
  267.     xas_emini_hud_up, e0 c$ y+ @* ^( ~
  268.     return if @bars.nil?6 g7 `  C7 z0 S' M# b! L! t
  269.     return if @bars.disposed?- O+ A0 L* l% V) c5 Q/ C2 C: v
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs2 p7 c1 f& \- |
  271.     @bars.visible = (dis <= RANGE)2 M# l9 H- U! [7 d/ m
  272.     if @bars.visible
    ) P( q$ I' r0 i, p; }" u: _2 e
  273.       @bars.x = @character.screen_x# - @cw / 40 u4 f* `- Z; b% `4 C8 z6 w! Z1 f2 f
  274.       @bars.y = @character.screen_y# - @ch / 4
    . P1 B  G/ Q+ w6 W2 v! }& U
  275.     end$ X% d  B: k! D' T% S& v- J/ R: h$ f
  276.     @bars.update8 h& [- Q* `0 f" a3 j! B
  277.   end% E5 n  ^0 @# `3 _/ @8 g9 Z
  278. #-------------------------------------------------------------------------------& a- O5 a3 L5 t% I2 ]
  279.   def dispose$ h1 }% \8 T+ l
  280.     super) w# |7 v% F+ L  ^
  281.     @bars.dispose if [email protected]?+ V% o7 [1 G8 W# d) m1 L" D/ ?
  282.   end7 l& j3 }5 t  T# O; x4 I8 z2 L7 W
  283. end" v2 t4 s% h) Y4 S7 `  R# x

  284. 7 R8 [, o9 F2 a0 f& {
  285. $mog_rgss_s_hud = true
复制代码
  w. i7 Y: C/ H5 Y: g

* R9 ^$ [5 D+ E8 f$ [/ l/ e: e9 @& j1 j8 O) v' }
上面所說出錯的203行內容為
' }: Y6 a' K0 |$ d, h+ B@hp_sprite.bitmap.clear0 _/ H0 ^* l  @& _" g4 a
+ D# }2 j' u4 o# v. n: J' B- x
想知道怎麼解決
5 I+ T/ o, ^. v5 b0 q! C/ p' _# t% [5 y. {5 H. O; }
該腳本支持3.82
0 i5 S& V1 o" F3 c9 M* o; G- {2 Q6 z* p6 `
下面是圖檔,要塞在Windowskin下" ?, g3 L" }. x, n

5 K2 _. ]7 `& p6 S S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) / i! K5 f& V( d

) Y% z6 P5 F1 B: V, G* s$ y: _6 d' s4 w+ X9 f# S( b
9 x1 J; ^: W/ ~) j3 S( B  Q
梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
帖子
607

开拓者

2
发表于 2012-10-14 18:55:09 | 只看该作者
貌似是释放的条件不合适
/ X$ x9 q( z- q' k结果尝试刷新了一个已经释放的图形
& K6 B" y  n* h( `
1 b4 _2 `" ]1 G5 r' }( p8 w4 G5 g- T% J

5 w2 l, N8 Z- ~% G, Q/ n虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?/ F5 S6 r% E! F- J
复制代码
不要后面那个条件貌似就没问题了。
+ g7 i! P# J: J
; i' c1 Y$ L7 C5 V( _& Y8 P" b& z

! ?( V' l4 l% `  I# F8 f  M; ?
* I# E& v$ n: x# \
往事简直不堪回首,稍微做点想做的事吧
回复 支持 反对

使用道具 举报

梦石
0
星屑
687
在线时间
1808 小时
注册时间
2009-7-12
帖子
443
3
 楼主| 发表于 2012-10-14 19:12:00 | 只看该作者
ML4455739 发表于 2012-10-14 18:55 : |% @  ?4 }1 y3 ?6 g4 m6 t
貌似是释放的条件不合适. G1 Y5 [! b) v+ t& U! R7 [
结果尝试刷新了一个已经释放的图形
/ w- q  D: v4 ?8 @. x! n
把後面那個條件弄掉後,的確沒問題了+ {1 u  W7 y/ O# o& e! o( y7 X0 Q
目前從關頭打到關尾結束都沒再彈什麼錯誤
; \. ~* T% T. f2 L1 c0 z非常感謝
" e4 w4 ]. N; p  |9 k: |3 r% w9 U" X1 H, i! l2 }6 b
不過我是參照著別人腳本改的
4 d; D8 O: N3 u" H) V5 _- m他寫的條件式也是那樣,但我用他的沒什麼錯誤$ ~: W3 M* B6 P' u6 w' v
不知道是怎麼回事. E! m; \1 `, l  m' M
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的! H' e2 ?( J0 ~3 Y1 u
我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
回复 支持 反对

使用道具 举报

梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
帖子
607

开拓者

4
发表于 2012-10-14 19:19:14 | 只看该作者
$game_map.events
  x# m, l, Z& Z嘛..这个数组吧..我在以前试写队友的时候关注过一点# q9 S0 C8 p' s8 I6 L0 o- M
不知道XAS内部对它做了什么手脚还是为啥,
  ?0 A) p' K% S, O6 `! ^总有那么一瞬间,没有被消灭的敌人事件也变成了nil% E6 Q: R: A+ M; H3 o" X

  [3 z; ?9 M: H" Z8 ^$game_map.events.values[@enemy.id].nil?
3 a+ S; r  k" T) D2 m" t/ c; ]) y因此自然而然的返回true并符合条件把图形释放掉了4 `0 r2 c/ A: E( A2 m9 U
1 y# h* G7 w# q- R8 |0 y( \
LZ应该有注意到吧,
9 V5 @. a( D. j/ u. v我测试的时候发现报错前几帧,图形会消失,
1 i% Z7 Q; M2 f0 `: {+ C0 [应该就是“误以为敌人被消灭”了。7 D1 x) t( k0 W: \  Z) P: {
3 e! e. L. O8 R6 c
受限于个人水平,至今无法找出$game_map.events的真相..
4 G) x( U! h9 h: r; C1 [/ y
往事简直不堪回首,稍微做点想做的事吧
回复 支持 反对

使用道具 举报

梦石
0
星屑
687
在线时间
1808 小时
注册时间
2009-7-12
帖子
443
5
 楼主| 发表于 2012-10-14 20:06:40 | 只看该作者
ML4455739 发表于 2012-10-14 19:19 " f) T- \6 b% [( {
$game_map.events
6 L5 s7 w$ r( ^& V$ ^# k嘛..这个数组吧..我在以前试写队友的时候关注过一点0 x' Z: @) ~# B8 i
不知道XAS内部对它做了什么手脚还是 ...

6 _; B7 ~) ?, X/ n4 a5 `當初我把那個條件式看了三遍,都不覺得他有什麼錯
3 H9 k7 ^" m) r* Q% }$ n原來還有這麼深奧詭異的事XD) V4 X, M" `6 ?( D) e' q/ Z. O1 x
+ f/ g' P2 I3 W. b
錯誤發生前的確會有圖形沒顯示出來$ }3 f- O# V) a+ {/ V2 @. K2 d
不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...+ p8 P4 Y/ C) q) a& }  z5 u- X
沒想到居然是詐屍了XD
9 F! v3 D1 b+ B* M) H2 V
4 i" y' y0 b2 _8 S不曉得3.91有沒有修正這問題...
( J1 O* |) V% c. g$ h. ?不過3.91改太多,實在有點沒動力去剖析他...=___=
回复 支持 反对

使用道具 举报

梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
帖子
607

开拓者

6
发表于 2012-10-14 20:09:57 | 只看该作者
恩。。没问题的话姑且这样吧。
; L2 K( R- }% ~) Z/ B2 e& y. O1 m$ M
的确6 }) ]" A  V  r2 X
用惯3.82之后想去整3.91觉得压力甚大..
: h6 U- D1 a$ O' U干脆就等XAS4了。我知道那是天坑。
往事简直不堪回首,稍微做点想做的事吧
回复 支持 反对

使用道具 举报

梦石
0
星屑
14245
在线时间
22033 小时
注册时间
2010-10-24
帖子
312
7
发表于 2012-10-14 22:09:20 | 只看该作者
LZ是触手,鉴定完毕。
回复 支持 反对

使用道具 举报

双子人

梦石
0
星屑
3200
在线时间
3618 小时
注册时间
2009-4-4
帖子
4154

开拓者

8
发表于 2012-10-16 12:37:42 | 只看该作者
在那个脚本里面找一下“dispose”。1 n- k. V. R, l+ m! G9 ]
! S2 u# M7 h0 t, n9 a0 G
然后加一个判断处理的。(我记得有一个disposed?)
回复 支持 反对

使用道具 举报

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-7-28 15:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表