- Сообщений: 1274
- Спасибо получено: 1307
[XP] Маленькие хитрости для бережливых мейкеристов
13 года 4 нед. назад #59816
от caveman
В процессе разработки игры стало безумно жаль тратить свитчи и переменные, более того, приходилось много ресетить (возвращать кучу евентов на карте в первоначальное состояние) - и к концу разработки я реально мог бы выйти за лимиты XP, а ставить всякие приблуды для расширения мне лень.
Потому решил как можно больше строить на селфсвичах и написал парочку маленьких методов для удобной работы с ними.
Первый метод set_ss позволяет установить selfswitch в true или false любому событию на карте. Удобно для пар "рычаг - решетка", когда не хочется пользовать глобальный флаг.
Второй метод rss я использую для ресета головоломок - он сбрасывает все SelfSwitches у события, и обновляет его, если нужно.
Наконец, третий метод - это глобальный set_ss, с его помощью вы можете, например, дернув рычаг на одной карте, открыть дверь на другой.
Порывшись на форуме, подобных скриптов не нашел, потому закидываю сюда свой вариант - авось кому пригодится. Код под спойлером нужно поместить в новый файл над Main в списке скриптов в мейкере.
Потому решил как можно больше строить на селфсвичах и написал парочку маленьких методов для удобной работы с ними.
Первый метод set_ss позволяет установить selfswitch в true или false любому событию на карте. Удобно для пар "рычаг - решетка", когда не хочется пользовать глобальный флаг.
Второй метод rss я использую для ресета головоломок - он сбрасывает все SelfSwitches у события, и обновляет его, если нужно.
Наконец, третий метод - это глобальный set_ss, с его помощью вы можете, например, дернув рычаг на одной карте, открыть дверь на другой.
Порывшись на форуме, подобных скриптов не нашел, потому закидываю сюда свой вариант - авось кому пригодится. Код под спойлером нужно поместить в новый файл над Main в списке скриптов в мейкере.
ВНИМАНИЕ: Спойлер!
Code:
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
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Agckuu_Coceg
-
- Не в сети
- Живу я здесь
-
- Простой Гинтокист с огромной внутренней ленью.
Скрыть
Больше
- Сообщений: 1549
- Спасибо получено: 329
13 года 3 нед. назад - 13 года 3 нед. назад #59817
от Agckuu_Coceg
Agckuu_Coceg ответил в теме [XP] Маленькие хитрости для бережливых мейкеристов
Ну почему же нет. Вот вполне оптимизированная система, чтобы управлять селфами.
Хотя с глобальными селфами идея неплохая.
ВНИМАНИЕ: Спойлер!
Code:
#==============================================================================
# Global Self Switch Control
#------------------------------------------------------------------------------
# This script lets you control Self Switches on the current map from ANY event!
# Using 'Call Script', just type 'SetSelfSwitch(e,s,v)' where e is the Event ID,
# s is the Switch ("A","B","C" or "D") and v is true or false (no speech marks!)
#
# Also, by typing 'InvertSelfSwitch(e,s)' you can turn a self switch off if it
# is on and on if it is off.
#
# Plus, as an added bonus, you can do this to normal switches by typing
# 'InvertSwitch(s)'
#==============================================================================
class Interpreter
def SetSelfSwitch(e,s,v)
key = [$game_map.map_id,e,s]
$game_self_switches[key]= v
$game_map.events[e].refresh
end
def InvertSelfSwitch(e,s)
key = [$game_map.map_id,e,s]
if $game_self_switches[key] == false
$game_self_switches[key]=true
else
$game_self_switches[key]=false
end
$game_map.events[e].refresh
end
def InvertSwitch(s)
if $game_switches[s] == false
$game_switches[s]=true
else
$game_switches[s]=false
end
end
end
Хотя с глобальными селфами идея неплохая.
Огромный любитель среброволосых или пепельноволосых 2D-девушек с хорошим характером или со скрытыми привлекательными чертами.
Последнее редактирование: 13 года 3 нед. назад пользователем Agckuu_Coceg.
Спасибо сказали: DeadElf79
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
13 года 3 нед. назад #59820
от caveman
caveman ответил в теме [XP] Маленькие хитрости для бережливых мейкеристов
В гугле то гуглятся (правда, как всегда: написал, а потом нагуглил), но тут на форуме не нашлось - потому и скинул для местных.
PS: Заметил, что для незалогиненных пользователей ветка форума про скрипты не отображается о_О
PS: Заметил, что для незалогиненных пользователей ветка форума про скрипты не отображается о_О
Спасибо сказали: DeadElf79
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.090 секунд
