Rikifive 24,183 May 26, 2018 Share May 26, 2018 String Input Scene Author: RikifiveFor: RPG Maker VX Acev 1.0 // 26.05.2018 (dd.mm.yyyy) Introduction A fellow developer was looking for something, so I've decided to make that silly, small script. It doesn't add much, but hopefully does its job. I was thinking, that it may come in handy for some ponies here, so why not sharing it? Description In this scene you can input a string into a variable, similarly to name input. Features Allow players to input a string and store it in a variable. Can be used to say something in message box, can be used to change names etc., can be used to ask for password codes and so on... Instructions - Paste below materials; above main. - Assign [ 5 ] variables to settings in the configuration section. - To call the input scene, use the [ script call ] from 3rd page. Example> Event Commands \ 3rd Page \ Advanced \ Script... $game_variables[21] = "What's your name?" # desc $game_variables[22] = Color.new(255,125,60) # desc color $game_variables[23] = "Eric" # string suggested by default $game_variables[24] = 30 # length (max 30) SceneManager.call(Scene_Input); Color is in [ RGB ] format; from [ 0 ] to [ 255 ] for each color. Maximum supported length is [ 30 ] characters. Putting more won't have effect. You can modify each settings as you wish, you DON'T have to include all of them each time you want to bring the input menu; for example: $game_variables[21] = "What's your name?" # desc SceneManager.call(Scene_Input); Will call a scene with the description specified above. The rest of settings will remain the same as they were set last time OR reset to defaults; see more in the configuration section in the script. /!\ WARNINGHOWEVER, you HAVE TO to configure ALL settings when calling the input menu for the FIRST TIME. Otherwise it will crash, due to lack of values, or rather, them not being formatted correctly. Screenshots Spoiler Terms of Use Can be used in commercial projects Can be modified to your needs Cannot be reposted without permission Credit me, { Rikifive } in your project Script... PASTEBIN or Spoiler =begin ======================================================================== # ** String Input Scene #------------------------------------------------------------------------------ # Author: Rikifive # Contact me: https://mlpforums.com/profile/38649-rikifive/ # Discord: Rikifive#2820 # # v 1.0 // 26.05.2018 (dd.mm.yyyy) # #---[ DESCRIPTION ]------------------------------------------------------------ # In this scene you can input a string into a variable, similar to name input. # #---[ FEATURES ]--------------------------------------------------------------- # Allow players to input a string and store it in a variable. # Can be used to say something 'custom' in the message box, # can be used to change names etc., # can be used to ask for password, codes and so on... # #---[ TERMS OF USE ]----------------------------------------------------------- # - Can be used in commercial projects # - Can be modified to your needs # - Cannot be reposted without permission # - Credit me, { Rikifive } in your project # #---[ INSTRUCTIONS ]----------------------------------------------------------- # Paste below materials; above main. # # Assign [ 5 ] variables to settings in the configuration section below. # # To call a scene, use the [ script call ] from 3rd page. # #---[ EXAMPLE ]---------------------------------------------------------------- > Event Commands / 3rd Page / Advanced / Script... - - - - - - - - - - - - - - - - - - - - - - - - - - $game_variables[21] = "What's your name?" # desc $game_variables[22] = Color.new(255,125,60) # desc color $game_variables[23] = "Eric" # string suggested by default $game_variables[24] = 30 # length (max 30) SceneManager.call(Scene_Input); - - - - - - - - - - - - - - - - - - - - - - - - - - Color is in [ RGB ] format; from [ 0 ] to [ 255 ] for each color. Maximum supported length is [ 30 ] characters. Putting more won't have effect. You can modify each settings as you wish, you DON'T have to include all of them each time you want to bring the input menu; for example: $game_variables[21] = "What's your name?" # desc SceneManager.call(Scene_Input); Will call a scene with the description specified above. The rest of settings will remain the same as they were set last time OR reset to defaults; see configuration below. /!\ WARNING HOWEVER, you HAVE TO to configure ALL settings when calling the input menu for the FIRST TIME. Otherwise it will crash, due to lack of values, or rather, them not being formatted correctly. =end #========================================================================= module RK5_VAREDIT #---------------------------------------------------------------------------- # QUICK CONFIGURATION #---------------------------------------------------------------------------- # In which variable would you like to store... # - Please assign variable ID's for each setting. - #---------------------------------------------------------------------------- # This is a variable, where the input is stored, which can be used afterwards. STRING = 20 # USER INPUT (STRING) DESC = 21 # DESCRIPTION / QUESTION COLOR = 22 # DESCRIPTION COLOR DEFAULT = 23 # STRING SUGGESTED BY DEFAULT LENGTH = 24 # MAXIMUM ALLOWED CHARACTERS #---------------------------------------------------------------------------- # Should settings be reset after use? # - Enabling that will restore defaults to specific settings after use - #---------------------------------------------------------------------------- CLEAN_DEFAULT = true # if true, it will leave default input blank after use. CLEAN_DESC = true # if true, it will leave description blank after use. RESET_COLOR = true # if true, it will reset font color to white after use. RESET_LENGTH = 12 # this is the default length that will be set after use. # put [ 0 ] to disable this and keep the last used value. #---------------------------------------------------------------------------- # For example, if all above would be enabled, after putting: # # SceneManager.call(Scene_Input); # # ~in the script call, would successfully call the input scene with default # settings. # The defaults being: # - no default string # - no description # - color set to white # - length set to specified default # # ... just input window. # # REMINDER: You can modify each settings as you wish, # you don't have to include all of them each time. # Skipping settings will either use defaults or last used values. #---------------------------------------------------------------------------- end #============================================================================== # ::: END OF CONFIGURATION ::: #============================================================================== # ** DONUT EDIT THINGS BELOW ** - Do it at your own risk. - #============================================================================== class Scene_Input < Scene_MenuBase #-------------------------------------------------------------------------- # * Start Processing #-------------------------------------------------------------------------- def start super $game_variables[RK5_VAREDIT::STRING] = $game_variables[RK5_VAREDIT::DEFAULT] @edit_window = Window_StringEdit.new @input_window = Window_NameInput.new(@edit_window) @input_window.set_handler(:ok, method(:on_input_ok)) end #-------------------------------------------------------------------------- # * Input [OK] #-------------------------------------------------------------------------- def on_input_ok $game_variables[RK5_VAREDIT::STRING] = @edit_window.string reset_settings return_scene end #-------------------------------------------------------------------------- # * Reset to Defaults #-------------------------------------------------------------------------- def reset_settings $game_variables[RK5_VAREDIT::DEFAULT] = "" if RK5_VAREDIT::CLEAN_DEFAULT $game_variables[RK5_VAREDIT::DESC] = "" if RK5_VAREDIT::CLEAN_DESC $game_variables[RK5_VAREDIT::COLOR] = Color.new(255,255,255) if RK5_VAREDIT::RESET_COLOR if RK5_VAREDIT::RESET_LENGTH != 0 $game_variables[RK5_VAREDIT::LENGTH] = RK5_VAREDIT::RESET_LENGTH end end end #============================================================================== # ** Window_StringEdit #------------------------------------------------------------------------------ # This window is used to edit the string on the input screen. # Based on NameEdit, duh! #============================================================================== class Window_StringEdit < Window_Base #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :string # input string attr_reader :index # cursor position attr_reader :max_char # maximum number of characters attr_reader :name # COMPATIBILITY PURPOSES #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize x = (Graphics.width - 360) / 2 y = (Graphics.height - (fitting_height(4) + fitting_height(9) + 8)) / 2 super(x, y, 360, fitting_height(4)) @name = "compatibility" @max_char = [$game_variables[RK5_VAREDIT::LENGTH], 30].min @string = $game_variables[RK5_VAREDIT::DEFAULT][0, @max_char] @index = @string.size deactivate refresh end #-------------------------------------------------------------------------- # * Add Text Character # ch : character to add #-------------------------------------------------------------------------- def add(ch) return false if @index >= @max_char @string += ch @index += 1 refresh return true end #-------------------------------------------------------------------------- # * Go Back One Character #-------------------------------------------------------------------------- def back return false if @index == 0 @index -= 1 @string = @string[0, @index] refresh return true end #-------------------------------------------------------------------------- # * Get Character Width #-------------------------------------------------------------------------- def char_width text_size($game_system.japanese? ? "あ" : "A").width end #-------------------------------------------------------------------------- # * Get Coordinates of Left Side for Drawing Name #-------------------------------------------------------------------------- def left input_center = contents_width / 2 input_width = (@max_char + 1) * char_width return [input_center - input_width / 2, contents_width - input_width].min end #-------------------------------------------------------------------------- # * Get Rectangle for Displaying Item #-------------------------------------------------------------------------- def item_rect(index) Rect.new(left + index * char_width, 36+10, char_width, line_height) end #-------------------------------------------------------------------------- # * Get Underline Rectangle #-------------------------------------------------------------------------- def underline_rect(index) rect = item_rect(index) rect.x += 1 rect.y += rect.height - 4 rect.width -= 2 rect.height = 2 rect end #-------------------------------------------------------------------------- # * Get Underline Color #-------------------------------------------------------------------------- def underline_color color = normal_color color.alpha = 48 color end #-------------------------------------------------------------------------- # * Draw Underline #-------------------------------------------------------------------------- def draw_underline(index) contents.fill_rect(underline_rect(index), underline_color) end #-------------------------------------------------------------------------- # * Draw Text #-------------------------------------------------------------------------- def draw_char(index) rect = item_rect(index) rect.x -= 1 rect.width += 4 change_color(normal_color) draw_text(rect, @string[index] || "") end #-------------------------------------------------------------------------- # * Draw Description #-------------------------------------------------------------------------- def draw_desc desc = $game_variables[RK5_VAREDIT::DESC] change_color($game_variables[RK5_VAREDIT::COLOR]) draw_text(0,line_height/2,contents_width,line_height,desc,1) end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh contents.clear @max_char.times {|i| draw_underline(i) } @string.size.times {|i| draw_char(i) } draw_desc cursor_rect.set(item_rect(@index)) end end Certificates Egghead stuff confirmed. This script was tested by Eric. He didn't complain. 3 Playing Genshin Impact? Come join the club! >>> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Join the herd!Sign in
Already have an account? Sign in here.
Sign In Now