В процессе разработки игры стало безумно жаль тратить свитчи и переменные, более того, приходилось много ресетить (возвращать кучу евентов на карте в первоначальное состояние) - и к концу разработки я реально мог бы выйти за лимиты XP, а ставить всякие приблуды для расширения мне лень.
Потому решил как можно больше строить на селфсвичах и написал парочку маленьких методов для удобной работы с ними.
Первый метод
set_ss позволяет установить selfswitch в true или false любому событию на карте. Удобно для пар "рычаг - решетка", когда не хочется пользовать глобальный флаг.
Второй метод
rss я использую для ресета головоломок - он сбрасывает все SelfSwitches у события, и обновляет его, если нужно.
Наконец, третий метод - это
глобальный set_ss, с его помощью вы можете, например, дернув рычаг на одной карте, открыть дверь на другой.
Порывшись на форуме, подобных скриптов не нашел, потому закидываю сюда свой вариант - авось кому пригодится. Код под спойлером нужно поместить в новый файл над Main в списке скриптов в мейкере.
class Game_Map
# --- Проставить нужный свитч событию ----
# на карте вызываем нечто вроде $game_map.set_ss(3, 'B', true)
def set_ss(ev_id, letter, val)
key = [@map_id, ev_id, letter]
$game_self_switches[key] = val
end
# --- Обнулить все селфсвитчи ------------
# на карте вызываем нечто вроде $game_map.rss(3)
def rss(ev_id)
flag = false
key = [@map_id, ev_id, 'A']
if $game_self_switches[key]
$game_self_switches[key] = false
flag = true
end
key = [@map_id, ev_id, 'B']
if $game_self_switches[key]
$game_self_switches[key] = false
flag = true
end
key = [@map_id, ev_id, 'C']
if $game_self_switches[key]
$game_self_switches[key] = false
flag = true
end
key = [@map_id, ev_id, 'D']
if $game_self_switches[key]
$game_self_switches[key] = false
flag = true
end
if flag
@events[ev_id].refresh
end
end
end
# --- Проставить нужный свитч событию на любой карте ----
# на карте вызываем нечто вроде $game_system.set_ss(5, 3, 'B', true)
class Game_System
def set_ss(map_id, ev_id, letter, val)
key = [map_id, ev_id, letter]
$game_self_switches[key] = val
end
end