Добавлен qzGoon
Способность:
function Trig_HeroTakeDamage_IfUnitTeam takes nothing returns boolean
return ( GetOwningPlayer(GetAttacker()) == Player(11) )
endfunction
function Trig_HeroTakeDamage_SetUnitFunction takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), "debug damage" )
local unit PickUnit
local effect SelectEffect
set PickUnit = GetEnumUnit()
call SetUnitLifeBJ( PickUnit , ( GetUnitStateSwap(UNIT_STATE_LIFE, PickUnit ) - ( I2R(GetUnitAbilityLevelSwapped('A00G', GetAttackedUnitBJ())) * ( I2R(GetHeroStatBJ(bj_HEROSTAT_STR, GetAttackedUnitBJ(), true)) * 0.50 ) ) ) )
call AddSpecialEffectTargetUnitBJ( "overhead", PickUnit , "Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl" )
set udg_SetEffect = GetLastCreatedEffectBJ()
set SelectEffect = udg_SetEffect
call PolledWait( 3.00 )
set udg_SetEffect = SelectEffect
call DestroyEffectBJ( udg_SetEffect )
endfunction
function Trig_HeroTakeDamage_RealyInRandom takes nothing returns boolean
if ( not ( udg_random_num <= 5 ) ) then
return false
endif
return true
endfunction
function Trig_HeroTakeDamage_RealyInSpell takes nothing returns boolean
if ( not ( GetUnitAbilityLevelSwapped('A00G', GetAttackedUnitBJ()) > 0 ) ) then
return false
endif
return true
endfunction
function Trig_HeroTakeDamage_Actions takes nothing returns nothing
if ( Trig_HeroTakeDamage_RealyInSpell() ) then
set udg_random_num = GetRandomInt(1, 10)
if ( Trig_HeroTakeDamage_RealyInRandom() ) then
call DisplayTextToForce( GetPlayersAll(), "debug random" )
call ForGroupBJ( GetUnitsInRangeOfLocMatching(500.00, GetUnitLoc(GetAttackedUnitBJ()), Condition(function Trig_HeroTakeDamage_IfUnitTeam)), function Trig_HeroTakeDamage_SetUnitFunction )
else
endif
else
endif
endfunction
//===========================================================================
function InitTrig_HeroTakeDamage takes nothing returns nothing
set gg_trg_HeroTakeDamage = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_HeroTakeDamage, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddAction( gg_trg_HeroTakeDamage, function Trig_HeroTakeDamage_Actions )
endfunction
Но спецэффект не пропадает, как его правильно убирать если эта способность активировалась много раз и у разных игроков. Не не нужно меня отправлять учить статьи и тд, я просто не пойму как тут массив распределить.
Принятый ответ
самым оптимальным вариантом будут параллельные массивы+перебор таймером
вот тебе готовая система на v/cjass:
вот тебе готовая система на v/cjass:
library auto_deleted_effect initializer init{
private effect myEffects[];
private int times[];
private int count=0;
int createAutoDeletedEffect(effect newEffect, int time){
int index=count;
count++;
myEffects[index]=newEffect;
times[index]=time;
return index;
}
bool removeAutoDeletedEffect(int index){
DestroyEffect(myEffects[index]);
count--;
if(index<count){
myEffects[index]=myEffects[count];
times[index]=times[count];
return false;
}
return true;
}
private void update(){
int index=0;
loop{
exitwhen index==count;
times[index]--;
if(times[index]<=0){
if(removeAutoDeletedEffect(index)){
index++;
}
}
}
}
private void init(){
timer t=CreateTimer();
TimerStart(t, 1, true, function update);
}
}
вставь её в шапку карты
вызывать вот так:
createAutoDeletedEffect(AddSpecialEffectTargetUnitBJ( "overhead", PickUnit , "Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl" ), 3) // создаёт эффект который будет удалён через 3 секунды
требует подключения cj_types.j без вайлов
qzGoon, ну а ты проверь рабочий он или нет
qzGoon, ну а ты проверь рабочий он или нет
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. 8gabriel8
Ред. LordDracula
8gabriel8: Мне нужно чтобы эффект бросился на время. p.s. Я только перехожу на Jass.
Sheridan_75: Скоро опробую, спасибо за подсказку, а про обнуление вообще забыл)
Ред. nvc123
т.е. весь код который идёт после вейта не будет выполнятся
а если ещё прочесть статьи про джасс то можно узнать что они нигде не работают кроме действий триггеров и потоков дочерних от них
самый лучший способ - переделать на таймеры
самый быстрый способ - порождать дочерний поток через экзекут
Ред. nvc123
вот тебе готовая система на v/cjass:
qzGoon, ну а ты проверь рабочий он или нет