=begin
Initial Switches and Variables (aka Autoswitcher 3)
by PK8
Created: 5/8/2012
Modified: -
──────────────────────────────────────────────────────────────────────────────
■ Table of Contents
o Author's Notes - Line 16-19
o Introduction - Line 21-22
o Features - Line 24-26
o Methods Aliased - Line 28-30
o Changelog - Line 32-45
o Usage - Line 47-69
──────────────────────────────────────────────────────────────────────────────
■ Author's Notes
This version's a major improvement over my last two versions as they offer
shortcuts in an effort to streamline the process of setting up certain
variables and switches.
──────────────────────────────────────────────────────────────────────────────
■ Introduction
This script allows users to set the initial values of switches and variables.
──────────────────────────────────────────────────────────────────────────────
■ Features
Set which switches can turn on / off at the start of your game.
Set the initial values of any or all variables.
──────────────────────────────────────────────────────────────────────────────
■ Methods Aliased
Game_Switches.initialize
Game_Variables.initialize
──────────────────────────────────────────────────────────────────────────────
■ Changelog
v1p (2/28/2008): My first time making this. It involved creating a scene
which users had to edit in which switches and variables
to adjust, and a direct edit to Scene_Title. I'm not too
proud of it. (I didn't have much knowledge then.)
v1z (?/??/????): This came about when I was looking for a better way to
do it in SephirothSpawn's old forums. Both Seph and
Zeriab provided answers, but Seph's answer appeared
a little too complex for me at the time so I chose
Zeriab's. Known as "Zeriab's Autoswitcher"
v2 (7/12/2009): Improves upon the original by adding new switch/variable
settings to the script.
v3 (5/8/2012) : Improves upon v2 by adding new shortcuts to streamline the
process of setting up initial switches and variables.
──────────────────────────────────────────────────────────────────────────────
■ Usage
Data[key] = value
* Data represents Switch or Variable
* key represents the ID of the switch or variable
* value represents the value of the Switch/Variable ID.
In this version, there are 3 shortcuts you can use besides specifying an ID
for a variable or switch. That would mean there are 4 ways to set the
initial values for your switches and variables.
Type Code Example Description
─────────┬────────────────────────┬───────────────────────────────────────
Integer │ Data[1] = value │ Sets new value to a single switch or
│ │ variable ID. Example: 1
Range │ Data[1..5] = value │ Sets new value to a range of switch
│ │ or variable IDs. Example: 1,2,3,4,5
Array │ Data[1,4..6,8] = value │ Sets new value to a group of switch
│ │ or variable IDs. Item can be an Integer
│ │ or a range. Example: 1,4,5,6,8
Nil │ Data[nil] = value │ Sets new value to all switch or
│ │ variable IDs.
─────────┴────────────────────────┴───────────────────────────────────────
=end
module PK8
class Initial
#--------------------------------------------------------------------------
# * Do not modify
#--------------------------------------------------------------------------
Switch, Variable = {}, {}
#--------------------------------------------------------------------------
# * Switch/Variable[id] = value
# id can be an integer, a range, an array, or nil.
#--------------------------------------------------------------------------
Switch[1] = true
Variable[1] = 50
#--------------------------------------------------------------------------
# * Do not modify
#--------------------------------------------------------------------------
file_ext = "rxdata" # It's just there to make porting easier (I'm lazy).
if Switch.has_key?(nil)
for i in 1...load_data("Data/System.#{file_ext}").switches.size
Switch[i] = Switch[nil]
end
Switch.delete(nil)
end
Switch.each { |k, v|
if k.is_a?(Range); for i in k; Switch[i] = v; end; Switch.delete(k)
elsif k.is_a?(Array)
k.each { | i |
if i.is_a?(Integer); Switch[i] = v
elsif i.is_a?(Range); for i2 in i; Switch[i2] = v; end
end }
Switch.delete(k)
end
}
if Variable.has_key?(nil)
for i in 1...load_data("Data/System.#{file_ext}").variables.size
Variable[i] = Variable[nil]
end
Variable.delete(nil)
end
Variable.each { |k, v|
if k.is_a?(Range); for i in k; Variable[i] = v; end; Variable.delete(k)
elsif k.is_a?(Array)
k.each { | i |
if i.is_a?(Integer); Variable[i] = v
elsif i.is_a?(Range); for i2 in i; Variable[i2] = v; end
end }
Variable.delete(k)
end
}
end
end
#==============================================================================
# ** Game_Switches
#------------------------------------------------------------------------------
# This class handles switches. It's a wrapper for the built-in class "Array."
# Refer to "$game_switches" for the instance of this class.
#==============================================================================
class Game_Switches
#--------------------------------------------------------------------------
# * Do not modify
#--------------------------------------------------------------------------
unless method_defined?(:pk8_initialswitches_initialize)
alias_method(:pk8_initialswitches_initialize, :initialize)
end
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
pk8_initialswitches_initialize
PK8::Initial::Switch.each { |k, v| @data[k] = v }
end
end
#==============================================================================
# ** Game_Variables
#------------------------------------------------------------------------------
# This class handles variables. It's a wrapper for the built-in class "Array."
# Refer to "$game_variables" for the instance of this class.
#==============================================================================
class Game_Variables
#--------------------------------------------------------------------------
# * Do not modify
#--------------------------------------------------------------------------
unless method_defined?(:pk8_initialvariables_initialize)
alias_method(:pk8_initialvariables_initialize, :initialize)
end
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
pk8_initialvariables_initialize
PK8::Initial::Variable.each { |k, v| @data[k] = v }
end
end
게임 시작시 변수의 초기값과 스위치의 on/off 여부를 지정할 수 있는 스크립트입니다