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
29 스킬 [KGC]시간차스킬 스크립트 -일종의 죽음의 선고?- 1 file 백호 2009.02.22 1666
28 스킬 [KGC] 스킬습득 아이템 2 백호 2009.02.22 1290
» 스킬 [KGC] 다단공격 (즉, 여러번 공격하는 스킬) 10 백호 2009.02.21 2817
26 스킬 [KGC] Skill Grouping 백호 2009.02.21 861
25 스킬 Trickster's Bag of Skill Effects (SDK 필요) Alkaid 2012.09.17 1289
24 스킬 Trickster's Bag of Skill Effects file 백호 2009.02.22 1077
23 스킬 Skills_Consume_Hp[By: Gando] - HP를 소비하는 스킬 스크립트 4 쉴더 2009.02.21 1385
22 스킬 Skill Shop by Trickster@rmxp.org file 백호 2009.02.22 1073
21 스킬 Skill Shop by SephirothSpawn file 백호 2009.02.22 813
20 스킬 Skill Requirements by SephirothSpawn (SDK호환) file 백호 2009.02.22 763
19 스킬 SG_Skill Invoking Battle Items by sandgolem (SDK호환) 백호 2009.02.22 894
18 스킬 SG_Skill Break by sandgolem (SDK호환) 백호 2009.02.22 772
17 스킬 SG_Escape Only Skills by sandgolem (SDK호환) 백호 2009.02.22 752
16 스킬 RO Job/Skill System 2.01b by Blizzard 2 file Alkaid 2010.09.05 1862
15 스킬 Miriam's Handicrafts! 1.3 by DerVVulfman Alkaid 2012.08.26 1204
14 스킬 MicKo's Skill Tree 1.2 by DerVVulfman 2 Alkaid 2011.03.15 2010
13 스킬 KGC_SkillReflection (마법반사) 2 file 백호 2009.02.22 1476
12 스킬 KGC_SkillMessage (스킬사용메세지) 1 file 백호 2009.02.22 2081
11 스킬 KGC_HideNameSkill(명칭 비표시 스킬) 백호 2009.02.22 1122
10 스킬 KGC_CrashSkill(자폭스킬) 4 file 백호 2009.02.22 2024
Board Pagination Prev 1 2 3 Next
/ 3