Помогите составить триггер.Это умение Мошь Гор,когда герой его использует то получает +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), а он, к сожалению, утекает
Там утекает только хендл, ничего страшного в этом нет.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.