XP 스크립트

애니메이션이 동시에 두개가 나가는 스크립트입니다
하나는 스킬에 지정한 애니메이션 하나는 스크립트에 지정한 애니메이션입니다
시간이 없어서 번역은 못함 ㅠ ㅈㅅ

주의사항은 너무 복잡한 애니메이션 두개를 동시에 하시면 렉이 걸릴수도있다는것;;

#---------------여기서부터
#==============================================================================
# 걾 ?긳깑귺긦긽?긘깈깛          by Claimh
#------------------------------------------------------------------------------
#  갋긚긌깑럊뾭렄궻뫮뤭뫀귺긦긽?긘깈깛귩볫뢣돸갃
#  갋딈?밒궸룉뿚궕뢣궘궶귡됀?맜궇귟갃
#-< 띋믦? >-------------------------------------------------------------------
# RPG::Sprite
#  initialize, dispose, update, effect?, x=(), y=()
#==============================================================================

module Double_Animation
  DOUBLE_ANIME = []
#==============================================================================
# 걽 긇긚??귽긛START
#==============================================================================
  # 스킬별 더블 애니메이션의 세팅 하심되요ㅎㅎㅎㅎㅎㅎ
  #  DOUBLE_ANIME [스킬ID] = 애니메이션ID
  DOUBLE_ANIME[1] = 0            #스킬에 지정하신 애니메이션하고 여기지정한 애니하고
  DOUBLE_ANIME[5] = 0        #같이 뜹니다 ㅎㅎ
#==============================================================================
# 걽 긇긚??귽긛END
#==============================================================================
  module_function
  #--------------------------------------------------------------------------
  # 걶 ?긳깑귺긦긽?긘깈깛궻롦벦
  #--------------------------------------------------------------------------
  def get_double_anime(skill_id)
    unless DOUBLE_ANIME[skill_id].nil?
      return DOUBLE_ANIME[skill_id]
    else
      return 0
    end
  end
end

#==============================================================================
# 걾 Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # 걶 긲깒??뛛륷 (긽귽깛긲긃?긛 긚긡긞긵 1 : 귺긏긘깈깛?뷈)
  #--------------------------------------------------------------------------
  alias update_phase4_step1_double_anime update_phase4_step1
  def update_phase4_step1
    # ?긳깑귺긦긽?긘깈깛궻룊딖돸
    @double_animation_id = 0
    update_phase4_step1_double_anime
  end
  #--------------------------------------------------------------------------
  # 걶 긚긌깑귺긏긘깈깛 뙅됈띿맟
  #--------------------------------------------------------------------------
  alias make_skill_action_result_double_anime make_skill_action_result
  def make_skill_action_result
    make_skill_action_result_double_anime
    if @phase4_step != 1
      # ?긳깑귺긦긽?긘깈깛궻롦벦궴SET
      @double_animation_id = Double_Animation.get_double_anime(@skill.id)
    end
  end
  #--------------------------------------------------------------------------
  # 걶 긲깒??뛛륷 (긽귽깛긲긃?긛 긚긡긞긵 4 : 뫮뤭뫀귺긦긽?긘깈깛)
  #--------------------------------------------------------------------------
  alias update_phase4_step4_double_anime update_phase4_step4
  def update_phase4_step4
    update_phase4_step4_double_anime
    # 뫮뤭뫀귺긦긽?긘깈깛 [?긳깑]
    for target in @target_battlers
      target.double_animation_id = @double_animation_id
    end
  end
end

#==============================================================================
# 걾 Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # 걶 뚺둎귽깛긚?깛긚빾릶
  #--------------------------------------------------------------------------
  attr_accessor :double_animation_id    # ?긳깑귺긦긽?긘깈깛 ID
  #--------------------------------------------------------------------------
  # 걶 긆긳긙긃긏긣룊딖돸
  #--------------------------------------------------------------------------
  alias init_double_anime initialize
  def initialize
    init_double_anime
    @double_animation_id = 0
  end
end

#==============================================================================
# 걾 Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # 걶 긲깒??뛛륷
  #--------------------------------------------------------------------------
  alias update_double_anime update
  def update
    # 긫긣깋?궕 nil 궻뤾뜃
    if @battler == nil
      return
    end
    # 됀럨궻뤾뜃
    if @battler_visible
      # ?긳깑귺긦긽?긘깈깛
      if @battler.double_animation_id != 0
        animation = $data_animations[@battler.double_animation_id]
        animation2(animation, @battler.animation_hit)
        @battler.double_animation_id = 0
      end
    end
    update_double_anime
  end
