Можно ли реализовать триггерно увеличение максимального запаса здоровья героя на определённое значение(не фиксированное) ?
Пока придумал, но не реализовал, вариант добавлять к макс. здоровью книгами Трактат жизни +1HP N-колличество штук.

Принятый ответ

Extremator, Интересно, любой последующий каст устанавливает заново значение максимального хп, то есть оно даже меньше может стать, мне нужно чтобы бонусы стакались.
Это для установки текущего бонуса ХП.
Если ты хочешь увеличивать значение, то нужно сделать получение текущего значения.
Т.е. выглядеть будет как с лечением:
Установить бонус ХП как (текущий бонус ХП + число)
Для получения надо либо напрямую считывать данные: циклом пройтись и за каждую абилку добавить её значение к переменной, тем самым нарастив её обратно (напротив с тем что при установке её значения она наоборот расходовалась). getHP
Либо просто хранить БД с юнитами, которым было изменено ХП (т.е. внести их в систему юнит-число)
И, получив число, изменить это число в нужную сторону и выполнить установку setHP
. . . 10 минут спустя ...
Вот как-то так - setHP_16k.w3x
Добавил триггер getHP для получения числа, как и описал выше.
И чуть переделал тест скиллом (даёт рандомно от +1 до +100).
По сути, может давать и отрицательные числа, но упрётся в 0
Для этого надо добавить работу с число -32768
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
30
5 лет назад
0
Но как делать алгоритм, по которому выдавать нужные способности, запамятовал
Вот тут можно почитать
Когда-то сам допёр до разложения из двоичного представления, но не помню деталей той реализации.
0
13
5 лет назад
0
Extremator, сложно, но я постараюсь разобраться, спасибо
0
21
5 лет назад
Отредактирован Raised
0
  loop
  exitwhen rest <= 0
    if R2I(Pow(2,power)) > rest then
      set power = power-1
    elseif R2I(Pow(2,power)) <= rest then
      call UnitAddAbility(u,abilityAddHp[power])
      call SetUnitAbilityLevel(u,abilityAddHp[power],2)
      call UnitRemoveAbility(u,abilityAddHp[power])
      set rest = rest-R2I(Pow(2,power))
      set power = power-1
    endif
  endloop
0
26
5 лет назад
0
Clamp:
Когда-то сам допёр до разложения из двоичного представления, но не помню деталей той реализации.
У меня ранее вроде изначально через способности +1, +2 и +5 было сделано, потом прибавлялись ещё какие-то числа, при этом можно было использовать две одинаковые способности, но в целом фишка была в том, что почти для любого числа в пределах 100, хватало максимум 3 способностей, лишь для нескольких нужно было 4, но на этапе проектирования, может в итоге их вообще не стало. А для степени двойки может требоваться больше, например, 91=64+16+8+2+1 - пять способностей.
У меня алгоритм вручения был не помню каким, но очень хитрым. На основе смутных воспоминаний вырисовывается алгоритм для степеней двойки:
  • сначала определить чётное число или нет, в итоге вручить или нет способность на единичку;
  • потом циклом для степеней двойки опредеделить, какая степень больше, предыдущую вычесть и дать соответствующую способность;
  • с остатком повторить операцию до тех пор, пока не останется 0.

Raised как раз пример цикла показал.
4
32
5 лет назад
4
Переходите на 131 и тыкайте своё гуи, хватит работать на гарену, ради чего всё делаете?
0
13
5 лет назад
0
подскажите пожалуйста как запустить один триггер другим N-количество раз?
1 пункт от NazarPunk: 4.1.2 (оффтоп)
0
29
5 лет назад
Отредактирован nazarpunk
0
подскажите пожалуйста как запустить один триггер другим N-количество раз?
Вы бы хоть редактор открыли.
Загруженные файлы
2
26
5 лет назад
Отредактирован 8gabriel8
2
easypeasy:
подскажите пожалуйста как запустить один триггер другим N-количество раз?
Цикл от 1 до N.
2
13
5 лет назад
Отредактирован easypeasy
2
NazarPunk, позвольте, сударь, но это не оффтоп был. Я пытаюсь решить текущую проблему путём добавления способностей несколько раз(не фиксированное количество раз)
3
29
5 лет назад
3
easypeasy, берёте наработку из комментария Hate, берёте код от KaneThaumaturge, SetUnitMaxState(unit, UNIT_STATE_MAX_LIFE, R2I(GetUnitState(unit, UNIT_STATE_MAX_LIFE) + (50))) и вставляете в карту.
Если вы не можете воспользоваться готовым решением, то делать своё вам ещё пока рано.
Загруженные файлы
0
13
5 лет назад
0
NazarPunk, не робит, может из за того что у меня вар версии 1.27b. Постараюсь додумать сам как это сделать триггерами без кастом скриптов, спасибо
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.