Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Fullscreen Toggle Menu Option

[size=medium]Full Screen Menu Option[/size]
An RPG Maker VX script written by Dark Gaia


Introduction:
Every RPG Maker VX user knows that to toggle full screen mode you just hit Alt and Enter at the same time. But what happens when you give your game to people who aren't very familiar with RPG Maker (such as your friends and family) and they don't know this? As someone who presents their games to people outside of the RPG Maker community, I for one know that people will eventually send emails asking "how the hell do I put the game in full screen?"
This simple, plug and play script remedies that by adding a simple "Full Screen" option to your title screen menu, which will put the game into full screen upon selection.

Screenshot
Not needed. It's an extra menu option.

Instructions
Simply paste the script under Materials and above Main. Place it under any custom title systems you have installed.

Credit me if this is used. Free for use in commercial projects!

Compatibility
This script needs the original title menu window on screen to work. Thus, this script won't work with:

● MogHunter's Animated Title script
● DeadlyDan's Title Images script

It cannot work with the above two because they remove the menu window from the title screen, which this script needs.
It should work fine with most other title screen addons however, provided they use the menu window and not a custom image.

Script
Code:
 

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

# Full Screen Toggle Option

# Scripted by Dark Gaia

# For RPG Maker VX *only*

#------------------------------------------------------------------------------

# Adds an option called "Full Screen" to the Title Screen which makes the game

# switch to full screen when selected. Good for players who do not know about

# the Alt + Enter toggle (such as your non RM using friends)

#------------------------------------------------------------------------------

# Insert above Main.

# Incompatible with other scripts that alter the Title Screen.

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

 

class Scene_Title < Scene_Base

#--------------------------------------------------------------------------

# * Main Processing

#--------------------------------------------------------------------------

def main

if $BTEST # If battle test

battle_test # Start battle test

else # If normal play

super # Usual main processing

end

end

#--------------------------------------------------------------------------

# * Start processing

#--------------------------------------------------------------------------

def start

super

load_database # Load database

create_game_objects # Create game objects

check_continue # Determine if continue is enabled

create_title_graphic # Create title graphic

create_command_window # Create command window

play_title_music # Play title screen music

end

#--------------------------------------------------------------------------

# * Execute Transition

#--------------------------------------------------------------------------

def perform_transition

Graphics.transition(20)

end

#--------------------------------------------------------------------------

# * Post-Start Processing

#--------------------------------------------------------------------------

def post_start

super

open_command_window

end

#--------------------------------------------------------------------------

# * Pre-termination Processing

#--------------------------------------------------------------------------

def pre_terminate

super

close_command_window

end

#--------------------------------------------------------------------------

# * Termination Processing

#--------------------------------------------------------------------------

def terminate

super

dispose_command_window

snapshot_for_background

dispose_title_graphic

end

#--------------------------------------------------------------------------

# * Frame Update

#--------------------------------------------------------------------------

def update

super

@command_window.update

if Input.trigger?(Input::C)

case @command_window.index

when 0 #New game

command_new_game

when 1 # Continue

command_continue

when 2 # Shutdown

unless $keybd

$keybd = Win32API.new 'user32.dll', 'keybd_event', ['i', 'i', 'l', 'l'], 'v' #Recognizes keyboard

$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

when 3

command_shutdown

end

end

end

#--------------------------------------------------------------------------

# * Load Database

#--------------------------------------------------------------------------

def load_database

$data_actors = load_data("Data/Actors.rvdata")

$data_classes = load_data("Data/Classes.rvdata")

$data_skills = load_data("Data/Skills.rvdata")

$data_items = load_data("Data/Items.rvdata")

$data_weapons = load_data("Data/Weapons.rvdata")

$data_armors = load_data("Data/Armors.rvdata")

$data_enemies = load_data("Data/Enemies.rvdata")

$data_troops = load_data("Data/Troops.rvdata")

$data_states = load_data("Data/States.rvdata")

$data_animations = load_data("Data/Animations.rvdata")

$data_common_events = load_data("Data/CommonEvents.rvdata")

$data_system = load_data("Data/System.rvdata")

$data_areas = load_data("Data/Areas.rvdata")

end

#--------------------------------------------------------------------------

# * Load Battle Test Database

#--------------------------------------------------------------------------

def load_bt_database

$data_actors = load_data("Data/BT_Actors.rvdata")

$data_classes = load_data("Data/BT_Classes.rvdata")

$data_skills = load_data("Data/BT_Skills.rvdata")

$data_items = load_data("Data/BT_Items.rvdata")

$data_weapons = load_data("Data/BT_Weapons.rvdata")

$data_armors = load_data("Data/BT_Armors.rvdata")

$data_enemies = load_data("Data/BT_Enemies.rvdata")

$data_troops = load_data("Data/BT_Troops.rvdata")

$data_states = load_data("Data/BT_States.rvdata")

$data_animations = load_data("Data/BT_Animations.rvdata")

$data_common_events = load_data("Data/BT_CommonEvents.rvdata")

$data_system = load_data("Data/BT_System.rvdata")

end

#--------------------------------------------------------------------------

# * Create Game Objects

#--------------------------------------------------------------------------

def create_game_objects

