Dann Woolf
Member
I'm using the caterpillar script in the Rye CBS starter pack, and I'd like to be able to deactivate it when a certain switch is on, and reactivate it when the switch is off. How do I go about this?
sithlord999;242732 said:If you're using the SDK, there's a way you can disable and enable scripts with it.
DraycosGoldaryn;243151 said:Activating and deactivating scripts is difficult, If you post the script, I (or someone else who knows how) will modify it to be able to be toggled on and off.
# train_actor
=begin
?c?p?V?X?e???X?N???v?g Train_Actor
Author:: yf30 at users.sourceforge.jp (http://sourceforge.jp/users/yf30/)
Date:: 2004/11/14?@2006/01/25
Copyright:: Copyright (C) 2004,2005,2006 fukuyama
URL:: http://sourceforge.jp/projects/rgss-lib/
=end
# Config.rb
#==============================================================================
# ?? Train_Actor::Config
#------------------------------------------------------------------------------
# ?}?b?v????A?N?^?[???????????????
#==============================================================================
module Train_Actor
# ??????????p?X?C?b?`???
# true ????X?C?b?`???????s??
# TRANSPARENT_SWITCH = true
TRANSPARENT_SWITCH = false
# ??????????p?X?C?b?`???
# TRANSPARENT_SWITCH ?? true ??A????????X?C?b?`??ON???????????
TRANSPARENT_SWITCHES_INDEX = 20
# ???A?N?^?[????
# ?????I????l???p?[?e?B???o???????????????c
TRAIN_ACTOR_SIZE_MAX = 4
# ??
DOWN_LEFT = 1
DOWN_RIGHT = 3
UP_LEFT = 7
UP_RIGHT = 9
JUMP = 5
end
# rgss
# Game_Event_Module.rb
#==============================================================================
# ?? Game_Event_Module
#------------------------------------------------------------------------------
# ?}?b?v????A?N?^?[???????????????
#==============================================================================
module Train_Actor
module Game_Event_Module
#--------------------------------------------------------------------------
# ?? ??s??\????
# x : X ???W
# y : Y ???W
# d : ???? (0,2,4,6,8) ?? 0 = ?S??????s?s?????????? (?W?????v?p)
# return : ??s?s?? false ??\ true
#--------------------------------------------------------------------------
def passable?(x, y, d)
result = super(x, y, d)
if result
# ?V???????W???????
new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
# ?g???C???A?N?^?[????[?v
for actor in $game_party.characters
# ?\?????????????
if not actor.character_name.empty?
# ?A?N?^?[????W???????????v??????
if actor.x == new_x and actor.y == new_y
# ???????C?x???g???
if self != $game_player
# ??s?s??
return false
end
end
end
end
end
return result
end
end
end
class Game_Event
include Train_Actor::Game_Event_Module
end
# Game_Party_Module.rb
#==============================================================================
# ?? Game_Party_Module
#------------------------------------------------------------------------------
# ?}?b?v????A?N?^?[???????????????
#==============================================================================
module Train_Actor
module Game_Party_Module
attr_reader :characters
def actors_dead?
for actor in actors
if actor.dead?
return true
end
end
return false
end
def update_party_order
if not actors_dead?
return actors
end
alive_actors = []
dead_actors = []
for actor in actors
if actor.dead?
dead_actors.push actor
else
alive_actors.push actor
end
end
return alive_actors + dead_actors
end
def setup_actor_character_sprites
if @characters.nil?
@characters = []
for i in 1 ... TRAIN_ACTOR_SIZE_MAX
@characters.push(Game_Party_Actor.new)
end
end
setup_actors = update_party_order
for i in 1 ... TRAIN_ACTOR_SIZE_MAX
@characters[i - 1].setup(setup_actors[i])
end
if $scene.class.method_defined?('setup_actor_character_sprites')
$scene.setup_actor_character_sprites(@characters)
end
end
if TRANSPARENT_SWITCH
def transparent_switch
transparent = $game_player.transparent
if transparent == false
transparent = $game_switches[TRANSPARENT_SWITCHES_INDEX]
end
return transparent
end
else
def transparent_switch
return $game_player.transparent
end
end
def update_party_actors
update_party_order
setup_actor_character_sprites
transparent = transparent_switch
for character in @characters
character.transparent = transparent
character.move_speed = $game_player.move_speed
character.step_anime = $game_player.step_anime
character.update
end
end
def moveto_party_actors( x, y )
setup_actor_character_sprites
for character in @characters
character.moveto( x, y )
end
if @move_list == nil
@move_list = []
end
move_list_setup
end
def move_party_actors
if @move_list == nil
@move_list = []
move_list_setup
end
@move_list.each_index do |i|
if @characters[i] != nil
case @move_list[i].type
when Input::DOWN
@characters[i].move_down(@move_list[i].args[0])
when Input::LEFT
@characters[i].move_left(@move_list[i].args[0])
when Input::RIGHT
@characters[i].move_right(@move_list[i].args[0])
when Input::UP
@characters[i].move_up(@move_list[i].args[0])
when DOWN_LEFT
@characters[i].move_lower_left
when DOWN_RIGHT
@characters[i].move_lower_right
when UP_LEFT
@characters[i].move_upper_left
when UP_RIGHT
@characters[i].move_upper_right
when JUMP
@characters[i].jump(@move_list[i].args[0],@move_list[i].args[1])
end
end
end
end
class Move_List_Element
def initialize(type,args)
@type = type
@args = args
end
def type() return @type end
def args() return @args end
end
def move_list_setup
for i in 0 .. TRAIN_ACTOR_SIZE_MAX
@move_list[i] = nil
end
end
def add_move_list(type,*args)
@move_list.unshift(Move_List_Element.new(type,args)).pop
end
def move_down_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::DOWN,turn_enabled)
end
def move_left_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::LEFT,turn_enabled)
end
def move_right_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::RIGHT,turn_enabled)
end
def move_up_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::UP,turn_enabled)
end
def move_lower_left_party_actors
move_party_actors
add_move_list(DOWN_LEFT)
end
def move_lower_right_party_actors
move_party_actors
add_move_list(DOWN_RIGHT)
end
def move_upper_left_party_actors
move_party_actors
add_move_list(UP_LEFT)
end
def move_upper_right_party_actors
move_party_actors
add_move_list(UP_RIGHT)
end
def jump_party_actors(x_plus, y_plus)
move_party_actors
add_move_list(JUMP,x_plus, y_plus)
end
end
end
class Game_Party
include Train_Actor::Game_Party_Module
# ?????
if Train_Actor::TRAIN_ACTOR_SIZE_MAX != 4
#--------------------------------------------------------------------------
# ?? ?A?N?^?[????????
# actor_id : ?A?N?^?[ ID
#--------------------------------------------------------------------------
def add_actor(actor_id)
# ?A?N?^?[????
actor = $game_actors[actor_id]
# ?p?[?e?B?l???? 4 ?l??????A????A?N?^?[???p?[?e?B????????
if @actors.size < Train_Actor::TRAIN_ACTOR_SIZE_MAX and not @actors.include?(actor)
# ?A?N?^?[?????
@actors.push(actor)
# ?v???C???[?????t???b?V??
$game_player.refresh
end
end
end
end
# Game_Player_Module.rb
#==============================================================================
# ?? Game_Player_Module
#------------------------------------------------------------------------------
# ?}?b?v????A?N?^?[???????????????
#==============================================================================
module Train_Actor
module Game_Player_Module
attr_reader :move_speed
attr_reader :step_anime
def update_party_actors
if $game_party.actors.empty?
return
end
$game_party.update_party_actors
actor = $game_party.actors[0]
if not actor.dead?
if not @prev_dead.nil?
@character_name = actor.character_name
@character_hue = actor.character_hue
@prev_dead = nil
end
return
end
@prev_dead = true
$game_party.actors.each do |actor|
if actor.dead?
next
end
@character_name = actor.character_name
@character_hue = actor.character_hue
break
end
end
def update
update_party_actors
super
end
def moveto( x, y )
$game_party.moveto_party_actors( x, y )
super( x, y )
end
def move_down(turn_enabled = true)
if passable?(@x, @y, Input::DOWN)
$game_party.move_down_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_left(turn_enabled = true)
if passable?(@x, @y, Input::LEFT)
$game_party.move_left_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_right(turn_enabled = true)
if passable?(@x, @y, Input::RIGHT)
$game_party.move_right_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_up(turn_enabled = true)
if passable?(@x, @y, Input::UP)
$game_party.move_up_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_lower_left
# ???????A?????? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
$game_party.move_lower_left_party_actors
end
super
end
def move_lower_right
# ?????E?A?E???? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
$game_party.move_lower_right_party_actors
end
super
end
def move_upper_left
# ?????A?????? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
$game_party.move_upper_left_party_actors
end
super
end
def move_upper_right
# ???E?A?E???? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
$game_party.move_upper_right_party_actors
end
super
end
def jump(x_plus, y_plus)
# ?V???????W???v?Z
new_x = @x + x_plus
new_y = @y + y_plus
# ???Z?l?? (0,0) ??????A?W?????v????s??\???
if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
$game_party.jump_party_actors(x_plus, y_plus)
end
super(x_plus, y_plus)
end
end
end
class Game_Player
include Train_Actor::Game_Player_Module
end
# Scene_Map_Module.rb
#==============================================================================
# ?? Scene_Map_Module
#------------------------------------------------------------------------------
# ?}?b?v????A?N?^?[???????????????
#==============================================================================
module Train_Actor
module Scene_Map_Module
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
end
class Scene_Map
include Train_Actor::Scene_Map_Module
end
# Spriteset_Map_Module.rb
#==============================================================================
# ?? Spriteset_Map_Module
#------------------------------------------------------------------------------
# ?}?b?v????A?N?^?[???????????????
#==============================================================================
module Train_Actor
module Spriteset_Map_Module
def setup_actor_character_sprites?
return @setup_actor_character_sprites_flag != nil
end
def setup_actor_character_sprites(characters)
if !setup_actor_character_sprites?
for character in characters.reverse
@character_sprites.unshift(
Sprite_Character.new(@viewport1, character)
)
end
@setup_actor_character_sprites_flag = true
end
end
end
end
class Spriteset_Map
include Train_Actor::Spriteset_Map_Module
end
# Game_Party_Actor.rb
#==============================================================================
# ?? Game_Party_Actor
#------------------------------------------------------------------------------
# ?}?b?v????A?N?^?[???????????????
#==============================================================================
module Train_Actor
class Game_Party_Actor < Game_Character
attr_writer :move_speed
attr_writer :step_anime
def initialize
super()
@through = true
end
def setup(actor)
# ?L?????N?^?[??t?@?C??????F???????
if actor != nil and (not actor.dead?) # ????????????? ?????A????????c
@character_name = actor.character_name
@character_hue = actor.character_hue
else
@character_name = ""
@character_hue = 0
end
# ?s?????x????????@????????
@opacity = 255
@blend_type = 0
end
def screen_z(height = 0)
if $game_player.x == @x and $game_player.y == @y
return $game_player.screen_z(height) - 1
end
super(height)
end
#--------------------------------------------------------------------------
# ?? ??????
# turn_enabled : ?????????????X??????????t???O
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
# ???????*
if turn_enabled
turn_down
end
# ??s??\???
if passable?(@x, @y, Input::DOWN)
# ???????*
turn_down
# ???W???X?V
@y += 1
end
end
#--------------------------------------------------------------------------
# ?? ??????
# turn_enabled : ?????????????X??????????t???O
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
# ???????*
if turn_enabled
turn_left
end
# ??s??\???
if passable?(@x, @y, Input::LEFT)
# ???????*
turn_left
# ???W???X?V
@x -= 1
end
end
#--------------------------------------------------------------------------
# ?? ?E????
# turn_enabled : ?????????????X??????????t???O
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
# ?E?????*
if turn_enabled
turn_right
end
# ??s??\???
if passable?(@x, @y, Input::RIGHT)
# ?E?????*
turn_right
# ???W???X?V
@x += 1
end
end
#--------------------------------------------------------------------------
# ?? ??????
# turn_enabled : ?????????????X??????????t???O
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
# ???????*
if turn_enabled
turn_up
end
# ??s??\???
if passable?(@x, @y, Input::UP)
# ???????*
turn_up
# ???W???X?V
@y -= 1
end
end
#--------------------------------------------------------------------------
# ?? ????????
#--------------------------------------------------------------------------
def move_lower_left
# ?????Å’???????
unless @direction_fix
# ?E??????????????????A??????????????????????*
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
end
# ???????A?????? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
# ???W???X?V
@x -= 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ?? ?E??????
#--------------------------------------------------------------------------
def move_lower_right
# ?????Å’???????
unless @direction_fix
# ????????????????E???A??????????????????????*
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
end
# ?????E?A?E???? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
# ???W???X?V
@x += 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ?? ????????
#--------------------------------------------------------------------------
def move_upper_left
# ?????Å’???????
unless @direction_fix
# ?E??????????????????A??????????????????????*
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
end
# ?????A?????? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
# ???W???X?V
@x -= 1
@y -= 1
end
end
#--------------------------------------------------------------------------
# ?? ?E??????
#--------------------------------------------------------------------------
def move_upper_right
# ?????Å’???????
unless @direction_fix
# ????????????????E???A??????????????????????*
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
end
# ???E?A?E???? ????????R?[?X????s??\???
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
# ???W???X?V
@x += 1
@y -= 1
end
end
end
end
if ($game_switches[switch_ID] == value))
switch_ID beign the ID number of the switch, value beign true or false
DraycosGoldaryn;243656 said:The only problem with that, is you can not just put it in only one place, you must put it at the beginning of every method, and then you have to state what to do if it is not true. What I will be trying to do is figure out which default methods are overwritten, alias them, use an if statement for each to test if the script is enabled and if so, it will run fukuyama's method, and if not, it will run the default method.
Unfortunately, since i work all day saturday and sunday, I will not be able to start on this until monday. It may take me two to three days to finish because when I'm at home, real life intrudes and I don't get as much computer time as I would like. however, I will attempt this. I know it is possible, and besides, I've been wanting to make a script toggle-able for sometime now, and this will give me practice. If i can accomplish this, imagine the possibilities.....
if $game_switches[switch_ID] == true
return
end
if $game_switches[switch_ID] == true
return
end
def update_party_actors
if $game_party.actors.empty?
return
end
def update_party_actors
if $game_switches[switch_ID] == true
return
end
if $game_party.actors.empty?
return
end
# TRANSPARENT_SWITCH = true
TRANSPARENT_SWITCH = false
TRANSPARENT_SWITCH = true
# TRANSPARENT_SWITCH = false
TRANSPARENT_SWITCHES_INDEX = 20