Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Advanced Title Screen
#1
Advanced Title Screen
by Kaito
Sep 19, 2005

This is a locked, single-post thread from Creation Asylum.  Archived here to prevent its loss.
No support is given.  If you are the owner of the thread, please contact administration.


Requested by Eijin.

I was doing this for my project...But what the heck...

Features:

* Cursor instead of windowskins
* Pictures instead of text

Script:

Insert a new script under window_command, call it Window_Command2.
Code:
#==============================================================================
# ■ Window_Command
#------------------------------------------------------------------------------
#  一般的なコマンド選択を行うウィンドウです。
#==============================================================================

class Window_Command2 < Window_Selectable
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#     width    : ウィンドウの幅
#     commands : コマンド文字列の配列
#--------------------------------------------------------------------------
def initialize(width, commands)
  # コマンドの個数からウィンドウの高さを算出
  super(0, 0, width, commands.size * 32 + 32)
  @item_max = commands.size
  @commands = commands
  self.contents = Bitmap.new(width - 32, @item_max * 32)
  self.contents.font.name = $fontface
  self.contents.font.size = $fontsize
  self.windowskin=nil
  refresh
  self.index = 0
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
  self.contents.clear
  for i in 0...@item_max
    draw_item(i, normal_color)
  end
end
#--------------------------------------------------------------------------
# ● 項目の描画
#     index : 項目番号
#     color : 文字色
#--------------------------------------------------------------------------
def draw_item(index, color)
  self.contents.font.color = color
  rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
  self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  self.contents.draw_text(rect, @commands[index])
end
#--------------------------------------------------------------------------
# ● 項目の無効化
#     index : 項目番号
#--------------------------------------------------------------------------
def disable_item(index)
  draw_item(index, disabled_color)
end
end

2.Next...Replace Scene_Title with this one:

Scene_Title by Missy(Cursor) and Kaitos
Code:
#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Title
def pic_move(pic, pic_x, pic_y, speed, op_speed, max_opacity)
if pic.x <= pic_x
   pic.x += pic.x + speed > pic_x ? pic_x - pic.x : speed
 else
   pic.x -= pic.x - speed < pic_x ? pic.x - pic_x : speed
 end
 if pic.y <= pic_y
   pic.y += pic.y + speed > pic_y ? pic_y - pic.y : speed
 else
   pic.y -= pic.y - speed < pic_y ? pic.y - pic_y : speed
 end

if  pic.opacity < max_opacity
    pic.opacity += pic.opacity + op_speed < max_opacity ? op_speed : max_opacity - pic.opacity
  elsif pic.opacity > max_opacity
     pic.opacity -= pic.opacity - op_speed > max_opacity ? op_speed : pic.opacity - max_opacity
     end
end
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
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")
 $map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
  # システムオブジェクトを作成
  $game_system = Game_System.new
  # タイトルグラフィックを作成
  @sprite = Sprite.new
  @sprite.bitmap = RPG::Cache.title($data_system.title_name)
  @cursor = Sprite.new
  @cursor.bitmap = RPG::Cache.title("TitleCommand")
  @cursor.y = 90
  @cursor.x = 250
  @command= Sprite.new
  @command.bitmap = RPG::Cache.title("Title3")
  @command.y = 280
  @command.x = 240
  @command.z = 9999
  # コマンドウィンドウを作成
  s1 = ""
  s2 = ""
  s3 = ""
  @command_window = Window_Command2.new(180, [s1, s2, s3], false, true, 0)
  @command_window.back_opacity = 160
  @command_window.x = 320 - @command_window.width / 2
  @command_window.y = 288
  # セーブファイルがひとつでも存在するかどうかを調べる
  # 有効なら @continue_enabled を true、無効なら false にする
  @continue_enabled = false
  for i in 0..3
    if FileTest.exist?("Save#{i+1}.sav")
      @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
  # メインループ
  loop do
    # ゲーム画面を更新
    Graphics.update
    # 入力情報を更新
    Input.update
    # フレーム更新
    update
    # 画面が切り替わったらループを中断
    if $scene != self
      break
    end
  end
  # トランジション準備
  Graphics.freeze
  # コマンドウィンドウを解放
  @command_window.dispose
  # タイトルグラフィックを解放
  @sprite.bitmap.dispose
  @sprite.dispose
  @cursor.dispose
  @command.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
@cursor_x = @cursor.x
if @cursor.y != 300 + (@command_window.index * 32)#350
@cursor_y = 300 + (@command_window.index * 32)
pic_move(@cursor, @cursor_x, @cursor_y, (@cursor_y - @cursor.y).abs / 3.5, 0, 255)
end
@cursor.z= 110
  # コマンドウィンドウを更新
  @command_window.update
  @command_window.refresh
  @command.update
     if @continue_enabled==false
   @command_window.disable_item(1)
 end
  # C ボタンが押された場合
  if Input.trigger?(Input::C)
    # コマンドウィンドウのカーソル位置で分岐
    case @command_window.index
    when 0  # ニューゲーム
      command_new_game
    when 1  # コンティニュー
      command_continue
    when 2  # シャットダウン
      command_shutdown
    end
  end
