Помогите составить триггер.Это умение Мошь Гор,когда герой его использует то получает +40 к силе,а когда заканчиваеться этот то бафф 40 к силе отнимают.ВНИМАНИЕ:Я не понял конкретно как забрать силу после окончания баффа,пытался через....
С:Юнит Завершает применение способности
У:Способность = мошь гор
Д:Герой вычесть 40 силы
но это не работает(

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

А если всё совсем плохо, то можно просто вэйтом обойтись.
Юнита-инициатора ты при таком ивенте всё равно не потеряешь.
дать 40 силы
ждать 30 сек
отнять 40 силы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
19
4 года назад
0
Похожие вопросы:

ответ
если на каждого юнита по такому триггеру то при 40 юнитах начнутся лаги
ответ
Самый простой алгоритм - для каждого юнита-цели создаешь даммик (Юнит со способностью москиты 'Aloc', без модели, тени и с отключенной атакой), который, получив нужный приказ, радостно кидает корни с нужными параметрами в оную цель. Не забудь применить к даммику ограничение времени жизни, чтобы он скастовал и благополучно сдох.
Герою же просто выдаешь пустышку на основе нейтрально-враждебной геройской способности Канал, срабатывание которой и отлавливаешь триггером, делающим вышеуказанные действия.
ответ
есть специальная функция на jass, которая называется MoveRect() или SetRect(). С помощью этих функций и перемещаете.
native MoveRectTo takes rect whichRect, real newCenterX, real newCenterY returns nothing
native SetRect takes rect whichRect, real minx, real miny, real maxx, real maxy returns nothing
ответ
XGM Bot:
Похожие вопросы:

ответ
Вобщем озарение как всегда пришло внезапно - понял что GetSpellAbilityUnit срабатывает на дамми и записывает в массив его, а не цель щита. Просто передвинул махинации с дамми в конец функции Actions. Всё отменно работает. Всем спасибо все свободны
ответ
если на каждого юнита по такому триггеру то при 40 юнитах начнутся лаги
ответ
Вместо
function InitTrig_CreepSpell takes nothing returns nothing
    set gg_trg_CreepSpell = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(gg_trg_CreepSpell, Player(1), EVENT_PLAYER_UNIT_SPELL_EFFECT, function CreepSpellFilter) 
    call TriggerAddAction(gg_trg_CreepSpell, function CreepSpellActivation)
endfunction
сделай так:
function InitTrig_CreepSpell takes nothing returns nothing
    set gg_trg_CreepSpell = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(gg_trg_CreepSpell, Player(1), EVENT_PLAYER_UNIT_SPELL_EFFECT, null) //function CreepSpellFilter
    call TriggerAddCondition(gg_trg_CreepSpell, Condition(function CreepSpellFilter))
    call TriggerAddAction(gg_trg_CreepSpell, function CreepSpellActivation)
endfunction
и вот здесь:
if IsUnitEnemy(GetFilterUnit(), Player(10)) then
        set Dummy = CreateUnit(Player(1), 'e004', CasterX, CasterY, bj_RADTODEG*Atan2(TargetY - CasterY, TargetX - CasterX))
		call IssuePointOrder(Dummy, "attackground", TargetX, TargetY)
        call UnitApplyTimedLife(Dummy, 'BTLF', 3)
        set Dummy = null
    endif
поменяй местами IssuePointOrder и UnitApplyTimedLife, чтобы было вот так:
    if IsUnitEnemy(GetFilterUnit(), Player(10)) then
        set Dummy = CreateUnit(Player(1), 'e004', CasterX, CasterY, bj_RADTODEG*Atan2(TargetY - CasterY, TargetX - CasterX))
        call UnitApplyTimedLife(Dummy, 'BTLF', 3)
        call IssuePointOrder(Dummy, "attackground", TargetX, TargetY)
        set Dummy = null
    endif
ответ
Самый простой алгоритм - для каждого юнита-цели создаешь даммик (Юнит со способностью москиты 'Aloc', без модели, тени и с отключенной атакой), который, получив нужный приказ, радостно кидает корни с нужными параметрами в оную цель. Не забудь применить к даммику ограничение времени жизни, чтобы он скастовал и благополучно сдох.
Герою же просто выдаешь пустышку на основе нейтрально-враждебной геройской способности Канал, срабатывание которой и отлавливаешь триггером, делающим вышеуказанные действия.
ответ
есть специальная функция на jass, которая называется MoveRect() или SetRect(). С помощью этих функций и перемещаете.
native MoveRectTo takes rect whichRect, real newCenterX, real newCenterY returns nothing
native SetRect takes rect whichRect, real minx, real miny, real maxx, real maxy returns nothing

ответ
Я смотрел, и такого условия у меня нет.
Меньше корявыми русификаторами нужно пользоваться, оно находится здесь:

1
26
4 года назад
1
Нужно таймером отмерять время действия способности, либо периодическим триггером с малым периодом регулярно проверять наличие баффа Мощь гор.
0
26
4 года назад
0
А если всё совсем плохо, то можно просто вэйтом обойтись.
Юнита-инициатора ты при таком ивенте всё равно не потеряешь.
дать 40 силы
ждать 30 сек
отнять 40 силы
Принятый ответ
0
26
4 года назад
0
Extremator, только простой Wait не учитывает скорость игры, для этого нужен Wait (game-time), а он, к сожалению, утекает. Ничего критичного для одной способности, но если в большинстве остальных так делать, то утечки могут дать о себе знать. Вроде бы где-то когда-то давно видел код для Wait (game-time), который не утекает. Его было бы правильно использовать.
0
32
4 года назад
0
Тут стоит отметить важное НО, статы нужно отнимает если герой не помер, либо после возрождения, иначе будут баги с регеном, сила влияет на регенерацию здоровья, но ели в момент смерти у героя изменить кол-во силы, регенерация не изменится, в итоге будет герой с 100500 регеном. Так что нужен триггер отлавливающий смерть, время, и начало касте, чтобы вручить силу и забрать её в нужное время.
0
28
4 года назад
0
для этого нужен Wait (game-time), а он, к сожалению, утекает
Там утекает только хендл, ничего страшного в этом нет.
0
26
4 года назад
0
quq_CCCP:
Тут стоит отметить важное НО, статы нужно отнимает если герой не помер, либо после возрождения, иначе будут баги с регеном, сила влияет на регенерацию здоровья, но ели в момент смерти у героя изменить кол-во силы, регенерация не изменится, в итоге будет герой с 100500 регеном. Так что нужен триггер отлавливающий смерть, время, и начало касте, чтобы вручить силу и забрать её в нужное время.
А с чего сделан такой вывод?
Мне показалось это логичным и я решил сделать проверку...
В итоге, оказалось что реген работает ровно в том числе, в котором должен (от количества Силы), если вызвать у героя работу регенерации (изменение текущего хп, в том числе его изменение за счёт изменения Силы). Т.е. да, на мёртвом героем иногда отображается не верное количество регена (ибо юнита можно заставить регенерироваться будучи мёртвым), но как только он становится снова живым - реген исправляется на правильный (в том числе и реген от предмета, который на мёртвом юните не работает совсем).
Отсюда и вопрос - как именно должен происходить этот баг?
Такой вариант "просто изменить мёртвому юнита силу" ничего в итоге не меняет, когда он снова вступит в игру его реген будет нормальным. Вариант "убить + дать силы" тоже не приводит в появлению лишнего регена. Вариант "отловить смерть + дать силы" так же ничего не даёт. В итоге что ни делай - реген всегда стабильный (от 22 Силы и 0.25 баз.регена это всегда 1.35 хп/сек).
0
15
4 года назад
0
8gabriel8, а почему обычный wait не подходит? Типа он действует, как высокая скорость игры?
0
28
4 года назад
0
Nemezid, потому что он багнутый и вызвает проблемы при паузе игры и в целом неточен
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.