Полезная фича: теперь способностям и предметам можно задавать какое угодно по размеру описание - но делать это нужно через объединение строк, так как есть лимит на размер одной строки, созданной через GUI
DracoL1ch, если в игре создаются идентичные строки - они занимают разные ячейки памяти? при создании строки - возвращается линк на уже существующую строку идентичного значения? Или идентичные строки занимают разные ячейки памяти?
Предлагаю следующее, если ты в течении месяца мне скинешь екзешник, в котором будет интерфейс стартового меню и анимированные переходы между кнопками этого меню, я закину тебе 500$ на твой банковский счет или qiwi
Соглашайся! Найдёшь исполнителя со стороны, который сделает это за 100 баксов!
Extremator, и что? этим мы проверим удаляется ли юнит из групп когда юнит исчезает. А задача узнать очищается ли уничтоженная группа без создания утечек.
Скороу сделаю анонс карты, увидишь -) проще показать чем рассказывать.
Вообще я сделал по другому - отказался от работы с многочисленными группами юнитов. Посмотрел как работают функции на работу с ними - мне показалось они слишком затратные. Например - чтобы проверить пуста ли группа - цикл зачем-то проходит по каждому юниту из занесёных в группу, а не прерывается на первом встреченном юните.
Так что вместо массивных групп - я делаю массивные счётчики, и работаю с ними обращаясь в массиве через index = GetUnitUserData . При смерти юнитов убавляется счётчик udg_uGroup_enum[index], и когда он возникает нуля - запускаю триггер udg_uGroup_trigUnDead[index] - таким образом на карте постоянно спавнятся группы юнитов и я могу отлавливать события на уничтожения этих групп по факту используя только одно событие.
когда в группе юниты спавнятся - я раздаю им index, идентичный шаблону по которому они спавнятся и наращиваю udg_uGroup_enum[index] чтобы отслеживать количества в группах
quq_CCCP, это не герои, это юниты, и они постоянно пересоздаются. Означает ли это что когда юнит удаляется - удаляются и все события с ним связанные? т. е. не будет захламляться память?
в одной теме прочёл "событие удаляется само когда объекта завязанного на него не существует" - это правда? Не будет утечек если за игру на один триггер будет подвешено 5000+ событий на смерть юнитов, при условии что одновременно будет существовать не больше 12 из них?
и что ты там учить для джнгп такое сложно собрался?
для меня это из области "я не знаю чего я не знаю", я не знаю что там учить и сколько там подводных камней, что это мне заблокирует какие противопоказания и т. д.. - чтобы об этом узнать тоже нужно шерстить поисковик. Но если варик воскреснет и в джнгп появится поддержка новой версии - то я приступлю к его изучению
Extremator, проблем возникает ещё больше.
У меня должен быть array unitpool с поддержкой весов
если unitpool переделать в array типов - то получится двумерный массив, которые в варике не поддерживаются.
А так как я на протяжении игры постоянно модифицирую unitpool (добавляю и удаляю юнитов по тем или иным событиям) то вмещать множество массивов в один массив не вариант (при изменении размера одного массива должны смещаться остальные массивы)
ScopteRectuS, не знаю имеет ли смысл тратить время и учить новую для себя утилиту по варику ради одной задачи. Я пока разберусь с ней, пойму что она делает, как с ней быть, пройду через подводные камни - 100 лет уйдёт. Если нет возможности решить через JASS данную проблему - то буду сохранять unitpool в хештаблицах.
ssbbssc, мне нет дела до срача, мне есть дело до того, что на моей предыдущей карте (на которую угрохал кучу времени) были жуткие задержки в сетевой игре из-за непонятных причин (это не утечки, инфа 100%). Поэтому я стараюсь аккуратно подходить в вопросу.
unitpool - список типов боевых единиц с весами.
Туда, например, можно добавить водного элементаля с весом 9, и огненного элементаля с весом 1
Потом можно извлечь из юнитпула случайный тип юнита, и при этом с вероятносью в 90% получишь водного элементаля, и с вероятностью в 10% получишь огненного элементаля
В моей карте нужно сделать массив юнитпулов, чтобы для каждого региона генерировались разные войска, а так как генерация проходит часто и по многу - не хочется сохранять unitpool в хеш-таблице. В соседней теме мне подсказали что хеш работает медленно
function Trig_init_unitpools_from_excel_Actions takes nothing returns nothing
local unitpool units
set units = CreateUnitPool()
set udg_contSmall[0] = units
call UnitPoolAddUnitType(units, 'n005', 3)
call UnitPoolAddUnitType(units, 'n002', 1)
set units = null
endfunction
Чёрт, всё равно возникла проблема - как обращаться к сохранённым unitpool?
нашёл решение - надо глобалку udg_contSmall создавать типа handle array
function Trig_init_unitpools_from_excel_Actions takes nothing returns nothing
local unitpool units
set units = CreateUnitPool()
set udg_contSmall[0] = units
call UnitPoolAddUnitType(units, 'n005', 3)
call UnitPoolAddUnitType(units, 'n002', 1)
set units = null
endfunction
» WarCraft 3 / Новые нативные функции в 1.29
» WarCraft 3 / Опять утечка, может ли утекать переменная типа строка?
» WarCraft 3 / Иногда не создаётся плавающий текст
» Unity / Где мне лучше создать планируемое?
» WarCraft 3 / Надо ли очищать группу перед уничтожением
» WarCraft 3 / Надо ли очищать группу перед уничтожением
» WarCraft 3 / Надо ли очищать группу перед уничтожением
» WarCraft 3 / Надо ли очищать группу перед уничтожением
» WarCraft 3 / удаление событий
Вообще я сделал по другому - отказался от работы с многочисленными группами юнитов. Посмотрел как работают функции на работу с ними - мне показалось они слишком затратные. Например - чтобы проверить пуста ли группа - цикл зачем-то проходит по каждому юниту из занесёных в группу, а не прерывается на первом встреченном юните.
Так что вместо массивных групп - я делаю массивные счётчики, и работаю с ними обращаясь в массиве через index = GetUnitUserData . При смерти юнитов убавляется счётчик udg_uGroup_enum[index], и когда он возникает нуля - запускаю триггер udg_uGroup_trigUnDead[index] - таким образом на карте постоянно спавнятся группы юнитов и я могу отлавливать события на уничтожения этих групп по факту используя только одно событие.
когда в группе юниты спавнятся - я раздаю им index, идентичный шаблону по которому они спавнятся и наращиваю udg_uGroup_enum[index] чтобы отслеживать количества в группах
» WarCraft 3 / удаление событий
Ред. Cancel
» WarCraft 3 / удаление событий
» WarCraft 3 / Jass создать глоабльную переменную
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
Ред. Cancel
» WarCraft 3 / handle в unitpool - что не так
У меня должен быть array unitpool с поддержкой весов
если unitpool переделать в array типов - то получится двумерный массив, которые в варике не поддерживаются.
А так как я на протяжении игры постоянно модифицирую unitpool (добавляю и удаляю юнитов по тем или иным событиям) то вмещать множество массивов в один массив не вариант (при изменении размера одного массива должны смещаться остальные массивы)
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
» WarCraft 3 / handle в unitpool - что не так
Туда, например, можно добавить водного элементаля с весом 9, и огненного элементаля с весом 1
Потом можно извлечь из юнитпула случайный тип юнита, и при этом с вероятносью в 90% получишь водного элементаля, и с вероятностью в 10% получишь огненного элементаля
В моей карте нужно сделать массив юнитпулов, чтобы для каждого региона генерировались разные войска, а так как генерация проходит часто и по многу - не хочется сохранять unitpool в хеш-таблице. В соседней теме мне подсказали что хеш работает медленно
Ред. Cancel
» WarCraft 3 / handle в unitpool - что не так
Ред. Cancel
» WarCraft 3 / Jass создать глоабльную переменную