end  #--------------------------------------------------------------------------
# ● コマンド : ニューゲーム
#--------------------------------------------------------------------------
def command_new_game
  # 決定 SE を演奏
  $game_system.se_play($data_system.decision_se)
  # BGM を停止
  Audio.bgm_fade(800)
  Audio.bgm_stop
  # プレイ時間計測用のフレームカウントをリセット
  Graphics.frame_count = 0
  # 各種ゲームオブジェクトを作成
  $game_temp          = Game_Temp.new
  $game_system        = Game_System.new
  $game_switches      = Game_Switches.new
  $game_variables     = Game_Variables.new
  $game_self_switches = Game_SelfSwitches.new
  $game_screen        = Game_Screen.new
  $game_actors        = Game_Actors.new
  $game_party         = Game_Party.new
  $game_troop         = Game_Troop.new
  $game_map           = Game_Map.new
  $game_player        = Game_Player.new
 color = Color.new(255, 255, 255, 255)
 duration = 100
 $game_screen.start_flash(color, duration)
  # 初期パーティをセットアップ
  $game_party.setup_starting_members
  # 初期位置のマップをセットアップ
  $game_map.setup($data_system.start_map_id)
  # プレイヤーを初期位置に移動
  $game_player.moveto($data_system.start_x, $data_system.start_y)
  # プレイヤーをリフレッシュ
  $game_player.refresh
  # マップに設定されている BGM と BGS の自動切り替えを実行
  $game_map.autoplay
  # マップを更新 (並列イベント実行)
  $game_map.update
  # マップ画面に切り替え
 #$scene= Scene_Bar.new(0)
  $scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# ● コマンド : コンティニュー
#--------------------------------------------------------------------------
def command_continue
  # コンティニューが無効の場合
  unless @continue_enabled
    # ブザー SE を演奏
    $game_system.se_play($data_system.buzzer_se)
    return
  end
  # 決定 SE を演奏
  $game_system.se_play($data_system.decision_se)
  # ロード画面に切り替え
  $scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# ● コマンド : シャットダウン
#--------------------------------------------------------------------------
def command_shutdown
  # 決定 SE を演奏
  $game_system.se_play($data_system.decision_se)
  # BGM、BGS、ME をフェードアウト
  Audio.bgm_fade(800)
  Audio.bgs_fade(800)
  Audio.me_fade(800)
  # シャットダウン
  $scene = nil
end
#--------------------------------------------------------------------------
# ● 戦闘テスト
#--------------------------------------------------------------------------
def battle_test
  # データベース (戦闘テスト用) をロード
  $data_actors        = load_data("Data/BT_Actors.rxdata")
  $data_classes       = load_data("Data/BT_Classes.rxdata")
  $data_skills        = load_data("Data/BT_Skills.rxdata")
  $data_items         = load_data("Data/BT_Items.rxdata")
  $data_weapons       = load_data("Data/BT_Weapons.rxdata")
  $data_armors        = load_data("Data/BT_Armors.rxdata")
  $data_enemies       = load_data("Data/BT_Enemies.rxdata")
  $data_troops        = load_data("Data/BT_Troops.rxdata")
  $data_states        = load_data("Data/BT_States.rxdata")
  $data_animations    = load_data("Data/BT_Animations.rxdata")
  $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
  $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
  $data_system        = load_data("Data/BT_System.rxdata")
  # プレイ時間計測用のフレームカウントをリセット
  Graphics.frame_count = 0
  # 各種ゲームオブジェクトを作成
  $game_temp          = Game_Temp.new
  $game_system        = Game_System.new
  $game_switches      = Game_Switches.new
  $game_variables     = Game_Variables.new
  $game_self_switches = Game_SelfSwitches.new
  $game_screen        = Game_Screen.new
  $game_actors        = Game_Actors.new
  $game_party         = Game_Party.new
  $game_troop         = Game_Troop.new
  $game_map           = Game_Map.new
  $game_player        = Game_Player.new
  # 戦闘テスト用のパーティをセットアップ
  $game_party.setup_battle_test_members
  # トループ ID、逃走可能フラグ、バトルバックを設定
  $game_temp.battle_troop_id = $data_system.test_troop_id
  $game_temp.battle_can_escape = true
  $game_map.battleback_name = $data_system.battleback_name
  # バトル開始 SE を演奏
  $game_system.se_play($data_system.battle_start_se)
  # バトル BGM を演奏
  $game_system.bgm_play($game_system.battle_bgm)
  # バトル画面に切り替え
  $scene = Scene_Battle.new
end
end


3.Okay...You're done with the script.
Next...Put these pictures in your title folder:
The Cursor:

[Image: TitleCommand.png]
Name it TitleComand.


The Text:
[Image: Title3.png]
Call it Title3.
Note: Please don't use this text. You can use it as a template...Not in your game.


Credits:
1.Kaito or kaitos(Choose which one you want.)
2.Missy
Okay...Your'e done! ^__^
}


Possibly Related Threads…
Thread Author Replies Views Last Post
  Advanced Equipment Screen Narc the Jester 0 2,449 04-04-2011, 01:00 PM
Last Post: Narc the Jester
  Advanced Menu Screen Kanon 1 3,149 11-21-2008, 01:00 PM
Last Post: Kanon
  New Personalized status screen alwayzconfuzed 0 2,422 06-04-2007, 01:00 PM
Last Post: alwayzconfuzed



Users browsing this thread: