Если хочешь сделать увеличение/уменьшение регена маны, сделай невидимого даммика игрока, которая повышает/понижает реген через глобальну. ауру.
Допустим взять Brilliance Aura с нужным коэффициентом. То есть сделать её 100-уровневой и на каждый уровень делать +1, +2, +3 + n и т.п.
И так же для минусовой части.
Ещё можно просто каждую секунду брать юнитов игрока, и через нативку менять им реген маны.
Типа каждую секунду игры делать
[Arithmetic ( Base mana regen + X)], где X будет твой коэффициент или константа.
Перебирать массив юнитов и повышать им реген, менее затратная операция чем сорт четырех двумерных массивов для КАЖДОГО игрока. Но это не точно, просто по ощущениям. Так что сори, что без пруфа)
И правда, если не запариваться, то поставь время жизни.
Условно кулдаун стоит минуту, то ставь время жизни мины 6 минут.
То есть он не сможет физически больше 6 поставить.
Просто создай его в центре, путем получения координаты действия способности.
GetSpellCastRegion() что-то в таком духе, и создавай его в центре, настраивай ауру как тебе надо
Есть альтернативный путь - выдать всем юнитам все эти способности с визуалом сразу в РО, но отключить их изначально для всех игроков, а потом включить каждому игроку только те способности, которые соответствуют его ордену. Это позволит полностью избавиться от триггеров на вход юнитов на карту.
гений, хорошее решение
Либо реально делай 300 юнитов, ничего страшного, делов то часа на 4-5
зачем ты даешь им абилки? я полагаю у тебя есть очень веская причина не добавлять их через РО. Но некоторую оптимизацию ты всё же можешь сделать.
во-первых, если у всех космодесантников есть общие абилки (рюкзак, общие айтемы), то их добавь в РО, чтобы в триггерах было как можно меньше строчек.
Во-вторых не обязательно сразу давать абилку, как только он появился. Можешь сделать систему очереди. То есть когда юнит появляется, он ставится в очередь. А очередь определяет тип юнита и вызывает необходимую функцию добавления абилок.
Как сделать? 1. Добавляются в очередь юниты как раз таки событием Unit enters playable map area и "Занести в очередь".
2. Очередь вызывается таймером каждые (0.05, условно) сек и проходится по юнитам, которые в неё добавлены.
Тут всё обойдется минимальным джассом, но это не сложно и будет тебе только в большой плюс.
Определяет их тип, допустим десантник хаоса и добавлят ему абилки которые ему нужны.
Допустим у тебя будет массив переменных Desantnik_chaos из ability, и там будут нужные для него абилки. Так вот триггер пройдется по массиву и каждый раз будет добавлять абилку, до окончания массива. (Допустим у него 4 способности, то цикл будет состоять из 4х итераций и по итогу добавится 4 абилки).
Условно, когда юнит заносится в очередь она вытаскивает абилки из этого массива и добавляет их юниту.
Если сказать просто, то у тебя будет база данных для каждого юнита. И очередь будет смотреть что это десантник хаоса и вытаскивать из базы какие абилки у него есть и добавлять ему.
Таким образом ты избавишься от создания кучи триггеров и получишь что-то вроде базы данных, когда не надо будет в случае патча менять во всех триггерах, а просто настроить кому что будет даваться. Убиваешь сразу много зайцев.
Разумеется я полагаю у тебя все несколько сложнее, но и структуру ты должен сформировать локально чисто для твоего случая.
Смотри способ: неважно нейтральные или не нейтральные.
Просто перебираешь всех юнитов игрока (условно нейтралов), когда начинается день и делаешь PauseUnit и отображаешь эффект сна.
Разумеется должен быть триггер в плане если его атаковали, эффект исчезает и юнит Unpause.
В луа такое сделать намного проще, т.к. даже лишних переменных не надо создавать.
Делаешь массив юнитов и unit.effect туда заносишь эффект.
Далее просто когда его атаковали destroy(unit.effect)
Не знаю что ты имеешь в виду под фильтрами золота опыта и приказов
Абсолютно то же самое что и с отловом урона. Когда игрок получает золото с крипа, то мы можем вмешаться посередине и изменить сколько золота он получил. Срабатывает на любое получение золота, будь то убийства крипов, награда, тикающее и т.д.
То же самое с приказом и опытом. Видимо такого нет.
В доте2 на движке можно было модифицировать на лету что угодно. Поэтому создавать такие системы было рас плюнуть. Ок, спасибо за пример в любом случае
такая конструкция приемлема, на луа пока не знаю.
Вроде там не надо ничего обнулять, но насчет эффектов я ничего не слышал пока что. В скором времени думаю выяснится
Morningstar, допустим у юнита 100 хп и имеет резист 50%(хил после получения урона). если цель получит 150 магического урона, то он умрет, вроде в доте он после получение ульты лиона в спину на лоу хп может выжить.
да, это точно. Пока не могу определить как это делается. Скорее всего мемхак, т.к. дота была на старых патчах, где он был возможен
Это действие либо для новой карты...
Либо надо отключить все триггеры с кастом кодом (можно оставить ГУИ триггеры), и тогда пункт LUA в свойствах карты, станет активным
С такими способностями столько возни на самом деле. Простенький вариант состоит из трёх триггеров: в первом запоминаешь атакуемого и вампира в виде пары, а также заносишь атакуемого в третий триггер на отлов урона, во втором триггере делаешь три события на получение приказа (объект, точка, без цели) для вампиров и в действиях разбиваешь пару вампир-атакуемый, чтобы третий триггер не сработал, а в третьем триггере атакуемый получает урон от вампира и рассчитывается шанс срабатывания пассивки на восстановление полного здоровья, а пара разрывается. Но такой триггер будет глючить с жаром преисподней, щитом молний, ядом и прочим периодическим уроном от вампира.
как насчет новых функций в 1.31? Где отслеживается урон и кто его нанёс. Можно и так попробовать проверить имеет ли target пассивку и зароллить шанс.
А если они будут не локальными это будет сильно не оптимизировано?
Допустим больше 160 обычных гуи спелов.
Сделай в разных триггерах, распредели по папкам. Чтобы тебе самому удобнее было искать.
В конечном итоге все во время компиляции и сборки всё в один триггер превратится.
Если ты этим пытаешься как-то оптимизировать, то это плохая идея.
Читабельность и структурированность важнее для тебя как разработчика. Проще и быстрее ориентироваться.
Просто следи чтобы спеллы не были утечными и будет уже хорошо
К тому же, если ты планируешь конвертировать готовый код в jass чтобы сделать локалки, то это тоже даст тебе небольшое, но преимущество.
Отредактирован Morningstar
» WarCraft 3 / Нагрузка на карту
Допустим взять Brilliance Aura с нужным коэффициентом. То есть сделать её 100-уровневой и на каждый уровень делать +1, +2, +3 + n и т.п.
И так же для минусовой части.
Ещё можно просто каждую секунду брать юнитов игрока, и через нативку менять им реген маны.
Типа каждую секунду игры делать
» WarCraft 3 / Перевести интерфейс редактора.
Есть смысл возвращаться, народ вообще играет?
» WarCraft 3 / Отследить постоянная невидимость
» WarCraft 3 / Помогите настроить событие триггера
Если оно работает, значит в Display text есть ошибка
Отредактирован Morningstar
» WarCraft 3 / Максимальное количиство призванных юнитов
Условно кулдаун стоит минуту, то ставь время жизни мины 6 минут.
То есть он не сможет физически больше 6 поставить.
» WarCraft 3 / Как создать юнит...?
GetSpellCastRegion() что-то в таком духе, и создавай его в центре, настраивай ауру как тебе надо
Отредактирован Morningstar
» WarCraft 3 / Лимит триггеров с событием Unit enters playable map area?(WH40k)
» WarCraft 3 / lua переменная и таблица
Отредактирован Morningstar
» WarCraft 3 / Лимит триггеров с событием Unit enters playable map area?(WH40k)
1. Добавляются в очередь юниты как раз таки событием Unit enters playable map area и "Занести в очередь".
Тут всё обойдется минимальным джассом, но это не сложно и будет тебе только в большой плюс.
Определяет их тип, допустим десантник хаоса и добавлят ему абилки которые ему нужны.
Допустим у тебя будет массив переменных Desantnik_chaos из ability, и там будут нужные для него абилки. Так вот триггер пройдется по массиву и каждый раз будет добавлять абилку, до окончания массива. (Допустим у него 4 способности, то цикл будет состоять из 4х итераций и по итогу добавится 4 абилки).
Если сказать просто, то у тебя будет база данных для каждого юнита. И очередь будет смотреть что это десантник хаоса и вытаскивать из базы какие абилки у него есть и добавлять ему.
Отредактирован Morningstar
» WarCraft 3 / UnitAddSleepPerm
» WarCraft 3 / Проверка приближения даммика
где L,L2 это просто точки
» WarCraft 3 / UnitAddSleepPerm
Просто перебираешь всех юнитов игрока (условно нейтралов), когда начинается день и делаешь PauseUnit и отображаешь эффект сна.
Разумеется должен быть триггер в плане если его атаковали, эффект исчезает и юнит Unpause.
Делаешь массив юнитов и unit.effect туда заносишь эффект.
Далее просто когда его атаковали destroy(unit.effect)
» WarCraft 3 / Триггер на проверку слотов игроков.
Помоему наиболее простой способ.
» WarCraft 3 / Фильтр урона и вообще фильтры в целом
То же самое с приказом и опытом. Видимо такого нет.
Отредактирован Morningstar
» WarCraft 3 / Может можно проще сделать или лучше?
monster[1] = первый тип
monster[2] = второй тип
и в системе спавна просто придумать currentMonsterSpawn
» WarCraft 3 / Нужно ли удалять эффекты и как?
Вроде там не надо ничего обнулять, но насчет эффектов я ничего не слышал пока что. В скором времени думаю выяснится
» WarCraft 3 / Пассивка бристлбека в доте
» WarCraft 3 / Пассивка бристлбека в доте
» WarCraft 3 / Конвертнуть карту на луа?
Отредактирован Morningstar
» WarCraft 3 / Заклинания на заказ
» WarCraft 3 / Куда податься старому пирату?
» WarCraft 3 / Жанр для карты
» WarCraft 3 / Как сделать кнопки для выбора героя? [новые, которые]
Отредактирован Morningstar
» WarCraft 3 / Оптимальная реализация события каста
В конечном итоге все во время компиляции и сборки всё в один триггер превратится.
Если ты этим пытаешься как-то оптимизировать, то это плохая идея.
Читабельность и структурированность важнее для тебя как разработчика. Проще и быстрее ориентироваться.
Просто следи чтобы спеллы не были утечными и будет уже хорошо
» WarCraft 3 / Можно ли как-то отлавливать количество брони у юнита?