|
|
|
|
смерть бе
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 13:59:51 | Сообщение # 1 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| Вот представим триггер : Событие : бе умирает и тут возникает вопрос если после того как умер воин через 3 секунды умрет еще воин то выполнение тех действий при первой смерти прекратится ? если да то это означает что постепенно бе будет становится меньше и меньше и как тогда с этим бороться ?
Сообщение отредактировал Dark_Zarich - Понедельник, 16 Мая 2011, 14:00:22 |
|
|
|
Mep3aB4uK | Дата: Понедельник, 16 Мая 2011, 14:14:36 | Сообщение # 2 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Dark_Zarich, не устанавливай точку. Создать 1 юнита в случайная точка neutral <gen>
|
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 14:27:38 | Сообщение # 3 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| почему ? все равно же оптимизирована а так будет утечка
|
|
|
|
SirNikolas | Дата: Понедельник, 16 Мая 2011, 14:42:19 | Сообщение # 4 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Точка установлена (и удалена) правильно. Все дело в ожидании. Нужно переделывать с помощью параллельных массивов или хэша. Сейчас напишу функцию.
|
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 14:43:34 | Сообщение # 5 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| SirNikolas, без жасс плиз
|
|
|
|
SirNikolas | Дата: Понедельник, 16 Мая 2011, 14:55:13 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code function ReviveCreep_Timer takes nothing returns nothing local timer t = GetExpiredTimer() local integer i = GetHandleId(t) local rect point = LoadRectHandle(udg_Hash, i, 1) call GroupAddUnit(udg_CreepsGroup[LoadInteger(udg_Hash, i, 2)], CreateUnit(LoadPlayerHandle(udg_Hash, i, 3), LoadInteger(udg_Hash, i, 0), GetRandomReal(GetRectMinX(point), GetRectMaxX(point)), GetRandomReal(GetRectMinY(point), GetRectMaxY(point)), 270.)) call DestroyTimer(t) call FlushChildHashtable(udg_Hash, i) set t = null set point = null endfunction
function ReviveCreep takes integer id, real time, rect point, integer groupNum, player p returns nothing local timer t = CreateTimer() local integer i = GetHandleId(t) call SaveInteger(udg_Hash, i, 0, id) call SaveAgentHandle(udg_Hash, i, 1, point) call SaveInteger(udg_Hash, i, 2, groupNum) call SaveAgentHandle(udg_Hash, i, 3, p) call TimerStart(t, time, false, function ReviveCreep_Timer) set t = null endfunction Вызывается функция таким образом:Code call ReviveCreep(id, time, point, groupNum, p) , где id - raw-код юнита, time - задержка воскрешения, point - область, в которой он будет воскрешен, groupNum - номер группы, в которую юнит будет записан, p - игрок, владелец юнита. Пример:Code call ReviveCreep(GetUnitTypeId(GetTriggerUnit()), 15., gg_rct_neutral, 1, Player(12)) - возродит юнита типа умершего через 15 секунд в области neutral <gen> для игрока (12 + 1) - нейтрально-враждебного, а также запишет в CreepsGroup[1].
|
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 14:56:47 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| SirNikolas, а ее можно вызвать с помощью костюм скрипт ?
|
|
|
|
SirNikolas | Дата: Понедельник, 16 Мая 2011, 14:56:54 | Сообщение # 8 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Dark_Zarich, если без JASS, то нужно открывать WE, потому что ты вряд ли поймешь все эти массивы, а я сейчас спешу. P. S. Требуется создать переменную Hash типа хэш-таблица и в триггере инициализации написать:Code set udg_Hash = InitHashtable()
|
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 14:58:01 | Сообщение # 9 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| напишите кто нибудь на гуи
|
|
|
|
SirNikolas | Дата: Понедельник, 16 Мая 2011, 14:58:39 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Dark_Zarich) ее можно вызвать с помощью костюм скрипт Можно.
|
|
|
|
Mep3aB4uK | Дата: Понедельник, 16 Мая 2011, 15:33:56 | Сообщение # 11 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Dark_Zarich, можно и без хеша... но локальными переменными. Конвертируеш в текст, копириуеш строчку(только те где используется переменная) потом отменяеш и вставляеш ее в cs вначале делаеш: local location loc бла-бла(на гуи) там где установить точку (переведи и скопируй все) будет примерно: set udg_TempPoint[1]=RandomPoint поменяй udg_TempPoint[1] на loc....примерно: set loc=RandomPoint также с текстом создания юнита, меняеш udg_TempPoint[1] на loc удаляеш точку loc и в конце set loc=null
Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 16:18:00 |
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 16:30:56 | Сообщение # 12 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| Quote (Mep3aB4uK) удаляеш точку loc этого непонял
|
|
|
|
Mep3aB4uK | Дата: Понедельник, 16 Мая 2011, 16:55:24 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Dark_Zarich, call RemoveLocation loc
|
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 17:04:56 | Сообщение # 14 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| Mep3aB4uK, слушай а тот код что ты написал и будет ответом на мой вопрос ?
|
|
|
|
Mep3aB4uK | Дата: Понедельник, 16 Мая 2011, 17:08:30 | Сообщение # 15 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Dark_Zarich, да
Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 17:09:25 |
|
|
|
adiga | Дата: Понедельник, 16 Мая 2011, 17:08:51 | Сообщение # 16 |
7 уровень
Группа: Проверенные
Сообщений: 489
Награды: 0
Репутация: 14
Блокировки:
| да ты б хоть проверил, триггер действует как положено! не прерываются события, и для каждого юнита как положено ожидается 3 сек затем происходит то что тебе надо
триггеринг 439/450 спеллкрафт 447/450 картокрафт 427/450 ландшафтинг 189/450 фастмэйкинг 225/225 иконкрафтинг 310/450 импортинг 110/450 самооценкинг 450/450
|
|
|
|
Mep3aB4uK | Дата: Понедельник, 16 Мая 2011, 17:14:06 | Сообщение # 17 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Quote (adiga) да ты б хоть проверил, триггер действует как положено! а в общем то да, я посмотрел то точка ставится после вайта и проблем не должно быть
|
|
|
|
SirNikolas | Дата: Понедельник, 16 Мая 2011, 17:17:17 | Сообщение # 18 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Mep3aB4uK, adiga, wait очень и очень часто глючит. И если у вас он работает нормально, это не значит, что то же самое будет в другой карте.Quote (Mep3aB4uK) можно и без хеша Согласен. Можно массивами.
|
|
|
|
Keeper_of_the_Life | Дата: Понедельник, 16 Мая 2011, 17:22:01 | Сообщение # 19 |
7 уровень
Группа: Проверенные
Сообщений: 467
Награды: 1
Репутация: 130
Блокировки:
| Quote (SirNikolas) wait очень и очень часто глючит Согласен. Багнутая команда. Надо делать таймерами.
|
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 17:22:27 | Сообщение # 20 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| скажите плиз правильный и рабочий ответ
|
|
|
|
SirNikolas | Дата: Понедельник, 16 Мая 2011, 17:24:24 | Сообщение # 21 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Да вот же он.
|
|
|
|
Mep3aB4uK | Дата: Понедельник, 16 Мая 2011, 17:25:32 | Сообщение # 22 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Dark_Zarich, если на 1 игрока то можешь использовать свой вариант, а если в сетку то хешом выше
Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 17:26:03 |
|
|
|
Dark_Zarich | Дата: Понедельник, 16 Мая 2011, 17:28:57 | Сообщение # 23 |
9 уровень
Группа: Проверенные
Сообщений: 1022
Награды: 0
Репутация: 942
Блокировки:
| у меня так должны реcпатся 3 игрока 1. нейтрально враждебный (в neutral) 2. бе игрока синего не герои (в зоне X) 3. бе игрока красного не герои (в зоне У) Добавлено (16-05-2011, 17:28) --------------------------------------------- каждая их бе респается 10 сек
|
|
|
|
Mep3aB4uK | Дата: Понедельник, 16 Мая 2011, 17:32:55 | Сообщение # 24 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Dark_Zarich, смотри, если ко го то из игроков заглючит на 9 сек., то до респа останется 1 сек.,а не 10. если для тебя это не сыграет большой роли то делай по своему варианту, иначе копируй то что SirNicolas написал
Сообщение отредактировал Mep3aB4uK - Понедельник, 16 Мая 2011, 17:33:37 |
|
|
|
FkoFF | Дата: Понедельник, 16 Мая 2011, 17:34:59 | Сообщение # 25 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Dark_Zarich, все варианты которые я до этого пробовал в плане респа приводили к эпик фейлу. Единственный рациональный (действительно рациональный вариант) - джасс. Реализация по типу того что предложил SirNikolas (код не читал, но представляю что там). Посему вот тебе и первое ненавязчивое знакомство с джасс.
|
|
|
|
|
|
|
|
|
|
|