$game_temp = Game_Temp.new

$game_message = Game_Message.new

$game_system = Game_System.new

$game_switches = Game_Switches.new

$game_variables = Game_Variables.new

$game_self_switches = Game_SelfSwitches.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

end

#--------------------------------------------------------------------------

# * Determine if Continue is Enabled

#--------------------------------------------------------------------------

def check_continue

@continue_enabled = (Dir.glob('Save*.rvdata').size > 0)

end

#--------------------------------------------------------------------------

# * Create Title Graphic

#--------------------------------------------------------------------------

def create_title_graphic

@sprite = Sprite.new

@sprite.bitmap = Cache.system("Title")

end

#--------------------------------------------------------------------------

# * Dispose of Title Graphic

#--------------------------------------------------------------------------

def dispose_title_graphic

@sprite.bitmap.dispose

@sprite.dispose

end

#--------------------------------------------------------------------------

# * Create Command Window

#--------------------------------------------------------------------------

def create_command_window

s1 = Vocab::new_game

s2 = Vocab::continue

s3 = "Full Screen"

s4 = Vocab::shutdown

@command_window = Window_Command.new(172, [s1, s2, s3, s4])

@command_window.x = (544 - @command_window.width) / 2

@command_window.y = 240

if @continue_enabled # If continue is enabled

@command_window.index = 1 # Move cursor over command

else # If disabled

@command_window.draw_item(1, false) # Make command semi-transparent

end

@command_window.openness = 0

@command_window.open

end

#--------------------------------------------------------------------------

# * Dispose of Command Window

#--------------------------------------------------------------------------

def dispose_command_window

@command_window.dispose

end

#--------------------------------------------------------------------------

# * Open Command Window

#--------------------------------------------------------------------------

def open_command_window

@command_window.open

begin

@command_window.update

Graphics.update

end until @command_window.openness == 255

end

#--------------------------------------------------------------------------

# * Close Command Window

#--------------------------------------------------------------------------

def close_command_window

@command_window.close

begin

@command_window.update

Graphics.update

end until @command_window.openness == 0

end

#--------------------------------------------------------------------------

# * Play Title Screen Music

#--------------------------------------------------------------------------

def play_title_music

$data_system.title_bgm.play

RPG::BGS.stop

RPG::ME.stop

end

#--------------------------------------------------------------------------

# * Check Player Start Location Existence

#--------------------------------------------------------------------------

def confirm_player_location

if $data_system.start_map_id == 0

print "Player start location not set."

exit

end

end

#--------------------------------------------------------------------------

# * Command: New Game

#--------------------------------------------------------------------------

def command_new_game

confirm_player_location

Sound.play_decision

$game_party.setup_starting_members # Initial party

$game_map.setup($data_system.start_map_id) # Initial map position

$game_player.moveto($data_system.start_x, $data_system.start_y)

$game_player.refresh

$scene = Scene_Map.new

RPG::BGM.fade(1500)

close_command_window

Graphics.fadeout(60)

Graphics.wait(40)

Graphics.frame_count = 0

RPG::BGM.stop

$game_map.autoplay

end

#--------------------------------------------------------------------------

# * Command: Continue

#--------------------------------------------------------------------------

def command_continue

if @continue_enabled

Sound.play_decision

$scene = Scene_File.new(false, true, false)

else

Sound.play_buzzer

end

end

#--------------------------------------------------------------------------

# * Command: Shutdown

#--------------------------------------------------------------------------

def command_shutdown

Sound.play_decision

RPG::BGM.fade(800)

RPG::BGS.fade(800)

RPG::ME.fade(800)

$scene = nil

end

#--------------------------------------------------------------------------

# * Battle Test

#--------------------------------------------------------------------------

def battle_test

load_bt_database # Load battle test database

create_game_objects # Create game objects

Graphics.frame_count = 0 # Initialize play time

$game_party.setup_battle_test_members

$game_troop.setup($data_system.test_troop_id)

$game_troop.can_escape = true

$game_system.battle_bgm.play

snapshot_for_background

$scene = Scene_Battle.new

end

end

 
 
@Gaia: Nice addition to the set, it's definately a very useful trigger function, and it's necessity is perfectly explained in your post. It needs some heavy aliasing though, since you replace the whole title script for no apparent reason. Just alias the few methods you actually modify, and you're widely increasing compatibility.
Actually, the way you have it right now, it won't work with any other title script, since if you put it directly above Main, it'll overwrite anything you have that's defined Scene_Title before.
If I may suggest something to max compatibility: Make the function a non-command-window one, aka a trigger check outside the @command_window checkup. Don't draw it as a new item in there either, but rather draw some text some place (some corner or edge of the screen) that states how you can switch into fullscreen by, for example, pressing the A/Shift key.

@Wyatt: This has been done before - for RMXP. ;)
 
@robin: It's not so much of a 'funny thing', considering what you posted is the actual execution of the fullscreen key presses. If you put that whereever in the code, it'll get executed. The point of this script, however, is to let the user switch back and forth between display modes in a guided, apparent way, not automatically switching to fullscreen and essentially leaving the player with the same starting position (pre-set display mode, have fun figuring the hotkey combination out if you want to change it) instead of making anything better.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top