ГлавнаяБлогКарты Warcraft 3Гайды для первой ДотыГайды для Доты 2 [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: XOPYC  
Воскрешение и настройке реса
Дата: Суббота, 08.01.2011, 15:32 | Сообщение # 1
Лейтенант
Проверенные
Сообщений: 65
Награды: 0
Репутация: 15
Когда только начинал строительство карт было очень непросто понять как работает WE без чей либо помощи.А кнопочку "а" сверху я просто пугался ибо вылезало окно с ужасными строками))Так вот сейчас всё стало гараздо лучше и яснее,но некоторые вопросы для меня до наших дней ялвляются загадкой.Пересматривал старые настройки героев в карте и обнаружил что у них в графе "Бой-тип смерти" стоит "можно оживить,не разлагается".И вспомнил для чего оно нужно было.Я хотел чтоб скил паладина ресал героев.Ну,конечно,это не сработало,но мысль о ресе всё ещё жива во мне.
Я видел много способов этого дела,вплоть до создания креста после смерти и возможности юза на этот крест свитков воскрешения и подобных кастов.Но я считаю это слишком.Если у вас есть идеи или наработки по этому поваду прошу изложить их ниже.И кое-что ещё про триггер с ресом гера после смерти о немё отдельно пара слов.Мне его посаветовали давным-давно и им же я и пользаюсь,(это уже второй вопрос получается) в нём создаётся окно таймера.Но если умрёт два героя одновременно("DonLaonda" узнаешь свою любимую тему?)) )То оба окна таймера отсчитывают одно и тоже время.Тут конечно,должны быть локальные переменные,но даже после прошлых ваших объяснений(вроде двух)я всёравно не понял как их устанавливать))
Итак итоги:а)Хотелось бы знать как ресать героев с помощью способностей
б)Как установить лок.перменную в триггере для воскрешения.
Событие-События игрока 1 (и так для всех)
Условие-переключающий юнит типа герой равно да
Действие-Запустить TIMER как однократный таймер который зазвонит через 30 сек.
Действие-Создать окно таймер для TIMER с названием "До воскрешения"
Дейсвтие-Ждать 30 сек.
Дейсвтие-уничтожить окно таймера
Действие-Мгновенно оживить умирающий юнит в центре облосит 001
 
Дата: Суббота, 08.01.2011, 16:10 | Сообщение # 2
Генералиссимус
Проверенные
Сообщений: 2873
Награды: 15
Репутация: 107
как вариант TIMER сделать массивом, равный количеству игроков. Получится TIMER[1] для первого, TIMER[2] для второго, и.т.д.
 
Дата: Суббота, 08.01.2011, 17:18 | Сообщение # 3
Генералиссимус
Модераторы
Сообщений: 13017
Награды: 22
Репутация: 141
Почему то голова не варит... Нужно сидеть делать, тогда решение придёт быстрее...
А вообще думаю это не так то и сложно...


это Ксопик!
 
Дата: Воскресенье, 09.01.2011, 02:19 | Сообщение # 4
Генералиссимус
Ньюсмейкер
Сообщений: 2438
Награды: 8
Репутация: 85
Quote (SunCreep)
DonLaonda" узнаешь свою любимую тему?

Она не моя любимая.. но та в которой происходит 99% ошибок у маперов.
Надо уметь делать паралельные процессы всётаки.
Quote (SunCreep)
я всёравно не понял как их устанавливать))

Значит ещё рано взялся ты за Жасс.
Но тут без локальных переменных.

Т.к. это рпг и у нас мало героев даже если взять стратегию то это 12*3 всего то 36.
Цыфра страшная, но ты понял как работают цыклы?

Необходимо создать таймеры заранее столько же сколько и Героев.

Выбираемых героев сразу же (как только их выбрали и начали ими играть) щзаносим в масив герев например первый выбранный герой будет Heroes[0]
Вместо 1 будем использовать переменную А, которая в конце триггера будет увеличиваться на 1, чтоб следущий герой уже записался не в Heroes[0] а в Heroes[1]

Вот пример триггера, по логике поймешь как сделать, напишу без внимания к ошибками

Code
Событие (Игрок выделил боевую еденицу)
Условие (Триггерный юнит - герой из области 001)
Действия
set udg_Heroes[udg_A]= Триггерный юнит
set udg_A = (udg_A +1)

Теперь можно приступать к определению того, какой таймер нам надо запустить.

Допустим мы воскрешаем героя какой либо магией.

Code
Событие (боевая еденица направляет скил воскрешение)
Условие (НЕТ УСЛОВИЯ)
Действия
For A=0 to 35 do actions
    If Heroes[A] = triggeringUnit() Then   
       Start timer[A]

Этот триггер крутит переменную А от 0 до 35 ( у нас 36 герев максимум, 35 - потмоу что 0 тоже считаем)
Как только герой под индексом совпадает с триггер юнитом, мы сразу узнаем что за юнита ресают.
И есесно запускает триггер воскрешения используя индекс именно этого героя.
Тут всё чётко у каждого героя свой таймер и друг с другом они не пересекаются.

Ещё 1 триггер будет отвечать за воскрешение т.е. если атймер закончился, смотрим какой именно и воскрешаем.

Тут дам небольшой совет.
Как по мне удобнее всего воскрешать без атймера вовсе (если магией)
Делаем это так:

Создаем триггер который срабатывает при смерти героя или если у героя мало хп.

Еслип ри смерти, то сею секунду воскрешаем героя, НО используем действие
Пауза.

Проигрываем анимацию Death - сразу после воскрешения и ставим паузу на юнита.
В итоге герой будет лежать на земле в позе трупа и игрок не сможет им управлять.

Другой герой к примеру подходит к мёртвому и юзает скил на основе лечения например или какованить бафа, не важно.
И тогда мы снимаем паузу с героя и заставляем сделать анимацию stand, можно спецэффект добавить.

У меня есть наработка с таймерами, но она в карте ФДМ, а её исходник я выкладывать не стану... почему? да просто из принципа==\ да и понять там что либо сложно там "матрица" на несколько листов.

Надеюсь написал чонить полезное))

Кстати. Сан, делай абзацы.. отступы в своих постах.
Просто не удобно читать.
А когда разные мысли отделены в разные обзацы и читать легче понятней и приятней хD

 
  • Страница 1 из 1
  • 1
Поиск: