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

Project1

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

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

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

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

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

x
這是我將官網的S_HUD修該而成的怪物血條# N# F; ~: K0 ?% m3 |. l7 K7 `
會在每隻事件怪物的腳下顯示
- U2 ]& L; h5 N! H2 r6 [' w8 _9 l問題是不知道為什麼
' K* o4 S5 h' p2 S8 H& `: j有時打怪打一打會跳出
' r# {2 Z+ i3 q' U3 q---------------------------
  B# r) V/ ^6 `XAS# x4 ^9 b/ |! ?3 U7 S# s1 _
---------------------------
/ `( {. I0 a  C: [! E: }$ h脚本 'MOG - S HUD' 的 203 行 发生了 RGSSError。
; T( _$ Z! D& f& V4 ^& R5 A, i+ a7 }$ p# l( [
disposed bitmap
- R; M" a. C$ C; ?---------------------------% v8 R6 d# ^( _: `4 ]* v% r
確定   . |; A7 e8 C" \# ^, X* D" I
---------------------------
4 I; m! ?# \, g, _4 @
7 G4 z+ i7 y( A& B這是腳本
$ s4 J8 `/ ^0 Q) ^8 k  o1 H7 _6 `' U. _8 c+ l- F( D/ L" W) M2 l& b
  1. #===============================================================================
    + c& D8 r4 g4 p9 d; D5 Y
  2. # MOG - s Hud 1.0      
    ' [. d6 G1 t! D5 B
  3. #===============================================================================( g8 o% K+ ?2 P* I( ]% G
  4. # By Moghunter
    " S8 s4 Z" H  y5 U2 K1 M; f+ e
  5. # http://www.atelier-rgss.com
    7 V: e8 C  r8 J+ C- `& z
  6. #===============================================================================7 d+ F% B: f& [
  7. # Translated by Calvin624 - b" N2 r+ g* a
  8. # http://www.xasabs.wordpress.com
    / ?% P. I: a# v/ M0 b1 {" v4 w
  9. #===============================================================================
    0 G$ t8 }; K9 n3 b: E
  10. ###############################-DESCRIPTION-####################################" g  \, M3 k! N) v  }
  11. #===============================================================================
    + h' a% x, S' o4 `: c
  12. # Personal HUD – displays the HP and SP below the hero.
    # k# b+ Q; s& f
  13. #===============================================================================
    + C8 R' ~9 }- t; M* r
  14. #
    8 f# w' `9 q/ d* p
  15. # Graphics required:7 W; E. X' A# I! v: h
  16. #
    9 t5 B  E& g/ X+ h
  17. # S_Border_HP_Meter.png
    * V7 L( O" l1 F9 ^+ B9 l3 R% ?2 `
  18. # S_Border_SP_Meter.png
    & A% Q/ {- n8 [. m9 B+ R
  19. # S_HP_Meter.png9 W2 G4 [& M/ m
  20. # S_SP_Meter.png+ t! Y; t7 r5 e: h% M; d) s
  21. #+ b2 f$ }! p$ L4 q4 c+ G
  22. # All images must be in the Windowskin folder.
    1 m2 D" K: T9 d
  23. #. V8 u3 Z1 o) [: S+ E) A
  24. #===============================================================================
    6 B& D# H$ k& i( L& h8 G3 m$ x4 T
  25. module MOG, s3 n6 Q/ P0 U1 r' C
  26. VISIBLE_DEF = false  " k" z2 A0 [1 j! m3 i
  27. # Show HP meter?
    ; }6 e, ]: v4 c+ l; ?3 W
  28. HP_HUD = true0 e# P5 }- a" |0 w5 l9 V
  29. # Position of the HP border
    & }4 ]2 k8 y( E
  30. S_BORDER_HP_METER_X = -2  @: q1 `& K: L+ b$ C5 Y, O' Z
  31. S_BORDER_HP_METER_Y = -2  ) Z: W# R) [. t  i
  32. # Position of the HP meter# {  q/ J7 a& L
  33. S_HP_METER_X = 0
    . w# }7 O" K2 ?$ k' G
  34. S_HP_METER_Y = 0
    5 G- B$ V) C2 c0 c1 Z
  35. # Show SP meter?
    # `$ }5 ?9 T& `7 E( E
  36. SP_HUD = true0 \' z0 ?/ d* g* S0 T3 K' i8 O+ e
  37. # Position of the SP border: Y! @6 z  v) k( b: d% l
  38. S_BORDER_SP_METER_X = 03 r5 R% ~' e& J' {) L9 v$ c; C
  39. S_BORDER_SP_METER_Y = 10
    ; ]: {: i; Q, ]
  40. # Position of the SP meter8 l5 M# `- Y5 ~, p9 l$ a* O
  41. S_SP_METER_X = 0
    / v. h1 r9 j% L: Z1 K! Q/ n
  42. S_SP_METER_Y = 10
    # z0 Z+ W) g$ q' ~
  43. # Switch to disable the HUD
    " c4 w  O! K4 O( Y& H- [
  44. DISABLE_SHUD_SWITCH = 5: o& V9 `3 S' Z. k- t) E- P" J
  45. RANGE = 20
    7 z  O4 Z7 \/ b1 T$ }: t4 ?* x5 M2 k+ a- Z
  46. end
    ' p  w: N, h; U; d
  47. #===============================================================================
    , c( }% s4 M( Q2 p0 ^* y
  48. # S Hud
    " v' O( C+ Z$ O+ x1 ^/ ~8 x
  49. #===============================================================================/ L9 s7 L* {/ B! s5 g
  50. class S_Hud < RPG::Sprite
    7 W* U& S+ @- {0 r$ Q1 Y- R
  51.   include MOG
    2 H: K7 S: @4 c3 Z# h' f5 v
  52.   #--------------------------------------------------------------------------
    % G0 i# F% C6 a$ P( O& \' X
  53.   # * Initialize. q+ ]$ w6 T6 L9 ?+ Q: t
  54.   #--------------------------------------------------------------------------
    ! m7 t8 L/ V* c& o
  55.   def initialize(enemy,viewport)4 n0 {( m7 N9 t
  56.     super(viewport) 9 e$ j, [+ S. T+ ^
  57.     @enemy  = enemy1 G) v1 q7 }; N% q- N$ E0 [1 S
  58.     @battler = @enemy.battler2 b. A& O& ~" a, a9 d6 N
  59.     @old_hp  = 0& I/ a) T, Q" E) ~
  60.     @old_sp  = 0( v; H/ {" c; U7 f. ?4 u2 P
  61.     @old_vis = false
    $ ]9 v2 P; V! u
  62.     self.bitmap = Bitmap.new(100, 100)6 h8 `+ B  x, M+ ~
  63.     self.visible = (VISIBLE_DEF)#false7 u' K' ?+ r% ]$ C$ b: U
  64.     self.z = 100/ R& B3 X: d( s: t& _6 M* s
  65.     #HP Border -------------------------------------------------------------------
    ; j0 e0 q3 R; ]0 Z6 e2 ]* o
  66.     @layout_image = RPG::Cache.windowskin("S_Border_HP_Meter")( K% k6 t. {$ K* N2 @' d
  67.     @layout_bitmap = Bitmap.new(@layout_image.width,@layout_image.height)& f" ~5 t& H/ o: `; U$ w! o
  68.     @layout_sprite = Sprite.new
    - u& Y1 b+ f$ S
  69.     @layout_sprite.bitmap = @layout_bitmap
    # S+ K) K5 o& N0 ~* n6 z$ T6 ?( T
  70.     @layout_src_rect_back = Rect.new(0, 0,@layout_image.width, @layout_image.height)
    ) `( u( z; X; r8 p( w
  71.     @layout_bitmap.blt(0,0, @layout_image, @layout_src_rect_back)      % h, W* N+ V3 s: g5 f" e. a  Q
  72.     @layout_sprite.z = 50017 |. x; h2 u+ `1 H7 f
  73.     #HP Meter ---------------------------------------------------
    , M) A$ h# D: y! P  Z
  74.     @hp_flow = 0
    , w% @0 g3 N# ?- Y6 T1 h' t% }8 n$ f
  75.     @hp_damage_flow = 0
    : o3 f4 U6 S* N- ~
  76.     @hp_image = RPG::Cache.windowskin("S_HP_Meter")/ B# ]% U7 `; c
  77.     @hp_bitmap = Bitmap.new(@hp_image.width,@hp_image.height)3 ^1 `8 Y% u+ G: \/ n7 g& L% m) o
  78.     @hp_range = @hp_image.width / 31 R. `0 z% V. Y7 O
  79.     @hp_width = @hp_range  * @battler.hp / @battler.maxhp  , |% v& e3 [9 `6 T5 l0 a
  80.     @hp_width2 = @hp_range / 2& x$ R2 D( C/ Y5 O( L5 H2 F- |' o5 j
  81.     @hp_height = @hp_image.height / 2
    ) y$ G1 T1 W+ P# ?1 _
  82.     @hp_width_old = @hp_width
    8 O6 |. y* Y7 g
  83.     @hp_src_rect = Rect.new(@hp_range, 0, @hp_width, @hp_height)
    - K; h2 `0 [7 G
  84.     @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect) & v( J3 Y5 G3 L5 }2 t+ G& x
  85.     @hp_sprite = Sprite.new
    ' b2 }% J* T* X/ K- `
  86.     @hp_sprite.bitmap = @hp_bitmap% w- @+ q3 Z7 F
  87.     @hp_sprite.z = 5002
    9 B% j: [$ g( t+ E9 u% \. w
  88.     #SP Border -------------------------------------------------------------------, U2 r- b1 Q! p, D
  89.     @layout2_image = RPG::Cache.windowskin("S_Border_SP_Meter")1 o% ~2 S( C- \2 i" o3 c
  90.     @layout2_bitmap = Bitmap.new(@layout2_image.width,@layout2_image.height)
    8 m8 u! u% z/ U" ^# h* Y
  91.     @layout2_sprite = Sprite.new  Y7 p2 S* j6 ^
  92.     @layout2_sprite.bitmap = @layout2_bitmap
      f$ z9 p7 o3 x3 U; W
  93.     @layout2_src_rect_back = Rect.new(0, 0,@layout2_image.width, @layout2_image.height)
    , b& G: u  f; R  j
  94.     @layout2_bitmap.blt(0,0, @layout2_image, @layout2_src_rect_back)      6 Z1 _8 K% E1 g3 j) l
  95.     @layout2_sprite.z = 5001   
    5 I6 L0 Q" H" g" A0 v4 b, W% Q
  96.     #SP Meter ------------------------------------------------------4 f; U/ _% _- d
  97.     @sp_flow = 0
    ) E! e% u7 x: C: T" `6 K) ~( g
  98.     @sp_damage_flow = 0& H  r% q; F; i* A
  99.     @sp_image = RPG::Cache.windowskin("S_SP_Meter")
    # n  |! j# Z* ~. u' g
  100.     @sp_bitmap = Bitmap.new(@sp_image.width,@sp_image.height)
    ! W5 o! a- Q" Z4 {0 B- ~0 E: Q* x
  101.     @sp_range = @sp_image.width / 3" Z+ X/ y6 x/ x+ {  \
  102.     @sp_width = @sp_range  * @battler.sp / @battler.maxsp    y/ W+ I- a/ Q
  103.     @sp_width2 = @sp_range / 2
    ! k, W# t' x5 r% d' e: b/ X7 B
  104.     @sp_height = @sp_image.height / 2# r4 m2 G. D* f& R2 M
  105.     @sp_width_old = @sp_width2 J' J+ D2 l+ G( T3 S
  106.     @sp_src_rect = Rect.new(@sp_range, 0, @sp_width, @sp_height); }3 \8 X3 w5 Z2 V1 e1 s
  107.     @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)
    ' r6 R. r- u& G2 b9 ?  M: A3 d6 X
  108.     @sp_sprite = Sprite.new
    6 U$ T- H% Q; }" C# U1 `6 H+ n/ V4 e
  109.     @sp_sprite.bitmap = @sp_bitmap
    8 q$ Z  l/ K. W' S/ B0 ]* i1 [! Q
  110.     @sp_sprite.z = 5002
    . U: k+ {  G  a
  111.     update/ C$ n0 ~2 Z# s
  112.   end6 h# K! {2 w% ]
  113.   #--------------------------------------------------------------------------
    0 u2 ^0 m5 X" m# o0 R3 X, a8 R, Q1 i
  114.   # * Refresh
      c* ~' s1 d0 d$ O. Z
  115.   #--------------------------------------------------------------------------
    , \9 `. A4 T* E7 l/ z( [
  116.   def refresh
    ; b5 B  G+ y- {% a* E" i6 x
  117.     return if @old_hp == @battler.hp and @old_vis != self.visible
    % w" _7 G0 _% @+ J4 a- C% C
  118.     self.bitmap.clear
    / f  y- X  y, J& w
  119.     @old_vis = self.visible0 F! i! g7 ]6 X+ Y* C$ `7 h1 D
  120.     @old_sp = @battler.sp% d% J" ~# m  V2 H
  121.     @old_hp = @battler.hp5 O4 P  G. J. j4 o5 h% Q
  122.     hp_flow_update
    9 g1 G, `- ?! V2 I
  123.     sp_flow_update
    ; p+ Q8 ]8 {. W) U; |2 G7 Z
  124.     hud_pos_update( Q8 n2 ]( x' `* t0 H( r
  125.     visible_update
    ; B, @1 L: Z* Q8 V1 v
  126.   end
    % N& P, h; a2 J# v0 b/ K  k
  127.   #--------------------------------------------------------------------------
    # s9 b) I4 Z/ f
  128.   # * Dispose+ a' T$ q0 s# y+ G$ r
  129.   #--------------------------------------------------------------------------
    - U0 N1 }' u" k( P
  130.   def dispose
    6 l0 u0 C# u) X" _/ H# \6 A0 X
  131.     #HP Meter Dispose% E2 |" g1 r5 _" q) s
  132.     @hp_sprite.bitmap.dispose. n. s/ ]) ^  h+ h) ]# d
  133.     @hp_sprite.dispose
    ; d4 M0 P2 r' w
  134.     @hp_bitmap.dispose
    - @  |+ d* v8 v$ l
  135.     #HP Border Dispose% S! _4 s5 v. e! Y) w
  136.     @layout_sprite.bitmap.dispose
    & }% i3 j4 k7 y/ _. {) Y
  137.     @layout_sprite.dispose" j3 T( r! M3 s) R: }' m/ Z( F
  138.     @layout_bitmap.dispose: q9 u# \, W; H/ l& f, _; G
  139.     #SP Meter Dispose
    & Y) T( a2 A/ `) Y3 o: h
  140.     @sp_sprite.bitmap.dispose. N, G2 w# L) `  E3 H  t7 |
  141.     @sp_sprite.dispose2 [* ~# m- m- Y
  142.     @sp_bitmap.dispose- D5 q7 x0 A4 F; G9 \7 v- b
  143.     #SP Border Dispose
    ( M  P, D/ u0 m
  144.     @layout2_sprite.bitmap.dispose
    6 y, c9 N/ t2 }3 X5 I2 k7 @
  145.     @layout2_sprite.dispose
    ( n" p7 y- I2 p
  146.     @layout2_bitmap.dispose9 j9 ]: [$ p% z- ^+ x7 @
  147.   end  ^5 T# Q% ^! E1 @" Y" u) m
  148.   #--------------------------------------------------------------------------: w! r5 r+ f2 E3 B+ P, S; \! \
  149.   # * Update
      e4 @+ ?6 u. B, ~
  150.   #--------------------------------------------------------------------------
    7 S5 x% G: F) e1 M; d1 R
  151.   def update
    / X4 y9 m5 Z1 V2 @0 M
  152.      @battler = @enemy.battler * W& W+ Y8 e4 ~# C, q1 u' r0 c
  153.      return dispose if @enemy.dead? or $game_map.events.values[@enemy.id].nil?! P: `! L& A6 r' }
  154.      if self.visible' z- f" f) D' r4 z+ c
  155.        refresh/ y( N1 A; s( z2 G. Y  B' _9 O
  156.      else
    3 N* h7 w! }$ d5 g, V6 ~
  157.        self.bitmap.clear' R- B& _" _  w: J; m3 J+ h
  158.      end; [  c( l- m, f* ]! y0 U  w
  159.   end
    * e3 p4 a5 n  @8 ~8 G- R( {4 L, N
  160.   #--------------------------------------------------------------------------+ {6 `6 E. n+ p* K2 w- k! G8 W4 P0 a
  161.   # * Visible Update
    - y' E5 f! P* s
  162.   #--------------------------------------------------------------------------, j% q8 H! J, \
  163.   def visible_update
    - _  i- j/ ~. Q& ~7 R) ]* [0 n
  164.     if $game_switches[MOG::DISABLE_SHUD_SWITCH] == true
    ( M. Z6 O( v4 p
  165.        @hp_sprite.visible = false- W: L# B: L' d6 H+ U9 L
  166.        @layout_sprite.visible = false7 `6 _. R: {5 r2 e
  167.        @sp_sprite.visible = false
    4 C( l3 F/ m  _% E' O/ I2 _, ^. `1 q
  168.        @layout2_sprite.visible = false' |. D2 H& k6 G' r# X9 w, c, u% c
  169.     else: ^3 Q; M- s* E) d6 H
  170.        if HP_HUD == true0 r) t5 Z0 Q% {- A. e  I
  171.          @hp_sprite.visible = true
    7 `! [% _# B) {$ O5 w7 ?" g
  172.          @layout_sprite.visible = true# _9 Q: O) {! p2 `( I# V4 N$ ]" {
  173.        else1 x2 B) W* f& Q, a
  174.          @hp_sprite.visible = false
    3 ]: A) }) Y; S* [9 q
  175.          @layout_sprite.visible = false
    " D$ B- T8 o: R- e" x. {
  176.        end  
    % k- D/ w, _, G. p
  177.        if SP_HUD == true; ?+ s6 v' P5 I5 Y7 [+ {
  178.          @sp_sprite.visible = true7 j* C: R* _' L# M5 I0 W; m
  179.          @layout2_sprite.visible = true" R. W3 L1 G6 g- I! e
  180.        else
    ; ]! i7 v9 ?5 z! x
  181.          @sp_sprite.visible = false
    2 I7 z# H1 K2 R  P( v0 e7 ?
  182.          @layout2_sprite.visible = false/ v7 }# M2 V! H" @9 \/ J" |5 Z) M
  183.        end * `* ~& x$ o/ E# c' o. d
  184.      end  7 w4 j% Q- Q2 V9 W
  185.    end
    3 V+ A8 v- @+ Z7 O3 w( P! I
  186.   #--------------------------------------------------------------------------: c1 m* |5 X7 }9 A% T( |4 t" f$ D
  187.   # * Hud Pos Update% Z" [) G$ y3 {# k# [; s, l
  188.   #--------------------------------------------------------------------------
    : F+ H& V4 t2 W) b4 }
  189.   def hud_pos_update
    % F: x% m. h1 E# B6 H4 N- K
  190.     @hp_sprite.x = self.x - @hp_width2 + S_HP_METER_X1 O) b$ b0 ^: s0 Y% a
  191.     @hp_sprite.y = self.y + S_HP_METER_Y  
    ( p9 R: K5 ^2 h1 f- c1 P' {3 U
  192.     @layout_sprite.x = self.x - @hp_width2 + S_BORDER_HP_METER_X
    - ~. n* U% J" s* R5 N: r, ^
  193.     @layout_sprite.y = self.y + S_BORDER_HP_METER_Y
    5 n) z+ C# J- H7 G
  194.     @sp_sprite.x = self.x - @sp_width2 + S_SP_METER_X4 b. j) i* W0 h7 L% Z/ Z
  195.     @sp_sprite.y = self.y + S_SP_METER_Y  0 ]$ w' Z! O. Y* A% B& g
  196.     @layout2_sprite.x = self.x - @sp_width2 + S_BORDER_SP_METER_X
    6 r0 U& g- x. o' k  g5 t. a
  197.     @layout2_sprite.y = self.y + S_BORDER_SP_METER_Y       l- _. {9 W3 u7 L2 C! s
  198.   end  % u3 O1 m. E8 V( r& b! e2 k$ d
  199.   #--------------------------------------------------------------------------
    ( j, z9 z4 J$ k% E9 |. ?8 e/ t
  200.   # * Hp Flow Update
    6 L5 _3 Z" L- i5 [5 v& T
  201.   #--------------------------------------------------------------------------
    , J1 K6 o! N/ a) g4 L% k, I1 c
  202.   def hp_flow_update
    3 R6 E% [0 h' @+ Q+ c$ O* v! Z
  203.       @hp_sprite.bitmap.clear
    3 `: ^9 `9 W4 k/ d! I
  204.       @hp_width = @hp_range  * @battler.hp / @battler.maxhp  
    # n1 @2 j4 B$ i/ C; Q
  205.           #HP Damage---------------------------------, J: i# l; P- l1 @
  206.           valor = (@hp_width_old - @hp_width) * 3 / 100
    " y1 I' C' F& ~1 I! k
  207.           valor = 0.5 if valor < 1          " L* [! y/ X  {, Z8 N
  208.           if @hp_width_old != @hp_width
    9 A, p2 t6 _, X: M1 b* K; n: M
  209.           @hp_width_old -= valor if @hp_width_old > @hp_width  ; ^0 D5 S, P) t- g- @2 W4 w
  210.           if @hp_width_old < @hp_width
    1 a0 G% ]/ c0 o( W: D% F$ v
  211.              @hp_width_old = @hp_width, g/ ]  {; P# n) v7 P  V
  212.           end      
    / z* d$ d7 e6 h! v
  213.           @hp_src_rect_old = Rect.new(@hp_flow, @hp_height,@hp_width_old, @hp_height)$ {+ M1 C0 \7 ]% l$ B
  214.           @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect_old)       ' ~: X9 a7 Y: f& i6 y. ~
  215.           end        
    % g0 P' c- x' ?& F/ N4 n/ F
  216.       #HP Real------------------------------------
    " u, _. m  }" e  O0 I% ?
  217.       @hp_src_rect = Rect.new(@hp_flow, 0,@hp_width, @hp_height)
    3 o8 {* A. g. c) x
  218.       @hp_bitmap.blt(0,0, @hp_image, @hp_src_rect)         
    2 a1 k: d5 U8 H/ `
  219.       @hp_flow += 2  
    4 W8 A$ v1 T% K6 v
  220.       if @hp_flow >= @hp_image.width - @hp_range
    ; D: ?6 k, q% F
  221.          @hp_flow = 0  ) y4 s8 h# ]. L0 W+ q
  222.       end
    9 t+ K, X. Z, J
  223.   end   
    2 M+ O( ^/ I% @/ F! c9 V
  224.   #--------------------------------------------------------------------------% f! Q& ^- G2 u- T3 S. o  X# V. M
  225.   # * Sp Flow Update5 V+ w$ Y1 B% T  {: S, q
  226.   #--------------------------------------------------------------------------
    - b  Y. A' S4 p
  227.   def sp_flow_update
    . t) }" t  J7 D; r* _
  228.       @sp_sprite.bitmap.clear
    6 n; R- i0 s" \: T2 K
  229.       @sp_width = @sp_range  * @battler.sp / @battler.maxsp ! R+ Z( K. t6 D# S3 D9 i
  230.           #SP Damage---------------------------------7 z7 Y, r2 [- i
  231.           if @sp_width_old != @sp_width% i/ h2 c  J$ b1 ^. W
  232.           valor = (@sp_width_old - @sp_width) * 3 / 100
    9 b& i5 T( ^4 L7 j
  233.           valor = 0.5 if valor < 1              9 |) y2 S0 w- _% M/ Q2 U0 F
  234.           @sp_width_old -= valor if @sp_width_old > @sp_width  
    5 d0 s) M$ D! L3 I& S" g1 @: C
  235.           if @sp_width_old < @sp_width * Q. h, M5 G5 J6 x, E
  236.              @sp_width_old = @sp_width+ \$ f8 @/ d9 H
  237.           end      & a7 h4 [/ ]4 k: a
  238.           @sp_src_rect_old = Rect.new(@sp_flow, @sp_height,@sp_width_old, @sp_height); ]3 j% }7 Y7 m6 t
  239.           @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect_old)
    6 v% ?% I# ?" L: k& o$ B
  240.           end- H2 I) H+ `! @  o9 }1 q3 b
  241.       #SP Real------------------------------------
    1 M- e8 {% w% \8 a# `' G. J
  242.       @sp_src_rect = Rect.new(@sp_flow, 0,@sp_width, @sp_height), U# _6 d2 [8 T  g
  243.       @sp_bitmap.blt(0,0, @sp_image, @sp_src_rect)  q: _; g+ @, u
  244.       @sp_flow += 1  & s3 V& O/ @* b( v. ^% [& M
  245.       if @sp_flow >= @sp_image.width - @sp_range$ ?# ], F& f& e, `, A0 Z- P
  246.          @sp_flow = 0  
    - h7 P) \4 m  d4 P
  247.       end
    " H: ~( e$ H3 u9 `7 F0 g
  248.     end            
    4 l/ i* e5 u' s7 h) @' n. D. E
  249.   end" X2 N, b3 N+ |
  250. #===============================================================================
    ; ^9 F7 e7 u0 V! u; f
  251. class Sprite_Character < RPG::Sprite
    - l" }! U4 v1 g$ M; M0 {" J
  252. #-------------------------------------------------------------------------------+ p, o5 I+ I# d  ^/ `
  253.   alias :xas_emini_hud_init :initialize, h) I- @# V4 Z( Q
  254.   include MOG
    / e; K) d; w( K& p. H% n& `
  255.   def initialize(viewport, character)8 M+ V2 J8 z2 a) x  K! `6 O. c
  256.     xas_emini_hud_init(viewport, character)
    & k! j8 t; |$ {0 C
  257.     @viewport = viewport
    - @1 V" |6 V4 ?+ G1 x
  258.     return if @character.battler.nil?
    5 A: w1 ?' {0 o: @: v  Z3 s& N/ W/ A
  259.     return if XAS_BA_ENEMY::ENEMY_OBJECT.include?(@character.battler.id)3 z% _7 F7 j1 J% ^* p. {% |! d
  260.     return if XAS_BA_ENEMY::ITEM_ENEMY.include?(@character.battler.id)& a2 q. a# x! O5 ~* `- M# C' {5 G
  261.     return if @character.battler.is_a?(Game_Actor)2 M4 x0 p* \: E5 j  K
  262.     @bars = S_Hud.new(@character, @viewport): H8 ^. ~5 R. p7 T( `. ^" J5 r7 Y
  263.   end
    8 ?' e, B) {4 T6 _3 {
  264. #-------------------------------------------------------------------------------
    ( l7 L4 W) p$ z, h2 |& K: R3 O& t1 P
  265.   alias :xas_emini_hud_up :update8 W0 }, m7 @9 w% q
  266.   def update; P( U- j( b2 ?( c1 ]
  267.     xas_emini_hud_up7 O, ~; |) T( S" ~$ o' p
  268.     return if @bars.nil?
    9 d! k4 O  S- d' X( [& g
  269.     return if @bars.disposed?( U  r" ?7 m6 H1 h" G
  270.     dis = ($game_player.x - @character.x).abs + ($game_player.y - @character.y).abs
    / w% K$ a4 M& l) o, {
  271.     @bars.visible = (dis <= RANGE). f; G/ C7 \1 u# I4 N- a, E
  272.     if @bars.visible6 H. n2 e' o8 p$ q
  273.       @bars.x = @character.screen_x# - @cw / 4
    $ \$ c/ d& x! a# Q, |
  274.       @bars.y = @character.screen_y# - @ch / 4( u, h) }8 C* Y; n
  275.     end* ~7 O8 K4 r) e! B1 p- n
  276.     @bars.update
    ' ?" r- B" ]6 P9 m2 c; U: C
  277.   end
    $ o2 h5 f& \; V3 U  `8 s
  278. #-------------------------------------------------------------------------------. T) \" v) R* @4 b# V2 Y
  279.   def dispose
    $ A4 }6 l3 e( `5 [7 c
  280.     super- `/ p$ k7 F, i/ V: L* R. ?
  281.     @bars.dispose if [email protected]?! l, [- L, b5 _* l
  282.   end
    ! t# n( ?) G1 B( x( o! V% [
  283. end
    ; N+ f0 E0 ]2 K8 F  I
  284. 5 r" y- a3 x3 Q4 p1 [0 d
  285. $mog_rgss_s_hud = true
复制代码
* p2 L5 ?( F7 [' p# C* z

% {( }5 C( g7 K) A" y/ G
: Z( X* P4 O4 F/ h& e上面所說出錯的203行內容為
) ]6 P2 T" `8 X5 S% `# _@hp_sprite.bitmap.clear& B6 x) I2 L7 o

9 V5 T$ M+ D: s0 M7 o! W8 V  }想知道怎麼解決7 J2 `/ o; c. R

( t# V. Y+ A* I! Y0 s( _9 h6 l該腳本支持3.823 @5 ^% O) H( H! S, M+ I

1 d6 s! P5 M( k( G2 f下面是圖檔,要塞在Windowskin下
2 r1 p8 o( r, X0 D- _+ R) e( b/ X/ L
S_HUD_Graphic.rar (12.36 KB, 下载次数: 49) & ~7 ^1 Q+ L4 c: |, {' m9 `

, j4 l. F1 J; f7 l& n
, l+ }  F( e( l) m% ?7 ^9 D" \( l7 Z
梦石
0
星屑
672
在线时间
2184 小时
注册时间
2009-12-6
帖子
607

开拓者

2
发表于 2012-10-14 18:55:09 | 只看该作者
貌似是释放的条件不合适
2 i% G2 h+ e! P3 r结果尝试刷新了一个已经释放的图形( w8 p6 R  M9 i3 `+ [+ i
# l" s; d% W  x, ]1 ]% P
: a) `8 c& G/ b

) u$ o  [$ K/ W5 R4 |, k! Q! |) K6 \虽然没有仔细测试,但是把153行左右那个
  1.      return dispose if @enemy.dead?# or $game_map.events.values[@enemy.id].nil?
    - o% B0 H6 d+ @. J8 N4 S" w* F
复制代码
不要后面那个条件貌似就没问题了。: [/ ~. G, o/ y5 ~2 X
+ h: F+ e. E$ ^7 P6 Z( X

1 c. `! q& B5 F& Y8 U3 Q' \) t 1 n; _2 Z% r0 p) m1 r0 E
; |( U: x$ h( M7 e
往事简直不堪回首,稍微做点想做的事吧
回复 支持 反对

使用道具 举报

梦石
0
星屑
587
在线时间
1800 小时
注册时间
2009-7-12
帖子
443
3
 楼主| 发表于 2012-10-14 19:12:00 | 只看该作者
ML4455739 发表于 2012-10-14 18:55 8 q, n4 I% M5 ]* a
貌似是释放的条件不合适
' V, d" o( K8 J9 x( H; d2 B结果尝试刷新了一个已经释放的图形
" J: N, J, w+ T9 v5 B
把後面那個條件弄掉後,的確沒問題了
; K) O/ j2 t0 A1 ?1 s. x; g目前從關頭打到關尾結束都沒再彈什麼錯誤0 p3 \4 e" O! x. M$ g; j  D
非常感謝
0 C+ {% {1 I4 s6 ]7 N( u" R* B. b8 B9 Q& _8 Z
不過我是參照著別人腳本改的
" r! `+ w" A, H: N( d他寫的條件式也是那樣,但我用他的沒什麼錯誤+ [% V8 n, e/ |
不知道是怎麼回事# G! U0 R. A$ I
是跟描繪方法有關嗎?因為他的版本都是用fill_rect描繪的
6 f) h7 \" D- y我是嫌那樣太卡+不夠美觀才打算用S HUD的方法
回复 支持 反对

使用道具 举报

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

开拓者

4
发表于 2012-10-14 19:19:14 | 只看该作者
$game_map.events
, x$ P- U2 s) W7 @& z嘛..这个数组吧..我在以前试写队友的时候关注过一点
, Z; H* ~1 P% f4 N, g1 w5 [不知道XAS内部对它做了什么手脚还是为啥,
* w; o$ g( x6 X. E  I2 L( x' |$ @  `% p8 {总有那么一瞬间,没有被消灭的敌人事件也变成了nil+ N+ Y4 D$ L: r, ?  f

0 [7 L; h$ b) P" J$game_map.events.values[@enemy.id].nil?0 x/ C5 a. S& \; r" T; D: W! v
因此自然而然的返回true并符合条件把图形释放掉了5 Q4 {+ P, [1 b5 u8 t8 M; z

9 {6 x! F. ~; Y5 l  G9 kLZ应该有注意到吧,0 D4 Y: f, }) V3 K1 T
我测试的时候发现报错前几帧,图形会消失,
* M2 _% f' d0 R  V& E& L应该就是“误以为敌人被消灭”了。
- H  H9 C! Z- V0 d; w; M
3 S- {5 X& x3 {: T' s2 `受限于个人水平,至今无法找出$game_map.events的真相..3 K# z% M3 F6 a4 W9 b8 Z8 B
往事简直不堪回首,稍微做点想做的事吧
回复 支持 反对

使用道具 举报

梦石
0
星屑
587
在线时间
1800 小时
注册时间
2009-7-12
帖子
443
5
 楼主| 发表于 2012-10-14 20:06:40 | 只看该作者
ML4455739 发表于 2012-10-14 19:19 6 _3 O# f9 i$ s7 z; u. Y7 R
$game_map.events- O+ ?( b0 X& N5 Y7 T6 c% _
嘛..这个数组吧..我在以前试写队友的时候关注过一点: C" L) K8 k+ j; v. Y4 w; t9 q" \
不知道XAS内部对它做了什么手脚还是 ...

% t$ w. M+ l, g9 `! b# @5 m3 H當初我把那個條件式看了三遍,都不覺得他有什麼錯
0 Q2 O( P9 d/ F7 Q# ~原來還有這麼深奧詭異的事XD
( S9 R- h/ d7 l) w+ I* M8 r; W# d
6 E! A0 d( x4 B' Y& G: z6 {4 F錯誤發生前的確會有圖形沒顯示出來
' K' \0 E- a( F% A) f" D不過我單純以為是他把已經死的同類型敵人當對象了(因為前一張地圖都是同樣的怪...
! ?4 d4 j0 K/ o6 m$ i( ?0 j沒想到居然是詐屍了XD9 e, P5 q% K+ x! G

+ }7 ]7 i+ }/ E不曉得3.91有沒有修正這問題...
1 @% a, O# f5 p不過3.91改太多,實在有點沒動力去剖析他...=___=
回复 支持 反对

使用道具 举报

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

开拓者

6
发表于 2012-10-14 20:09:57 | 只看该作者
恩。。没问题的话姑且这样吧。8 J4 t9 G3 q) r; Z/ e
2 x2 H! g5 T2 k: e2 r
的确0 R7 l. c( K# Z
用惯3.82之后想去整3.91觉得压力甚大..
' d1 u+ g1 C0 }2 X干脆就等XAS4了。我知道那是天坑。
往事简直不堪回首,稍微做点想做的事吧
回复 支持 反对

使用道具 举报

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

使用道具 举报

双子人

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

开拓者

8
发表于 2012-10-16 12:37:42 | 只看该作者
在那个脚本里面找一下“dispose”。3 y, O# H2 l6 d7 b9 k+ q

$ Z: [6 ]. T! t$ f+ I然后加一个判断处理的。(我记得有一个disposed?)
回复 支持 反对

使用道具 举报

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

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

GMT+8, 2025-11-14 21:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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