VX 스크립트

KGC 라이브러리 중에서 빼와서 설명을 덧붙였습니다.

중복이 있으면 중복이라고 댓글 써주시면 삭제하겠습니다(KGC라고 했는데 안나와서요..)

 

 

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/   ◆                  Splash Logo - KGC_TitleDirection                ◆ VX ◆
#_/   ◇                       Last Update: 2008/09/06                         ◇
#_/   ◆                    Translation by Mr. Anonymous                       ◆
#_/   ◆ KGC Site:                                                             ◆
#_/   ◆ http://f44.aaa.livedoor.jp/~ytomy/                                    ◆
#_/   ◆ Translator's Blog:                                                    ◆
#_/   ◆ http://mraprojects.wordpress.com                                      ◆
#     ◆ 타이틀 전에 로고를 띄워주는 스크립트입니다.
#_/----------------------------------------------------------------------------
#_/   This script adds a function to display a splash logo before the title
#_/  screen is displayed. A sample of this effect is provided with the demo
#_/  this script came packaged in.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
#                             ★ Customization ★
#==============================================================================

module KGC
module TitleDirection
  #                        ◆ Start Title BGM Timing ◆
  # This allows you to adjust when the title screen BGM is played.
  #   0..Before Logo  1..After Logo # 타이틀 음악이 재생될 구간을 정해주세요. 0.. 로고 나오기 전 1.. 로고가 나온 후(권장)
  BGM_TIMING = 1

  #                 ◆ Show Logo During Testplay (DEBUGGING) ◆
  # This toggle allows you to bypass the logo display when debugging. # 테스트 플레이(디버깅)에도 로고를 재생할 지 정해주세요.
  TESTPLAY_SHOW = true
 
  #                         ◆ 띄울 로고 그래픽(Graphics/System/) ◆
  #  Here, you may specify the image file you'd like to use as a logo.
  # The image must be in the "Graphics/System" folder.
  # Setting this to nil will display nothing. If set to nil, the Splash Logo
  #  Sound Effect defined below is also assumed to be nil.
  # 띄우실 로고 그림파일을 적어주세요. Graphics/System 폴더 안에 있어야 합니다.
  SPLASH_LOGO_FILE = "Logo"
 
  #                       ◆ 로고 띄울시 나오는 사운드(Audio/SE/) ◆
  # Here, you may specify a sound effect to play while the splash logo displays.
  # This can be written two ways. First, you can simply define a filename and
  #  the script automatically assumes to look in the SE folder and assign
  #  default values for volume and pitch, as such:  
  #     SPLASH_LOGO_SE = "start_logo"
  #  Or class notation, allowing for additional customization, as such:
  #   SPLASH_LOGO_SE = RPG::SE.new("start_logo", 80, 100)
  # 로고가 띄워질 시 재생될 SE파일과 음향,속도를 정하세요. Audio/SE에 있어야 합니다.
  SPLASH_LOGO_SE = RPG::SE.new("Saint6", 100, 70)
 
  #                           ◆ 로고 띄우는 방식 ◆
  #  로고를 띄우고 전환하는 방식을 선택하세요.
  #  이해를 돕기 위해 자세히 기록했습니다.
  #   0..띄우고 전환  1..왼쪽과 오른쪽에서 만남  2..안에서 밖으로 로고 빼내기
  #   3..나온 후 4방향으로 갈라짐
  SPLASH_LOGO_TYPE = 2
  end
end
#=============================================================================#
#                          ★ End Customization ★                              #
#=============================================================================#

#=================================================#
#                    IMPORT                       #
#=================================================#

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

#=================================================#

#==============================================================================
# □ Sprite_TitleLogo
#------------------------------------------------------------------------------
#   タイトル画面のロゴを扱うクラスです。
#==============================================================================

