Elisar
offline
Опыт:
2,031Активность: |
Воскрешение деревьев
Итак,задача скорее всего наипростейшая но т.к. опыта у меня маловато требуется помощь.
что бы никого не мучать объясню) событие триггера - это смерть destructable в регионе "trees"; далее идет проверка та ли это destructable - тоесть дерево ли; действия: записывает в локалки координаты только что умершего дерева, а так же само дерево, как destructable, что бы потом удалить; ждем 5 сек(это тестовый режим) далее булиновской переменной назначается 1 и удаляется дерево от которого остался лишь пенек(булин тут для того что бы он повторно не включал триггер по событию destructable-умер из-за Remove) и под конец действие создает новое дерево по ранее записанным координатам. все хорошо и корректно работает)за исключением того что созданные триггерно деревья не попадают под событие(destructable в регионе "trees" - умирает),тоесть если их убить уже новые не появятся..почему и как профиксить? это и есть вопрос с которым я сюда пишу прошу помочь. |
09.02.2008, 16:39 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Попробуй отлавливать событие смерти любого дерева, а потом вручную проверять координаты. Собитие смерти в регионе видимо срабатывает только, если деревья были созданы до создания региона... |
09.02.2008, 17:34 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elisar
offline
Опыт:
2,031Активность: |
exploder, спс за совет,но он не работает..
посмотри в эвентах в триггер эдиторе там на destrutable есть только 2 типа событий,1 из них на конкретуную destructable(из переменной, либо указать на карте),а другой это destractable в регионе.. в первом случае это ж сколько переменных надо на все деревья..думаю его стоит использовать на всяческие ворота и т.п. главное что бы не много их было. а второй случай я и задействовал..хотя не знаю может в jass есть другое событие?очень на это найдеюсь... Elisar добавил: хотя я щас подумал вариант пересоздания региона на тех же местах после создания нового дерева но он какой то не рациональный вроде бы;( |
09.02.2008, 17:56 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
S
offline
Опыт:
43,833Активность: |
Как вариант - ведь все деструктаблы записываются например как 0001-0002-0003? Тогда мона на джассе - в событии создавать цикл, в котором будут перечисляться все деревья, НО - для этого вначале придется создавать сначала деревья а потом весь остальной декор. |
09.02.2008, 18:04 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Как вариант, при смерти дерева регионе добовлять его в массив и каждые Х секунд (периодический таймер) проверять каждое дерево в массиве мертво/немертво, если мертво то ремувить и создавать новое. Но тут возникает "шероховатость" - все деревья убитые за интервал Х, будут восстанавливаться одновременно... Отредактировано exploder, 09.02.2008 в 18:13. |
09.02.2008, 18:07 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elisar
offline
Опыт:
2,031Активность: |
Sasha,ну дело в том что карта уже сделана=)просто раньше вопрос спелла кипера призыв деревьев никого не волновал т.к. были более крупные недочеты, а щас вроде все устаканилось вот и решил сделать..да и будет ли такой вариант универсален?ведь новосозданные декоры будут идти уже с следующим порядковым номером)и цикл не будет подходить к ним,а желательно сделать триггер универсальным
Elisar добавил: exploder,да и кроме этой шероховатости(которая в принципе особо не мешает) получается что будет массив достаточно емкий и цикл большой думаю это обеспечит тормоза раз в "периодик" эвент тайм...вообщем щас попробую реализовать этот вариант=) Отредактировано Elisar, 09.02.2008 в 18:25. |
09.02.2008, 18:17 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Elisar, ну например в той же доте деревья ресаются раз в 15 минут (а может уже и раньше)...
exploder добавил: Elisar, кстати деревья можно не создавать заново: Код:
exploder добавил: Тогда проблема отпадает сама собой) exploder добавил: Поправь исходный триггер - убери вейт и сделай не пересоздание деревьев, а резурект уже существующих. |
09.02.2008, 18:29 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elisar
offline
Опыт:
2,031Активность: |
exploder,а все спс)разобрался))stupid.gif над было внимательней смотреть)позже выложу рабочий код если кому вдруг надо.
Elisar добавил: вот и итог..единственное неудобство что в 1 регионе он считает до 64 декоров,тоесть взять "entire map" нельзя и нужно делать N количество регионов на все деревья на карте и соответственно N количество событий в триггере=) |
09.02.2008, 18:50 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Еще недостаток, пока триггер "ждет", он не будет обрабатывать последующие смерти деревьев, так что тут нужно запускать таймер. |
09.02.2008, 18:54 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elisar
offline
Опыт:
2,031Активность: |
будет)ну покрайней мере при смерти одновременно 4х деревьев он всех их и восстанавливает...щас попробую сделать вейт больше кулдауна)
Elisar добавил: да все работает)тестил... Elisar добавил: осталось что б кто нибудь подсказал в плане оптимизации..вдруг что не так) |
09.02.2008, 19:06 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Цитата:
Да да, все должно работать, я просто не обратил внимания, что я использовал глобалку для хранения дерева) exploder добавил: Цитата:
Добавь в конце триггера Код:
|
||
09.02.2008, 19:10 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
насколько мне помниться срабатывает на определенное количество декораций в регионе (кажеться 64) т.е. как вариант попробовать просто дробить регионы... ну это если делать по событию просто смерти деструба в ректе. хотя точно непомню) |
|
10.02.2008, 11:52 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elisar
offline
Опыт:
2,031Активность: |
ADOLF,неа)в том и дело)пытался по разному даже пересчитывал деревья...думал может это те что новые создаются и выходят за предел 64 нифига))новосозданные не попадают под событие..
|
11.02.2008, 18:43 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Garret
Недоброе творится
offline
Опыт:
3,893Активность: |
ADOLF ага
Elisar я как-то по-левому сделал, у меня тупо раз в н секунд воскрешаются все деревья без проблем зато со всякими регионами и т д |
11.02.2008, 18:54 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
ппц ааа сколько бреда, Resurrect destructable если не надо создавать новый совершенно тип декораций.. Иначе можно написать системку с динамическими триггерами Отредактировано FellGuard, 11.02.2008 в 19:14. |
11.02.2008, 19:08 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Garret
Недоброе творится
offline
Опыт:
3,893Активность: |
а теперь поведай друг что ты имел ввиду?) |
11.02.2008, 19:11 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
то и имел, recreate destructable есть зло по определению, use DestructableRestoreLife |
11.02.2008, 19:13 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Garret
Недоброе творится
offline
Опыт:
3,893Активность: |
а написано что-то другое несколькими постами выше, например у меня или у exploder, Elisar
|
11.02.2008, 19:15 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elisar
offline
Опыт:
2,031Активность: |
FellGuard,))не,прост я сначала не досмотрел по списку до действия ресурект)а так бы и писать не пришлось...
Garret,ну представь кипер вызывает своих "духов леса" а убитый лес через секунду восстанавливается т.к. триггер пришел в действие^_^вероятность не большая но есть,и умножается еще на количество применений способностей...вообщем меня полностью устраивает мой вариант :р да что б не создавать новую темку...подскажите кто нибудь а заметно ли будет грузить комп массив integer с [2200] макс индексом?:D...это просто из формулы (x*11y) - в пределах x=1-10 а y=1-20 по этой формуле не будет ни 1 совпадения итоговых чисел зато максимальное будет 2200...если Y увеличить эти 2200 тож будут увеличиваться.. кстати буду рад если кто подскажет более гуманную формулу для тех же результатов(на поле Х=1-10 и Y=1-20 не должно быть повторов чисел при неизвестных переменных...тоесть чисто формулы) =================================================================== пардон=)повторы чисел есть...ищу др формулу=( =================================================================== а вот и она: ((x*21)+(y+21)) - варовская версия собсна)массив булинов получается размером 250-300...оперировать формулой возможно прибавля/вычитая N к/из x либо y) Отредактировано Elisar, 16.02.2008 в 01:20. |
15.02.2008, 01:17 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
YellowStar
poon
offline
Опыт:
15,144Активность: |
Лучше простой вейт не использовать. Выбор за гейм тайм ;) |
22.02.2008, 14:31 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|