Discovery Title Screen v0.8.3

● ARCHIVED · READ-ONLY
Started by Archduke 10 posts View original ↗
  1. Discovery Title Screen 0.8.3

    Rekx/TheRexion


    Introduction

    There really isn't much to it: it's a title screen with a few nice additions.

    Features

    - Lots of customization

    - Prettyness

    Screenshots

    ibrwaXDIfnd11p.png

    How to Use

    Just place it above main and copy the pictures into your Pictures folder.

    Demo



    Click me!

    Script

    Spoiler
    Code:
    #==============================================================================
    # Discovery Title Screen
    # Version 0.8.3
    # Author: Rekx/TheRexion
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # Instructions:
    # Place in scripts, copy over image files or create your own.
    # Customize until pleased.
    # ???
    # PROFI--Yeah, I'll just stop now...
    #
    # Credits to:
    # Johnny Mercy
    # HungrySnake for helping me do what I could not and optimizing
    # the script for easier customization with the graphics.
    #==============================================================================
    module Rekx
    module CustomTitle
    
    # Falling objects on or off
    FALLING = false
    
    # Graphics arrays. Format: ["Selected","Unselected"(,"Disabled (only continue)")]
    NEW_GAME_GRAPHICS = ["new_game","new_game_off"]
    CONTINUE_GRAPHICS = ["continue","continue_off","continue_disabled"]
    SHUTDOWN_GRAPHICS = ["exit","exit_off"]
    
    # Three options side by side or three on top of each other
    STYLE = 2 # 1 or 2
    # 1 = Left Aligned, 2 = Centered, 3 = Right Aligned. Only applies for Style 2
    PLACEMENT = 3
    
    # Would you like the title image to be wavy?
    WAVY = true
    # if WAVY is true, you can customize how it will wave
    WAVE_AMP = 20
    WAVE_LENGTH = 240
    WAVE_SPEED = 160
    
    # Fade out other commands when a certain command is selected
    FADE_OUT_COMMANDS = false
    
    # How quickly things fade in and out
    # I recommend 5 - 30, anything else is too slow or too fast.
    # Only if FADE_OUT_COMMANDS is set to true
    FADE_DURATION = 7
    
    # How fast menu items slide
    # ONLY VALID IN PLACEMENTS 1 AND 3 WITH STYLE 2 ACTIVATED
    # For this, I recommend 3 - 15.
    SLIDE_SPEED = 3
    
    # Allow sliding, or keep it static?
    ALLOW_SLIDE = false
    
    # The transparency of the menu items
    HOVER = 225
    INACTIVE = 50
    
    # These values push items down or right on the screen so you can get them
    # in just the right position for your game.
    TITLE_X = 0
    TITLE_Y = 0
    # New Game Offset, Continue Offset, Exit Offset
    COMMAND_X = [0,0,0]
    COMMAND_Y = [0,0,0]
    
    # If FADE_OUT_COMMANDS is false, then how visible will the commands be?
    COMMAND_OPA = 200
    
    end
    end
    
    #==============================================================================
    # Do not edit below this line if you don't know what you're doing!
    #==============================================================================
    class Scene_Title < Scene_Base
    include Rekx::CustomTitle
    
    def start
    super
    load_database
    create_game_objects
    check_continue
    create_command_window
    play_title_music
    $up = true
    @nBgImage = "title_bg"
    @nfall1 = "fall1"
    @nfall2 = "fall2"
    if @continue_enabled
    @command_window.index = 1
    @nnew_game = NEW_GAME_GRAPHICS[1]
    @ncontinue = CONTINUE_GRAPHICS[0]
    @nexit = SHUTDOWN_GRAPHICS[1]
    else
    @nnew_game = NEW_GAME_GRAPHICS[0]
    @ncontinue = CONTINUE_GRAPHICS[2]
    @nexit = SHUTDOWN_GRAPHICS[1]
    end
    @ntitle = "title_image"
    @ncredits = "credits"
    load_images
    end
    
    def update
    super
    current_menu_index
    update_command_window_input
    falling_animation if FALLING
    @title.update
    end
    
    def terminate
    super
    @command_window.dispose
    @bg.dispose
    @new_game.dispose
    @continue.dispose
    @exit.dispose
    @title.dispose
    @credits.dispose
    @fall1.dispose if FALLING
    @fall2.dispose if FALLING
    end
    
    alias hsnake_dtsst_ccw create_command_window unless $@
    def create_command_window
    hsnake_dtsst_ccw
    @command_window.opacity = 0
    @command_window.contents_opacity = 0
    end
    
    def open_command_window
    @command_window.open
    begin
    @command_window.update
    Graphics.update
    end until @command_window.openness == 255
    end
    
    def close_command_window
    @command_window.close
    begin
    @command_window.update
    Graphics.update
    end until @command_window.openness == 0
    end
    
    def update_command_window_input
    @command_window.update
    case @command_window.index
    when 0
    refresh_command_sprites(0)
    command_new_game if Input.trigger? (Input::C)
    @new_game.z = 1
    @continue.z = 0
    @exit.z = 0
    when 1
    refresh_command_sprites(1)
    command_continue if Input.trigger? (Input::C)
    @new_game.z = 0
    @continue.z = 1
    @exit.z = 0
    when 2
    refresh_command_sprites(2)
    command_shutdown if Input.trigger? (Input::C)
    @new_game.z = 0
    @continue.z = 0
    @exit.z = 1
    end
    end
    
    def refresh_command_sprites(index)
    case index
    when 0
    @new_game.bitmap = Cache.picture(NEW_GAME_GRAPHICS[0])
    if @continue_enabled
    @continue.bitmap = Cache.picture(CONTINUE_GRAPHICS[1])
    else
    @continue.bitmap = Cache.picture(CONTINUE_GRAPHICS[2])
    end
    @exit.bitmap = Cache.picture(SHUTDOWN_GRAPHICS[1])
    when 1
    if @continue_enabled
    @continue.bitmap = Cache.picture(CONTINUE_GRAPHICS[0])
    else
    @continue.bitmap = Cache.picture(CONTINUE_GRAPHICS[2])
    end
    @new_game.bitmap = Cache.picture(NEW_GAME_GRAPHICS[1])
    @exit.bitmap = Cache.picture(SHUTDOWN_GRAPHICS[1])
    when 2
    @new_game.bitmap = Cache.picture(NEW_GAME_GRAPHICS[1])
    if @continue_enabled
    @continue.bitmap = Cache.picture(CONTINUE_GRAPHICS[1])
    else
    @continue.bitmap = Cache.picture(CONTINUE_GRAPHICS[2])
    end
    @exit.bitmap = Cache.picture(SHUTDOWN_GRAPHICS[0])
    end
    end
    
    def falling_animation
    @fall2.ox += 2
    @fall2.oy -= 1
    @fall1.ox -= 1
    @fall1.oy -= 1
    end
    
    def current_menu_index
    if PLACEMENT == 1
    $MOVE = (Graphics.width / 3 - 165) - 10
    $NOMOVE = (Graphics.width / 3 - 165) + 30
    elsif PLACEMENT == 3
    $MOVE = (Graphics.width - @new_game.width - 15) + 10
    $NOMOVE = (Graphics.width - @new_game.width - 15) - 30
    else
    $NOMOVE = (Graphics.width / 3) - (@new_game.width / 3)
    $MOVE = (Graphics.width / 3) - (@new_game.width / 3)
    end
    a = HOVER
    b = INACTIVE
    case @command_window.index
    when 0
    menu_opacity(a,b, if FADE_OUT_COMMANDS
    if STYLE == 2
    menu_slide($NOMOVE,$MOVE,$MOVE) if ALLOW_SLIDE
    end
    when 1
    if FADE_OUT_COMMANDS
    if @continue_enabled
    menu_opacity(b,a,
    else
    menu_opacity(b,20,
    end
    end
    if STYLE == 2
    menu_slide($MOVE,$NOMOVE,$MOVE) if ALLOW_SLIDE
    end
    when 2
    menu_opacity(b,b,a) if FADE_OUT_COMMANDS
    if STYLE == 2
    menu_slide($MOVE,$MOVE,$NOMOVE) if ALLOW_SLIDE
    end
    end
    end
    
    def menu_opacity(a,b,c)
    FADE_DURATION.times {
    @new_game.opacity -= 1 if @new_game.opacity > a
    @new_game.opacity += 1 if @new_game.opacity < a
    @new_game.update
    break if @new_game.opacity == a
    }
    FADE_DURATION.times {
    @continue.opacity -= 1 if @continue.opacity > b
    @continue.opacity += 1 if @continue.opacity < b
    @continue.update
    break if @continue.opacity == b
    }
    FADE_DURATION.times {
    @exit.opacity -= 1 if @exit.opacity > c
    @exit.opacity += 1 if @exit.opacity < c
    @exit.update
    break if @exit.opacity == c
    }
    @title.update
    end
    
    def menu_slide(a, b, c)
    SLIDE_SPEED.times {
    @new_game.x -= 1 if @new_game.x > a
    @new_game.x += 1 if @new_game.x < a
    @new_game.update
    break if @new_game.x == a
    }
    SLIDE_SPEED.times {
    @continue.x -= 1 if @continue.x > b
    @continue.x += 1 if @continue.x < b
    @continue.update
    break if @continue.x == b
    }
    SLIDE_SPEED.times {
    @exit.x -= 1 if @exit.x > c
    @exit.x += 1 if @exit.x < c
    @exit.update
    break if @exit.x == c
    }
    end
    
    def load_images
    commands_opacity = FADE_OUT_COMMANDS ? 100 : COMMAND_OPA
    #Background
    @bg = Sprite.new
    @bg.bitmap = Cache.picture(@nBgImage)
    
    # New Game Graphic
    @new_game = Sprite.new
    @new_game.bitmap = Cache.picture(@nnew_game)
    if STYLE == 2
    @new_game.y = 288 + COMMAND_Y[0]
    if PLACEMENT == 1
    @new_game.x = ((Graphics.width / 3) - ((@new_game.width / 3) * 2)) + COMMAND_X[0]
    elsif PLACEMENT == 2
    @new_game.x = (Graphics.width / 3) - (@new_game.width / 3) + COMMAND_X[0]
    else
    @new_game.x = (((Graphics.width / 3) * 2) - (@new_game.width / 3)) + COMMAND_X[0]
    end
    elsif STYLE == 1
    @new_game.x = Graphics.width / 3 - 165
    @new_game.y = 338 + COMMAND_Y[0]
    end
    
    # Continue Graphic
    @continue = Sprite.new
    @continue.bitmap = Cache.picture(@ncontinue)
    if STYLE == 2
    @continue.y = 318 + COMMAND_Y[1]
    if PLACEMENT == 1
    @continue.x = ((Graphics.width / 3) - ((@continue.width / 3) * 2)) + COMMAND_X[1]
    elsif PLACEMENT == 2
    @continue.x = (Graphics.width / 3) - (@continue.width / 3) + COMMAND_X[1]
    else
    @continue.x = (((Graphics.width / 3) * 2) - (@continue.width / 3)) + COMMAND_X[1]
    end
    elsif STYLE == 1
    @continue.x = Graphics.width / 3 + 19
    @continue.y = 338
    end
    @continue.opacity = commands_opacity
    
    # Exit Graphic
    @exit = Sprite.new
    @exit.bitmap = Cache.picture(@nexit)
    if STYLE == 2
    #@exit.x = -10
    @exit.y = 348 + COMMAND_Y[2]
    if PLACEMENT == 1
    @exit.x = ((Graphics.width / 3) - ((@exit.width / 3) * 2)) + COMMAND_X[2]
    elsif PLACEMENT == 2
    @exit.x = (Graphics.width / 3) - (@exit.width / 3) + COMMAND_X[2]
    else
    @exit.x = (((Graphics.width / 3) * 2) - (@exit.width / 3)) + COMMAND_X[2]
    end
    elsif STYLE == 1
    @exit.x = Graphics.width - @exit.width - 15
    @exit.y = 338 + COMMAND_Y[2]
    end
    @exit.opacity = commands_opacity
    
    # Logo graphic
    @title = Sprite.new
    @title.bitmap = Cache.picture(@ntitle)
    @title.x = (Graphics.width / 2 - @title.width / 2) + TITLE_X
    @title.y = 3 + TITLE_Y
    @title.z = 10
    @title.opacity = 200
    if WAVY
    @title.wave_amp = WAVE_AMP
    @title.wave_length = WAVE_LENGTH
    @title.wave_speed = WAVE_SPEED
    end
    #Credit Image
    @credits = Sprite.new
    @credits.bitmap = Cache.picture(@ncredits)
    @credits.x = Graphics.width / 2 - (@credits.width / 2)
    @credits.y = 377
    if FALLING
    # Leaves
    @fall1 = Plane.new
    @fall1.bitmap = Cache.picture(@nfall1)
    @fall1.opacity = 130
    @fall2 = Plane.new
    @fall2.bitmap = Cache.picture(@nfall2)
    @fall2.opacity = 100
    @fall1.z = 9
    @fall2.z = 11
    end
    end
    end
    FAQ

    None, ask a question!

    Compatibility

    Incompatible with RAFAEL_SOL_MAKER's Smooth Window Opening

    Credit and Thanks

    - Rekx/TheRexion

    - Johnny Mercy

    - HungrySnake
  2. We have a problem here.

    I get this error;

    Script 'title' line 68: NameError occured.

    Undefined local variable or method 'load_database' for

    #<scene_title:0x8a9e48c @viewport=#<viewport:0x8a9e478>>
  3. Jordan said:
    We have a problem here.

    I get this error;

    Script 'title' line 68: NameError occured.

    Undefined local variable or method 'load_database' for

    #<scene_title:0x8a9e48c @viewport=#<viewport:0x8a9e478>>
    What other scripts do you have installed? It's likely that they're the problem. Try putting this script under them, or, if it is, on top of them.
  4. This sounds like a pretty decent script, but the dl to get the images is invalid.
  5. This actually provides alot more customization than I first thought. Nicely done and yea the demo link is non-existant. Solution? make your own graphics! It's not hard.
  6. Alright, I've remedied the broken link. Everything should be working now.

    @Zasian: I've tried to make it as customizable as possible, so even if multiple people use the same script, you really couldn't tell!
  7. I was expecting a Discovery Channel-style title screen.

    I was sorely disappointed.

    Nah just kidding, this is great! Very likely that I'd use it for a future project. :D
  8. Discovery Channel? I've not the slightest idea what that is.

    I'm glad you like it!
  9. Just a note: I'm taking suggestions for features, so if there is anything (within reason) you want to be able to do with it, but can't, feel free to let me know! If there aren't any feature additions, I'll just go ahead and set it to 1.0 as a finished version.