class Sprite_TitleLogo < Sprite
  attr_accessor :effect_no_out  # 消去エフェクトなし
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super
    @effect_type = 0
    @effect_duration = 0
    @effect_sprites = []
    @effect_no_out = false
  end
  #--------------------------------------------------------------------------
  # ● 破棄
  #--------------------------------------------------------------------------
  def dispose
    super
    dispose_effect_sprites
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト用スプライト破棄
  #--------------------------------------------------------------------------
  def dispose_effect_sprites
    @effect_sprites.each { |s| s.dispose }
    @effect_sprites = []
  end
  #--------------------------------------------------------------------------
  # ● Z 座標変更
  #--------------------------------------------------------------------------
  def z=(value)
    super(value)
    @effect_sprites.each { |s| s.z = value }
  end
  #--------------------------------------------------------------------------
  # ○ フェード効果
  #     dx : X 座標
  #     dy : Y 座標
  #     bitmap : 表示画像
  #--------------------------------------------------------------------------
  def effect_fade(dx, dy, bitmap)
    dispose_effect_sprites
    @effect_type = 0
    @effect_duration = 150
    # スプライト作成
    sprite = Sprite.new
    sprite.bitmap = bitmap
    # 表示位置を調整
    sprite.x = dx
    sprite.y = dy
    sprite.ox = bitmap.width / 2
    sprite.oy = bitmap.height / 2
    sprite.opacity = 0

    @effect_sprites << sprite
  end
  #--------------------------------------------------------------------------
  # ○ クロス効果
  #--------------------------------------------------------------------------
  def effect_cross(dx, dy, bitmap)
    dispose_effect_sprites
    @effect_type = 1
    @effect_duration = 150
    # スプライト作成
    sprites = [Sprite.new, Sprite.new]
    sprites[0].bitmap = bitmap
    sprites[1].bitmap = bitmap
    # 表示位置を調整
    sprites[0].x = dx - 240
    sprites[1].x = dx + 240
    sprites[0].y = dy
    sprites[1].y = dy
    sprites[0].ox = sprites[1].ox = bitmap.width / 2
    sprites[0].oy = sprites[1].oy = bitmap.height / 2
    sprites[0].opacity = 0
    sprites[1].opacity = 0

    @effect_sprites += sprites
  end
  #--------------------------------------------------------------------------
  # ○ ズーム効果
  #--------------------------------------------------------------------------
  def effect_zoom(dx, dy, bitmap)
    dispose_effect_sprites
    @effect_type = 2
    @effect_duration = 150
    # スプライト作成
    sprites = [Sprite.new, Sprite.new]
    sprites[0].bitmap = bitmap
    sprites[1].bitmap = bitmap
    # 初期設定
    sprites[0].x = sprites[1].x = dx
    sprites[0].y = sprites[1].y = dy
    sprites[0].ox = sprites[1].ox = bitmap.width / 2
    sprites[0].oy = sprites[1].oy = bitmap.height / 2
    sprites[0].zoom_x = sprites[0].zoom_y = 0.0
    sprites[1].zoom_x = sprites[1].zoom_y = 6.0
    sprites[0].opacity = sprites[1].opacity = 0

    @effect_sprites += sprites
  end
  #--------------------------------------------------------------------------
  # ○ スプラッシュ効果
  #--------------------------------------------------------------------------
  def effect_splash(dx, dy, bitmap)
    dispose_effect_sprites
    @effect_type = 3
    @effect_duration = 150
    # スプライト作成
    sprites = [Sprite.new]
    sprites[0].bitmap = bitmap
    # 初期設定
    sprites[0].ox = bitmap.width >> 1
    sprites[0].oy = bitmap.height >> 1
    sprites[0].x = dx
    sprites[0].y = dy
    sprites[0].opacity = 0
    (1..3).each { |i|
      sprites[i] = Sprite.new
      sprites[i].bitmap = bitmap
      sprites[i].ox = sprites[0].ox
      sprites[i].oy = sprites[0].oy
      sprites[i].x = dx
      sprites[i].y = dy
      sprites[i].opacity = 255
      sprites[i].visible = false
    }

    @effect_sprites += sprites
  end
  #--------------------------------------------------------------------------
  # ○ スプラッシュイン効果
  #--------------------------------------------------------------------------
  def effect_splash_in(dx, dy, bitmap)
    dispose_effect_sprites
    @effect_type = 4
    @effect_duration = 41
    # スプライト作成
    sprites = [Sprite.new]
    sprites[0].bitmap = bitmap
    # 初期設定
    sprites[0].ox = bitmap.width >> 1
    sprites[0].oy = bitmap.height >> 1
    sprites[0].x = dx - 160
    sprites[0].y = dy - 160
    sprites[0].opacity = 0
    (1..3).each { |i|
      sprites[i] = Sprite.new
      sprites[i].bitmap = bitmap
      sprites[i].ox = sprites[0].ox
      sprites[i].oy = sprites[0].oy
      sprites[i].x = dx
      sprites[i].y = dy
      sprites[i].opacity = 0
    }
    sprites[1].x += 160
    sprites[1].y -= 160
    sprites[2].x += 160
    sprites[2].y += 160
    sprites[3].x -= 160
    sprites[3].y += 160

    @effect_sprites += sprites
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト停止
  #--------------------------------------------------------------------------
  def stop_effect
    dispose_effect_sprites
    @effect_duration = 0
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト実行中判定
  #--------------------------------------------------------------------------
  def effect?
    return @effect_duration > 0
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super

    if @effect_duration > 0
      update_effect
    end
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト更新
  #--------------------------------------------------------------------------
  def update_effect
    @effect_duration -= 1
    case @effect_type
    when 0
      update_effect_fade
    when 1
      update_effect_cross
    when 2
      update_effect_zoom
    when 3
      update_effect_splash
    when 4
      update_effect_splash_in
    end
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト更新 : フェード
  #--------------------------------------------------------------------------
  def update_effect_fade
    case @effect_duration
    when 100...150
      @effect_sprites[0].opacity += 6
    when 30...100
      # 何もしない
    when 0...30
      unless @effect_no_out
        @effect_sprites[0].opacity -= 10
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト更新 : クロス
  #--------------------------------------------------------------------------
  def update_effect_cross
    case @effect_duration
    when 110...150
      @effect_sprites[0].x += 6
      @effect_sprites[1].x -= 6
      @effect_sprites[0].opacity += 4
      @effect_sprites[1].opacity += 4
    when 30...110
      @effect_sprites[0].opacity = 255
      @effect_sprites[1].visible = false
    when 0...30
      unless @effect_no_out
        @effect_sprites[0].opacity -= 13
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト更新 : ズーム
  #--------------------------------------------------------------------------
  def update_effect_zoom
    case @effect_duration
    when 100...150
      @effect_sprites[0].zoom_x = (@effect_sprites[0].zoom_y += 0.02)
      @effect_sprites[1].zoom_x = (@effect_sprites[1].zoom_y -= 0.1)
      @effect_sprites[0].opacity += 3
      @effect_sprites[1].opacity += 3
    when 30...100
      @effect_sprites[0].opacity = 255
      @effect_sprites[1].visible = false
    when 0...30
      unless @effect_no_out
        @effect_sprites[0].opacity -= 13
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト更新 : スプラッシュ
  #--------------------------------------------------------------------------
  def update_effect_splash
    case @effect_duration
    when 90...150
      @effect_sprites[0].opacity += 5
    when 0...60
      @effect_sprites[0].x -= 2
      @effect_sprites[0].y -= 2
      @effect_sprites[1].x += 2
      @effect_sprites[1].y -= 2
      @effect_sprites[2].x += 2
      @effect_sprites[2].y += 2
      @effect_sprites[3].x -= 2
      @effect_sprites[3].y += 2
      4.times { |j|
        @effect_sprites[j].visible = true
        @effect_sprites[j].opacity -= 5
      }
    end
  end
  #--------------------------------------------------------------------------
  # ○ エフェクト更新 : スプラッシュイン
  #--------------------------------------------------------------------------
  def update_effect_splash_in
    case @effect_duration
    when 1...41
      @effect_sprites[0].x += 2
      @effect_sprites[0].y += 2
      @effect_sprites[1].x -= 2
      @effect_sprites[1].y += 2
      @effect_sprites[2].x -= 2
      @effect_sprites[2].y -= 2
      @effect_sprites[3].x += 2
      @effect_sprites[3].y -= 2
      4.times { |j|
        @effect_sprites[j].opacity += 3
      }
    when 0
      @effect_sprites[0].opacity = 255
      (1..3).each { |i|
        @effect_sprites[i].visible = false
      }
    end
  end
