11-12-2009, 06:24 AM
(This post was last modified: 09-02-2024, 09:52 PM by DerVVulfman.)
Group Switches
Version: 1.1
Version: 1.1
Introduction
This small code allows game makers to turn on, off, "reverse" or "random" the values of a group of switches.
Features
- Turn on/off a group of switches through script call.
- Flip values of certain switches through script call.
- Sets certain switches on/off at random through script call.
Screenshots
No screenshots.
Demo
No demo.
Script
Code:
=begin
????????????????????????????????????????????????????????????????????????????????
? Group Switches v1.1 by PK8, November 9th-11th, 2009. ?
? http://rmvxp.com ?
????????????????????????????????????????????????????????????????????????????????
? ? Table of Contents ?
? ?? Author's Notes - Line 14?16 ?
? ?? Introduction & Description - Line 18?20 ?
? ?? Features - Line 22?25 ?
? ?? How to Use - Line 27?51 ?
? ?? Credit & Thanks - Line 53?57 ?
? ?? Changelog - Line 59?61 ?
????????????????????????????????????????????????????????????????????????????????
? ? Author's Notes ?
? Boredom + running out of ideas = this script. ?
? The "random" and range features were last minute additions to this script. ?
????????????????????????????????????????????????????????????????????????????????
? ? Introduction & Description ?
? This small code allows game creators to turn on, off or flip the values of a ?
? group of switches with a script call. ?
????????????????????????????????????????????????????????????????????????????????
? ? Features ?
? ? Turn on/off a group of switches through script call. ?
? ? Flip values of certain switches through script call. ?
? ? Sets certain switches on/off at random through script call. ?
????????????????????????????????????????????????????????????????????????????????
? ? How to Use ?
? Call script: group_switch(bool, any number of switches) ?
? bool: ?
? true / "on": turns on a group of switches. ?
? false / "off": turns off a group of switches. ?
? "reverse": flips values of a group switches. ?
? "random" / "?": Either sets a group of switches on or off at random.* ?
? ?
? Example: ?
? group_switch(true, 1,12,18,20,8) ?
? The above script call turns on switches 1, 12, 18, 20 and 8. ?
? ?
? group_switch(false, 5,20,8,10,1,32,64,99) ?
? The above script call turns off switches 5, 20, 8, 10, 1, 32, 64 and 99?
? ?
? group_switch("reverse", 1,2,3,4,5,6,7,8) ?
? The above script call flips values of switches: 1, 2, 3, 4, 5, 6, 7 & 8?
? The switches that were turned on before would be turned off. ?
? The opposite applies to switches that were turned off. ?
? ?
? Also: You could use ranges in the arguments. Here's an example: * ?
? group_switch(true, 1..10, 18, 12..15) ?
? The above call will turn on switches 18, 1 through 10 and 12 through 15. ?
? ?
? * denotes last minute feature added to the script. ?
????????????????????????????????????????????????????????????????????????????????
? ? Credits & Thanks ?
? DerVVulfman: Requested allowing users to use ranges as an argument. ?
? EJlol: Saw that I was using strings for ranges and asked why didn't I use ?
? ranges. From there, I learned a bit about ranges and went on to use ?
? ranges instead of strings. :) ?
????????????????????????????????????????????????????????????????????????????????
? ? Changelog ?
? v1.1 (Nov. 12th, 2009): Some users preferred the method name being ?
? group_switches so here it is! ?
????????????????????????????????????????????????????????????????????????????????
=end
#==============================================================================
# IMPORTANT! RMVX users, set this to false!
#==============================================================================
class PK8
Group_Switch_RMXP = true # true if using RMXP, false if using RMVX.
end
#==============================================================================
# ** Interpreter
#------------------------------------------------------------------------------
# This interpreter runs event commands. This class is used within the
# Game_System class and the Game_Event class.
#==============================================================================
if PK8::Group_Switch_RMXP == true
class Interpreter
def group_switch(bool, *switches)
switches.each_index { | index |
# Pushes everything in the range to the switches array.
if switches[index].is_a?(Range) == true
switches[index].each {| n | switches.push(n) }
switches[index] = nil
end
}
switches.compact!
# This is where it does it's business.
case bool
when true, 'on'
switches.each { | i | $game_switches[i] = true }
when false, 'off'
switches.each { | i | $game_switches[i] = false }
when 'reverse', 'flip', 'invert'
switches.each { | i |
if $game_switches[i] == false
$game_switches[i] = true
else
$game_switches[i] = false
end
}
when 'random', '?'
switches.each { | i |
p = rand(2)
$game_switches[i] = true if p == 0
$game_switches[i] = false if p == 1
}
end
return
end
# Alternate Call.
def group_switches(bool, *switches)
group_switch(bool, *switches)
end
end
end
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
if PK8::Group_Switch_RMXP == false
class Game_Interpreter
def group_switch(bool, *switches)
switches.each_index { | index |
# Pushes everything in the range to the switches array.
if switches[index].is_a?(Range) == true
switches[index].each {| n | switches.push(n) }
switches[index] = nil
end
}
switches.compact!
# This is where it does it's business.
case bool
when true, 'on'
switches.each { | i | $game_switches[i] = true }
when false, 'off'
switches.each { | i | $game_switches[i] = false }
when 'reverse', 'flip', 'invert'
switches.each { | i |
if $game_switches[i] == false
$game_switches[i] = true
else
$game_switches[i] = false
end
}
when 'random', '?'
switches.each { | i |
p = rand(2)
$game_switches[i] = true if p == 0
$game_switches[i] = false if p == 1
}
end
return
end
# Alternate Call.
def group_switches(bool, *switches)
group_switch(bool, *switches)
end
end
end
Instructions
Instructions are in the script but I'll post some here. To change the values of a group of switches, use the "Script..." event command. Here's how the call works.
Code:
group_switch(bool, switch ids here)
- true / "on": Turns on switches.
- false / "off": Turns off switches.
- "reverse" / "flip" / "invert": Flips the value of switches.
Example:
If Switch ID 1 and 2 was on, and Switch ID 3 was off, and if the user decided to use the call: group_switch("reverse", 1,2,3) then Switch IDs 1 and 2 would be turned off while 3 would turn on. - "random" / "?": Either turns the switch on or off at random.
In the second argument, you could list as many switches as you can. You could use a number or use ranges.
Examples:
group_switch(true, 1..8) would turn on switches 1 to 8.
group_switch(true, 1...8) would turn on switches 1 to 7.
group_switch(true, 1,2,3,4,5,6,7,8) would turn on switches 1 to 8.
group_switch(true, 1..5, 7, 10..14) would turn on switches 1 to 5, 7, and 10 to 14.
FAQ
Awaiting question.
Compatibility
It doesn't mess with any methods of existing classes. :o
Credits and Thanks
DerVVulfman: Requested allowing users to use ranges as an argument.
EJlol: Saw that I was using strings for ranges and asked why didn't I use ranges. From there, I learned a bit about ranges and went on to use ranges instead of strings. :)
Author's Notes
Boredom + running out of ideas = this script. The "random" and range features were last minute additions to this script.
Terms and Conditions
I'd like credit for it. :p