сделал спел....надеялся на чудо, а вот и херен не работает посмотрите почему код не работает, спел такой кастер юзает скил, и все враги в области 1000 начинают терять защиту в указанном количестве, в течении указанного времени, защита эффект исчезает через определённое время, на цели всё это время должен быть эффект я нуб,честно, сам не разобрался помогите плз вот функция
Code
function Trig_sdfhj_Conditions takes nothing returns boolean return ( not ( GetSpellAbilityId() == 'A000' ) ) endfunction
function Trig_sdfhj_Actions takes nothing returns nothing local integer last=5 //длительность эффекта local integer arm=1 //кол-во уменьшеной защиты в сек local integer lar=60 //длительность уменьшеной защиты(sec) local unit caster=GetTriggerUnit() local group g local unit q local effect array e local location L=GetUnitLoc(caster) local integer array we local unit array er set g=GetUnitsInRangeOfLocMatching(1000.00, L, Condition(function UnitEn )) loop set q=FirstOfGroup(g) exitwhen q == null set we[1]=we[1]+1 set er[we[1]]=q call AddSpecialEffectTargetUnitBJ( "chest", er[we[1]], "Abilities\\Spells\\Other\\Doom\\DoomTarget.mdl" ) set e[we[1]]=GetLastCreatedEffectBJ() call GroupRemoveUnit(g, q) endloop loop set we[2]=we[2]+1 exitwhen we[2]>last loop set we[3]=we[3]+1 exitwhen we[3]>we[1] loop set we[4]=we[4]+1 call UnitAddAbilityBJ( 'A001', er[we[3]] ) exitwhen we[3]==arm endloop set we[4]=0 endloop call TriggerSleepAction( 1 ) set we[3]=0 endloop call TriggerSleepAction( lar ) loop set we[5]=we[5]+1 exitwhen we[5]>we[1] call DestroyEffectBJ( e[we[5]] ) set e[we[5]]=null endloop set we[6]=arm*last loop set we[7]=we[7]+1 exitwhen we[7]>we[1] loop set we[10]=we[10]+1 exitwhen we[10]>we[6] call UnitRemoveAbilityBJ( 'A001', er[we[7]] ) endloop set we[10]=0 set er[we[7]]=null endloop call RemoveLocation(L) set q=null set caster=null call DestroyGroup(g) endfunction
ОМГ зачем тебе столько loop? Достаточно было добавить юнитов в группу и сделать периодический таймер который уменьшает каждую сек броню и после запустить таймер по истечению брони... call TriggerSleepAction нельзя юзать темболее в loop(loop игнорирует это действие или ждёт больше времени) пользуйся таймерами...Look at my horse!
Клоун... Такой клоун... Создаём способность на основе "Духовое Пламя" делаем защиту в минус [INFO: Shift+Enter]. Location - ты слабый чтоли? real x = GetUnitX(caster),y = GetUnitY(caster)
Code
unit e // Для пересчёта group g = CreateGroup() // нормальная группа call GroupEnumUnitsInRange(g, x, y, 1000. , null) // Пикаем всех в радиусе 1000 loop e = FirstOfGroup(g) exitwhen e == null if IsUnitEnemy(e, GetOwningPlayer(caster)) == true and GetWidgetLife(b) > 0.405 then //Твои действия endif call GroupRemoveUnit(g,e) //Удаляем endloop call DestroyGroup(g) // удаляем
Подставишь local и call Создаёшь Dummy который будет кастовать "Духовое Пламя" на всех из группы. И не надо делать стока loop.[c][/c]
Один фиг, делаем туже абилку, таймер, и пикаем каждую секунду или скока надо каждые 0.50 ну понятно. И получили абилку! Cкачать! Сделал за пару минут. Не очень тяжело. Однако может просто ты недавно стал изучать Jass. Можно через леденящий крик сделать, но мне лучше так.[c][/c]
1) у Даро наверняка нету JNGP темболее с синтаксисом cJass(тк ты на не писал глобалс что можно только в cJass) поэтому твоё объявление хеша бессмысленно(делал бы объявление в самом вврерху триггера чтоле или в редакторе переменных). 2)Хватило бы и спелла "Повышение брони" с отрицательным значением добавить выбранным нафиг ты дамика мучаешь кастами? 3)Достаточно было сохранить юнита а X Y найти локалками Ты только усложнил всё Ты ещё и указал у способности 1 лвл нафига?))) он самого начала 1 лвл) Ненужно показывать как ты умеешь, сделал бы понятней его уровню. А как я знаю он наверняка не знает что такое хеш-таблицаLook at my horse!