end

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

#==============================================================================
# ■ Scene_Title
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias start_KGC_TitleDirection start
  def start
    show_splash_logo

    start_KGC_TitleDirection
  end
  #--------------------------------------------------------------------------
  # ○ スプラッシュロゴ表示
  #--------------------------------------------------------------------------
  def show_splash_logo
    return if $__splash_logo_shown
    return if $TEST && !KGC::TitleDirection::TESTPLAY_SHOW
    return if KGC::TitleDirection::SPLASH_LOGO_FILE == nil

    play_title_music if KGC::TitleDirection::BGM_TIMING == 0

    # ロゴ表示 SE 演奏
    if KGC::TitleDirection::SPLASH_LOGO_SE != nil
      if KGC::TitleDirection::SPLASH_LOGO_SE.is_a?(RPG::SE)
        KGC::TitleDirection::SPLASH_LOGO_SE.play
      elsif KGC::TitleDirection::SPLASH_LOGO_SE.is_a?(String)
        se = RPG::SE.new(KGC::TitleDirection::SPLASH_LOGO_SE)
        se.play
      end
    end

    # エフェクト用スプライト作成
    sprite = Sprite_TitleLogo.new
    bitmap = Cache.system(KGC::TitleDirection::SPLASH_LOGO_FILE)
    dx = Graphics.width / 2
    dy = Graphics.height / 2

    # エフェクト準備
    case KGC::TitleDirection::SPLASH_LOGO_TYPE
    when 0
      sprite.effect_fade(dx, dy, bitmap)
    when 1
      sprite.effect_cross(dx, dy, bitmap)
    when 2
      sprite.effect_zoom(dx, dy, bitmap)
    when 3
      sprite.effect_splash(dx, dy, bitmap)
    end
    # エフェクト実行
    Graphics.transition(0)
    while sprite.effect?
      Graphics.update
      Input.update
      sprite.update
      # C ボタンで中止
      if Input.trigger?(Input::C)
        sprite.stop_effect
      end
    end
    # 後始末
    sprite.dispose
    bitmap.dispose
    # トランジション準備
    Graphics.freeze

    $__splash_logo_shown = true
  end
