Есть костыльный вариант с установкой прогресса вручную. Берёшь улучшение и ставишь ему длительность на 999999... При старте улучшения записываешь того кто его начал (юнит), и стартовый процент прогресса на 0.00 , ну и таймер периодический (можно раз в секунду, можно чаще).
По таймеру делаешь подсчёт нужных зданий и получаешь некое число (например их 5).
Далее множишь его на некий бонус ускорения (за каждое здание, например 0.02).
В итоге получаешь число равное текущей суммарной скорости (5 * 0.02 = 0.1).
И добавляешь это число в текущему значению прогресса. После рассчётов приравнивай текущий прогресс улучшения к этому значению.
В конце проверяешь достиг ли прогресс числа 1.00 (если там НЕ реальные, или в другом объёме, то просто подгоняйте по смыслу). И если достигло - то прекращаешь подсчёты и убираешь работу таймера. Исследование по достижению своих 100% прогресса должно завершиться.
Что интересно: чит, открывающий карту, при мгновенном использовании запущенный два раза кратновременно заставляет исчезнуть ВСЕХ юнитов (видимо рендер отключается).
Фокус в том что вэйт должен разделять обращения к группам в которых разово наносится урон всем участникам, а не разделять моменты нанесения урона внутри одного обращения к группе.
Вэйты работают в группах, просто не так как этого обычно хотят, т.к. есть некая специфика в механике вэйтов и групп/циклов.
Чисто как пример - baseUPGRADE.w3x Улучшения имеют лимит на 4 функции, поэтому можно вкл/выкл доступность только два раза, если нужно больше - можно либо триггерно произвести блокировку, либо создать ещё несколько таких же улучшение, и при исследовании первого - делать исследованными остальные.
Про здания - это больная тема... ибо напрямую - никак
Есть всякие варианты с заменой юнита... с подменой технологий, и прочие извороты
А на счёт улучшения - так добавляешь обоих юнитов в казарму, улучшенных блокируешь игроку, а при улучшении меняешь местами (старых блокируешь, новых разблокируешь). А что бы старые превратились в новых - используешь абилку "Тёмный", которая заставляет юнита превратиться из одного в другого (условие улучшения поставить не забудь). Это можно сделать без триггеров.
doleo82, ну можно сделать триггерный бафф, работа которого будет полностью управляема. Я хз что тут объяснять... Каждый подверженный юнит будет получать отдельно бафф, время истечения будет просчитываться отдельно для него, урон и периодичность урон так же будут индивидуальными. Отсюда и возможность изменения урона в зависимости от чего либо.
И при необходимости накладывать в юнитов этот бафф (разумеется триггерно).
Extremator, Интересно, любой последующий каст устанавливает заново значение максимального хп, то есть оно даже меньше может стать, мне нужно чтобы бонусы стакались.
Это для установки текущего бонуса ХП.
Если ты хочешь увеличивать значение, то нужно сделать получение текущего значения.
Т.е. выглядеть будет как с лечением:
Установить бонус ХП как (текущий бонус ХП + число)
Для получения надо либо напрямую считывать данные: циклом пройтись и за каждую абилку добавить её значение к переменной, тем самым нарастив её обратно (напротив с тем что при установке её значения она наоборот расходовалась). getHP
Либо просто хранить БД с юнитами, которым было изменено ХП (т.е. внести их в систему юнит-число)
И, получив число, изменить это число в нужную сторону и выполнить установку setHP
. . . 10 минут спустя ...
Вот как-то так - setHP_16k.w3x
Добавил триггер getHP для получения числа, как и описал выше.
И чуть переделал тест скиллом (даёт рандомно от +1 до +100). По сути, может давать и отрицательные числа, но упрётся в 0 Для этого надо добавить работу с число -32768
doleo82, я бы тебе предложил переложить скилл на полностью триггерную основу, тогда можно будет регулировать урон в момент его нанесения, в зависимости от каких-либо условий...
Создаёшь ряд абилок для повышения ХП, и делаешь им бонус в виде растущей степени двойки (по +1, +2, +4, +8, +16 и т.д.).
Забиваешь в переменные эти абилки и числа, которым они будут соответствовать (хотя тут можно прибегнуть и к хитрости с вычленением значения из рав-кода абилки... но... кому это надо?).
типа кодэ
set HP_Ability[1] = 'A001' абилка дающая +16 хп
set HP_Ability[2] = 'A002' абилка дающая +8 хп
set HP_Ability[3] = 'A003' абилка дающая +4 хп
set HP_Ability[4] = 'A004' абилка дающая +2 хп
set HP_Ability[5] = 'A005' абилка дающая +1 хп
set HP_value[1] = 16
set HP_value[2] = 8
set HP_value[3] = 4
set HP_value[4] = 2
set HP_value[5] = 1
Почему запись идёт в обратном порядке? - да просто потому что на GUI цикл считает лишь в одну сторону (хотя можно это обойти, надо лишь понимать что там внутри переменная находится), а на Jass'е можешь с ним творить что угодно, даже вовсе не считать ничего.
Дальше нужен небольшой триггер без события (а в идеале - функция), внутри которого запустится цикл с рядом однообразных проверок и вычислений. Залог успеха - необходимость послать юнита и нужное число в этот триггер. Назовём условно этот триггер как setHP.
Как это будет работать? - В нужном месте записываем юнита и то самое число, которое должно быть установлено как дополнительное здоровье. Тут следует понимать что не получится задать два раза +5 хп и получить в итоге +10 хп, т.к. это установка значения, а не прибавление к текущему имеющемуся в данный момент... но это безусловно решаемый момент, за счёт конструирования дополнительных триггеров-функций которые будут выполнять сложение используя всё необходимое.
типа кодэ 2
set HP_unit = (твой юнит)
set HP_set = (число)
Триггер - Вызвать триггер setHP (без проверки условий)
Внутри этого триггера (условно setHP) будет содержаться примерно следующее:
типа кодэ 3
Цикл А от 1 до 5
Если:
Сравнение чисел - HP_set больше или равно HP_value[A]
Тогда:
set HP_set = HP_set - HP_value[A]
Боевая единица - Добавить юниту HP_unit способность HP_Ability[A]
Иначе:
Боевая единица - Отнять у юнита HP_unit способность HP_Ability[A]
set HP_unit = (Нет боевой единицы)
Чуть пояснений:
Число 5 это конечное значение для описанной сейчас "системы", в идеале там должно быть 12-15 значений, хотя можно и больше (и +1 для отрицательных чисел).
Число А это целое для работы цикла. Если ты не знаешь как они работают (циклы/переменные), то всё это тебе объяснять - совсем другой разговор...
Было бы неплохо иметь возможность редактирования содержимого отправленного письма, до того момента как оно будет прочитано получателем (т.е. пока он висит у получателя как не прочитанное).
Так же можно было бы добавить возможность УДАЛЕНИЯ таких писем.
Он даёт предметные статы - атака и ХП.
Если их засунутб в книгу - это ничего не даст.
Нужно взять абилку на каст разового повышения ХП и такую же абилку на повышение атаки, и их засунуть в книги/руны (на атаку книга вроде в стандарте есть уже). prog:
Тут дело в том, что у юнита не может быть двух одинаковых способностей.
Может, но механизм этот специфичен и не так очевиден (описать его специфику я не могу).
Еще как вариант набросать системку на выдачу нужного бонуса юниту, тогда будет попроще такие манипуляции прлизводить.
В мести воинов была просто замена всего инвентаря на то что лежит внутри сумки, и наоборот.
При активации сумки все предметы героя переносились в другое место (я использовал для этого скрытого юнита с инвентарём), а выдавались все ранее спрятанные (т.е. если такие имелись в сумке). В добавок при открытии сумки в 6й слот добавлялся особый предмет "Отмена", который закрывал инвентарь сумки (т.е. возвращал вещи, которые были у героя в инвентаре ДО открытия сумки, в том числе и саму сумку).
» WarCraft 3 / Скорость исследования в зависимости от.....
» WarCraft 3 / Скорость исследования в зависимости от.....
Далее множишь его на некий бонус ускорения (за каждое здание, например 0.02).
В итоге получаешь число равное текущей суммарной скорости (5 * 0.02 = 0.1).
И добавляешь это число в текущему значению прогресса. После рассчётов приравнивай текущий прогресс улучшения к этому значению.
» WarCraft 3 / Что делает нативка Cheat?
» WarCraft 3 / Герой лучник людей
У того же автора ещё и с арбалетом есть моделька
Ред. Extremator
» WarCraft 3 / Действия после wait'a не работают.
» WarCraft 3 / Изменение юнита
Улучшения имеют лимит на 4 функции, поэтому можно вкл/выкл доступность только два раза, если нужно больше - можно либо триггерно произвести блокировку, либо создать ещё несколько таких же улучшение, и при исследовании первого - делать исследованными остальные.
Ред. Extremator
» WarCraft 3 / Иконки на заказ
http://wow.blizzwiki.ru/images/1/1e/PASBTNScout.png
Ред. Extremator
» WarCraft 3 / Изменение юнита
Есть всякие варианты с заменой юнита... с подменой технологий, и прочие извороты
» WarCraft 3 / Как после улучшения уменьшить урон от способности?
Я хз что тут объяснять... Каждый подверженный юнит будет получать отдельно бафф, время истечения будет просчитываться отдельно для него, урон и периодичность урон так же будут индивидуальными. Отсюда и возможность изменения урона в зависимости от чего либо.
И при необходимости накладывать в юнитов этот бафф (разумеется триггерно).
Ред. Extremator
» WarCraft 3 / Увеличение запаса здоровья героя
Если ты хочешь увеличивать значение, то нужно сделать получение текущего значения.
Т.е. выглядеть будет как с лечением:
Добавил триггер getHP для получения числа, как и описал выше.
И чуть переделал тест скиллом (даёт рандомно от +1 до +100).
По сути, может давать и отрицательные числа, но упрётся в 0
Для этого надо добавить работу с число -32768
Ред. Extremator
» WarCraft 3 / Как после улучшения уменьшить урон от способности?
Ред. Extremator
» WarCraft 3 / Увеличение запаса здоровья героя
Ред. Extremator
» WarCraft 3 / Увеличение запаса здоровья героя
» WarCraft 3 / Как сделать для каждого игрока отдельный MultiBoard?
А так вообще через форс вроде, всем скрываешь, одному показываешь.
» WarCraft 3 / Джас код на удаление точек
» WarCraft 3 / Эффект на способность "Сокрушение"
» Администрация XGM / Добавьте возможность редактирования отправленных писем
» WarCraft 3 / Убрать HP бары у юнитов
Но работает это не на конкретного юнита, а на весь игровой процесс (хотя и переключаемо).
» WarCraft 3 / Механика архонта
» WarCraft 3 / Потеря контроля над персанажам
Обращение к группе выбранных игроком юнитов вызывает потерю контроля в сетевой игре (даже с хорошим соединением).
» WarCraft 3 / Повторение триггера
Если их засунутб в книгу - это ничего не даст.
prog: Может, но механизм этот специфичен и не так очевиден (описать его специфику я не могу).
» WarCraft 3 / Механика архонта
А абилка лучницы и гипогрифа не пойдёт?
» WarCraft 3 / Баги со способностью оживший огонь в кампании
Ред. Extremator
» WarCraft 3 / Дополнительные предметы
» WarCraft 3 / Не могу отловить срабатывание способности
Попробуй поставить общее событие.