XP 스크립트

아오오니처럼 만드는 스크립트입니다.

저작권에 걸린다고 하면 바로 삭제하겠습니다.

출저 : 일본의 어떤 사이트

#==============================================================================
# ★ タイトル画面編集 var 1.7 (06.7.24)  by shun
#------------------------------------------------------------------------------
#   タイトル画面を編集するスクリプトです。
#   追加機能は、以下です。
#     ・ロゴグラフィックの挿入
#     ・タイトルグラフィックのランダム表示
#     ・簡易タイトル表示(スクリプトでタイトルを画面に表示)
#     ・コンティニューを使用するかどうか
#     ・ヘルプコマンドの追加
#     ・サイトコマンドの追加(タイトル画面から任意のサイトへ)
#     ・スクリーンコマンドの追加(画面サイズ切り替え)
#     ・トランジションの長さの設定
#
#   ランダム機能を使う場合、
#     ファイル名の語尾に二桁の数字(01,02...99)を付けて下さい。
#   ヘルプはヘルプグラフィックを表示するもので、サイズは640×480です。
#==============================================================================

module SIMP
  #============================================================================
  # □ 設定
  #============================================================================
  #
  # ロゴ
  #   ファイルは、Graphics/Pictures内(ピクチャーと同様にインポート)
  #
  LOGO = ""                         # ロゴのファイル名(無記入で使用しない)
  LOGO_SE = ""                      # SEのファイル名(無記入で使用しない)
  LOGO_SE_VOLUME = 80               # SEのボリューム
  LOGO_SE_PITCH = 100               # SEのピッチ
  #
  # ランダムグラフィック機能
  #
  RANDAM = false                    # ランダム機能を使う(true)か否(false)か
  #
  # 簡易タイトル表示
  #
  TITLE_SIMPLE_TEXT = ""            # タイトル名(無記入で使用しない)
  TITLE_SIMPLE_X = 0                # X座標
  TITLE_SIMPLE_Y = 0                # Y座標(多少ズレる)
  c = Color.new(255, 255, 255, 255) # 文字の色(赤の値,緑の値,青の値,不透明度)
  TITLE_SIMPLE_COLOR = c
  TITLE_SIMPLE_SIZE = 50            # 文字のサイズ
  TITLE_SIMPLE_FONT = "돋움"   # 文字のフォント名
  #
  # コマンドウィンドウ
  #
  TITLE_SKIN = "001-Blue01"         # ウィンドウスキン(拡張子省略可能)
  TITLE_X = 320 - 192 / 2           # X座標
  TITLE_Y = 188                     # Y座標
  TITLE_WIDTH = 192                 # 横幅
  TITLE_OPACITY = 0               # ウィンドウの不透明度(0~255)
  TITLE_BACK_OPACITY = 0          # ウィンドウ背景の不透明度(0~255)
  #
  # コマンド名
  #
  NEWGAME = "New Game"          # ニューゲーム
  CONTINUE = "Continue"       # コンティニュー
  HELP = "Help"                   # ヘルプ
  SITE = "Site"                   # サイト
  SCREEN = "Screen"             # 画面サイズ切り替え
  SHUTDOWN = "Shutdown"       # シャットダウン
  #
  # コンティニュー
  #
  CONTINUE_USE = true               # 使用する(true)か否(false)か
  #
  # 画面サイズ切り替え
  #
  SCREEN_USE = false                # 使用する(true)か否(false)か
  #
  # サイトのURL
  #
  SITE_URL = ""                     # http://から記入(無記入で使用しない)
  SITE_EXIT = true                  # 選択した時にゲームを終了するか否か
  #
  # ヘルプグラフィックのファイル名
  #   Graphics/Gameovers内(ゲームオーバーと同様にインポート)
  #
  HELP_FILE = ""                    # 拡張子は省略可能(無記入で使用しない)
  #
  # トランジション
  #  (初期値は8)
  #
  TITLE_TRANSITION1 = 20       # ロゴ表示のトランジションにかけるフレーム数
  TITLE_TRANSITION2 = 20       # ロゴ消去のトランジションにかけるフレーム数
  TITLE_TRANSITION3 = 20       # タイトル表示のトランジションにかけるフレーム数
end

