24

» WarCraft 3 / Проверьте код луа, не хочу привыкать к неправильному

1 переменная perebor не обьявлена
2 e и h нет смысла объявлять так высоко, лучше спустить их объявление туда где они реально используются
3 GetOwningPlayer(e) стоит занести в переменную чтобы не дергать каждый раз
4 лучше при возможности всех подходящих под критерий юнитов заносить в группу заранее, чем искать их по всей карте
24

» StarCraft 2 / Несколько языков в карте

yellyex, можно и без чехарды с импортом-экспортом - прямо в редакторе переключать какая локализация сейчас редактируется.
24

» StarCraft 2 / Несколько языков в карте

yellyex, Проставляеш галочки в Modify, потом меняеш текущий регион в этом меню и все тексты в карте переключаются под этот регион, не меняя язык редактора и можно их редактировать либо в редакторе текстов либо в редакторе данных. Я не помню будет ли редактор что-то докачивать, но даже если будет - редактор это сам делает.
Ну и потом при запуске в клиенте подтягивается та версия текстов, которая соответствует его региону.
24

» StarCraft 2 / Несколько языков в карте

Это не язык редактора, это другое окно - это список локалей карты.
24

» WarCraft 3 / wc3 1.31 и lua

Castiel, Рекомендую найти и по читать про основные принципы работы Lua. Например, в луа нет массивов как таковых - их роль выполняют таблицы, которые в зависимости от использования могут работать и как массивы и как ассоциативные массивы и как классы и как структуры. Соответственно, запись чего-то в "массив" по хендлу отлично работает, в отличии от джасса. Более того, в качестве ключей могут быть не только числа, но и строки и даже объекты, правда с объектами в качестве ключей надо осторожно обходиться и лучше не связываться без понимания происходящего. За это все приходится платить скоростью доступа к элементам - быстрее всего доступ когда все элементы строго нумерованы по порядку и только на числовых ключах, но даже в худшем случае это работает быстрее хештаблиц.

По идее, уничтожение булэкспры должно помогать.
И давно их можно уничтожать? o_O Вот это внезапная новость для меня. Всегда был уверен что нет возможности их уничтожить и в итоге даже не искал нативки для этого...

Окей, уточнение ситуации - нативки для уничтожения фильтров и кондишнов существуют. Соответственно - действительно, если очень хочется, то можно и фильтры с кложурами делать, а потом уничтожать их, теоретически течь не должно. Сперва объявляются все локалки которые должен видеть кложур, потом в локалку пишется фильтр, потом локалка с фильтром передается в Enum и потом фильтр удаляется. Правда через глобалки всеравно эффективнее должно быть т.к. создание дополнительных объектов и удаление их дороже обходится чем доступ к глобалкам.
24

» StarCraft 2 / Несколько языков в карте

Взять и настроить список языков и тексты под эти языки через редактор...
24

» WarCraft 3 / wc3 1.31 и lua

Castiel, выбор стоит или глобалки или утечки. Если грамотно все сделать - проблем с передачей данных через глобалки не будет, пример выше в комментариях... И, кстати, варовские хештаблицы не нужны в Lua.
24

» WarCraft 3 / wc3 1.31 и lua

NazarPunk, отказываться есть смысл тольо от использования анонимных функций в фильтрах - один раз записать фильтр в переменную и использовать никто не мешает.
24

» WarCraft 3 / wc3 1.31 и lua

DracoL1ch, при использовании в луа с анонимными функциями - очень даже текут потому как не удаляются, насколько я знаю, а анонимная функция при каждом вызове новая создается и передается в создание фильтра.

поидее должен прийти сборщик мусора и всё подчистить
Сборщик мусора Lua не подчищает нативные обьекты, к которым относятся и фильтры.

К сожалению, на данный момент на нативное кеширование фильтров и кондишнов при использовании луа полагаться нельзя, оно то ли не работает полностью то ли работает только в очень ограниченном наборе ситуаций, что и не удивительно, учитывая динамическую природу Lua. Нужно либо самостоятельно выполнять кеширование либо максимально обходиться без фильтров.
Решение которым пользуюсь я когда мне нужно передавать какие-то данные в фильтр из вызывающей функции выглядит примерно так:

local FilterData ={} -- локальная для кода карты глобалка для передачи данных в фильтры

local function FilterThemAll() --функция фильтра, использующая данные из глобалки
	local data = FilterData
	local p = data.player
	local target = data.target
	return false
end

local SomeFilter = Filter(FilterThemAll) -- создание фильтра для функции FilterThemAll - "ручное кеширование"

