Вел оф дискорд
|
|
Bibo | Дата: Пятница, 04 Апреля 2014, 23:04:59 | Сообщение # 51 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Цитата Melodia ( ) Создание группы. Для таких одноразовых операций можно использовать одну глобальную группу. На всю карту хватит. Цитата Melodia ( ) Кто там говорил про отдых... Мсье требуется крепкий, здоровый сон
Сообщение отредактировал Bibo - Пятница, 04 Апреля 2014, 23:07:49 |
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:05:25 | Сообщение # 52 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Q1wAse, ты читай полностью тред что ли.
|
|
|
|
Q1wAse | Дата: Пятница, 04 Апреля 2014, 23:08:30 | Сообщение # 53 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата Melodia ( ) Q1wAse, ты читай полностью тред что ли. Читаю уже который час... ответ был давно дан, чего добиваетесь фиг поймёшь. Про группы я написал альтернативу.
|
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:08:44 | Сообщение # 54 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата Bibo ( ) Для таких одноразовых операций можно использовать одну глобальную группу. На всю карту хватит Объясняю для тех, кто в бронепоезде. { Set Group = юниты в радиусе 1000 от ... работа с группой DestroyGroup(group) } Всё равно оставляет небольшую утечность. Ты не хочешь использовать группу с большим числом юнитов но готов плодить эту утечку зато. Общая группа на самом деле не так уж и страшна, учитывая что разложившиеся юниты автоматом из неё удаляются. Для какой-нить аренки типа см-варс это всего 20-40 юнитов. Для херодефенса - около 80 мб.
|
|
|
|
Q1wAse | Дата: Пятница, 04 Апреля 2014, 23:12:33 | Сообщение # 55 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
|
|
|
|
|
Bibo | Дата: Пятница, 04 Апреля 2014, 23:12:41 | Сообщение # 56 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Думаю мы столкнулись с недопониманием. Ибо я представляю жасс вариант, а ты явно в гуи, где такой гибкости по утечкам групп нет.
Сообщение отредактировал Bibo - Пятница, 04 Апреля 2014, 23:14:24 |
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:13:40 | Сообщение # 57 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Где-то читал, что группу перед уничтожением нужно очищать. Возможно если так делать - то утечки от такого использования вовсе не будет. Проверьте кто-нить, кто шарит в том, остаются или нет.
|
|
|
|
Q1wAse | Дата: Пятница, 04 Апреля 2014, 23:14:23 | Сообщение # 58 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата Bibo ( ) Думаю мы столкнулись с недопониманием. Ибо я представляю жасс вариант, а ты похоже в гуи, где такой гибкости по утечкам групп нет. Согласен. Если с умом использовать jass то можно сделать производительно, то есть не утечно.
Сообщение отредактировал Q1wAse - Пятница, 04 Апреля 2014, 23:14:38 |
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:15:12 | Сообщение # 59 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата Bibo ( ) Думаю мы столкнулись с недопониманием. Ибо я представляю жасс вариант, а ты похоже в гуи, где такой гибкости по утечкам групп нет. Я ненаю о чём ты, но когда ты хочешь обратиться к юнитам в радиусе от кого-то - ты создаёшь группу. ты конечно можешь её и не удалять, но это только хуже.Добавлено (04 Апреля 2014, 23:15:12) ---------------------------------------------
Цитата Q1wAse ( ) Если с умом использовать jass то можно сделать производительно, то есть не утечно. логический или прямой вариант предоставьте.
|
|
|
|
Q1wAse | Дата: Пятница, 04 Апреля 2014, 23:16:40 | Сообщение # 60 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата Melodia ( ) не удалять очисти, снова пикни очисти, как на гуях делается.
Добавлено (04 Апреля 2014, 23:16:40) --------------------------------------------- Цитата Melodia ( ) логический или прямой вариант предоставьте. http://warcraft3ft.info/forum/22-55169-1676550-16-1396638288 Вариант с MUI.
Сообщение отредактировал Q1wAse - Пятница, 04 Апреля 2014, 23:17:57 |
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:16:54 | Сообщение # 61 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата Q1wAse ( ) снова пикни Пикни что? юнитов в очищенной группе? Или снова группу создай? У-теч-ки
|
|
|
|
Q1wAse | Дата: Пятница, 04 Апреля 2014, 23:17:28 | Сообщение # 62 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| не создай, а пикни юнитов в эту же группу которую очистил, не будет у тебя утечек.
Сообщение отредактировал Q1wAse - Пятница, 04 Апреля 2014, 23:18:14 |
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:19:01 | Сообщение # 63 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата Q1wAse ( ) http://warcraft3ft.info/forum/22-55169-1676550-16-1396638288 Я тебя вроде уже посылал тред весь читать, я выше ещё гвоорил про использование 1 единственной группы, с которой мы пляшем. И нафига юниты обнулять?
|
|
|
|
Q1wAse | Дата: Пятница, 04 Апреля 2014, 23:20:29 | Сообщение # 64 |
Группа: Проверенные
Сообщений: 1235
Награды: 0
Репутация: 286
Блокировки:
| Цитата Melodia ( ) Я тебя вроде уже посылал тред весь читать, я выше ещё гвоорил про использование 1 единственной группы, с которой мы пляшем. И нафига юниты обнулять?
|
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:20:40 | Сообщение # 65 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата Q1wAse ( ) а пикни юнитов в эту же группу которую очистил Как ты себе это представляешь? то есть взяли в группу Г юниты, потом клирнули грппую. не удаляя её.
Потом снова присвоили ей юнитов таких-то, если не ошибаюсь - остаётся утечка пустой группы и новая группа Г.
|
|
|
|
Bibo | Дата: Пятница, 04 Апреля 2014, 23:27:08 | Сообщение # 66 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Цитата Melodia ( ) когда ты хочешь обратиться к юнитам в радиусе от кого-то - ты создаёшь группу. Да, это известный феил GUI. Вместо того чтобы взять группу извне и добавить юнитов в нее, она создает новую группу, совершает необходимые операции и присваивает эту группу указанной переменной. Тогда да, без утечек никак и вариант с пиком по всей карте лучше. Но опять же, только на GUI. Однако можно впаять через CS строчку: Код call GroupEnumUnitsInRangeOfLoc(udg_ТвояГруппа, udg_ТвояТочка, радиус, null) Затем произвести цикл по ТвояГруппа. По завершению операци очистить ТвояГруппа. Эффект достигнут, лишнх групп не создано. Цитата Melodia ( ) И нафига юниты обнулять? Юниты существуют до тех пор пока не обнулить все хранящие их переменные. Для обычных глобалок не смертельно, но в массивах о них можно забыть.
Сообщение отредактировал Bibo - Пятница, 04 Апреля 2014, 23:30:27 |
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:30:50 | Сообщение # 67 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата Bibo ( ) Юниты существуют до тех пор пока не обнулить все хранящие их переменные ересь какая-то. То есть присвоил я u[5]= пехотинец такой-то и пока я не обнулю эту u[5] - пехотинец существует?
|
|
|
|
Bibo | Дата: Пятница, 04 Апреля 2014, 23:34:27 | Сообщение # 68 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| Обнулять следует все дочерние типа handle, за исключением игроков, которые существуют на протяжении всей игры и их всего 16 штук. Иначе застрянут в памяти.
Сообщение отредактировал Bibo - Пятница, 04 Апреля 2014, 23:35:12 |
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:36:08 | Сообщение # 69 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Не вижу смысла. Насколько я помню, если я присвою u[1] - гусь хрустальный, а потом гусь исчезнет или просто присвою u[1]- гусь золотой - ничего не утечёт.
|
|
|
|
Extremator | Дата: Пятница, 04 Апреля 2014, 23:36:09 | Сообщение # 70 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Цитата SirNikolas ( ) И разве маг. резисты плюсуются, а не перемножаются? Каждый резист перемножает входящий урон на своё значение Те же самые резисты работают и на дискорде, и на натурал-ордере, и на шарике аппарата, и на ауре рубика... Единственный минут - есть другой, не сткающийся резист, получение которого шлёт все расчёт на три буквы, и устанавливает новые правила...
Цитата Bibo ( ) Юниты существуют до тех пор пока не обнулить все хранящие их переменные. Создаём юнита set U = последний созданный юнит Unit - Remove Unit (udg_U)
И что же нам вернёт переменная U ? ))) (а вернём она нам null)
|
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:37:00 | Сообщение # 71 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| Цитата Extremator ( ) Создаём юнита set U = последний созданный юнит Unit - Remove Unit (udg_U) И что же нам вернёт переменная U ? ))) (а вернём она нам null) портишь тут флуд
|
|
|
|
Bibo | Дата: Пятница, 04 Апреля 2014, 23:43:34 | Сообщение # 72 |
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
| group effect texttag location lightning Назовем это основным списком гуишника. Но при использовании глобалок об этом обычно не приходится беспокоится.
Кстати, в последнем JNGP функция GroupEnumUnitsInRangeOfLoc выполнена в графическом интерфейсе, также как и функции удаления точек и много других полезностей. Так что все решаемо.
Сообщение отредактировал Bibo - Пятница, 04 Апреля 2014, 23:44:32 |
|
|
|
SirNikolas | Дата: Пятница, 04 Апреля 2014, 23:52:17 | Сообщение # 73 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата Extremator ( ) set U = последний созданный юнит Unit - Remove Unit (udg_U)
И что же нам вернёт переменная U ? ))) (а вернём она нам null) [code=jass]callback onInit() { unit u = CreateUnit(Player(0), 'hfoo', .0, .0, .0); RemoveUnit(u); printf("%b", u == null); }[/code]И совершенно внезапно false. Более того, [code=jass]printf("id = %i (%b), life = %r", GetUnitTypeId(u), GetUnitTypeId(u) == 'hfoo', GetWidgetLife(u));[/code] id = 1751543663 (true), life = 420.000
Так что юнит существует после ремува, если на него ссылаются какие-либо переменные. Обратите внимание, это не относится к ссылкам в хэш-таблице и буфере обмена: они являются слабыми, т. е. не препятствуют сборке мусора.Цитата Bibo ( ) Однако можно впаять через CS строчку. Затем произвести цикл по ТвояГруппа. По завершению операции очистить ТвояГруппа. Семейство функций GroupEnumUnits... чистит группу перед добавлением.
|
|
|
|
Melodia | Дата: Пятница, 04 Апреля 2014, 23:54:11 | Сообщение # 74 |
Группа: Проверенные
Сообщений: 8026
Награды: 5
Репутация: 5051
Блокировки:
| SirNikolas, а если я запилю в неё новый юнит? -_-
|
|
|
|
SirNikolas | Дата: Пятница, 04 Апреля 2014, 23:57:00 | Сообщение # 75 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Цитата Bibo ( ) group effect texttag location lightning group, location - да. Но остальные ведь не мгновенного использования, как они могут решаться глобалками?
|
|
|
|