|
Оффлайн
Среда, 23.10.2013, 22:00 | Сообщение # 1
|
|
Приветствую, читатель! Эта статья из рубрики "Как в Доте" расскажет о правильном (корректном) респауне нейтралов.
ПОДГОТОВКА
Для начала определитесь, какие мобы вам нужны и сколько их спаунов необходимо. Далее создайте (или откройте нужную) карту, расставьте парочку спаунов, как в доте (лес, возвыщения бла бла бла). В каждый из таких спаунов поместите по две области (одна меньше (для самого спауна), вторая - побольше (область для проверки, есть ли там юниты и можно ли создавать спаун), чтобы было как в доте). У меня получилось так:
Называйте области правильно, чтобы не запутаться. Например: области для 1 спауна назовите "Spawn 1 1" и "Spawn 1 2". Так можно понять, какие где области и не запутываться. Идем дальше.
ТРИГГЕРЫ
Как же спаунятся нейтралы? В доте они появляются каждые 60 сек, а также в первые 30 секунд игры. Я взял для примера каждые 30 секунд. Скрин, потом объяснение.
Из примера видно, что каждые 30 секунд идет сравнение, находятся ли в области Spawn 1 2 юниты, и если нет, то создать некоторую группу юнитов. Группа создается так: 1. Присвоение некоторой переменной (в моем случае SpawnRandom) случайное значение в промежутках от 1 до количества групп нейтралов, которые вы придумали (в моем случае - 3 группы). 2. Сравнение, если SpawnRandom=1, значит нужно создавать группу 1; иначе - если SpawnRandom=2, то, соответственно нужно создавать группу 2. Иначе же просто создать третью группу, ибо вариантов значений SpawnRandom больше нету (если значение между 1 и 3, а мы рассмотрели 1 и 2, то последний возможный вариант только 3).
Все хорошо, думаете вы, не правда ли? Увы, но у такой системы есть проблема. Спаун не сработает, если в области будут мертвые юниты. По смыслу, крипов мы уже убили, значит можно создавать новый спаун. Но триггеру все равно, мертвый юнит, или нет, ведь юнит в области, значит условие не выполнено. Изменяем наш триггер:
Мы выбираем каждого юнита в нужной области, и сравниваем, мертвый он или нет. Если да, то увеличиваем некоторую переменную (в моем случае - Spawn_Die_Units) на 1. В конце концов, наша переменная Spawn_Die_Units будет равна кол-ву мертвецов в области. Далее сравниваем кол-во юнитов в области. Условие таково: Если кол-во юнитов в области меньше или равно Spawn_Die_Units, то делаем все те же действия, что и в предыдущем триггере (1 скрин), только все эти действия должны быть после сравнения Spawn_Die_Units, и в операторе If/Then/Else с условием описанным выше.
В триггере мы имеем 2 if/then/else, которые и дают нам корректный спаун. Так повторяйте со всеми нейтральными спаунами. Good luck, have fun!
Статья для сайта warcraft3editor.ru, копирайт без указания автора (iSacreD) и без ссылки на сайт ЗАПРЕЩЕН ! ! |
|
|
|
Оффлайн
Суббота, 27.12.2014, 07:53 | Сообщение # 2
|
|
Admin, сылка не рабочая попробуй перезалить пожалуйста. |
|
|