Аминь
Crazy about that shit
offline
Опыт:
3,214Активность: |
Идея для создания Системы воскрешения крипов
У меня появилась идея по поводу создания системы воскрешения (респавна как вам угодно) крипов. Она заключается в том, что каждый раз после смерти юнита на его месте создаётся невидимый юнит, которого мы добавляем в некую группу, т.е. создаём свободный спавнпоинт. Далле Wait 20-40 сек. и мы воскрешаем умершего крипа на позиции рандомного юнита из группы спавнпоинтов. Далее удаляем юнит-спавнпоинт из группы и из игры. Подскажите как это всё лучше реализовать грамотно и без утечек. |
11.04.2008, 14:22 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
лучше это все реализовать локациями, или, еще лучше - структурами-координатами таких спавнопоинтов.
FellGuard добавил: т.е. тебе в раздел джасс, читать про джасс нью ген) |
11.04.2008, 14:27 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Аминь
Crazy about that shit
offline
Опыт:
3,214Активность: |
Т.е. способ который предложил я - менее экономичный и с ним придётся больше возиться, если на карте большое число крипов разных типов, нежели способ при создании нью геном? |
11.04.2008, 14:35 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
забудте о нью гене на время - это макро средства
если нам нужна именно производительность мыслить надо на самом "низком" уровне ну я тп, на гуи впринципе ничего "качественно" не сделаешь, т.е. в любом случае на жасс это можно сделать быстрее/лучше/проще юнит наверное самый ресурсоемкий обьект в игре, использовать его для поментки нестоит |
11.04.2008, 14:41 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Аминь
Crazy about that shit
offline
Опыт:
3,214Активность: |
Код:
FellGuard т.е. ты мне предлогаешь записать каждого нужного мне юнита вот таким способом?) На это ведь вся моя жизнь уйдёт... Ну допустим будет у меня база данных координат и как я проверять буду - жив юнит на этой координате или нет... Цитата:
Но ведь юинт будет создаваться лишь на время которе необходимо для респавна умершего крипа т.е. память будет занимать лишь на короткое время. И есть ли другое предложение чем можно заменить юнита? |
|
11.04.2008, 15:09 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
Alex27 когда юнит умирает, ты добавляешь в массив тип юнита, игрока и координаты и запускаешь таймер, когда таймер истекает - юнит возрождается, а ячейка освобождается
|
11.04.2008, 15:18 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
ну конечно не писать весь код вручную + достаточно двух координат, короче как сказал хантер
Код:
теперь по событию сметри юнита Код:
создаем таймер, запускаем его, и вешаем через любую аттач сисму на него наш структуру, потом создаем юнита по ней |
11.04.2008, 16:21 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Аминь
Crazy about that shit
offline
Опыт:
3,214Активность: |
По-моему я фигню смолол) Мне почему-то показалось, что крип будет возрождаться на месте где он сразу и находился, а не на том где его убили. |
11.04.2008, 16:35 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
а тебе как надо то? где убили или где он был изначально? |
11.04.2008, 16:47 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Аминь
Crazy about that shit
offline
Опыт:
3,214Активность: |
2-ой вариант |
11.04.2008, 17:02 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DeaDoK
offline
Опыт:
5,783Активность: |
Таймер+Ректы |
12.04.2008, 09:36 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
DeaDoK, ммм, давай ты будешь сначала думать, а потом писать?
Alex27, тогда просто изменить функцию Код:
ану, ребята, тренеруем мозги и пытаемся понять что я тут написал))) давайте, все достаточно просто))) |
12.04.2008, 10:44 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Alex27 Создаёшь массив Units типа Боевая единица на нужно количество элементов. Создаёшь массив Points типа Точка на это же количество элементов. Потом тригером создаёшь каждого отдельного крипа в нужной области и с помощью Units[index] = "Last Greated Unit" заносишь в ранее созданный массив попутно заполняя массив Точек с помощью Points[index] = "Position of (Last Greated Unit)". Врезультате у тебя получается массив напичканный ссылками на Боаевые единицы и ещё массив с Точками их респавна.
Для респавна создаёшь триггер, который каждые 60 сек игры проверяет каждый элемент (или группу выбранных элементов) массива Units на наличие ХП, если ХП = 0, то очищаешь память с помощью "Remove Unit" где Unit - это и есть Units[index] и создаёшь боевую единицу в точке Position[index] (т.к. массивы Units и Points заполнялись вместе, то Points[i] = Position of Units[i]), далее Units[index] = Last Greated Unit т.е. заполняешь пустую ячейку массива Юнитов ссылкой на новый юнит. событие для запуска респавна может быть разнооюразное (не только 60сек игры)... Я лично делал почти так. |
12.04.2008, 15:32 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DrKirc
offline
Опыт:
5,933Активность: |
По мне все тупо самый оптимальный и рабочий вариант это мой:
» 1.Этап Код:
» 2.Этап Код:
А думать как сделать это, уже ваша проблема |
12.04.2008, 15:34 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
silumin и DrKirc, оба написали хз что, обьяняю, что слип акшин отсчитывает время когда игра стоит на паузе, первому проверять постоянно что то я вообще тп что=/
ADOLF добавил: + второй вариант от дркирк - ГедДаингЮнит хз что вернет через время ожидания |
12.04.2008, 15:48 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Alex27 ADOLF Мои триги не столь утончённы как сделал бы Адольф, но тем не менее они работают. Я люблю массивы и проверки, имхо очень удобно. Пример работающего респавна:
|
12.04.2008, 16:26 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
работает и работает максимально быстро и без багов немного разные понятия всетаки + удобство очень растяжимое понятие |
12.04.2008, 17:24 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DrKirc
offline
Опыт:
5,933Активность: |
Ладно если мой код не понятен, то вот наработка. Тоже хорошая наработка! |
12.04.2008, 21:20 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Аминь
Crazy about that shit
offline
Опыт:
3,214Активность: |
ADOLF, а можешь выложить карту-пример что-бы разобраться было полегче? |
14.04.2008, 01:29 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
к сожалению нет, т.к. не располагаю свободным временем
пробуйте сами |
14.04.2008, 13:49 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|