Как сделать возрождение (revival) Нейтрально-враждебных?
|
|
Zagar | Дата: Четверг, 02 Июля 2009, 22:32:20 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| Мне надо сделать возрождение крипов с учетом того, чтобы они появлялись на том месте,где они стоят при загрузке карты....
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
Сообщение отредактировал Zagar - Пятница, 03 Июля 2009, 00:21:03 |
|
|
|
Meck | Дата: Четверг, 02 Июля 2009, 22:39:26 | Сообщение # 2 |
8 уровень
Группа: Проверенные
Сообщений: 645
Награды: 0
Репутация: 35
Блокировки:
| Zagar, ну можеш добавить им магию возрождения убрав перезарядку ману и .... Либо занося в переменную и после создание на месте позиции юнита (твой юнит)Добавлено (02-07-2009, 22:39) --------------------------------------------- Meck, впринципе вопрос немного непонятно написан
|
|
|
|
Zagar | Дата: Четверг, 02 Июля 2009, 22:45:10 | Сообщение # 3 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| Quote (Meck) после создание на месте позиции юнита мне не надо чтобы он появился в том месте где его завалили, мне надо чтобы он появился, где ему положено стоять,т.е. когда карта загрузилась волк стоит в лесу,потом на него напали и он побежал за нападавшим....тот его потом убил на тропе какой-нить, прошло 20 секунд волк появился не в лесу , а на тропе, а он мне там не нужен
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
|
|
|
|
Malfatto | Дата: Четверг, 02 Июля 2009, 22:45:30 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 3806
Награды: 7
Репутация: 2425
Блокировки:
| Zagar, При загрузке карты нужно каждого из них (можно через массив) записать - где они находятся. А потом, когда это нужно, воскрешать и давать им положение, записанное в переменную.
|
|
|
|
Zagar | Дата: Четверг, 02 Июля 2009, 22:46:34 | Сообщение # 5 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| Zak, а расписать?
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
|
|
|
|
Meck | Дата: Четверг, 02 Июля 2009, 22:47:41 | Сообщение # 6 |
8 уровень
Группа: Проверенные
Сообщений: 645
Награды: 0
Репутация: 35
Блокировки:
| Zagar, без понятия, так там нечего ненашол в тригере скорей всего только через переменную, ну а через переменную я думаю ты зделаеш.
|
|
|
|
Zagar | Дата: Четверг, 02 Июля 2009, 22:50:34 | Сообщение # 7 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| Quote (Meck) ну а через переменную я думаю ты зделаеш. Quote (Zak) записать - где они находятся.давать им положение, записанное в переменную. это мне надо область для каждого создать?
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
|
|
|
|
БАМ | Дата: Четверг, 02 Июля 2009, 23:15:11 | Сообщение # 8 |
10 уровень
Группа: КоМодераторы
Сообщений: 2490
Награды: 5
Репутация: 1223
Блокировки:
| Zagar, нет, сохранить им в качестве переменной их стартовое местоположение, в ручную области создавать необязательно.
|
|
|
|
Meck | Дата: Четверг, 02 Июля 2009, 23:31:30 | Сообщение # 9 |
8 уровень
Группа: Проверенные
Сообщений: 645
Награды: 0
Репутация: 35
Блокировки:
| Zagar, сделал только для одного нейтрального, для других нужно вписывать переменные, но у меня сейчас бошка неварит, на надеюсь поможет ЖМИ.
|
|
|
|
Zagar | Дата: Четверг, 02 Июля 2009, 23:43:24 | Сообщение # 10 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| Meck, спасибо. Zak, БАМ, так? вопрос снят с повестки дня.
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
|
|
|
|
-Castro- | Дата: Пятница, 03 Июля 2009, 00:54:35 | Сообщение # 11 |
УГ продюсер
Группа: Ветераны
Сообщений: 2099
Награды: 3
Репутация: 1213
Блокировки:
| Zagar, если у тя мапа 256х256 и куча крипов ты их также в переменную заносить собираешься? Аффтар, делай такой вот триггер Получается каждые 30 сек создаются юниты в определенной области, если в ней юнитов нет
Сообщение отредактировал -Castro- - Пятница, 03 Июля 2009, 00:55:54 |
|
|
|
Malfatto | Дата: Пятница, 03 Июля 2009, 01:47:12 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 3806
Награды: 7
Репутация: 2425
Блокировки:
| Моя задумка как раз по требованиям. Да и в русских триггерах не шарю.
|
|
|
|
Enforcer | Дата: Пятница, 03 Июля 2009, 01:53:16 | Сообщение # 13 |
Энф Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
| Я бы как Кастро сделал, через области) Вроде когда то так и делал.
|
|
|
|
lZanozal | Дата: Пятница, 03 Июля 2009, 01:55:26 | Сообщение # 14 |
2 уровень
Группа: Пользователи
Сообщений: 27
Награды: 0
Репутация: 24
Блокировки:
| Можно создать 2 массива (жалко нет динамических массивов) 1: Точка - Для сохранения позиции юнита 2: Боевая единица - для сохранения юнита и 1 целочисленную переменную для нумерации юнита с начальным числом 1. Создаем действие при инициализации Одряд юниты такого игрока 1 __цикл ____Точка[число] = Позиция юнита репик юнит ____юнит[число] = репик юнит ____Число = число + 1; далее в процессе смерти юнита проверяем зациклино его позицию в массиве Событие: юнит умирает Условие: юнит = принадлежит игрок 1 Действие: for 1 to размер массива do { __if ( Если юнит[А] ) подождать время (Wait) появление после смерти создать боевая единица (Тип репик юнит) в точке (Точка[A])... Юнит[А] = соданный юнит else нет действий } Вот идея но есть недостаток надо знать сколько юнитов у игрока и если добавил то и увелич размер массива Добавлено (03-07-2009, 01:55) --------------------------------------------- а и добавлю в методе ненужны области
Garena: ~|CFF010101bl Проект: Затеряный остров - В поисках снежного человека = 48%
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 02:37:43 | Сообщение # 15 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Code /Globals globals gamecache cache = InitGameCache("map") real timeout = 30//Timeout for ressurect real array UXS real array UYS endglobals //RB function U2I takes unit u returns integer return u return 0 endfunction
function I2U takes integer i returns unit return i return null endfunction //Resurrect system function OnDie takes nothing returns nothing local unit u = GetDyingUnit() local integer id = GetUnitTypeId(u) local integer i = U2I(u) local integer nmb = GetStoredInteger(cache, "nmbs", I2S(i)) call FlushStoredInteger(cache, "nmbs", I2S(i)) call TriggerSleepAction(timeout) call RemoveUnit(u) set u = CreateUnit(Player(12), id, UXS[nmb], UYS[nmb], 0) call StoreInteger(cache, "nmbs", I2S(U2I(u)), nmb) set u = null endfunction
function Res_Init takes nothing returns nothing local group g = CreateGroup() local unit u local integer i = 1 local trigger t = CreateTrigger() call GroupEnumUnitsOfPlayer(g, Player(12), null) loop set u = FirstOfGroup(g) exitwhen u == null or i >= 8000 set UXS[i] = GetUnitX(u) set UYS[i] = GetUnitY(u) call StoreInteger(cache, "nmbs", I2S(U2I(u)), i) call GroupRemoveUnit(g, u) set i = i + 1 endloop call DestroyGroup(g) call TriggerRegisterPlayerUnitEvent(t, Player(12), EVENT_PLAYER_UNIT_DEATH, null) call TriggerAddAction(t, function OnDie) set t = null endfunction Должно работать. Не тестил, ибо все равно никто не воспользуется. Последнюю функцию запустить на нулевой секунде.
Сообщение отредактировал MaSer - Пятница, 03 Июля 2009, 02:43:30 |
|
|
|
-Castro- | Дата: Пятница, 03 Июля 2009, 09:24:14 | Сообщение # 16 |
УГ продюсер
Группа: Ветераны
Сообщений: 2099
Награды: 3
Репутация: 1213
Блокировки:
| Quote (MaSer) Должно работать. Не тестил, ибо все равно никто не воспользуется. Последнюю функцию запустить на нулевой секунде. Глупо писать пример на Jass для человека который на триггерах не может сделать возрождение крипов Добавлено (03-07-2009, 09:24) ---------------------------------------------
Quote (Enforcer) Я бы как Кастро сделал, через области) Вроде когда то так и делал. в доте так же сделано
|
|
|
|
Zagar | Дата: Пятница, 03 Июля 2009, 11:41:40 | Сообщение # 17 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| Quote (-Castro-) тя мапа 256х256 и куча крипов нет карта маленькая,если честно когда много областей это тоже вариант, что лучше выбирать область или переменную? Quote (-Castro-) пример на Jass Jass я конечно не знаю, но:Quote (-Castro-) не может сделать возрождение крипов сделать я могу,вот мой окончательный вариант(ибо тот создает только один раз),но только спецэффект надо подобрать нужный:
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
Сообщение отредактировал Zagar - Пятница, 03 Июля 2009, 11:58:54 |
|
|
|
nekron_013 | Дата: Пятница, 03 Июля 2009, 12:25:05 | Сообщение # 18 |
3 уровень
Группа: Проверенные
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| Событие: юнит игрока нейтрально враждебный погиб. Условие: (сам поставиш если надо) Действие:создать юнита тип умерающий юнит 1шт поворот на сколько то градусов...
|
|
|
|
БАМ | Дата: Пятница, 03 Июля 2009, 12:43:26 | Сообщение # 19 |
10 уровень
Группа: КоМодераторы
Сообщений: 2490
Награды: 5
Репутация: 1223
Блокировки:
| nekron_013, и ты будешь на каждого юнита отдельный триггер делать?
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 13:05:04 | Сообщение # 20 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Quote (-Castro-) в доте так же сделано В доте не также сделано Quote (-Castro-) Глупо писать пример на Jass для человека который на триггерах не может сделать возрождение крипов То, что я написал, можно сделать почти в таком же виде и без джасса.
|
|
|
|
DragoN | Дата: Пятница, 03 Июля 2009, 13:39:01 | Сообщение # 21 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| Quote (MaSer) То, что я написал, можно сделать почти в таком же виде и без джасса. угу,правда за исключением рб и стора интегеров(и ещё нескольких действий(создание локального трига к примеру)) ЗЫ: MaSer, а разве не нужно уничтожать триг t,для избежания утечек?(правда нужно будет ещё ждать,пока не закончит выполнение функция OnDie иначе эффекта вообще не буит...)
El Psy Congroo
Сообщение отредактировал Dragon93 - Пятница, 03 Июля 2009, 13:39:27 |
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 17:16:17 | Сообщение # 22 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Quote (Dragon93) ЗЫ: MaSer, а разве не нужно уничтожать триг t,для избежания утечек?(правда нужно будет ещё ждать,пока не закончит выполнение функция OnDie иначе эффекта вообще не буит. Попробуй, уничтожь. Работать перестанет. Quote (Dragon93) угу,правда за исключением рб и стора интегеров(и ещё нескольких действий(создание локального трига к примеру)) Они заменяются на нелокальные триггеры, и кастом велью.
|
|
|
|
DragoN | Дата: Пятница, 03 Июля 2009, 17:54:28 | Сообщение # 23 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| Quote (MaSer) Попробуй, уничтожь. Работать перестанет но ведь локальный триг останеться в памяти?
El Psy Congroo
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 17:55:48 | Сообщение # 24 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Quote (Dragon93) но ведь локальный триг останеться в памяти? Quote (MaSer) set t = null
|
|
|
|
DragoN | Дата: Пятница, 03 Июля 2009, 18:06:46 | Сообщение # 25 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| MaSer, переменная = ссылка ты таким образом теряешь ссылку на объект...
El Psy Congroo
|
|
|
|