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й слот добавлялся особый предмет "Отмена", который закрывал инвентарь сумки (т.е. возвращал вещи, которые были у героя в инвентаре ДО открытия сумки, в том числе и саму сумку).
На сколько я помню, при событии начинает применять нельзя получить ни цель каста, ни точку... да и других технических моментов много. Поэтому используется обычно приводит в действие.
Способность без указания цели-юнита? - тогда бесполезно пытаться ссылаться на него. Тут необходимо понимать как и на что кастуется скилл. Если за основу взято рассеивание чар целителя, тогда не будет юнита-цели. Надо выбирать всех подходящих юнитов вокруг точки каста.
А вот если за основу взято рассеивание чар дриад - тогда да, можно отлавливать юнита-цель.
Идея очень хороша совсем забыл про стандартный инвиз, но наверно будет большая нагрузка у кучи мобов двигать и другую кучу мобов постоянно + спавн новых.
...можно делать нужные перемещения только лишь в определённые моменты, если такой вариат возможен (например когда игрох входит в нужную область, то активировать "смещённый вижн" доя всех стражей в ней).
easypeasy, через установку ловкости на конкретно записанное ранее число может получиться так, что за эти 12 сек действия бонуса герой повысит уровень и получит немного ловкости, которую впоследствии потеряет.
Логичнее было бы сразу записать сколько ловкости ты хочешь добавить, и потом это же число и отнять.
set Hero_AGI = R2I( I2R(Ловкость) * 0.8 + 0.5 ) с округлением
Потом указываешь увеличить ловкость героя на Hero_AGI
А через 12 сек - уменьшить ловкость героя на Hero_AGI
PT153, можно. Просто от него остаются некоторые последсвия (на самом юните, специфика такая). Но на работоспособности отлова отрядов таких юнитов это никак не сказывается.
8gabriel8, упомянуть-то упомянули, а решения простого там так и не объявили... А перебор всех юнитов со сравнением дистанций (или принадлежности к области) - я за простое решение принять НЕ могу, ибо это целый само-свал новых действий... А так - всё по старинке, только добавляется "обезвреживание" и детект даммиков. NazarPunk, как это ТРИ ?
Вот как у тебя идет триггер:
...ничего...
Выбор юнитов в радиусе Х от точка А
...ничего...
А теперь будет так:
...обращение к группе - remove Aloc...
Выбор юнитов в радиусе Х от точки А
...обращение к группе - add Aloc...
При создании москитных даммиков, которых потом необходимо будет пикнуть, заноси их в специальную группу. В момент когда необходимо будет пикнуть даммиков - обратись к группе и отними у каждого абилку 'Aloc', после чего пикай их как обычных юнитов. А в конце - снова обратись к этой группе и верни им отнятую ранее абилку 'Aloc'.
Ред. 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 / Не могу отловить срабатывание способности
Попробуй поставить общее событие.
» WarCraft 3 / Почему не срабатывает триггер?
» WarCraft 3 / Триггерно заставить юнита стоять на месте
Ред. Extremator
» WarCraft 3 / Проблемы с системой скрытности.
» WarCraft 3 / Изменение ловкости героя
А через 12 сек - уменьшить ловкость героя на Hero_AGI
» WarCraft 3 / Использования юнита как снаряд
» WarCraft 3 / Использования юнита как снаряд
NazarPunk, как это ТРИ ?
...ничего...
Выбор юнитов в радиусе Х от точка А
...ничего...
...обращение к группе - remove Aloc...
Выбор юнитов в радиусе Х от точки А
...обращение к группе - add Aloc...
» WarCraft 3 / Использования юнита как снаряд
» WarCraft 3 / Скилл на неуязвимость
» WarCraft 3 / Замена иконки Во время игры