H_A_PK, хм.А можешь сделать формулу для эффекта типа новы?
С-приводит способность в действие CS: local real angle = 0 CS: local player p CS: set udg_UnitCaster = GetTriggerUnit() CS: set player p = GetOwningPlayer(udg_UnitCaster) для каждого числа от 0 до 35 делать CS: set udg_Unit2[bj_forLoopAIndex] = CreateUnit(p,'A001',GetUnitX(u),GetUnitY(u),angle) CS: set angle = angle + 10 // конец цикла CS: set p = null включить триггер
С-каждые 0.04 сек. CS: local real angle Для каждого числа от 0 до 35 делать CS: SetUnitX( udg_Unit2[bj_forLoopAIndex], GetUnitX(udg_UnitCaster) + 25*Cos(.0174532*GetUnitFacing(udg_Unit2[bj_forLoopAIndex]))) CS: SetUnitY( udg_Unit2[bj_forLoopAIndex], GetUnitY(udg_UnitCaster) + 25*Sin(.0174532*GetUnitFacing(udg_Unit2[bj_forLoopAIndex])))
CS: local unit u = GetTriggerUnit() CS: local unit u2
для каждого числа от 1 до 30 делать
Code
CS: set u2 = CreateUnit(GetOwningPlayer(u),'e000',GetUnitX(u),GetUnitY(u),0) CS: set udg_Unit2[bj_forloopAIndex] = u2 CS: set u2 = null CS: set udg_Unit2[32] = u
включить триггер
С-каждые 0.04 сек.
Code
CS:local real x CS:local real y local group g = CreateGroup() local unit u
установить х=х+10 Для каждого числа от 1 до 30 делать
Code
CS:set x = GetUnitX(udg_Unit2[32]) + udg_x*Cos(.0174532*((bj_forloopAIndex*10))) CS:set y = GetUnitY(udg_Unit2[32]) + udg_x*Sin(.0174532*((bj_forloopAIndex*10))) CS:call SetUnitX(udg_Unit2[bj_forloopAIndex],x) CS:call SetUnitX(udg_Unit2[bj_forloopAIndex],y) call GroupEnumUnitsInRange(g,x,y,128,null)
loop set u = FirstOfGroup(g) // тут действием наноси урон юниту u call RemoveUnit(udg_Unit2[bj_forloopAIndex]) call GroupRemoveUnit(g,u) exitwhen u==null endloop
Если x = 500 и udg_Unit2[bj_forloopAIndex] жив = да То Взрываем и тд и тп Иначе DoNothing
где code там каждую строчку в CS
Ползут 2 пирожка. Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D
Если в группе допустим последовательно находятся: рабочий, пехотинец, стрелок, рыцарь, грифон, то если убьют к примеру стрелка, то на 3ий вызов ферст оф груп, оно выдаст нуль и до рыцаря с грифоном дело не дойдет, что есть нихарашо. Там еще надо проверять враг ли юнит, иначе кастеру влетит дамаги от всех 30 шариков. То же, кстати, грозит какому-нибуть летающему юниту находящимся над кастером, или тому, кто будет стоять в плотную. Надо бы заносить в группу всех в кого уже попало и смотреть, нет ли цели в группе пострадавших.
Там еще надо проверять враг ли юнит, иначе кастеру влетит дамаги от всех 30 шариков. То же, кстати, грозит какому-нибуть летающему юниту находящимся над кастером, или тому, кто будет стоять в плотную. Надо бы заносить в группу всех в кого уже попало и смотреть, нет ли цели в группе пострадавших.
ну это уж сами ставьте фильтры
Quote (AncientPenguin)
Если в группе допустим последовательно находятся: рабочий, пехотинец, стрелок, рыцарь, грифон, то если убьют к примеру стрелка, то на 3ий вызов ферст оф груп, оно выдаст нуль и до рыцаря с грифоном дело не дойдет, что есть нихарашо.
это как не дойдёт ? Если они есть в группе то по всем долбанёт, во-первых юнита после нанесения урона удаляет из группы, она ведь не удалит из группы остальных, например рыцаря и грифона :p, а удалит именно юнита по которому урон уже нанесён... на 1й вызов будет стрелок на 2й вызов рыцарь на 3й грифон на 4й null расчёт закончен
Ползут 2 пирожка. Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D
это как не дойдёт ? Если они есть в группе то по всем долбанёт, во-первых юнита после нанесения урона удаляет из группы, она ведь не удалит из группы остальных, например рыцаря и грифона :p, а удалит именно юнита по которому урон уже нанесён... на 1й вызов будет стрелок на 2й вызов рыцарь на 3й грифон на 4й null расчёт закончен
Предположим ты записал в группу рабочего, пехотинца, стрелка, рыцаря, грифона. Потом стрелка убили. Дальше ты вызываешь луп с ферст оф груп: 1 вызов: u==рабочий 2 вызов: u==пехотинец 3 вызов: u==null (из-за того что стрелок записанный в группе уже мертв, его убило допустим другим спелом в это время, да почти не реально, но все-таки бывает...) В итоге цикл кончится и до последних не дойдет. Чем не нравится ForGroup? или сразу в фильтре урон наносить.
3 вызов: u==null (из-за того что стрелок записанный в группе уже мертв, его убило допустим другим спелом в это время, да почти не реально, но все-таки бывает...)
Если юнит мертв это совсем не значит, что ссылка на юнита будет null, вообще-то ссылка на юнита сохраняется до тех пор пока ты его не удалишь действием
Code
call RemoveUnit(u)
Quote (AncientPenguin)
Чем не нравится ForGroup? или сразу в фильтре урон наносить.
ну и отправляй туда значение локальных переменных через Хеш Таблицы, желаю удачи
Ползут 2 пирожка. Первый: Я тебя щас трахну. Второй: Почему? Первый: Потому что я с яйцами :D
Если юнит мертв это совсем не значит, что ссылка на юнита будет null, вообще-то ссылка на юнита сохраняется до тех пор пока ты его не удалишь действием
Если его труп сгниет то ссылка на юнита будет нуль (к героям вроде не относится).
Quote (H_A_PK)
ну и отправляй туда значение локальных переменных через Хеш Таблицы, желаю удачи smile
Если его труп сгниет то ссылка на юнита будет нуль (к героям вроде не относится).
уверен?Вроде бы наоборот. Герой при смерти автоматом ремувается,а обычный юнит просто проигрывает подряд анимации смерти,разложения,гниения и остаётся на месте,с блокированной возможностью ходить,так сказать.