class Scene_Title
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    # 戦闘テストの場合
    if $BTEST
      battle_test
      return
    end   
    # データベースをロード
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    # システムオブジェクトを作成
    $game_system = Game_System.new
    # スプライトを作成
    @sprite = Sprite.new
    # ロゴ画面を作成
    unless SIMP::LOGO == ""
      @sprite.bitmap = RPG::Cache.picture(SIMP::LOGO)
      @sprite.x = (640 - @sprite.bitmap.width) / 2
      @sprite.y = (480 - @sprite.bitmap.height) / 2
      # SEを演奏
      unless SIMP::LOGO_SE == ""
        filename = "Audio/SE/" + SIMP::LOGO_SE
        Audio.se_play(filename, SIMP::LOGO_SE_VOLUME, SIMP::LOGO_SE_PITCH)
      end
      # トランジション実行
      Graphics.transition(SIMP::TITLE_TRANSITION1)
      loop do
        # ゲーム画面を更新
        Graphics.update
        # 入力情報を更新
        Input.update
        # B ボタンか C ボタンが押されたら続行
        if Input.trigger?(Input::B) or Input.trigger?(Input::C)
          # トランジション準備
          Graphics.freeze
          # ロゴグラフィックを解放
          @sprite.bitmap.dispose
          # スプライトの座標を元に戻す
          @sprite.x = @sprite.y = 0
          # トランジション実行
          Graphics.transition(SIMP::TITLE_TRANSITION2)
          # トランジション準備
          Graphics.freeze
          break
        end
      end
    end
    # ランダム機能を使う場合
    if SIMP::RANDAM
      # 元となるファイル名を取得
      size = $data_system.title_name.size - 2
      basic = $data_system.title_name[0, size]
      # ファイル数を取得
      i = 1
      loop do
        i += 1
        n = "0" + i.to_s if i < 10
        # ファイルが存在しない場合、ループを中断
        unless title_exist?(basic + n)
          break
        end
      end
      # ファイル名を決定
      n = rand(i) + 1
      n = "0" + n.to_s if n < 10
      name = basic + n
    # ランダム機能を使わない場合
    else
      name = $data_system.title_name
    end
    # タイトルグラフィックを作成
    @sprite.bitmap = RPG::Cache.title(name)
    # 簡易タイトルを作成
    unless SIMP::TITLE_SIMPLE_TEXT == ""
      x = SIMP::TITLE_SIMPLE_X
      y = SIMP::TITLE_SIMPLE_Y
      height = SIMP::TITLE_SIMPLE_SIZE + 10
      @sprite.bitmap.font.color = SIMP::TITLE_SIMPLE_COLOR
      @sprite.bitmap.font.size = SIMP::TITLE_SIMPLE_SIZE
      @sprite.bitmap.font.name = SIMP::TITLE_SIMPLE_FONT
      @sprite.bitmap.draw_text(x, y, 640, height, SIMP::TITLE_SIMPLE_TEXT)
    end
    # コマンドウィンドウを作成
    s1 = SIMP::NEWGAME
    s2 = SIMP::CONTINUE
    s3 = SIMP::HELP
    s4 = SIMP::SITE
    s5 = SIMP::SCREEN
    s6 = SIMP::SHUTDOWN
    @commands = [s1]
    # コンティニューを使う場合
    if SIMP::CONTINUE_USE
      @commands.push(s2)
    end
    # ヘルプを使う場合
    unless SIMP::HELP_FILE == ""
      @commands.push(s3)
    end
    # サイトを使う場合
    unless SIMP::SITE_URL == ""
      @commands.push(s4)
    end
    # 画面サイズ切り替えを使う場合
    if SIMP::SCREEN_USE
      @commands.push(s5)
    end
    @commands.push(s6)
    @command_window = Window_Command.new(SIMP::TITLE_WIDTH, @commands)
    @command_window.windowskin = RPG::Cache.windowskin(SIMP::TITLE_SKIN)
    @command_window.opacity = SIMP::TITLE_OPACITY
    @command_window.back_opacity = SIMP::TITLE_BACK_OPACITY
    @command_window.x = SIMP::TITLE_X
    @command_window.y = SIMP::TITLE_Y
    # コンティニュー有効判定
    # セーブファイルがひとつでも存在するかどうかを調べる
    # 有効なら @continue_enabled を true、無効なら false にする
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    # コンティニューが有効な場合、カーソルをコンティニューに合わせる
    # 無効な場合、コンティニューの文字をグレー表示にする
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    # タイトル BGM を演奏
    $game_system.bgm_play($data_system.title_bgm)
    # ME、BGS の演奏を停止
    Audio.me_stop
    Audio.bgs_stop
    # トランジション実行
    Graphics.transition(SIMP::TITLE_TRANSITION3)
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # コマンドウィンドウを解放
    @command_window.dispose
    # 簡易タイトルを解放
    @title.dispose unless SIMP::TITLE_SIMPLE_TEXT == ""
    # タイトルグラフィックを解放
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ○ タイトルグラフィックの有無
  #--------------------------------------------------------------------------
  def title_exist?(filename)
    # 読み込みテスト
    begin
      RPG::Cache.title(filename)
    rescue
      return false
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # コマンドウィンドウを更新
    @command_window.update
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # コマンドウィンドウのカーソル位置で分岐
      case @commands[@command_window.index]
      when SIMP::NEWGAME   # ニューゲーム
        command_new_game
      when SIMP::CONTINUE  # コンティニュー
        command_continue
      when SIMP::HELP      # ヘルプ
        command_help
      when SIMP::SITE      # サイト
        command_site
      when SIMP::SCREEN    # スクリーン
        command_screen
      when SIMP::SHUTDOWN  # シャットダウン
        command_shutdown
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ コマンド : ヘルプ
  #--------------------------------------------------------------------------
  def command_help
    # 決定 SE を演奏
    $game_system.se_play($data_system.decision_se)
    # ヘルプ画面に切り替え
    $scene = Scene_Help.new
  end
  #--------------------------------------------------------------------------
  # ○ コマンド : サイト
  #--------------------------------------------------------------------------
  def command_site
    # 決定 SE を演奏
    $game_system.se_play($data_system.decision_se)
    # ブラウザでサイトを開く
    Thread.start do
      system("explorer.exe", SIMP::SITE_URL)
    end
    # ゲームを終了
    exit if SIMP::SITE_EXIT
  end
  #--------------------------------------------------------------------------
  # ○ コマンド : スクリーン
  #--------------------------------------------------------------------------
  def command_screen
    # 決定 SE を演奏
    $game_system.se_play($data_system.decision_se)
    # 画面サイズ切り替え
    keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v'
    keybd.call 0xA4, 0, 0, 0
    keybd.call 13, 0, 0, 0
    keybd.call 13, 0, 2, 0
    keybd.call 0xA4, 0, 2, 0
  end
