var navTitle = 'Navigation';
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: iSacreD  
Форум » World Editor » Триггеры, GUI и Jass » Система возрождения монстров [JASS]
Система возрождения монстров [JASS]
Оффлайн
Пятница, 13.07.2012, 23:16 | Сообщение # 1
Сообщений:
4
Награды+
0
Воскрешение мобов и РБ
Автор: DonLaonda

Суть и возможности наработки:

1)При инициализации карты триггер ini resp запоминает всех мобов и боссов на карте. Запоминает их стартовые позиции. Самостоятельно т.е. не надо никого указывать в переменные, это за вас делает триггер.

2)Проверяет ежесекундно состояние каждого из мобов и боссов. Если находит мертвого, то для него начинает вести отсчет к воскрешению и воскрешает через определенное время (именно для этого моба).

3) Реализовано на ГУИ, подходит для сетевой игры, не вызывает утечек памяти.
Устранение утечки связанно с заменой стандартного ГУИ создания моба на функцию:
set bj_lastCreatedUnit = CreateUnitAtLoc
Которая реализована в виде кустом-скрипта. Это увеличивает скорость создания "воскресших юнитов", удаляет лишнии функции встроенные в стандартный: CreateNUnitsAtLoc.

По скольку боевые единицы создаются в статичных (стартовых точках, не изменяемых на протяжении всей игры), утечка связанная с точками так же устранена.

Возможности модификации наработки производимые через ini resp:

1)Задать игрока, который у вас является мобом.
2)Задать игрока, который является Боссом.
3)Изменить время респауна мобов/РБ (в секундах)

Импорт:

Скопировать триггеры ini resp и Respawn из папки "Перерождение".

Возможные утечки:

Не уничтожаются данные о погибшем юните, не критично (если нет юнитов использующих доп. анимацию) например ядовитые пауки, коконы. Или же использование триггера в игре, где мобы будут дохнуть десятками от одного скила.
Способ устранения: вставить действие боевая еденица -> RemoveUnit(Mobs[I_RespMob])
Между действиями:
кустом-скрипт:set bj_lastCreatedUnit = CreateUnitAtLoc(Player(PLAYER_NEUTRAL_AGGRESSIVE), GetUnitTypeId(udg_Mobs[udg_I_RespMob]), udg_MobPoint[udg_I_RespMob] , 90)
и (т.е. тут)
set Mobs[I_RespMob] = LastCreatedUnit

Но это испортит внешний вид т.к. моб не будет оставлять трупа, а попросту будет исчезать.
Так же можно создать параллельный перенос умерших юнитов в спец массив, откуда они будут в дальнейшем уничтожаться после превращения в труп.

Аналогично для РБ. ИМХО это излишки, а создание параллельного массива лишь увеличит нагрузку.

+ для воскрешения, у моба должно быть свойство:
Бой-Тип смерти = можно оживить, разлагается либо нельзя оживить, разлагается

По стандарту у 90% мобов так и есть, но например у призраков и светлячков нет.
Оффлайн
Пятница, 27.12.2013, 11:24 | Сообщение # 2
Сообщений:
2
Награды+
0
Это не Jass... Это конвект.
Форум » World Editor » Триггеры, GUI и Jass » Система возрождения монстров [JASS]
  • Страница 1 из 1
  • 1
Поиск: