Keypad
Version: 1.0
Author: SeMcDun
Date: 10.30.11
Version History
- <Version 1.0> 2011.10.30 - Original Release
Planned Future Versions
- <Version 2.0> Add more options of displaying the number buttons.
Description
I know this could easily be done by eventing, but I wanted to make a Keypad to add some feeling
(Also more scripting experience heh)
A simple keypad script which enables the creator to have keypads with numerical locks in their game.
Key Codes are 4 digits long.
When a key code is entered correctly, a switch is turned on allowing the creator to set chests to open etc etc.
Features
- The keypad offers a different UI to the given number entering option.
Screenshots Instructions
All instructions should be near the top of the script. If there's anything you do not understand, feel free to post
I'll try help when I can.
Script
[/list]
#=begin
#===============================================================================
# Keypad VX
# v1.0
# By SeMcDun
# Started: 28/10/2011
# Last Update: 30/10/2011
#===============================================================================
#
#===============================================================================
# Version History;
#
# v1.0
#-- A keypad. Digits 0-9.
#-- Codes are 4 digits long.
#-- Entering a correct code turns ON a switch.
#===============================================================================
# HOW TO USE:
#
# Calling the script;
#-- Set your designated variable to the index of the store you wish to call.
#-- Use $scene = Scene_Keypad.new to call the keypad.
#
# Setting up a Keypad.
#-- Create a new $Keypad_Codes variable using the formula given below :)
#-- Set up an event which is to call the keypad scene.
#-- Set your designated variable ($Keypad_Variable) to the index of the
# $Keypad_Codes[x] you want to use.
#-- Call the scene.
#
#===============================================================================
# NOTE:
# If using a different Icon Set, search for "# Draw Icons" and edit x.
# draw_icon(x,y,z,enabled=true)
# This is where the number icons are drawn.
#===============================================================================
# * Module_Keypad_SeM
#===============================================================================
module Module_Keypad_SeM
#==============================================#
# Variable used when assigning a keypad a code #
#==============================================#
# If this is set to 5 you must change the variable 0005 to the number
# of Keypad Code you want to use.
$Keypad_Variable = 5
#============================================#
# This variable is the array of Keypad codes #
#============================================#
$Keypad_Codes = [[]] # Do not touch
# $Keypad_Codes[x] = ["abcd",e]
# x = Code index
# a = First digit in your code.
# b = Second digit in your code.
# c = Third digit in your code.
# d = Fourth digit in your code.
# e = Switch to be turned on.
# Edit below;
$Keypad_Codes[1] = ["1001",10]
$Keypad_Codes[2] = ["2353",11]
# Stop editing.
$Entered_Code = []
$Code_Counter = 0
end # Module_Keypad_SeM
#-------------------------------------------------------------------------------
#===============================================================================
# * Scene_Keypad
#===============================================================================
class Scene_Keypad < Scene_Base
def initialize
Sound.play_save
$Code_Counter = 1
$Entered_Code[1] = nil
$Entered_Code[2] = nil
$Entered_Code[3] = nil
$Entered_Code[4] = nil
create_windows
update
end # initialize
def update
@Keypad_product.refresh
@Keypad_UI.refresh
key_input
end # update
def refresh_Keypad
$Keypad_Cursor.refresh
end # refresh_Keypad
def key_input
if Input.trigger?(Input::C)
input_c
refresh_Keypad
return
end # if input C
if Input.trigger?(Input::B)
input_b
refresh_Keypad
return
end # if input B
if Input.trigger?(Input::UP)
input_up
refresh_Keypad
return
end # if input UP
if Input.trigger?(Input::LEFT)
input_left
refresh_Keypad
return
end # if input LEFT
if Input.trigger?(Input::DOWN)
input_down
refresh_Keypad
return
end # if input DOWN
if Input.trigger?(Input::RIGHT)
input_right
refresh_Keypad
return
end # if input RIGHT
end # key_input
def create_windows
@keypad_ui_port = Viewport.new(0,0,544,416)
@Keypad_UI = Window_Keypad.new
@Keypad_UI.viewport = @keypad_ui_port
@keypad_product_port = Viewport.new(0,0,544,416)
@keypad_product_port.z += 10
@Keypad_product = Window_Keypad_Product.new
@Keypad_product.viewport = @keypad_product_port
end # create_windows
def terminate
$Keypad_Product.dispose
$Keypad_Cursor.dispose
@Keypad_UI.dispose
@Keypad_product.dispose
=begin
$Keypad_1.dispose
$Keypad_2.dispose
$Keypad_3.dispose
$Keypad_4.dispose
$Keypad_5.dispose
$Keypad_6.dispose
$Keypad_7.dispose
$Keypad_8.dispose
$Keypad_9.dispose
$Keypad_0.dispose
=end
end # terminate
def input_b
Sound.play_load
$scene = Scene_Map.new
end # input_b
def input_left
Sound.play_cursor
if $Key_Coords_x == 0
# It's at the end. Do nothing
else
$Key_Coords_x -= 1
end #
end # input_left
def input_right
Sound.play_cursor
if $Key_Coords_x == 2
# It's at the end. Do nothing
else
$Key_Coords_x += 1
end #
end # input_right
def input_up
Sound.play_cursor
if $Key_Coords_y == 0
# It's at the end. Do nothing
else
$Key_Coords_y -= 1
end #
end # input_up
def input_down
Sound.play_cursor
if $Key_Coords_y == 3
# It's at the end. Do nothing
else
$Key_Coords_y += 1
end #
end # input_down
def input_c
if $Key_Coords_x == 0
if $Key_Coords_y == 0
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "1"
$Code_Counter += 1
end
end
end # 0,0
if $Key_Coords_x == 1
if $Key_Coords_y == 0
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "2"
$Code_Counter += 1
end
end
end # 1,0
if $Key_Coords_x == 2
if $Key_Coords_y == 0
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "3"
$Code_Counter += 1
end
end
end # 2,0
if $Key_Coords_x == 0
if $Key_Coords_y == 1
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "4"
$Code_Counter += 1
end
end
end # 0,1
if $Key_Coords_x == 1
if $Key_Coords_y == 1
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "5"
$Code_Counter += 1
end
end
end # 1,1
if $Key_Coords_x == 2
if $Key_Coords_y == 1
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "6"
$Code_Counter += 1
end
end
end # 2,1
if $Key_Coords_x == 0
if $Key_Coords_y == 2
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "7"
$Code_Counter += 1
end
end
end # 0,2
if $Key_Coords_x == 1
if $Key_Coords_y == 2
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "8"
$Code_Counter += 1
end
end
end # 1,2
if $Key_Coords_x == 2
if $Key_Coords_y == 2
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "9"
$Code_Counter += 1
end
end
end # 2,2
if $Key_Coords_x == 0
if $Key_Coords_y == 3
Sound.play_cancel
# Reset
$Code_Counter = 1
$Entered_Code[1] = nil
$Entered_Code[2] = nil
$Entered_Code[3] = nil
$Entered_Code[4] = nil
end
end # 0,3
if $Key_Coords_x == 1
if $Key_Coords_y == 3
# Check it ISN'T on the 4th number already.
if $Code_Counter == 5
# Buzzer
else
Sound.play_decision
$Entered_Code[$Code_Counter] = "0"
$Code_Counter += 1
end
end
end # 1,3
if $Key_Coords_x == 2
if $Key_Coords_y == 3
# Get the entered code.
@Player_Code = "#{$Entered_Code[1]}#{$Entered_Code[2]}#{$Entered_Code[3]}#{$Entered_Code[4]}"
@switch_finder = $Keypad_Codes[$game_variables[$Keypad_Variable]]
if @Player_Code == @switch_finder[0]
# THEY ARE THE SAME!
$game_switches[@switch_finder[1]] = true
Sound.play_recovery
$Code_Counter = 1
$Entered_Code[1] = nil
$Entered_Code[2] = nil
$Entered_Code[3] = nil
$Entered_Code[4] = nil
$scene = Scene_Map.new
else
Sound.play_buzzer
$Code_Counter = 1
$Entered_Code[1] = nil
$Entered_Code[2] = nil
$Entered_Code[3] = nil
$Entered_Code[4] = nil
end
end
end # 2,3
end # input_c
end # Scene_Keypad
#-------------------------------------------------------------------------------
#===============================================================================
# * Window_Keypad
#===============================================================================
class Window_Keypad < Window_Base
def initialize
super(218,145,128,160)
create_contents
create_sprites
refresh
end # initialize
def refresh
end # refresh
def create_sprites
=begin
# Now the keys
$Keypad_x = 0
$Keypad_y = 0
$Keypad_1 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 1
$Keypad_y = 0
$Keypad_2 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 2
$Keypad_y = 0
$Keypad_3 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 0
$Keypad_y = 1
$Keypad_4 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 1
$Keypad_y = 1
$Keypad_5 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 2
$Keypad_y = 1
$Keypad_6 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 0
$Keypad_y = 2
$Keypad_7 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 1
$Keypad_y = 2
$Keypad_8 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 2
$Keypad_y = 2
$Keypad_9 = Sprite_Keypad_Key.new(@keypad_Product_port)
$Keypad_x = 1
$Keypad_y = 3
$Keypad_0 = Sprite_Keypad_Key.new(@keypad_Product_port)
=end
$Key_Coords_x = 0
$Key_Coords_y = 0
$Keypad_Cursor = Sprite_Keypad_Select.new(@keypad_Product_port)
# Draw icons
# 1
$Keypad_x = 0
$Keypad_y = 0
draw_icon(8030,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 2
$Keypad_x = 1
$Keypad_y = 0
draw_icon(8031,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 3
$Keypad_x = 2
$Keypad_y = 0
draw_icon(8026,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 4
$Keypad_x = 0
$Keypad_y = 1
draw_icon(8027,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 5
$Keypad_x = 1
$Keypad_y = 1
draw_icon(8028,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 6
$Keypad_x = 2
$Keypad_y = 1
draw_icon(8024,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 7
$Keypad_x = 0
$Keypad_y = 2
draw_icon(8025,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 8
$Keypad_x = 1
$Keypad_y = 2
draw_icon(8010,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 9
$Keypad_x = 2
$Keypad_y = 2
draw_icon(8011,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# 0
$Keypad_x = 1
$Keypad_y = 3
draw_icon(8034,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# Ok
$Keypad_x = 2
$Keypad_y = 3
draw_icon(516,5+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
# Cancel
$Keypad_x = 0
$Keypad_y = 3
draw_icon(517,4+($Keypad_x * 32),4+($Keypad_y * 32),enabled = true)
end # create_sprites
end # Window_Keypad
#-------------------------------------------------------------------------------
#===============================================================================
# * Sprite_Keypad_Product
#===============================================================================
class Sprite_Keypad_Product < Sprite_Base
def initialize(viewport = nil)
super
self.bitmap = Cache.system("Keypad_Product")
self.x = 226
self.y = 106
end # initialize
end # Sprite_Keypad_Product
#-------------------------------------------------------------------------------
#===============================================================================
# * Sprite_Keypad_Key
#===============================================================================
class Sprite_Keypad_Key < Sprite_Base
def initialize(viewport = nil)
super
self.bitmap = Cache.system("Keypad_Key")
self.x = 234+($Keypad_x * 32)
self.y = 161+($Keypad_y * 32)
end # initialize
end # Sprite_Keypad_Key
#-------------------------------------------------------------------------------
#===============================================================================
# * Sprite_Keypad_Select
#===============================================================================
class Sprite_Keypad_Select < Sprite_Base
def initialize(viewport = nil)
super
self.bitmap = Cache.system("Keypad_Select")
self.x = 234+($Key_Coords_x * 32)
self.y = 161+($Key_Coords_y * 32)
end # initialize
def refresh
self.x = 234+($Key_Coords_x * 32)
self.y = 161+($Key_Coords_y * 32)
end # refresh
end # Sprite_Keypad_Select
#-------------------------------------------------------------------------------
#===============================================================================
# * Window_Keypad_Product
#===============================================================================
class Window_Keypad_Product < Window_Base
def initialize(viewport = nil)
super(218,94,128,56)
create_contents
create_sprites
refresh
end # initialize
def refresh
self.contents.clear
self.contents.draw_text(0,0,128-32,24,"#{$Entered_Code[1]} #{$Entered_Code[2]} #{$Entered_Code[3]} #{$Entered_Code[4]}",1)
end # refresh
def create_sprites
@keypad_Product_port = Viewport.new(0,0,544,416)
@keypad_Product_port.z += 15
$Keypad_Product = Sprite_Keypad_Product.new(@keypad_Product_port)
end # create_sprites
end # Window_Keypad_Product
#-------------------------------------------------------------------------------
#=end
Credit
- SeMcDun, for creating the script.
Thanks
Support
Post any problems here
I'll reply when I can.
NOTE: Images used and the icon set I used can both be found in the demo.
Known Compatibility Issues
There shouldn't be any compatibility issues.
Demo
See attached.
Restrictions
Only for use in non-commercial games.