end

class Scene_Help
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def main
    # ヘルプグラフィックを作成
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.gameover(SIMP::HELP_FILE)
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ヘルプグラフィックを解放
    @sprite.bitmap.dispose
    @sprite.dispose
    # トランジション実行
    Graphics.transition
    # トランジション準備
    Graphics.freeze
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    # B ボタンが押された場合
    if Input.trigger?(Input::B)
      # キャンセル SE を演奏
      $game_system.se_play($data_system.cancel_se)
      # タイトル画面に切り替え
      $scene = Scene_Title.new
    end
  end
end

#==============================================================================
# ★ 情報
#------------------------------------------------------------------------------
#   製作
#     shun
#      HP : Simp                  (http://simp.u-abel.net)
#
#   参考
#      HP : Ambition              (http://milkey.net/~rpgxp)
#      HP : RPGTKOOLXP/RGSS Wiki  (http://tkool.web-ghost.net/wiki/wiki.cgi)
#==============================================================================

대충 적용해보니까...

SCRIPT.png

여기다 스킨을 아오오니 스킨으로 하면 더 좋죠.

예제 올려드립니다.

SCRIPT.png

음... 아무리 봐도 아오오니 스킨으로 안 하니까 어색하네...

스크립트에서 49번 줄에서 스킨을 수정할 수 있습니다.

스크립트 프로젝트.exe

 


 

Comment '43'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
1001 전투 ABS_v3액션 알피지 46 file 알피지GM 2010.03.07 5806
1000 퀘스트 퀘스트창 예제 21 지나가던사람 2009.04.05 5741
999 전투 SBABS 버전3.2 - 액알 스크립트 시스템 설명 13 아방스 2007.11.09 5685
998 SBABS 버전3.2 - 액알 스크립트 사용법 34 아방스 2007.11.09 5631
997 이벤트 클릭 시스템 [마우스 스크립트]| 36 아방스 2007.11.09 5622
996 타이틀/게임오버 타이틀 화면 메뉴 변경 24 file 백호 2009.02.22 5586
995 온라인 ORPG 여러분이 원하는 온라인 스크립트 한글화해서 다시 배포! 20 file 심영 2010.10.16 5573
994 HUD [게이지바]2.0버젼「체력,마나,경험치,직업,캐릭터,레벨,돈,맵이름」(HelloCoa2Ver2.0) 67 file 코아 코스튬 2010.10.23 5550
993 액알 스크립트 강좌용~!!!| 27 아방스 2007.11.09 5461
» 타이틀/게임오버 타이틀을 아오오니처럼 만들어보자! 43 file Tassy 2010.06.02 5427
991 온라인 온라인 스크립트 KnM 배포합니다. 43 file 뮤바보 2011.09.23 5350
990 전투 [RTAB]HP/SH/EXP 게이지바 ver 1.00 44 file 환상 러브텔 2010.05.22 5336
989 메뉴 새로운 메뉴 15 file 또라에몽 2010.07.17 5301
988 메뉴 제가추천하는 메뉴스크립트 11 file 백호 2009.02.22 5298
987 미니맵 미니맵을 표시해주는 스크립트입니다... 41 file - 하늘 - 2009.08.05 5189
986 메시지 말풍선 표시 스크립트 48 file insertend 2010.06.06 5161
985 ABM(액알)+Jindow(진도우) 3 WMN 2008.04.06 5115
984 기타 액알 30 지존!! 2010.07.26 5094
983 HUD [맵이동시 맵이름을 표시] 심플한 디자인 36 file 제로스S2 2009.08.05 5000
982 메시지 한글 채팅 스크립트 32 file こなた 2009.01.22 4947
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52