XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Безопасная работа (пик, утечки)
Вот простенький тест триггер:
Как сделать так, чтобы полученная группа не вызывала утечку? Нужен ответ на уровне cs (custom script).
Поиск по форуму даёт противоречивые результаты, поэтому создаю тему.
В джассе не "дуду", но подобных пиков в карте оооочень много...
Старый 19.12.2009, 22:52
XOR

offline
Опыт: 38,159
Активность:
Чтобы без утечки, придется новую функцию создавать(в котором собственно проходит действия с юнитами) а через кс не получится
Старый 19.12.2009, 23:03
dave_wwid

offline
Опыт: 12,954
Активность:
На уровне ГУИ- remove picked unit from the game.
Старый 19.12.2009, 23:24
XOR

offline
Опыт: 38,159
Активность:
Имелся в виду сам пик. В гуи идет функция
GetUnitsInRangeOfLocAll
В которой утечка с группой
Старый 19.12.2009, 23:31
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
XiMiKs, можно конкретнее? Вообще в некоторых темах рассматривалась очистка группы с помощью кс.
dave_wwid, замечательно, только пикаются все юниты и даётся приказ, группу нужно обнулить/уничтожить ссылку, но юниты то в игре должны остаться.
По идее нужно только это:
call DestroyGroup(g)
set g = null
Только какой аргумент использует гуи пик?
Старый 19.12.2009, 23:33
ScorpioT1000
Работаем
offline
Опыт: отключен
а посмотреть blizzard.j не судьба?
Старый 19.12.2009, 23:38
Kodoo
Ł☼√ę
offline
Опыт: 12,845
Активность:
vsparker:
Только какой аргумент использует гуи пик?
Аргумент? Это не просто ф-ия - это мего изврат на который лучше не смотреть. Хуже условного оператора.
Я присоединюсь к теме: как организовать Pick every unit на jass? А там и DestrouGroup в двух шагах.
Старый 19.12.2009, 23:40
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
ScorpioT1000, первый пост, серые буковки.

То есть нельзя с помощью гуи средств убрать утечку?
Старый 19.12.2009, 23:41
XOR

offline
Опыт: 38,159
Активность:
function lol2 takes nothing returns nothing
call KillUnit(GetEnumUnit())
endfunction
function lol takes nothing returns nothing
local group g = CreateGroup()
call GroupEnumUnitsInRange(g,100000,0,0)
call ForGroup(g, function lol2)
call DestroyGroup(g)
set g = null
endfunction 
function InitTrig_lol takes nothing returns nothing
set gg_trg_lol = CreateUnit()
call TriggerRegisterChatEventBj(gg_trg_lol, "-as",true)
call TriggerAddAction(gg_trg_lol, function lol)
endfunction
XiMiKs добавил:
Нет, назови триггер lol, конвертируй в текст и вставь)
Старый 19.12.2009, 23:45
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Если проще способа нету, то буду использовать этот.
Проще форма требуется потому, что некоторые триги с пиками очень большие и мало что пойму в джасс форме (речь более о 70 триггеров с подобными пиками :D ). Поэтому если проще нету пути проще - прошу закрыть тему.
XiMiKs, спасибо
Старый 19.12.2009, 23:48
Kodoo
Ł☼√ę
offline
Опыт: 12,845
Активность:
XiMiKs , можешь поподробнее рассказать про ф-ию GroupEnumUnitsInRange(), для чего последнии два аргумента? Как, например, будет Within 512 of LoLacation?
Старый 19.12.2009, 23:49
dave_wwid

offline
Опыт: 12,954
Активность:
Цитата:
только пикаются все юниты и даётся приказ

Мертвым юнитам? Или это так для примера... Тогда пик всех юнитов-добавление их в определенную группу и потом иметь дело с этой группой (глобальная переменная) А пик всех юнитов на карте как таковой в любом случае будет вызывать некоторый лаг. Пик 100-300 юнитов с последующим действием над ними на практике дает 1-2 секундный лаг. Перидический пик вызовет заметные утечки только при частом респауне новых юнитов.
Старый 19.12.2009, 23:51
Kodoo
Ł☼√ę
offline
Опыт: 12,845
Активность:
dave_wwid:
Или это так для примера...
Скорее так
Старый 19.12.2009, 23:55
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Мертвым юнитам? Или это так для примера...
Да сам триггер был примером :D с простейшим приказом, дабы не отвлекать внимание от вопроса.
Хмм, допустим вместо каждого пика сделать отдельный триггер с постоянным изменением конкретной переменной, и уже вместо пика обращаться напрямую к ней.
Мб немного нубский вопрос, но - рационально ли вместо кучи пиков подгружать кучу отдельных триггеров (работающих на протяжении всей игры) с ещё одной кучей переменных?
Старый 19.12.2009, 23:59
Kodoo
Ł☼√ę
offline
Опыт: 12,845
Активность:
vsparker:
Мб немного нубский вопрос, но - рационально ли вместо кучи пиков подгружать кучу отдельных триггеров (работающих на протяжении всей игры) с ещё одной кучей переменных?
Рационально разобраться в коде, предложенным XiMiKs) Все равно же пригодиться.
А то что ты предлагаешь - это обход через болота имхо.
Старый 20.12.2009, 00:01
Скайнет
Kicked by ZlaYa1000
offline
Опыт: 8,234
Активность:
Согласен, обход через болото, но тем не менее просто нету времени сейчас залезать в джасс (сессия), хотя конечно рациональней разобраться и после неё делать уже всё правильно.
Старый 20.12.2009, 00:04
Kodoo
Ł☼√ę
offline
Опыт: 12,845
Активность:
vsparker:
Согласен, обход через болото, но тем не менее просто нету времени сейчас залезать в джасс (сессия), хотя конечно рациональней разобраться и после неё делать уже всё правильно.
Поверь сэкономишь гораздо больше времени)
XiMiKs , можешь поподробнее рассказать про ф-ию GroupEnumUnitsInRange(), для чего последнии два аргумента? Как, например, будет Within 512 of LoLacation?
Старый 20.12.2009, 00:07
XOR

offline
Опыт: 38,159
Активность:
native GroupEnumUnitsInRange takes group g, real radius , real x, real y returns nothing
Не надо точки, а радиус большой, т.к. На всю карту
Старый 20.12.2009, 00:11
Kodoo
Ł☼√ę
offline
Опыт: 12,845
Активность:
То что надо. Спасибо, XiMiKs.
Старый 20.12.2009, 00:15
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:34.