27

» WarCraft 3 / Какой лимит на создание объектов в РО?

Принятый ответ
Думаю лимит есть, но тебе хватит. Ты же не планируешь создать десяток тысяч способок?
Я думаю около 65535.
27

» WarCraft 3 / Краши игры спустя примерно 5 минут Reforged

Попробуй поиграться с настройками графики, типа поставь высокие, средние, низкие.
27

» WarCraft 3 / Поиск игроков

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

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

Принятый ответ
LastUchiha, нашел косяк, исправил проверку.
Систему можно еще оптимизировать, использовав хэш-таблицу, структуры и тд и тп. Но как пример ты уже можешь экспериментировать с этим.
Загруженные файлы
27

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

LastUchiha, через полчаса проверю, по идее такого быть не должно, мб накосячил в коде при переносе переменных.
27

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

nazarpunk, я уверен, алгоритм можно оптимизировать. Осталось узнать, как там для каждого нового таймера передать аргумент в функцию. Вроде в стандартном джассе этого нет. vjass и другие инструменты и библиотеки я не рассматриваю для этой наработки.
27

» WarCraft 3 / Сбрасываются триггерные способности

Valentine, еще смущает, что ты используешь конкретные переменные на конкретного юнита. Мб из-за сейва они сбиваются. Делай способки в целом на применение от любого юнита. Попробуй тестануть у себя такой вариант, вместо 1 события сделай 2-рое событие как на скрине:
Загруженные файлы
27

» WarCraft 3 / Сбрасываются триггерные способности

Valentine, я протестил, сохранился, загрузился, все работает. Мб ты какие-то условия недоговорил как тестил?
Это же реф верно?
27

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

LastUchiha, а так я сделал работу с массивом как и описывал ниже. Там еще есть пару моментов, как тот-же фильтр, туда нельзя передать напрямую индекс, по которому ему надо проверять. Для этого используем глобальную переменную LastI.
27

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

LastUchiha, ну вот, у тебя тут была самая главная проблема, что есть таймер для каждого каста свой, и после каждого исхода таймера надо находить, какой там таймер закончился. С помощью цикла проходимся по ним, находим и выполняем действия с данными под индексом данного таймера.
При касте создаем таймер, группу и тд записываем в массив. Когда абилка закончила свое действие - удаляем таймер, группу и тд, а массив смещаем, чтобы не было пустых элементов.
Можно теперь юзать способку хоть 10 юнитов, хоть 100, пока движок варика не помрет от каста стольких абилок сразу :D
Загруженные файлы
27

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

LastUchiha, просто саму способку, можешь попробовать на массивах, что не получится - помогу доделать
27

» WarCraft 3 / Как обойти проблему, что ИИ в сражении стопорится в развитии, если ограничить подготовку героев до 1

TowLaptev, я сам ИИ не разрабатывал, но попробуй почитать эту статейку, мб она поможет тебе правильно отредактировать ИИ.
Я думаю, что тебе надо открыть стандартный ИИ и разобрать, как он работает, найти эти условия с одним вторым третьим героем... Надо покопаться в файлах и найти эти ИИ.
27

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

LastUchiha, сделай абилку на 1 юнита, я тебе помогу сделать с массивами для многА юнитов :D
Ну и скинь сюда эту карту с такой абилкой.
27

» WarCraft 3 / Как обойти проблему, что ИИ в сражении стопорится в развитии, если ограничить подготовку героев до 1

Мб переписать этот ИИ, ибо видимо там заложено условие, что дальше развитие должно пойти после найма 2 героя. А так, как ты ограничил найм внешне, он не может это сделать и стопорится, бесконечно ждет второго героя.

По сути писать свой кастом ИИ.
27

» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]

мммм, а в чем проблема?)
Сделаем абилку, которая будет хилять юнита (кастующего) каждую секунду на 10 хп а противника (цель) уменьшать хп на 10 в секунду в течении 5 секунд.
Ну как вариант:
  1. Создаем массивы всех данных, что использует твоя способка, к примеру Heroes, Targets, Times
  2. Создаем переменную, означающую количество активных способок ACount
Далее 2 варианта сохранения и удаления данных из массива. А именно, когда абилка завершила свое действие, надо удалить ее данные из массива. Что делаем с остальными абилками идущими после этого индекса? Если ничего, то остается пустое место в середине массива, куда сможем записать новую абилку. Либо лучше сместить все данные после текущей абилки влево, закрыв пустое место и уменьшив счетчик ACount.
Тут как раз таки главная проблема в том, как ты будешь ориентироваться и находить данные этой способки в течении всего жизненного цикла ее, чтобы не потерять связь между этими данными.
Как один из вариантов, будем сдвигать все данные влево при уничтожении абилки.
Использую псевдокод чтобы был понятен смысл и мне лень вспоминать какие там функции в варике и как они выглядят.
  1. При касте способки сохраняем все данные в массив под индексом ACount + 1:
index = ACount + 1
Heroes[index] = КастующийЮнит()
Targets[index] = ЦельКаста()
Times[index] = 5
  1. Далее будет какой-то глобальный таймер или событие "каждую секунду" запускающий триггер:
цикл для i от 1 до ACount делаем
	Если Heroes[i] жив и Target[i] жив то
		устанавливаем хп Target[i] на Target[i] - 10.
		устанавливаем хп Heroes[i] на Heroes[i] + 10.
		устанавливаем время Times[i] = Times[i] - 1
	Иначе 
		Times[i] = 0
  1. Далее надо сместить (удалить) все способки, что закончили свое действие. В этом же триггере:
free = -1 // индекс свободной ячейки
цикл для i от 1 до ACount делаем
	если Times[i] == 0 то
		если free < 0 то
			free = i
	иначе
		если free > 0 то
		Heroes[free] = Heroes[i]
		Targets[free] = Targets[i]
		Times[free] = Times[i]
		free = free + 1 
конец цикла
Если free > 0 то
	ACount = free - 1
  1. Если тебе нужно будет в какой-то момент получить данные способки, просто ищем этого юнита в массиве Heroes[] и далее используй тот-же индекс для получения остальных данных из других массивов. Усе.
Можно еще добавить про "правильное" очищение ссылок переменных но это уже вопрос оптимизации.

И да, хэштаблицу проще использовать, чем параллельные массивы данных. Но я постарался ответить именно на твой вопрос с примером, как можно было бы сделать и оно будет работать.
27

» WarCraft 3 / Декорации лагеря гноллов

Думаю для Рефа они лучше подойдут, слишком гладкий декор, выделяется)

Хотя бочонки и сумки можно и на SD