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
701 기타 [신기술 체험] RM포트리스 4 file 백호 2009.02.22 1428
700 전투 KGC_AutoRecover(매턴 자동 회복) 1 백호 2009.02.22 1430
699 메뉴 Leidy's Ring Command Window 1.2 by DerVVulfman Alkaid 2012.09.09 1430
698 전투 Mr Mo DVV Addon #20~#21 Alkaid 2011.09.05 1432
697 기타 모험 일기 스크립트 2 file 백호 2009.02.21 1433
696 전투 대전게임 Fighter 1 file 백호 2009.02.21 1436
695 스킬 Grouping and Details 8.1 by DerVVulfman 4 file Alkaid 2011.04.18 1437
694 전투 Mr. Mo's ABS Ultimate by DerVVulfman Alkaid 2011.09.05 1438
693 전투 전투 난이도 설정 스크립트 file 백호 2009.02.21 1441
692 전투 배틀 리포트 화면 변경 스크립트 2 file 백호 2009.02.21 1442
691 기타 필드에서 경험치%를 표시합니다. 4 file 백호 2009.02.22 1448
690 기타 프리 윈도우 스크립트 (상입오두막 출처) 6 백호 2009.02.21 1449
689 기타 sandgolem Script Archive (RMXP SDK 1.5 이상 필요) file Alkaid 2011.02.17 1453
688 전투 SG_Batte Retry ver.4 by sandgolem 2 백호 2009.02.22 1457
687 전투 S ABS_NonSDK ver 1 file 백호 2009.02.22 1458
686 전투 Minkoff's Animated Battlers - Enhanced 13.4 by DerVVulfman 2 Alkaid 2011.07.13 1458
685 전투 추적 공격 스크립트 백호 2009.02.21 1459
684 메뉴 FF7형식의 메뉴로 변경하는 스크립트 1 file 백호 2009.02.21 1463
683 HUD 맵 이름 표시 by Slipknot@rmxp.net (SDK호환) 2 백호 2009.02.22 1463
682 장비 MultiSlots! 2.4 by DerVVulfman 2 Alkaid 2011.09.05 1466
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 52 Next
/ 52