EHP_Sequence, потому что нужно устанавливать две версии: включенную и отключенную.
Я установил включенную версию в строку "Графика пиктограмма используется", а выключенную в строку "графика пиктограмма не используется". Это разве не правильно?
как написал ссср, единого универсального решения нет и не будет, нужно делать систему нужную под конкретно твои задачи
дополню своим примером такой системы
сначала я сделал описание всех свойств бафов, затем сделал базу данных самих бафов, а затем уже к ней систему наложения и снятия
на баф делается своя структура
struct MyBuffData
real duration, tick = 0.
int cell, level, state, total = 0
bool Unpause = false
unit source, victim
real effect_over_time_value, effect_over_time_delay
bool effect_over_time_type
string effect_over_time_sfx, effect_over_time_sfx_point
int param[5]
real param_value[5]
void get_level_data(int level){
int c = 0
this.level = level
if this.level == 1 {
while(c++ < 5) {
this.param[c-1] = WhichState_1[this.cell][c]
this.param_value[c-1] = WhichStateValue_1[this.cell][c]
}
}
elseif this.level == 2 {
while(c++ < 5) {
this.param[c-1] = WhichState_2[this.cell][c]
this.param_value[c-1] = WhichStateValue_2[this.cell][c]
}
}
elseif this.level == 3 {
while(c++ < 5) {
this.param[c-1] = WhichState_3[this.cell][c]
this.param_value[c-1] = WhichStateValue_3[this.cell][c]
}
}
elseif this.level == 4 {
while(c++ < 5) {
this.param[c-1] = WhichState_4[this.cell][c]
this.param_value[c-1] = WhichStateValue_4[this.cell][c]
}
}
elseif this.level == 5 {
while(c++ < 5) {
this.param[c-1] = WhichState_5[this.cell][c]
this.param_value[c-1] = WhichStateValue_5[this.cell][c]
}
}
}
void set_level(int level){
if level > 0 {
SetUnitAbilityLevel(this.victim, BuffId[this.cell][1], level)
SetUnitAbilityLevel(this.victim, BuffId[this.cell][2], level)
this.get_level_data(level)
}
}
void set_duration(real time){
if time == -1. {
time = BuffTime[this.cell][this.level]
}
this.duration = time
}
static thistype create(unit a, unit b, int l){
thistype this = thistype.allocate()
this.level = l
this.source = a
this.victim = b
this.Unpause = false
this.tick = 0.
this.total = 0
return this
}
endstruct
и делается типа менеджера который учитывает все активные баффы и смотрит нужно ли им еще висеть и производить эффект
кат
private void BuffsUpdate(){
int index = 0, C1 = 1
UD src
if Stack == 0 { return }
loop {
exitwhen index >= Stack
index++
if BuffStack[index].victim == null {
BuffStack[index].destroy()
BuffStack[index] = BuffStack[Stack]
Stack--
}
}
index = 0
loop {
exitwhen index >= Stack
index++
src = GetData(BuffStack[index].victim)
if (src > 0 and (BuffStack[index].duration <= 0. or GetHp(BuffStack[index].victim) <= 0.045 or GetUnitAbilityLevel(BuffStack[index].victim, BuffId[BuffStack[index].cell][2]) == 0)) {
и так далее...
в итоге выглядит типа
//=================================
// curse
BuffId[17][1] = 'A00F'; BuffId[17][2] = 'B01E'
BuffType[17] = TYPE_MAGICAL
BuffPolar[17] = BUFF_TYPE_NEGATIVE
BuffTime[17][1] = 12.
BuffRank[17] = 5
WhichState_1[17][1] = OUTPUT_DAMAGE_SCALE
WhichStateValue_1[17][1] = 0.5
DebuffChance[17][1] = 75.
//=================================
проклятие которое уменьшает исходящий урон цели на 50%, OUTPUT_DAMAGE_SCALE описана в структуре юнита и влияется через воздействие бафа
...
там где мне нужно я делаю просто
AddBuffToUnit(target, caster, 'A00F', 1, false)
самый примитивный это использовать wait, но он работает неточно, и если будет несколько таких применений, начнутся оч инересные вещи, так что в другом случае учитесь работать с таймерами и параллельными массивами, хеш таблицами, локальными переменными, все есть в базе статей и тонна примеров в теме с заклинаниями на заказ
» WarCraft 3 / Как узнать кол-во единиц атаки у юнита?
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Очистка локальных переменных
» WarCraft 3 / Очистка локальных переменных
» WarCraft 3 / Актирование способности через триггер?
Ред. Hate
» WarCraft 3 / Модель, что с тобой не так?
» WarCraft 3 / Триггерный бафф
» WarCraft 3 / Как удалить способность?
» WarCraft 3 / Как перенести все переменные в другую карту?
» WarCraft 3 / Как удалить способность?
Ред. Hate
» WarCraft 3 / Проблема с конвертацией своей картинки в .blp
» WarCraft 3 / Редактор моделей
» WarCraft 3 / Редактор моделей
Ред. Hate
» WarCraft 3 / Редактор моделей
» WarCraft 3 / Редактор моделей
» WarCraft 3 / Редактор моделей
» WarCraft 3 / Помощь в избавлении от BJ
» WarCraft 3 / Помощь в избавлении от BJ
Ред. Hate
» WarCraft 3 / Помощь в избавлении от BJ
» WarCraft 3 / Редактор моделей
Ред. Hate
» WarCraft 3 / Помощь в избавлении от BJ
» WarCraft 3 / Доп статы
» WarCraft 3 / Помощь с локальными переменными
Ред. Hate
» WarCraft 3 / LoadUnitHandle не возвращает значение функции
» WarCraft 3 / Более трёх героев