ОБУЧАЛКИ ДЛЯ DROMED

Автор DonSleza4e, 10 ноября 2003 18:37:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Soul_Tear

Цитата: Kolsy от 15 июля 2015 17:06:21
и еще меня интересуют туториалы от jasonotto.net так как сайт теперь не работает.

Возможно, он временно не работает. Но в любом случае ты всегда можешь спросить на нашем форуме, сомневаюсь, что JO знает что-то, чего не знаем мы :cool1:

Zontik

#121
К своему стыду, только вчера выяснил, что в движок, оказывается, встроен собственный отличный рандомизатор. И все эти технологии с вращающимися эмиттерами и прыгающими лягушками - просто костыли для не умеющих читать документацию.
Вкратце - как это работает. Может, кому пригодится.
Для начала определимся - сколько нам надо вариантов. Для краткости примера я возьму 3. Только для краткости; реальное число вариантов ограничено только вашей усидчивостью.
Начнем с того, что создадим новую переменную Random (имя совершенно произвольное), введя команду:
quest_create_mis Random, 0
Ноль в конце означает, что мы изначально приравниваем эту переменную к нулю. Сам ноль в качестве варианта использоваться не будет, это защита от случайного срабатывания.
Сама переменная нам нисколько не нужна, она используется только движком, но нужно, чтобы она была.
Теперь собственно рандомизатор.
Создаем на уровне любой объект (или используем существующий) назовем его А - и добавляем к нему скрипт (S > Scripts): TrapSetQVar.
Затем добавляем еще одно свойство: Trap > Quest Var. В единственной строке параметров вводим следующее:
d3:Random
Что это означает?
Символ d в начале означает выбор движком любого случайного числа в промежутке от 1 до числа, которое стоит за ним. В данном случае это 3. Число присваивается переменной Random. В результате при срабатывании этого скрипта у нас переменная Random принимает произвольное значение: 1, 2 или 3.
(Я старательно избегаю нуля, но в принципе его можно использовать. В этом случае вместо d подставляется вопросительный знак, и вариантов на выходе будет четыре: 0, 1, 2, 3. Можете делать и так, если не боитесь.)
Но чтобы скрипт сработал, необходимо его включить, то есть подать сигнал TurnOn на объект А. Здесь допускаются любые варианты. У меня обычно на уровне имеется какой-нибудь спрятанный рубильник, изначально поставленный в положение "Вкл", это позволяет включить все желаемое прямо при старте миссии. Можете сделать так, можете использовать скрипт нахождения игрока в конкретном помещении, можете вспомнить, что существует такая вещь, как BoundsTrigger, а можете вообще отложить выбор этого случайного числа на более поздний срок - например, назначить его на срабатывание выключателя, отпирающего дверь, за которой и находится то, ради чего вы затеяли эту игру в Бога. Важно одно: чтобы триггер сработал ДО того, как вам понадобится результат этого случайного выбора. В противном случае ваше переменная в нужный момент так и останется равной нулю.
Итак, выбираем тип выключателя и протягиваем от него связь ControlDevice к объекту А. Половина дела сделана. Теперь либо при старте миссии, либо в какой-то неизбежный по сценарию момент рубильник или триггер сработает, сигнал TurnOn уйдет на объект А, и случайный выбор между числами 1, 2 и 3 совершится. Ваша переменная обретет значение.
Вторая половина дела заключается в том, чтобы воспользоваться результатами первой половины.
Выбираем или создаем объекты B, С и D (по числу вариантов) и добавляем каждому из них следующее свойство:
S > Sctipts: TrigQVar
Второе добавленное свойство (Trap > Quest Var) для каждого из объектов немного отличается. В строку параметров вводим следующее.
Для объекта В:
=1:Random
Для объекта C:
=2:Random
Для объекта D:
=3:Random
Вот, собственно, и все. Скрипт TrigQVar постоянно отслеживает состояние переменной Random (c периодичностью не реже, чем раз в секунду, точного значения не помню) и, как только оно достигнет заданного после знака равенства числа, скрипт срабатывает и передает сигнал TurnOn ко всему, подключенному к данному объекту связью ControlDevice.
Другими словами, объекты B, C и D - это триггеры, каждый из которых запускает свой вариант развития событий. Например, вам надо разместить ключ в одном из трех мест. Ставите в каждое из этих мест обычную TeleportTrap, подключаете их все к одному ключу, а триггеры B, C и D подключаете связью ControlDevice к каждой из TeleportTrap: В - к одной, C - к другой, D - к третьей. Миссия стартует, случайный выбор осуществляется, триггеры засекают изменение и один из телепортеров срабатывает. Ключ перемещается в одно из трех мест и там остается.
У создателей "Подслушивания" хватило усидчивости аж на 13 (из других источников - 15) вариантов. Кто  больше?
Дайте глазам отдохнуть! Тёмное место

Dront

О, сколько нам открытий чудных...
Как это обнаружилось?
"You cannot run from life as you did from us, Garrett! Life has a way of finding you..."
"Beware the dawn of the Metal Age."

Zontik

Искал кое-что в документации, связанное с этим вопросом. Нашел бомбу.
Дайте глазам отдохнуть! Тёмное место

Zontik

Поправил немного синтаксис, по памяти написал сначала не совсем корректно.
Дайте глазам отдохнуть! Тёмное место

Maxim

Цитироватьчто в движок, оказывается, встроен собственный отличный рандомизатор.
ЦитироватьМожет, кому пригодится.
Конечно пригодится! Ты молодец! Помнишь, например, мою идею, описанную тебе для совместного проекта, что ты отклонил? Вот как раз тот случай, когда рандомизатор очень нужен. Даже не нужен, а необходим.
Still they talk anyway
When there's nothing to say
There's so much said in empty words...

Zontik

Да вещь вообще бесценная для стимуляции неоднократного прохождения. Ее же можно гораздо шире использовать, чем кажется на первый взгляд. И никаких движущихся частей.
На самом деле это повторное прохождение - ужасная головная боль, стоит только задуматься. Игрок уже не будет перечитывать те документы, которые в первый раз были для него обязательны, не будет добывать подсказки, которые переписал себе в блокнот заранее, а попытается схитрить и сделать вид, что он все это уже знает. И это порой полностью переворачивает геймплей. А иногда и ломает.
Маленький элемент непредсказуемости быстро поставит такого умника на место.
Единственный, кто останется недовольным - это человек, пытающийся написать прохождение. Но так ему и надо.
Дайте глазам отдохнуть! Тёмное место

Maxim

Zontik Правильно. Прохождения есть маленькое зло :) Лучше самому попытаться. И удовольствие от найденного в итоге решения куда больше, чем если подсмотреть. Порою бывает без него ну совсем никак. Бывает квесты (отдельные игры) такими сделают, что хоть лбом бейся - бестолку. Однако, такие миссии и не надо делать. Надо, чтобы всё было логично и что большинство людей смогут понять. А не так, что решение одному автору понятней. Это как если математик сделает миссию для всех, а там будет задачка про интегралы всякие.
Still they talk anyway
When there's nothing to say
There's so much said in empty words...

Soul_Tear

Не понял, какая связь между ключами и движущимися частями?

Zontik

Все наколенные варианты рандомизатора подразумевали довольно сложную конструкцию, включающую движущиеся части. Здесь же даже связей практически нет. Беспроводные технологии, DarkWi-Fi.
Дайте глазам отдохнуть! Тёмное место