System Options

Last Updated: 2012.01.01
Download Link
Github Link

This script replaces the “Game End” option in the Main Menu with a “System” menu where the player can adjust various settings in the game. Of them, the player can change the window colour, the volume for BGM, BGS, SFX, set automatic dashing, message text to display instantly, and speed up battles by hiding battle animations.

Advanced users can even set their own custom switches and variables to be a part of this list.

And that’s all, folks!

97 comments on “System Options

  1. Hey Yanfly, love all your scripts!
    Question for you though, is there a way within this particular script to memorize the bgm/bgs/se volume and then recall those values at a later time?

  2. This is beautiful. The tone changer is a nice step up from your original windowskin function. I do know that YEM System Game Options has a bug regarding that particular function, so this would completely negate it. :o

    • The windowskin changer was a cool feature in YEM. Maybe it can be an Add-on to this script?? But I do like the tone-changer in this script because I was confused when I kept getting a blue-tinted background every time I changed the windowskin for Ace.

      • I managed to use the variable feature of this script and Jet’s Windowskin Changer to incorporate a windowskin changer into the system options. The only difference from YEM’s windowskin changer is that I didn’t put in stuff like font, font-size, etc. It still is good with just the windowskins changing though.

      • Can you tell me how to get it to use the window skins that this one used, like this in this picture here?

        Let me know.

        Thanks in advance for this.

        I really appreciate this dude right now.

  3. I like a lot this script :P

    May you add an skin changer and confirmation message when you select “Return to title” or “End game”?

  4. Pingback: RGSS3: YEA System Options + KMS Generic Gauge Compatibility Patch « Bubble Blog

  5. I am Czech so sorry for mistakes
    and now to the point, all scripts are oc I downloaded the file extension System_Optyons.rb

    (rb) rb what is it? run when it does not open it how do I do with my someone please
    Yanfly your scripts are the best and most functional, but how do I do I do? : ((

      • Thank you for your note, notepad … hmm some do not understand how to do it could you please tell us the procedure? thank you

    • @Immortal Right-click on the rb-file. Go to “Open With…”. If you do not see Notepad in the list, click on “Choose Program”. Look for Notepad and select it (also check the “Always use the selected program…”. Click OK. It should open in Notepad.

  6. Woah, does that mean you could have a difficulty variable for how strong monsters are right in your menu just like Elder Scrolls/Fallout? If so, that’s really awesome! Well, the script is already awesome, but you get the point. :)

  7. I was wondering if it would be possible to add this to the battle menu, so that you can turn off animations and stuff mid-battle.
    Preferably under the Combat Log and mid-battle party switch.
    Thanks!

  8. Love this, but was wondering if you could add a button for “Return to Game”? Right now, the only 2visible exit options are “to the title” or “to quit”. (I know the cancel button will take someone back, but not all players may realize this. My wife didn’t when she was play testing my game. ;) Every time she pulled up the options, she’d go back to the game title and not back into the game…)

  9. I know that the solution is a simple copy/paste, but is there a way to combine this script with the ATB system script so that a player may change the wait type between the full, quart, semi, wait settings…??

  10. How would I go about setting up a “battle speed” switch? Or is there something in the Core/Battle Engines that I can switch around to slow battle actions down?

    • Copy/Paste these 5 lines of code:

      class Game_Interpreter
      def call_system_menu
      SceneManager.call(Scene_System)
      end
      end

      into the “System Options” script between the game_player class and scene_battle class. Then, just make an event which that calls this script [call_system_menu]. When that line of code in the event is processed, it will display the system menu. Sorry this is 3 months late…

  11. Well… i’m using ring menu and you have to pus command names for each command
    example:
    command_item
    command_save…

    And what is the command for that system menu?
    If its “command_game_end”, it opens game end window, not system settings window.

    So… what is the command for that system menu?

  12. Pingback: My Introduction to RPG Maker VX ACE | RPG Maker VX ACE Information

  13. First of all – Yanfly, you are brilliant. Any and all problems I’ve run into when I wanted to make something in RM were solved in this manner: Google issue -> Find Yanfly Script -> Install Yanfly script.
    Thank you for your hard work, mate!

    Now, on to the actual question.
    I’m using this script, and I’ve set up one of the custom switches to turn tutorials on/off. Sadly, the way it’s set up, tutorials default to being off… and, let’s face it, most players don’t actually head into the system menu before playing the game.
    Is there some way to set the custom switch to default to being on?

    • You have two options.

      Option 1: Copy the format of one of the 2 preset on switches (auto-dash or fast animations) and ctrl-f your way through the script copy-pasting-replacing all the way through. Estimated about 20 min. Req. Excellent deduction, logic, and skill.

      Option 2: Create auto-run event at game start that turns your tutorial switch on.

      I was almost finished doing the option 1 method when I realized there was option 2. I proceeded to take an anger nap, eat my sorrows away, pound head on keyboard incessantly, and cleanse myself in the holy waters of 3 A.M. cold shower. Not in that order.

      XS

      • While I’m not sure I’d want to tinker with the stuff beyond the “Editing anything past this point”-mark for fear of my life, I am – frankly – embarrassed I didn’t think of option 2 myself. I usually set a script to run in the beginning to get everything set in the right states. *facepalm*
        Thanks a lot, XS – with your infinite wisdom, I now know what to do.

  14. I need help. I used one of the custom switches (the first one) to turn shared experience (with non-battling party members) on. I managed the easy part of linking the menu option to the switch (4999 in this case), and I made a parallel process common event to activate when the 4999 script is on.

    Then came the hard part. I figure “If I can find a similar script call function from another YEA Script, I can just copy the format and replace the variables and strings with those linked to the SPLIT_EXP variable in the Party Engine.”

    The problem is that I can’t find a script call function (which would be similar enough to just replace strings), nor would I know where to put it (not a strong programmer). Could someone point me in the right direction? And even after I acquire this function, I’m not too sure I’d properly set it up to flip the SPLIT_EXP variable.

    It’s not a problem with the eventing, or the script call itself, I already have “flip_exp_split” ready to use (it’s currently calling nothing). I need the meaty code that does the work of flipping the experience split in the Party Engine.

    Thank you in advance, I tried to make my situation as easy to understand as possible.

  15. I am using the Fullscreen++ v1.0 by Zeus81 which allow the following functions
    #~ # Graphics.fullscreen? : return the fullscreen state.
    #~ # Graphics.fullscreen_mode : go to fullscreen mode.
    #~ # Graphics.windowed_mode : go to windowed mode.
    #~ # Graphics.toggle_fullscreen : toggle from one to the other.

    i am tring to setup a custom switch to turn it on and off, but i cannot figure out how to make it work. Ive tried taking another switch, such as autodash and coping and replacing everything as needed.. still shows no functionakkity

    could someone help?

  16. THIS is what I came here for!

    Allowing the player to choose a few things really brings every little bit of effort to fruition, in my honest opinion. Giving the player a bit more control truly is the key to happy players, and keeping your players happy is the key to having return customers!

    Downloaded about 7 of your scripts, definitely going to add your site into the credits!

    Thank you very much Yanfly! I will be coming back again soon! ^_^

  17. Is there a way to add the options you would get by hitting F1 into this? For instance, making it so it can go full screen at launch and add gamepad capabilities. I know it has the custom sections in the script, I’m just not sure what you would have to call in order for it to happen.
    Or another idea of making it a button in this menu to bring up the F1 options? Just some idea.

  18. ^^ good luck getting a response. lol.. i just gave up on this script. i couldnt get the Custom switches to work. Im not an idiot or anything.. i just cannot read ones code very well. only if i write it(new at RGSS/ruby)

  19. Pingback: Crystal Engine – Variable Windowskin | Crystal Engine

  20. Pingback: Changer la difficulté | Les trouvailles de Chaos17

    • You will need to make some additions in the following areas in this script:

      Please locate those areas and be forewarned that the line numbers will obviously change as you insert lines. I apologize in advance for the ugly layout, not many text options here. Be sure to check any formatting, essentially it is a copy/paste with slight modifications to commands already in the script.

      Under COMMANDS (Around line 107)
      On the line below where it says “:shutdown, # Shuts down the game” add the following:
      :resume_game, # Resumes the game.

      Under COMMANDS_VOCAB (Around line 180)
      Once more, on the line below “:shutdown” add the following:
      # ————————————————————————-
      :resume_game => [“Resume Game”, “None”, “None”,
      “Resume the game.”
      ], # Do not remove this.

      Under def ok_enabled? (around line 578)
      Replace the line immediately under that with the following:
      return true if [:to_title, :shutdown, :resume_game].include?(current_symbol)

      Under make_command_list (around line 584)
      After “when :to_title, :shutdown” but BEFORE else, insert the following:
      when :resume_game
      add_command(YEA::SYSTEM::COMMAND_VOCAB[command][0], command)
      @help_descriptions[command] = YEA::SYSTEM::COMMAND_VOCAB[command][3]

      Under draw_item (around line 635)
      Underneath the following:
      when :to_title, :shutdown
      draw_text(item_rect_for_text(index), command_name(index), 1)

      Insert the following:
      when :resume_game
      draw_text(item_rect_for_text(index), command_name(index), 1)

      Under create_command_window (around line 929)
      Below ” @command_window.set_handler(:shutdown, method(:command_shutdown))”

      Insert the following:
      @command_window.set_handler(:resume_game, method(:command_resume_game))

      And lastly, above end # Scene_System add the following:
      #————————————————————————–
      # command_resume_game
      #————————————————————————–
      def command_resume_game
      SceneManager.goto(Scene_Map)
      end

  21. You should upload the scripts to Amazon S3 or Cloudfront.
    Dropbox takes your links down, even if yxou didnt reach the 20gb /200gb limit.

    Happened to me once. I uploaded a 98mb file and after 2 days it was taken down.
    Only ~30 people knew i uploaded the file…

  22. For some reason all the options work except the Sound/Music settings. It used to work but now i cant turn down the sounds or music anymore. Anyone have an idea?

  23. hello ,
    Very good script !
    BUT , how to and a mesage to confirm when you select “Return to title” or “End game”?
    Please
    (Sorry for my English I’m French)
    AND you are a “CRAZY SCRIPT MAKER” ! VERY GOOD job, really !

    • Make sure you set which variable it needs to connect to.

      :variable_1 => [ —>1<—-, "Custom Variable 1", 9, 1, -100, 100,
      "Help description used for custom variable 1."
      ],

      So the script looks like this, and just change the number "1" (where I put those arrows) to whichever number variable you have created in your game. So by default this script uses the variable "001", but you've probably already used variable 001 for something else in your game.

  24. Hi to all, i don’t know if the maker of the script is here anymore but i need a little help.

    I want to put an option that allow the player to choose between see or not see the caterpillar behind him.

    There is someone that can help me?

    Thank you

  25. Hi to all,

    Simple question : Does somebody know how to modify the opatcity of this specific menu window ? For example make it totaly transparent. Sorry if I’m noob.

  26. Simple Question, I want to know if it will be possible to add the feature of being able to select String options for variable numbers, basically I want to be able to select “Easy” “Normal” “Hard” for game difficulty and each will change a variable number so that we can alter game difficulty, as it stands right now I dont think we have this option.

  27. Pingback: An Options Menu – Part II | The Iron Shoe

  28. Pingback: An Options Menu – Part III | The Iron Shoe

  29. Pingback: An Options Menu – Part IV | The Iron Shoe

  30. Pingback: RMVXA Scripting Proficiency Levels | doublexrpgmaker

  31. if you’re interesed how to make RGB window color with %
    change this at…
    line 662: rate = (tone.red + 255)/510;
    line 667: rate = (tone.green + 255)/510;
    line 672: rate = (tone.blue + 255)/510;
    and line 665, 670, 675:
    value = sprintf(“%d%%”, rate*100)
    and last jump to line 808 and 809:
    value = direction == :left ? -5.12 : 5.12
    value *= 10 if Input.press?(:A)

  32. Hey, is it at all possible for there to be like, a script call option to exist within the menu options?
    Like say for example… I have a beastieary script, And i dont want the player to have to open an item to access it, but rather open the options menu and a bestiary option to be available, and upon selecting the option, it runs the script call, thus, opening the bestiary.
    Sorry if that was a bit confusing on how i worded that… it’s a bit late at night as i type this XD

  33. If you want the select menu to skip the :blank spaces, go to your Window_Selectable and replace these defs:

    #————————————————————————–
    # * Move Cursor Down
    #————————————————————————–
    def cursor_down(wrap = false)
    if (index = col_max || (wrap && col_max == 1)
    select((index – col_max + item_max) % item_max)
    end

    if @list[index][:name] == “”
    select((index – col_max + item_max) % item_max)
    end
    end

    • Ops there was a bug with that (and it didn’t paste everything?)
      Use this instead:

      #————————————————————————–
      # * Move Cursor Down
      #————————————————————————–
      def cursor_down(wrap = false)
      if (index = col_max || (wrap && col_max == 1)
      select((index – col_max + item_max) % item_max)
      end
      return if @list.nil?
      if @list[index][:name] == “”
      select((index – col_max + item_max) % item_max)
      end
      end

      • It keeps only posting half :P here’s the other half:

        #————————————————————————–
        # * Move Cursor Up
        #————————————————————————–
        def cursor_up(wrap = false)
        if index >= col_max || (wrap && col_max == 1)
        select((index – col_max + item_max) % item_max)
        end
        return if @list.nil?
        if @list[index][:name] == “”
        select((index – col_max + item_max) % item_max)
        end
        end

  34. This is what I’m looking for! Thank you so much! I’ll give you a credit :D

    But, I edited it a little,, I just changed the “Return to Title Screen” and “Shutdown Game” to “Return to Main Menu” and “Exit Game” respectively :D

  35. I have a problem…
    I have a common event that when activated causes the bgm to change, decreasing it with 100%.
    The problem is that the bgm isn’t affected at all…
    When I go in to the System Menu it says that the BGM is at 0% but the music hasn’t stopped.

  36. How do I get into the game after being on title screen and viewing options from title screen?any help with this please will be helpful

  37. it would be awesome if the script would let you recall other menus that you have.
    I have a joypad key config menu that I would like to be called from this menu rather than have its own menu

  38. hello, it’s 2022 now but can I open the options menu with an event? I wanna open it from my title screen but I use events to make the title screen

  39. @Nguyễn Đức Tín : use script command SceneManager.call(Scene_System) in an event and the option menu will be called.

    Juste wanted to point out that if you use the slippery tiles script from Yanfly with this script, when autodashing is activated, the character will also be faster on slippery tiles, to fix it, you can add this line after line 496 :

    return false if ($imported[“YEA-SlipperyTiles”] and on_slippery_floor?)

    If you don’t know, juste replace Game_Player in the system script by this :

    class Game_Player < Game_Character

    #————————————————————————–
    # alias method: dash?
    #————————————————————————–
    alias game_player_dash_so dash?
    def dash?
    if $game_system.autodash?
    return false if @move_route_forcing
    return false if $game_map.disable_dash?
    return false if vehicle
    return false if ($imported["YEA-SlipperyTiles"] and on_slippery_floor?)
    return !Input.press?(:A)
    else
    return game_player_dash_so
    end
    end

    end # Game_Player

Leave a comment