function GroupEnumUnitsInRangeCustom (g,r,x,y,f,data) -- функция инкапсулирующая передачу данных чрез глобалку и вызов GroupEnumUnitsInRange с фильтром
	local dataBack = FilterData
	FilterData = data
	GroupEnumUnitsInRange(g,r,x,y,f)
	FilterData = dataBack
end
Код примерный и писался сейчас из головы по памяти - для использования в реальных условиях могут быть нужны доработки и исправления ошибок.
24

» Шатер GenElCon'a / Рыночная экономика, которой нет

разве не логично увеличивать количество продавцов?
Совсем не логично, если продажи пиковые только в определенное время, а остальное время дополнительные продавцы будут простаивать - продавцы это не облачный сервер, на несколько часов в день их не наймеш. Это окупается только если дополнительные продажи за счет добавления продавца окупят затраты на него и еще и прибыль останется.
24

» WarCraft 3 / Фильтры

Если что, в 1.31 завезли нативку BlzGroupAddGroupFast, вдруг поможет.
24

» WarCraft 3 / Передвижение юнитов через спел на Хеш-таблице

Что хештаблицы, что вжасс структуры - уродливые костыли на фоне Луа. А так - я тоже не вижу большой проблемы с хештаблицами, ну кривые, ну бывает медленные, но работают и при правильном использовании это далеко не самая большая проблема.
24

» WarCraft 3 / Сортировка на Lua

Castiel, да, типа того.
А если немного доработать - можно и второе сверху значение найти в том-же цикле, если оно еще нужно.
24

» WarCraft 3 / Сортировка на Lua

Castiel, окей. И что мешает это сделать? Для этого нужна одна переменная (можно две - одну для ключа и одну для значения), один цикл, один if внутри цикла и пара присвоений переменной. Для нумерованного массива цикл по индексу, для ассоциативного - по ключам через pairs.
24

» WarCraft 3 / Перезарядка пассивных предметов

Bergi_Bear, удалять сразу после срабатывания, естественно, иначе как же он сработает.
24

» WarCraft 3 / Сортировка на Lua

Замена строковых ключей числовыми мало чем поможет - теперь это просто нумерованный массив целых чисел, который можно отсортировать, но результат сортировки будет немного другим и явно не тем который нужен.
table[0]=10
table[1]=5
table[2]=4
table[3]=3
table[4]=1
Впрочем, для получения двух верхних элементов массива тоже не нужна полная сортировка массива, хватит все того-же одного прохода по массиву, но если для получения верхнего элемента нужна минимум одна переменная, то для получения двух верхних нужно минимум две переменных.
24

» WarCraft 3 / Сортировка на Lua

Castiel, смотря чего добиться в итоге надо - все можно, от конкретной задачи зависит, а я не экстрасенс чтобы угадать. Но поиск максимального значения в массиве обычно и так использует переменную объявленную до цикла чтобы хранить это значение, или индекс этого значения или ключ или несколько переменных.
24

» WarCraft 3 / Перезарядка пассивных предметов

А еще - не забывай удаление таймера. Луа не требует обнуления переменных, но удалять нативные объекты всеравно надо. Одноразовый таймер же вроде не удаляет себя сам, если я правильно помню.
24

» WarCraft 3 / Сортировка на Lua

Castiel, перебор ассоциативного массива через pairs выглядит так
 for key,value in pairs(t) do
В переменную key по очереди будет записан каждый ключ из таблицы t а в value - каждое значение.
А поиск самого большого значения в массиве... Гугл в помощь, это простейшая задача, одинаковая почти в любом языке.
24

» WarCraft 3 / Перезарядка пассивных предметов

Bergi_Bear, я о времени между отдачей приказа даммику и срабатыванием нашей пустышки в предмете. Даже правильно настроенный даммик потратит какое-то время на каст.

А так - костыль интересный, возьму на вооружение.
24

» WarCraft 3 / Перезарядка пассивных предметов

Bergi_Bear, боюсь, еще может подвести не мгновенность дамми-каста - что-то может вклиниться между добавлением способности и срабатыванием реакции на дамми-каст. Возможно в реальных условиях надо будет выдавать эту способность отслеживая каст даммика, а не до каста.
24

» WarCraft 3 / Сортировка на Lua

У вас строки используются в качестве ключей в таблице. Такое сортировке не подлежит потому как ассоциативные массивы не гарантируют порядок элементов.
Их можно перебрать через цикл по pairs. Для поиска самого большого значения этого хватит, сортировка не нужна для этого.
Если нужна именно сортировка - нужна таблица представляющая собой обычный нумерованный массив, в ячейках которого будут лежать таблицы с именами и другими значениями - такую конструкцию можно сортировать потому как обычный массив знает порядок элементов.