http://www.gamebaker.com/rmxp/scripts/self-variables.htm
이벤트에 셀프스위치같은 로컬변수를 부여하는 스크립트입니다. 사용하기 위해서는 SG Settings control 스크립트가 필요합니다. 이벤트 로컬변수는 전투시 임시변수로도 사용가능합니다.
오리지널 버전(로컬변수 1개):
#=============================================================================
# ** SG Self Variables
#=============================================================================
# sandgolem
# Version 2
# 7.05.06
#=============================================================================
#
SG_Self_Variable = 1
#
# To use this script, use variable #1 in any events.
# Set the number above if you'd like to use a different variable.
# It'll be whatever that event's self variable for it is.
# This also works for event page conditions
# In battle, this is a temporary variable that is reset with each.
#
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts. Needs to be under SG Script Control, but
# above any that alias Game_Event's refresh.
#
# This script is not SDK compatible. See site above for details on how to edit.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
class Scene_Title
alias sandgolem_selfvar_title_main main
def main
$sg_self_variables = {}
sandgolem_selfvar_title_main
end
end
class Scene_Save < Scene_File
alias sandgolem_selfvar_save_write write_save_data
def write_save_data(file)
$game_sg['selfvars'] = $sg_self_variables
sandgolem_selfvar_save_write(file)
$game_sg['selfvars'] = nil
end
end
class Scene_Load < Scene_File
alias sandgolem_selfvar_load_read read_save_data
def read_save_data(file)
sandgolem_selfvar_load_read(file)
if $game_sg['selfvars'] != nil
$sg_self_variables = $game_sg['selfvars']
$game_sg['selfvars'] = nil
end
end
end
class Scene_Battle
alias sandgolem_selfvar_battle_main main
def main
$game_variables[SG_Self_Variable] = 0
sandgolem_selfvar_battle_main
end
end
class Interpreter
alias sandgolem_selfvar_interp_execcommand execute_command
def execute_command
if $scene.is_a?(Scene_Map)
@key = [@map_id, @event_id]
if $sg_self_variables[@key] != nil
$game_variables[SG_Self_Variable] = $sg_self_variables[@key]
else
$game_variables[SG_Self_Variable] = 0
end
end
sandgolem_selfvar_interp_execcommand
end
alias sandgolem_selfvar_interp_command122 command_122
def command_122
sandgolem_selfvar_interp_command122
if @parameters[0] == SG_Self_Variable && $scene.is_a?(Scene_Map)
$sg_self_variables[@key] = $game_variables[SG_Self_Variable]
$game_map.need_refresh = true
end
end
end
class Game_Event < Game_Character
def refresh
new_page = nil
unless @erased
for page in @event.pages.reverse
c = page.condition
if c.switch1_valid
if $game_switches[c.switch1_id] == false
next
end
end
if c.switch2_valid
if $game_switches[c.switch2_id] == false
next
end
end
#------------------------------------------------------------------------------
# Begin SG Self Variables edit
#------------------------------------------------------------------------------
if c.variable_valid
if c.variable_id == SG_Self_Variable
key = [$game_map.map_id, @event.id]
if $sg_self_variables[key] != nil
if $sg_self_variables[key] < c.variable_value
next
end
else
next
end
elsif $game_variables[c.variable_id] < c.variable_value
next
end
end
#------------------------------------------------------------------------------
# End SG Self Variables edit
#------------------------------------------------------------------------------
if c.self_switch_valid
key = [@map_id, @event.id, c.self_switch_ch]
if $game_self_switches[key] != true
next
end
end
new_page = page
break
end
end
if new_page == @page
return
end
@page = new_page
clear_starting
if @page == nil
@tile_id = 0
@character_name = ""
@character_hue = 0
@move_type = 0
@through = true
@trigger = nil
@list = nil
@interpreter = nil
return
end
@tile_id = @page.graphic.tile_id
@character_name = @page.graphic.character_name
@character_hue = @page.graphic.character_hue
if @original_direction != @page.graphic.direction
@direction = @page.graphic.direction
@original_direction = @direction
@prelock_direction = 0
end
if @original_pattern != @page.graphic.pattern
@pattern = @page.graphic.pattern
@original_pattern = @pattern
end
@opacity = @page.graphic.opacity
@blend_type = @page.graphic.blend_type
@move_type = @page.move_type
@move_speed = @page.move_speed
@move_frequency = @page.move_frequency
@move_route = @page.move_route
@move_route_index = 0
@move_route_forcing = false
@walk_anime = @page.walk_anime
@step_anime = @page.step_anime
@direction_fix = @page.direction_fix
@through = @page.through
@always_on_top = @page.always_on_top
@trigger = @page.trigger
@list = @page.list
@interpreter = nil
if @trigger == 4
@interpreter = Interpreter.new
end
check_event_trigger_auto
end
end
로컬변수 3개까지 사용가능한 버전:
#=============================================================================
# ** SG Self Variables B
#=============================================================================
# sandgolem
# Version 1
# 19.04.06
#=============================================================================
#
# To use this script, use variables #1 - 3 in any events.
# It'll be whatever that event's self variable for it is.
# This also works for event page conditions
# In battle, these are temporary variables that is reset with each.
#
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts. Needs to be under SG Script Control, but
# above any that alias Game_Event's refresh.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
class Scene_Title
alias sandgolem_selfvarb_title_main main
def main
$sg_self_variables = {}
sandgolem_selfvarb_title_main
end
end
class Scene_Save < Scene_File
alias sandgolem_selfvarb_save_write write_save_data
def write_save_data(file)
$game_sg['selfvars'] = $sg_self_variables
sandgolem_selfvarb_save_write(file)
$game_sg['selfvars'] = nil
end
end
class Scene_Load < Scene_File
alias sandgolem_selfvarb_load_read read_save_data
def read_save_data(file)
sandgolem_selfvarb_load_read(file)
if $game_sg['selfvars'] != nil
$sg_self_variables = $game_sg['selfvars']
$game_sg['selfvars'] = nil
end
end
end
class Scene_Battle
alias sandgolem_selfvarb_battle_main main
def main
for i in 1 .. 3
$game_variables[i] = 0
end
sandgolem_selfvarb_battle_main
end
end
class Interpreter
alias sandgolem_selfvarb_interp_execcommand execute_command
def execute_command
if $scene.is_a?(Scene_Map)
for i in 1 .. 3
key = [@map_id, @event_id, i]
if $sg_self_variables[key] != nil
$game_variables[i] = $sg_self_variables[key]
else
$game_variables[i] = 0
end
end
end
sandgolem_selfvarb_interp_execcommand
end
alias sandgolem_selfvarb_interp_command122 command_122
def command_122
sandgolem_selfvarb_interp_command122
if @parameters[0] <= 3 && $scene.is_a?(Scene_Map)
for i in @parameters[0] .. @parameters[1]
if i <= 3
key = [@map_id, @event_id, i]
$sg_self_variables[key] = $game_variables[1]
end
end
$game_map.need_refresh = true
end
end
end
class Game_Event < Game_Character
def refresh
new_page = nil
unless @erased
for page in @event.pages.reverse
c = page.condition
if c.switch1_valid
if $game_switches[c.switch1_id] == false
next
end
end
if c.switch2_valid
if $game_switches[c.switch2_id] == false
next
end
end
#------------------------------------------------------------------------------
# Begin SG Self Variables edit
#------------------------------------------------------------------------------
if c.variable_valid
if c.variable_id <= 3
key = [$game_map.map_id, @event.id, c.variable_id]
if $sg_self_variables[key] != nil
if $sg_self_variables[key] < c.variable_value
next
end
else
next
end
elsif $game_variables[c.variable_id] < c.variable_value
next
end
end
#------------------------------------------------------------------------------
# End SG Self Variables edit
#------------------------------------------------------------------------------
if c.self_switch_valid
key = [@map_id, @event.id, c.self_switch_ch]
if $game_self_switches[key] != true
next
end
end
new_page = page
break
end
end
if new_page == @page
return
end
@page = new_page
clear_starting
if @page == nil
@tile_id = 0
@character_name = ""
@character_hue = 0
@move_type = 0
@through = true
@trigger = nil
@list = nil
@interpreter = nil
return
end
@tile_id = @page.graphic.tile_id
@character_name = @page.graphic.character_name
@character_hue = @page.graphic.character_hue
if @original_direction != @page.graphic.direction
@direction = @page.graphic.direction
@original_direction = @direction
@prelock_direction = 0
end
if @original_pattern != @page.graphic.pattern
@pattern = @page.graphic.pattern
@original_pattern = @pattern
end
@opacity = @page.graphic.opacity
@blend_type = @page.graphic.blend_type
@move_type = @page.move_type
@move_speed = @page.move_speed
@move_frequency = @page.move_frequency
@move_route = @page.move_route
@move_route_index = 0
@move_route_forcing = false
@walk_anime = @page.walk_anime
@step_anime = @page.step_anime
@direction_fix = @page.direction_fix
@through = @page.through
@always_on_top = @page.always_on_top
@trigger = @page.trigger
@list = @page.list
@interpreter = nil
if @trigger == 4
@interpreter = Interpreter.new
end
check_event_trigger_auto
end
end
**이 스크립트는 기본적으로 SDK와 호환되지 않습니다.
이벤트에 셀프스위치같은 로컬변수를 부여하는 스크립트입니다. 사용하기 위해서는 SG Settings control 스크립트가 필요합니다. 이벤트 로컬변수는 전투시 임시변수로도 사용가능합니다.
오리지널 버전(로컬변수 1개):
#=============================================================================
# ** SG Self Variables
#=============================================================================
# sandgolem
# Version 2
# 7.05.06
#=============================================================================
#
SG_Self_Variable = 1
#
# To use this script, use variable #1 in any events.
# Set the number above if you'd like to use a different variable.
# It'll be whatever that event's self variable for it is.
# This also works for event page conditions
# In battle, this is a temporary variable that is reset with each.
#
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts. Needs to be under SG Script Control, but
# above any that alias Game_Event's refresh.
#
# This script is not SDK compatible. See site above for details on how to edit.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
class Scene_Title
alias sandgolem_selfvar_title_main main
def main
$sg_self_variables = {}
sandgolem_selfvar_title_main
end
end
class Scene_Save < Scene_File
alias sandgolem_selfvar_save_write write_save_data
def write_save_data(file)
$game_sg['selfvars'] = $sg_self_variables
sandgolem_selfvar_save_write(file)
$game_sg['selfvars'] = nil
end
end
class Scene_Load < Scene_File
alias sandgolem_selfvar_load_read read_save_data
def read_save_data(file)
sandgolem_selfvar_load_read(file)
if $game_sg['selfvars'] != nil
$sg_self_variables = $game_sg['selfvars']
$game_sg['selfvars'] = nil
end
end
end
class Scene_Battle
alias sandgolem_selfvar_battle_main main
def main
$game_variables[SG_Self_Variable] = 0
sandgolem_selfvar_battle_main
end
end
class Interpreter
alias sandgolem_selfvar_interp_execcommand execute_command
def execute_command
if $scene.is_a?(Scene_Map)
@key = [@map_id, @event_id]
if $sg_self_variables[@key] != nil
$game_variables[SG_Self_Variable] = $sg_self_variables[@key]
else
$game_variables[SG_Self_Variable] = 0
end
end
sandgolem_selfvar_interp_execcommand
end
alias sandgolem_selfvar_interp_command122 command_122
def command_122
sandgolem_selfvar_interp_command122
if @parameters[0] == SG_Self_Variable && $scene.is_a?(Scene_Map)
$sg_self_variables[@key] = $game_variables[SG_Self_Variable]
$game_map.need_refresh = true
end
end
end
class Game_Event < Game_Character
def refresh
new_page = nil
unless @erased
for page in @event.pages.reverse
c = page.condition
if c.switch1_valid
if $game_switches[c.switch1_id] == false
next
end
end
if c.switch2_valid
if $game_switches[c.switch2_id] == false
next
end
end
#------------------------------------------------------------------------------
# Begin SG Self Variables edit
#------------------------------------------------------------------------------
if c.variable_valid
if c.variable_id == SG_Self_Variable
key = [$game_map.map_id, @event.id]
if $sg_self_variables[key] != nil
if $sg_self_variables[key] < c.variable_value
next
end
else
next
end
elsif $game_variables[c.variable_id] < c.variable_value
next
end
end
#------------------------------------------------------------------------------
# End SG Self Variables edit
#------------------------------------------------------------------------------
if c.self_switch_valid
key = [@map_id, @event.id, c.self_switch_ch]
if $game_self_switches[key] != true
next
end
end
new_page = page
break
end
end
if new_page == @page
return
end
@page = new_page
clear_starting
if @page == nil
@tile_id = 0
@character_name = ""
@character_hue = 0
@move_type = 0
@through = true
@trigger = nil
@list = nil
@interpreter = nil
return
end
@tile_id = @page.graphic.tile_id
@character_name = @page.graphic.character_name
@character_hue = @page.graphic.character_hue
if @original_direction != @page.graphic.direction
@direction = @page.graphic.direction
@original_direction = @direction
@prelock_direction = 0
end
if @original_pattern != @page.graphic.pattern
@pattern = @page.graphic.pattern
@original_pattern = @pattern
end
@opacity = @page.graphic.opacity
@blend_type = @page.graphic.blend_type
@move_type = @page.move_type
@move_speed = @page.move_speed
@move_frequency = @page.move_frequency
@move_route = @page.move_route
@move_route_index = 0
@move_route_forcing = false
@walk_anime = @page.walk_anime
@step_anime = @page.step_anime
@direction_fix = @page.direction_fix
@through = @page.through
@always_on_top = @page.always_on_top
@trigger = @page.trigger
@list = @page.list
@interpreter = nil
if @trigger == 4
@interpreter = Interpreter.new
end
check_event_trigger_auto
end
end
로컬변수 3개까지 사용가능한 버전:
#=============================================================================
# ** SG Self Variables B
#=============================================================================
# sandgolem
# Version 1
# 19.04.06
#=============================================================================
#
# To use this script, use variables #1 - 3 in any events.
# It'll be whatever that event's self variable for it is.
# This also works for event page conditions
# In battle, these are temporary variables that is reset with each.
#
#=============================================================================
#
# To check for updates or find more scripts, visit:
# http://www.gamebaker.com/rmxp/scripts/
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts. Needs to be under SG Script Control, but
# above any that alias Game_Event's refresh.
#
# Have problems? You can leave me a message at:
# http://www.gamebaker.com/users/sandgolem
#
#=============================================================================
class Scene_Title
alias sandgolem_selfvarb_title_main main
def main
$sg_self_variables = {}
sandgolem_selfvarb_title_main
end
end
class Scene_Save < Scene_File
alias sandgolem_selfvarb_save_write write_save_data
def write_save_data(file)
$game_sg['selfvars'] = $sg_self_variables
sandgolem_selfvarb_save_write(file)
$game_sg['selfvars'] = nil
end
end
class Scene_Load < Scene_File
alias sandgolem_selfvarb_load_read read_save_data
def read_save_data(file)
sandgolem_selfvarb_load_read(file)
if $game_sg['selfvars'] != nil
$sg_self_variables = $game_sg['selfvars']
$game_sg['selfvars'] = nil
end
end
end
class Scene_Battle
alias sandgolem_selfvarb_battle_main main
def main
for i in 1 .. 3
$game_variables[i] = 0
end
sandgolem_selfvarb_battle_main
end
end
class Interpreter
alias sandgolem_selfvarb_interp_execcommand execute_command
def execute_command
if $scene.is_a?(Scene_Map)
for i in 1 .. 3
key = [@map_id, @event_id, i]
if $sg_self_variables[key] != nil
$game_variables[i] = $sg_self_variables[key]
else
$game_variables[i] = 0
end
end
end
sandgolem_selfvarb_interp_execcommand
end
alias sandgolem_selfvarb_interp_command122 command_122
def command_122
sandgolem_selfvarb_interp_command122
if @parameters[0] <= 3 && $scene.is_a?(Scene_Map)
for i in @parameters[0] .. @parameters[1]
if i <= 3
key = [@map_id, @event_id, i]
$sg_self_variables[key] = $game_variables[1]
end
end
$game_map.need_refresh = true
end
end
end
class Game_Event < Game_Character
def refresh
new_page = nil
unless @erased
for page in @event.pages.reverse
c = page.condition
if c.switch1_valid
if $game_switches[c.switch1_id] == false
next
end
end
if c.switch2_valid
if $game_switches[c.switch2_id] == false
next
end
end
#------------------------------------------------------------------------------
# Begin SG Self Variables edit
#------------------------------------------------------------------------------
if c.variable_valid
if c.variable_id <= 3
key = [$game_map.map_id, @event.id, c.variable_id]
if $sg_self_variables[key] != nil
if $sg_self_variables[key] < c.variable_value
next
end
else
next
end
elsif $game_variables[c.variable_id] < c.variable_value
next
end
end
#------------------------------------------------------------------------------
# End SG Self Variables edit
#------------------------------------------------------------------------------
if c.self_switch_valid
key = [@map_id, @event.id, c.self_switch_ch]
if $game_self_switches[key] != true
next
end
end
new_page = page
break
end
end
if new_page == @page
return
end
@page = new_page
clear_starting
if @page == nil
@tile_id = 0
@character_name = ""
@character_hue = 0
@move_type = 0
@through = true
@trigger = nil
@list = nil
@interpreter = nil
return
end
@tile_id = @page.graphic.tile_id
@character_name = @page.graphic.character_name
@character_hue = @page.graphic.character_hue
if @original_direction != @page.graphic.direction
@direction = @page.graphic.direction
@original_direction = @direction
@prelock_direction = 0
end
if @original_pattern != @page.graphic.pattern
@pattern = @page.graphic.pattern
@original_pattern = @pattern
end
@opacity = @page.graphic.opacity
@blend_type = @page.graphic.blend_type
@move_type = @page.move_type
@move_speed = @page.move_speed
@move_frequency = @page.move_frequency
@move_route = @page.move_route
@move_route_index = 0
@move_route_forcing = false
@walk_anime = @page.walk_anime
@step_anime = @page.step_anime
@direction_fix = @page.direction_fix
@through = @page.through
@always_on_top = @page.always_on_top
@trigger = @page.trigger
@list = @page.list
@interpreter = nil
if @trigger == 4
@interpreter = Interpreter.new
end
check_event_trigger_auto
end
end
**이 스크립트는 기본적으로 SDK와 호환되지 않습니다.