Мб переписать этот ИИ, ибо видимо там заложено условие, что дальше развитие должно пойти после найма 2 героя. А так, как ты ограничил найм внешне, он не может это сделать и стопорится, бесконечно ждет второго героя.
мммм, а в чем проблема?)
Сделаем абилку, которая будет хилять юнита (кастующего) каждую секунду на 10 хп а противника (цель) уменьшать хп на 10 в секунду в течении 5 секунд.
Ну как вариант:
Создаем массивы всех данных, что использует твоя способка, к примеру Heroes, Targets, Times
Создаем переменную, означающую количество активных способок ACount
Далее 2 варианта сохранения и удаления данных из массива. А именно, когда абилка завершила свое действие, надо удалить ее данные из массива. Что делаем с остальными абилками идущими после этого индекса? Если ничего, то остается пустое место в середине массива, куда сможем записать новую абилку. Либо лучше сместить все данные после текущей абилки влево, закрыв пустое место и уменьшив счетчик ACount.
Тут как раз таки главная проблема в том, как ты будешь ориентироваться и находить данные этой способки в течении всего жизненного цикла ее, чтобы не потерять связь между этими данными.
Как один из вариантов, будем сдвигать все данные влево при уничтожении абилки. Использую псевдокод чтобы был понятен смысл и мне лень вспоминать какие там функции в варике и как они выглядят.
При касте способки сохраняем все данные в массив под индексом ACount + 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
Далее надо сместить (удалить) все способки, что закончили свое действие. В этом же триггере:
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
Если тебе нужно будет в какой-то момент получить данные способки, просто ищем этого юнита в массиве Heroes[] и далее используй тот-же индекс для получения остальных данных из других массивов. Усе.
Можно еще добавить про "правильное" очищение ссылок переменных но это уже вопрос оптимизации.
И да, хэштаблицу проще использовать, чем параллельные массивы данных. Но я постарался ответить именно на твой вопрос с примером, как можно было бы сделать и оно будет работать.
Какой ты хочешь ответ на вопрос "У меня не работает, что делать?". Ну сделай так, чтобы работало :D
Поисследуй, что именно у тебя ломается после загрузки. Не все же способки ломаются а некоторые?
А еще лучше, если ты выложишь карту с указанными способками, чтобы могли посмотреть код, потестить, найти причину. Можно даже вынести способки на отдельную пустую карту если не хочешь палить свою карту.
nazarpunk, я тоже подумал о подобном варианте для старта, но в идеале да, сделать бы проверку на существующие имена, хех. Интересный проект получается, очень полезный)
Интересно, как решить проблему зарезервированных имен?)
Попросить ввести замену или автоматически на что-то заменить?
Или просто отказаться конвертировать пока код не поправят по этой причине.
Предлагаю добавить сетку с векторами/осями из центра модели. С галочками в настройках, чтобы показывать или прятать их. А то есть модели (пример), которые не понятно, где верх а где низ если крутишь и вообще крутишь ли :D
Ред. konvan5
» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]
Ну и скинь сюда эту карту с такой абилкой.
» WarCraft 3 / Как обойти проблему, что ИИ в сражении стопорится в развитии, если ограничить подготовку героев до 1
Ред. konvan5
» WarCraft 3 / Как сделать MUI через глобалки? - [Jass]
Сделаем абилку, которая будет хилять юнита (кастующего) каждую секунду на 10 хп а противника (цель) уменьшать хп на 10 в секунду в течении 5 секунд.
Ну как вариант:
Тут как раз таки главная проблема в том, как ты будешь ориентироваться и находить данные этой способки в течении всего жизненного цикла ее, чтобы не потерять связь между этими данными.
Как один из вариантов, будем сдвигать все данные влево при уничтожении абилки.
Использую псевдокод чтобы был понятен смысл и мне лень вспоминать какие там функции в варике и как они выглядят.
» WarCraft 3 / Декорации лагеря гноллов
» WarCraft 3 / Прерывание внутри триггера
Ред. konvan5
» WarCraft 3 / Batle for Quel'Thalas
А также:
Попробуй защитить солнечный колодец, или воскресить в нём лича Кел'Тузада, или возродить империю Амани.
» WarCraft 3 / Прерывание внутри триггера
» Аниме / Хентай игра Adventurer Trainer [PastryIRL] - 100% прохождения
Ред. konvan5
» WarCraft 3 / Пак моделей из игр на движке Gold Source.
» Гильдия «Черамор» / Стальная эпоха | 7 Days To Die (s02-e13)
» WarCraft 3 / Сбрасываются триггерные способности
» WarCraft 3 / Сбрасываются триггерные способности
Поисследуй, что именно у тебя ломается после загрузки. Не все же способки ломаются а некоторые?
А еще лучше, если ты выложишь карту с указанными способками, чтобы могли посмотреть код, потестить, найти причину. Можно даже вынести способки на отдельную пустую карту если не хочешь палить свою карту.
» WarCraft 3 / Главное меню "Горящий McDonald's в Лос-Анджелесе"
» Гильдия «Черамор» / Выход в бетон | 7 Days To Die (s02-e09)
» WarRaft / -jass2lua
Ред. konvan5
» WarRaft / -jass2lua
Попросить ввести замену или автоматически на что-то заменить?
Или просто отказаться конвертировать пока код не поправят по этой причине.
» Администрация XGM / Починить просмотрщик mdx
Главное чтобы было понятно, где вообще земля :D
» Администрация XGM / Починить просмотрщик mdx
» Survivor Challenge TD / Survivor Challenge TD вышла в ранний доступ в Steam
» Гильдия «Черамор» / Въезд | 7 Days To Die (s02-e08)
» Администрация XGM / Починить просмотрщик mdx
» WarCraft 3 / Вампиры [Lineage 2]
Вышли таки!
» Администрация XGM / Починить просмотрщик mdx
» WarCraft 3 / Проклятье, Утер!
Ред. konvan5
» WarCraft 3 / Где найти наработку?