Code:
=begin
????????????????????????????????????????????????????????????????????????????????
? Common Event Self Variables VX ?
? Version 1.0 ?
? by PK8 ?
? 9/16/09 ?
? http://rmvxp.com ?
????????????????????????????????????????????????????????????????????????????????
? ? Table of Contents ?
? ?? Author's Notes - Line 18?21 ?
? ?? Introduction & Description - Line 23?29 ?
? ?? Features - Line 31?33 ?
? ?? How to Use - Line 35?62 ?
? ?? This aliases the following... - Line 64,65 ?
? ?? Thanks - Line 67?71 ?
? ?? Changelog - Line 73,74 ?
????????????????????????????????????????????????????????????????????????????????
? ? Author's Notes ?
? Lowell/Adalwulf mentioned creating a "Personal Variables" system which filled?
? my head in with ideas about variables and switches. One of these ideas being ?
? giving COMMON EVENTS their own self variables. ?
????????????????????????????????????????????????????????????????????????????????
? ? Introduction & Description ?
? This script is a similar to that of the built in feature: Self Switches. ?
? For those not familiar with Self Switches, Self Switches pretty much pertain ?
? to a specific event. Example: Treasure Chests. ?
? ?
? Common Event Self Variables allows developers to set certain variables ?
? pertaining to a certain Common Event. ?
????????????????????????????????????????????????????????????????????????????????
? ? Features ?
? ? Set Common Event's self variables via call script. (How to use is below) ?
? ? Get Common Event's self variables via call script. (How to use is below) ?
????????????????????????????????????????????????????????????????????????????????
? ? How to Use ?
? ?
? ? Setting up a Common Event's self variable: ?
? To set a self variable for a common event, you'll need to call this script:?
? ce_self_variable(ceid, id, value, oper) ?
? ceid: Common Event's ID ?
? id: Common Event's Self Variable ID. Example: 'A', 'B' ?
? value: Give it a value. ?
? oper: 0: Set, 1: Add, 2: Sub, 3: Mul, 4: Div, 5: Mod ?
? Example: ce_self_variable(1, 'A', 5, 0) sets the first Common Event's ?
? variable "A" to 5. ?
? ?
? ? Getting a Common Event's self variable: ?
? To get a self variable of a Common Event, you can call this script. ?
? ce_self_variable(ceid, id) ?
? ceid: Common Event's ID ?
? id: Common Event's Self Variable ID. Example: 'A', 'B' ?
? Example: ce_self_variable(1, 'A') gets Common Event's variable "A". ?
? ?
? ? Using Common Event's self variable in evented if conditions. ?
? To do this, go to the conditional branch event command, click on the fourth?
? tab, select Script and type either of these in the input form: ?
? ce_self_variable(ceid, id) == value <- Equal to. ?
? ce_self_variable(ceid, id) >= value <- Greater than or Equal to. ?
? ce_self_variable(ceid, id) <= value <- Less than or Equal to. ?
? ce_self_variable(ceid, id) > value <- Greater than. ?
? ce_self_variable(ceid, id) < value <- Less than. ?
? ce_self_variable(ceid, id) != value <- Not Equal to. ?
????????????????????????????????????????????????????????????????????????????????
? ? This aliases the following... ?
? initialize - Game_Map ?
????????????????????????????????????????????????????????????????????????????????
? ? Thanks ?
? Lowell: He mentioned creating a personal variables system for his project ?
? which made me catch "the scripting bug". ?
? Kain Nobel: I'm using Kain Nobel's modifications to the Actor & Party's Self ?
? Switches script as a base. ?
????????????????????????????????????????????????????????????????????????????????
? ? Changelog ?
? Version 1.0 - 9/16/09: Initial Release ?
????????????????????????????????????????????????????????????????????????????????
=end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# This class handles maps. It includes scrolling and passage determination
# functions. The instance of this class is referenced by $game_map.
#==============================================================================
class Game_Map
attr_accessor :ce_self_variables
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias_method :ceselfvariables_gmmap_initialize, :initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(*args)
ceselfvariables_gmmap_initialize(*args)
@ce_self_variables = Game_Map::CE_SelfVariables.new
end
end
#==============================================================================
# ** Game_Map::CE_SelfVariables
#------------------------------------------------------------------------------
# This handles variables. It's a wrapper for the built-in class "Array."
# The instance of this class is referenced by $game_map.ce_self_variables.
#==============================================================================
class Game_Map::CE_SelfVariables
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@data = {}
end
#--------------------------------------------------------------------------
# * Get Self Variable of Common Event
# key : key
#--------------------------------------------------------------------------
def [](key)
if @data[key] == nil
return 0
else
return @data[key]
end
end
#--------------------------------------------------------------------------
# * Set Self Variable of Common Event
# key : key
# value : value
#--------------------------------------------------------------------------
def []=(key, value)
@data[key] = value
end
end
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# * Control Common Event Self variable
#--------------------------------------------------------------------------
def ce_self_variable(ceid, id, value = nil, oper = nil)
if $data_common_events[ceid].id > 0 and $data_common_events[ceid] != nil
key = [$data_common_events[ceid].id, id]
if value != nil
case oper
when nil, 0, 'equal', 'set', '=' # Setting
$game_map.ce_self_variables[key] = value
when 1, 'add', '+' # Adding
$game_map.ce_self_variables[key] += value
when 2, 'sub', 'subtract', '-' # Subtracting
$game_map.ce_self_variables[key] -= value
when 3, 'mul', 'multiply', 'x', '*' # Multiplying
$game_map.ce_self_variables[key] *= value
when 4, 'div', 'divide', '/' # Dividing
$game_map.ce_self_variables[key] /= value if value != 0
when 5, 'mod', 'modular', '%' # Modulating
$game_map.ce_self_variables[key] %= value if value != 0
end
else
return $game_map.ce_self_variables[key]
end
end
$game_map.need_refresh = true
return true
end
end