end


#==============================================================================
# 걾 RPG::Sprite
#==============================================================================
module RPG
  class Sprite < ::Sprite
    @@_animations2 = []
    @@_reference_count2 = {}
    # 귽긦긘긿깑룉뿚 [띋믦?]
    def initialize(viewport = nil)
      super(viewport)
      @_whiten_duration = 0
      @_appear_duration = 0
      @_escape_duration = 0
      @_collapse_duration = 0
      @_damage_duration = 0
      @_animation_duration = 0
      @_animation_duration2 = 0
      @_blink = false
    end
    # 긚긵깋귽긣뤑땸 [띋믦?]
    def dispose
      dispose_damage
      dispose_animation
      dispose_animation2
      dispose_loop_animation
      super
    end
    # 귺긦긽?긘깈깛띿맟 [?긳깑]
    def animation2(animation, hit)
      dispose_animation2
      @_animation2 = animation
      return if @_animation2 == nil
      @_animation_hit2 = hit
      @_animation_duration2 = @_animation2.frame_max
      animation_name = @_animation2.animation_name
      animation_hue = @_animation2.animation_hue
      bitmap = RPG::Cache.animation(animation_name, animation_hue)
      if @@_reference_count2.include?(bitmap)
        @@_reference_count2[bitmap] += 1
      else
        @@_reference_count2[bitmap] = 1
      end
      @_animation_sprites2 = []
      if @_animation2.position != 3 or not @@_animations2.include?(animation)
        for i in 0..15
          sprite = ::Sprite.new(self.viewport)
          sprite.bitmap = bitmap
          sprite.visible = false
          @_animation_sprites2.push(sprite)
        end
        unless @@_animations2.include?(animation)
          @@_animations2.push(animation)
        end
      end
      update_animation2
    end
    # 귺긦긽?긘깈깛뤑땸 [?긳깑]
    def dispose_animation2
      if @_animation_sprites2 != nil
        sprite = @_animation_sprites2[0]
        if sprite != nil
          @@_reference_count2[sprite.bitmap] -= 1
          if @@_reference_count2[sprite.bitmap] == 0
            sprite.bitmap.dispose
          end
        end
        for sprite in @_animation_sprites2
          sprite.dispose
        end
        @_animation_sprites2 = nil
        @_animation2 = nil
      end
    end
    # 긄긲긃긏긣뭷갎  [띋믦?]
    def effect?
      @_whiten_duration > 0 or
      @_appear_duration > 0 or
      @_escape_duration > 0 or
      @_collapse_duration > 0 or
      @_damage_duration > 0 or
      @_animation_duration > 0 or
      @_animation_duration2 > 0
    end
    # 긚긵깋귽긣?긲깒??뛛륷 [띋믦?]
    def update
      super
      if @_whiten_duration > 0
        @_whiten_duration -= 1
        self.color.alpha = 128 - (16 - @_whiten_duration) * 10
      end
      if @_appear_duration > 0
        @_appear_duration -= 1
        self.opacity = (16 - @_appear_duration) * 16
      end
      if @_escape_duration > 0
        @_escape_duration -= 1
        self.opacity = 256 - (32 - @_escape_duration) * 10
      end
      if @_collapse_duration > 0
        @_collapse_duration -= 1
        self.opacity = 256 - (48 - @_collapse_duration) * 6
      end
      if @_damage_duration > 0
        @_damage_duration -= 1
        case @_damage_duration
        when 38..39
          @_damage_sprite.y -= 4
        when 36..37
          @_damage_sprite.y -= 2
        when 34..35
          @_damage_sprite.y += 2
        when 28..33
          @_damage_sprite.y += 4
        end
        @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
        if @_damage_duration == 0
          dispose_damage
        end
      end
      if @_animation != nil and (Graphics.frame_count % 2 == 0)
        @_animation_duration -= 1
        update_animation
      end
      if @_animation2 != nil and (Graphics.frame_count % 2 == 0)
        @_animation_duration2 -= 1
        update_animation2
      end
      if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
        update_loop_animation
        @_loop_animation_index += 1
        @_loop_animation_index %= @_loop_animation.frame_max
      end
      if @_blink
        @_blink_count = (@_blink_count + 1) % 32
        if @_blink_count < 16
          alpha = (16 - @_blink_count) * 6
        else
          alpha = (@_blink_count - 16) * 6
        end
        self.color.set(255, 255, 255, alpha)
      end
      @@_animations.clear
      @@_animations2.clear
    end
    # 귺긦긽?긘깈깛뛛륷 [?긳깑]
    def update_animation2
      if @_animation_duration2 > 0
        frame_index = @_animation2.frame_max - @_animation_duration2
        cell_data = @_animation2.frames[frame_index].cell_data
        position = @_animation2.position
        animation_set_sprites(@_animation_sprites2, cell_data, position)
        for timing in @_animation2.timings
          if timing.frame == frame_index
            animation_process_timing(timing, @_animation_hit2)
          end
        end
      else
        dispose_animation2
      end
    end
    # 긚긵깋귽긣x댧뭫뛛륷  [띋믦?]
    def x=(x)
      sx = x - self.x
      if sx != 0
        if @_animation_sprites != nil
          for i in 0..15
            @_animation_sprites[i].x += sx
          end
        end
        if @_animation_sprites2 != nil
          for i in 0..15
            @_animation_sprites2[i].x += sx
          end
        end
        if @_loop_animation_sprites != nil
          for i in 0..15
            @_loop_animation_sprites[i].x += sx
          end
        end
      end
      super
    end
    # 긚긵깋귽긣y댧뭫뛛륷  [띋믦?]
    def y=(y)
      sy = y - self.y
      if sy != 0
        if @_animation_sprites != nil
          for i in 0..15
            @_animation_sprites[i].y += sy
          end
        end
        if @_animation_sprites2 != nil
          for i in 0..15
            @_animation_sprites2[i].y += sy
          end
        end
        if @_loop_animation_sprites != nil
          for i in 0..15
            @_loop_animation_sprites[i].y += sy
          end
        end
      end
      super
    end
  end
end
#-----------------끝!!

사용법
우선 찔르신후  16~19줄에 가보시면 제가 주석으로 설명을 대충 적었지만 모를수도 있으니
대충 설명더 해드립니다.
16~19줄가시면
 DOUBLE_ANIME[1] = 0  이런거 잇을건데요
여기서  DOUBLE_ANIME[스킬id(번호임)] = 애니메이션아이디(번호)
이렇게 지정하시면 됩니다.
스크립트에 지정한 애니메이션과 스킬에 지정한것이 동시에 나갑니다

출처는  Code Crush 입니다

Who's 백호

?

이상혁입니다.

http://elab.kr


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
641 메뉴 Ring menu edit (Non-SDK ver.) Alkaid 2010.09.08 1538
640 이동 및 탈것 점프 높이를 자유자제로 조절하는 스크립트!! 8 file 백호 2009.02.21 1539
639 이동 및 탈것 Maplinks - 맵연결을 쉽게 하기 1 백호 2009.02.22 1541
638 메시지 UCoder's Message System by Mr.Mo file Alkaid 2010.10.05 1542
637 넷플2.0(펌) 1 오동훈 2008.02.25 1543
636 스크립트 호출 명령어 통합버전 / Version 2.21 / 8 WMN 2008.04.06 1543
635 기타 디버그 윈도우 강화! 3 file 백호 2009.02.21 1550
634 기타 Trailing Characters ver.1 by SephirothSpawn 6 file 백호 2009.02.22 1551
633 기타 RM2kXP file 습작 2014.03.17 1551
632 전투 버틀러 색조 변경 5 file 백호 2009.02.21 1552
631 저장 Advanced Save System Edit (현재 맵을 보여주지 않음) file 백호 2009.02.22 1557
630 저장 Chaos Project Save Layout 1.4 by Fantasist, Blizzard file Alkaid 2010.10.08 1558
629 기타 데미지 출력 스크립트 예제 9 file 백호 2009.02.22 1559
628 기타 Advanced Gold Display by Dubealex (돈 액수를 세자리씩 끊어 표기) 2 Alkaid 2010.11.18 1559
627 그래픽 Composite Window Skins by PK8 (XP/VX/VXA) Alkaid 2012.08.26 1559
626 이동 및 탈것 텔레포트 마나소비량 수정하기 3 지존!! 2010.07.22 1562
625 메뉴 1-Scene CMS 1.16 by LegACy (SDK호환) 3 file 백호 2009.02.22 1564
624 메뉴 Star Ocean 3 형식으로 스테이터스 화면 변경 1 file 백호 2009.02.21 1570
623 파티 Party Changer 4.0 by Dargor (SDK2.3 호환) 3 WMN 2008.04.06 1571
622 메뉴 스테이터스 화면 from Harts Horn 2 백호 2009.02.22 1571
Board Pagination Prev 1 ... 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 52 Next
/ 52