end


Comment '5'
  • ?
    하란 2011.01.05 16:51

    괜찮은 스크립트네요 ㅎㅎ 잘 사용하겠습니다

  • ?
    시트르산 2011.01.14 17:05

    저도 썼었던 스크립트네요 ㅎㅎ

    간단하면서도 나쁘지 않은 타이틀을 쉽게 만들어주는 스크립트죠 ㅎㅎ

  • ?
    KMS 2011.01.17 18:20

    요즘 좋은 스크립트 많이 얻고 가네요...감사합니다!

  • ?
    츠코미 2011.01.21 18:43

    좋은 스크립트 잘 쓰겠습니다 ^^

  • ?
    그린2 2013.02.11 19:52
    너무 빨리 넘어가는 것 같은데 좀 느리게 할 순 없나요?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5408
437 Simple Fon Chage 3 Man... 2008.10.28 1212
436 아이템 Item Price Changer 7 Man... 2008.10.28 1530
435 전투 Fomars indiviivdual battle 2 Man... 2008.10.28 1340
434 Repel Effect 1 Man... 2008.10.28 1753
433 퍼스 스크립트 5 Man... 2008.10.28 1679
432 Direction Movement Style 4 Man... 2008.10.28 1719
431 SephirothSpawn's Slanted Bars in VX 1.1 2 Man... 2008.10.28 1572
430 상점 Shopoholic(한글 설명) 11 Man... 2008.10.29 3185
429 장비 Disposable Ammo(또 있는 곳을 잘 읽으셔야 합니다.) 2 Man... 2008.10.29 1696
428 메뉴 Adding Extra Menu in lafia Script 2 Man... 2008.10.29 1574
427 제작도구 최대한 한글로 변혁 했음Window Maker V1.0(대박) 15 Man... 2008.10.29 4673
426 HUD Crissaegrim HUD 2.0!! 13 Man... 2008.10.29 2852
425 이름입력 모그 이름 바꾸기 한글 변역! 2 Man.... 2008.11.04 4114
424 기타 Crissaegrim Farm BETA 1.0.0 10 Man... 2008.11.22 3094
423 기타 디스크 체인져 VX!! (업데이트..) 30 file Tofuman 2008.12.02 3168
422 기타 이벤트 위치 저장 스크립트 10 Tofuman 2008.12.11 2096
421 상점 상점 무기, 방어구 능력치 비교 스크립트! 18 불독 2008.12.25 3611
420 타이틀/게임오버 타이틀 화면에 매뉴창 이동방법 5 석산 2009.01.06 2824
419 온라인 넷VX - 온라인 스크립트 29 아방스 2009.01.06 6750
418 맵/타일 VX Mode 7 스크립트!!!! 42 file Tofuman 2009.01.07 4306
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 32 Next
/ 32