|
Оффлайн
Пятница, 13.07.2012, 23:16 | Сообщение # 1
|
|
Воскрешение мобов и РБ Автор: 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
|
|
Это не Jass... Это конвект. |
|
|