XP 스크립트

#밑으로 스크립트.. 사용법은 주석중간에 제가 달아두었으니 쓰세요.

#중뷁이면... 자삭.


#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆다단 공격 - KGC_MultiAttack◆
#_/----------------------------------------------------------------------------
#_/ 여러 차례 효과를 적용하는 행동을 작성합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#=======================================================================
# ★ 커스터마이즈 항목 ★
#=======================================================================

module KGC
  # ◆공격 판정용SE파일명
  #  (대문자·소문자는 묻지 않는다. 확장자(extension) 불요)
  MATK_HIT_SE = "ABC" 

  #이것은 사운드 파일입니다. 애니매이션중 이걸 넣으면 그때 데미지가 나갑니다.
  #즉, 애니매이션중 ABC사운드 파일이 재생될때마다 공격이 된다는 소리죠.
  #맨 마지막에 나가는 기존 데미지 처리는 정상적으로 돌아갑니다.
  #사운드 폴더 내에 ABC파일이 없으면 안되구요, 원하시면 ABC를 바꾸시면 됩니다.
  # (물론, 그 사운드 파일이 사운드 폴더 안에 있는 한에요.)

  # ◆다단 공격시 ,1Hit마다 스테이터스 윈도우를 재묘화
  #  (쓸데없게 무겁기 때문에 , 고속화ACB이외에서는 사용하지 않는 것이 무난)
  MATK_HIT_REFRESH = false
end
#즉, 이것을 true로 바꾸면.. 렉이 발생할 수 있다는 소리입니다.
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["MultiAttack"] = true

#아직 이건 잘 모르겠네요; 위쪽에 사운드 파일과 연관이 있는것같은..데

# 이 밑으로는 데미지 처리 스크립트니 건들지 않는게 좋아요.

#==============================================================================
# ■ Sprite_Battler
#==============================================================================

class Sprite_Battler < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  alias initialize_KGC_MultiAttack initialize
  def initialize(viewport, battler = nil)
    initialize_KGC_MultiAttack(viewport, battler)

    @_damage_sprite_array, @_damage_duration_array = [], []
  end
  #--------------------------------------------------------------------------
  # ● 해방
  #--------------------------------------------------------------------------
  alias dispose_KGC_MultiAttack dispose
  def dispose
    for i in 0...@_damage_sprite_array.size
      dispose_damage(i)
    end

    dispose_KGC_MultiAttack
  end
  #--------------------------------------------------------------------------
  # ● 다단 히트 판정
  #--------------------------------------------------------------------------
  def multi_attack?
    if @_multi_attack
      @_multi_attack = false
      return true
    end
    return false
  end
  #------------------------------------------------------------------------
  # ● 데미지 스프라이트 작성
  #------------------------------------------------------------------------
  def damage(value, critical)
    @_damage_sprite_array.compact!
    @_damage_duration_array.compact!
    super
    sprite = RPG::Sprite.new
    sprite.bitmap = @_damage_sprite.bitmap.dup
    sprite.ox = @_damage_sprite.ox
    sprite.oy = @_damage_sprite.oy
    sprite.x = @_damage_sprite.x
    sprite.y = @_damage_sprite.y + @_damage_sprite_array.size * 4
    sprite.z = @_damage_sprite.z
    @_damage_sprite_array.unshift(sprite)
    @_damage_duration_array.unshift(40)
    dispose_damage(-1)
  end
  #--------------------------------------------------------------------------
  # ● 데미지 스프라이트 파기
  #--------------------------------------------------------------------------
  def dispose_damage(index = nil)
    return if index == nil
    if index >= 0 && @_damage_sprite_array[index] != nil
      @_damage_sprite_array[index].bitmap.dispose
      @_damage_sprite_array[index].dispose
      @_damage_sprite_array[index] = @_damage_duration_array[index] = nil
    elsif index < 0 && @_damage_sprite != nil
      @_damage_sprite.bitmap.dispose
      @_damage_sprite.dispose
      @_damage_sprite, @_damage_duration = nil, 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 애니메이션 실행 타이밍
  #--------------------------------------------------------------------------
  def animation_process_timing(timing, hit)
    if (timing.condition == 0) || (timing.condition == 1 && hit) ||
      (timing.condition == 2 && !hit)
      if timing.se.name != ""
        @_multi_attack |= timing.se.name.upcase == KGC::MATK_HIT_SE.upcase
      end
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  alias update_KGC_MultiAttack update
  def update
    @_multi_attack = false if Graphics.frame_count % 2 == 0

    update_KGC_MultiAttack

    if @_damage_sprite_array.size > 0
      for i in 0...@_damage_sprite_array.size
        sprite = @_damage_sprite_array[i]
        if @_damage_duration_array[i] == 0
          dispose_damage(i)
          next
        end
        @_damage_duration_array[i] -= 1
        sprite.x = self.x
        if $imported["DamageAlter"]
          if @_damage_duration_array[i] > 27
            sprite.y -= [(@_damage_duration_array[i] - 33) / 2 + 1, 1].max
          end
        else
          case @_damage_duration_array[i]
          when 38..39
            sprite.y -= 4
          when 36..37
            sprite.y -= 2
          when 34..35
            sprite.y += 2
          when 28..33
            sprite.y += 4
          end
        end
        sprite.opacity = 256 - (12 - @_damage_duration_array[i]) * 32
      end
      @_damage_sprite_array.compact!
      @_damage_duration_array.compact!
    end
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Spriteset_Battle
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ● 스프라이트 취득
  #--------------------------------------------------------------------------
  def sprites
    return @enemy_sprites + @actor_sprites
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle (분할 정의 1)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  alias update_KGC_MultiAttack update
  def update
    battler = $imported["ActiveCountBattle"] ? @action_battler : @active_battler
    if @phase4_step == 5 && @target_battlers != [] && battler != nil
      # 스테이터스 윈도우재 묘화
      @status_window.refresh if KGC::MATK_HIT_REFRESH
      for sprite in @spriteset.sprites
      # 다단 히트 판정
        next if !sprite.multi_attack? || @target_battlers.index(sprite.battler) == nil
        sprite.damage(sprite.battler.damage, sprite.battler.critical)
        case battler.current_action.kind
        when 0
          if battler.current_action.basic == 0
            sprite.battler.attack_effect(battler)
          end
        when 1
          skill = $data_skills[battler.current_action.skill_id]
          sprite.battler.skill_effect(battler, skill)
        when 2
          item = $data_skills[battler.current_action.item_id]
          sprite.battler.item_effect(item)
        end
      end
    end

    # 원의 처리를 실행
    update_KGC_MultiAttack
  end
end









컹.. 오류나시거나 중뷁이라면 댓글로.

KGC오류방지 스크립트가 필요할 수 도 있음.

만약 애니매이션 상에서 저 사운드를 6개 넣었다면..

실제 공격나가는 수는 7개입니다.

중간에 나가는 공격과 맨 마지막에 나가는 공격 하나를 합쳐서이죠.

3타 스킬을 만드시려면 사운드에 2타만 추가하시면 됩니다.

그리고 사운드 파일은.. 소리 없는걸로 하시는게 좋아요. 아니면 볼륨을 0으로 하거나 (이건 좀 귀찮겠죠?)

여기서 말하는 ABC사운드 파일이 없으면 에러납니다.

그냥 녹음기 들어가셔서 아무렇게나 녹음하고나서,

사운드파일로 저장하시면 됩니다.

무음일 경우엔 말이죠 하하..

사용법이 쉬운편이라 예제는 올리지 않겠습니다.

출처_KGC

Who's 백호

?

이상혁입니다.

http://elab.kr

Comment '10'
  • ?
    사야 시모토 2009.07.14 16:28

    액알에는 적용 안되는거 같은데요 ㅠㅠ

  • ?
    Amaster 2010.02.06 18:38

    당연하죠....이 스크립트는 액션타임배틀 전용인데...다단스킬은 액알로 하면 만들수있잖아요 ㄷㄷ;

    근데 이거 에러는 안나는데 왜 다단공격이 안되지??

    소리 입력하고 2번 공격하게 스킬에다가 해놨는데;;;

  • ?
    Amaster 2010.02.06 18:49

    아...되내요 ㅎㅎ 감사드립니다^^

    ABC 을 ATTACK12 로  이름바꿧더니 안됬던 거였구나;;

     

    그냥 ABC 사운드파일을 만들어야되는군..;;

    잘씁니다 ㅎㅎ

  • ?
    극상러브 2010.04.10 20:00

    스크립트 있어서 오류하지못할 수 있기때문에

  • profile
    star211 2010.04.16 19:54

    RATB 쓰는데 적이 공격하든 우리편이 공격하든 에러가 나네요

  • ?
    달탱이 2010.10.28 20:40

    오류,,,

  • profile
    개촙포에버 2011.06.26 19:37

    안된다...한번 때리고 마네여

  • ?
    Gora 2011.11.09 09:44

    데미지가 합산 되서 나오도록 하지는 못하나요?

  • ?
    Amaster 2011.12.18 02:56

    RTAB랑 같이쓰는데.. 79번줄에서 오류가...!!ㅜㅜ

  • ?
    날갯짓하는만렙토끼 2013.04.28 12:32
    ACB와 같이 사용하니
    다단공격이 먹통이 됩니다.
    오류는 안나는데.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
49 스킬 스킬북 스크립트 8 WMN 2008.03.17 2452
48 스킬 스킬창 업그레이드? ps인간 2009.01.23 3061
47 스킬 Skills_Consume_Hp[By: Gando] - HP를 소비하는 스킬 스크립트 4 쉴더 2009.02.21 1385
46 스킬 스킬변화를 주는 스크립트 2 백호 2009.02.21 1204
45 스킬 스킬 Learning 스크립트 1 file 백호 2009.02.21 1713
44 스킬 랜덤 스킬 스크립트 2 file 백호 2009.02.21 978
43 스킬 스킬 추가 공격 스크립트 7 file 백호 2009.02.21 1697
42 스킬 선택 스킬 스크립트 4 file 백호 2009.02.21 1631
41 스킬 패시브 스킬 (출처 RPGXP 포럼 - 후우님) 18 백호 2009.02.21 2915
40 스킬 스킬제휴 스크립트 file 백호 2009.02.21 1294
39 스킬 [KGC] Skill Grouping 백호 2009.02.21 861
» 스킬 [KGC] 다단공격 (즉, 여러번 공격하는 스킬) 10 백호 2009.02.21 2817
37 스킬 스킬 도감 1 백호 2009.02.21 1138
36 스킬 Grouping and Detail (Items/Skills) 1 file 백호 2009.02.21 839
35 스킬 스킬도감 오류 수정본 2 file 백호 2009.02.22 1340
34 스킬 스킬 업데이트 시스템 4 file 백호 2009.02.22 1644
33 스킬 약간 수정한 심플액알(크리티컬,스킬) 10 백호 2009.02.22 3836
32 스킬 Skill Shop by SephirothSpawn file 백호 2009.02.22 813
31 스킬 Trickster's Bag of Skill Effects file 백호 2009.02.22 1077
30 스킬 Skill Shop by Trickster@rmxp.org file 백호 2009.02.22 1073
Board Pagination Prev 1 2 3 Next
/ 3