XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DeaDoK

offline
Опыт: 5,783
Активность:
Проблема с тригерной аурой
Спелл содаёт ауру в точке которая кастует bloodlust на всех кто в радиусе каждые 0.1
Почему-то кастует тока на героя несмотря на чеки.

Код:
function BattleTime_Spell takes nothing returns boolean
return GetSpellAbilityId()=='A0K0'
endfunction

function BattleTime_Check takes nothing returns boolean
return GetOwningPlayer(GetFilterUnit())==GetOwningPlayer(udg_U_temp)and(GetUnitAbilityL  evel(GetFilterUnit(),'A04Y')==0) or IsUnitAlly(GetFilterUnit(),GetOwningPlayer(udg_U_temp))==true
endfunction

function BattleTime_Main takes nothing returns nothing
local timer t=GetExpiredTimer()
local string s=H2Tx(t)
local unit A=GetUnit(s,"Caster")
local unit U=GetUnit(s,"Hero")
local integer lvl=GetUnitAbilityLevel(U,'A0K0')
local integer a=GetInteger(s,"Counter")
local real v=GetUnitX(A)
local real V=GetUnitY(A)
local boolexpr W=Condition(function BattleTime_Check)
local group g=CreateGroup()
        local unit d=GetUnit(s,"Caster2")
        local unit f
set udg_U_temp=U
call GroupEnumUnitsInRange(g,v,V,435,W)
loop
          set f=FirstOfGroup(g)
          exitwhen f==null
          if IsUnitAlly(f,GetOwningPlayer(d))==true then
             call IssueTargetOrder(d,"bloodlust",f)
             call GroupRemoveUnit(g,f)
          else
             call UnitDamageTarget(d,f,GetUnitMoveSpeed(f)*0.25,true,false,ATTACK_TYPE_HERO,DAMAGE  _TYPE_NORMAL,null)
             call GroupRemoveUnit(g,f)
          endif
        endloop
        call GroupClear(g)
call DestroyGroup(g)
call DestroyBoolExpr(W)
set a=a+1
call SetInteger(s,"Counter",a)
if a>30+lvl*30 then
call RemoveUnit(A)
                call RemoveUnit(d)
call PauseTimer(t)
call FastFlush(s)
call DestroyTimer(t)
endif
        set A=null
        set U=null
        set lvl=0
        set a=0
        set v=0
        set V=0
        set W=null
        set g=null
        set d=null
        set f=null
endfunction

function BattleTime_Setting takes nothing returns nothing
local unit U=GetTriggerUnit()
local integer lvl=GetUnitAbilityLevel(U,'A0K0')
local location B=GetSpellTargetLoc()
local real v=GetLocationX(B)
local real V=GetLocationY(B)
local unit A=CreateUnit(GetOwningPlayer(U),'e00Y',v,V,0)
        local unit d=CreateUnit(GetOwningPlayer(U),'e000',v,V,0)
        local timer t
        local string s
        call UnitAddAbility(d,'A0JZ')
        call SetUnitAbilityLevel(d,'A0JZ',lvl)
set t=CreateTimer()
set s=H2Tx(t)
call SetHandle(s,"Caster",A)
        call SetHandle(s,"Caster2",d)
call SetHandle(s,"Hero",U)
call SetInteger(s,"Counter",0)
call TimerStart(t,.1,true,function BattleTime_Main)
call RemoveLocation(B)
endfunction

function InitTrig_Battle_Time takes nothing returns nothing
        set gg_trg_Battle_Time = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_Battle_Time,EVENT_PLAYER_UNIT_SPELL_EFFECT)  
call TriggerAddCondition(gg_trg_Battle_Time,Condition(function BattleTime_Spell))
call TriggerAddAction(gg_trg_Battle_Time,function BattleTime_Setting)
endfunction
Старый 24.03.2008, 21:43
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
Застрелится можно! %)
Старый 24.03.2008, 21:47
DeaDoK

offline
Опыт: 5,783
Активность:
Flaeron, стенку кровью не заляпай, а то люди надпись не разгледят...
Старый 24.03.2008, 22:05
ZLOBICH
Kicked by XimikS
offline
Опыт: 4,727
Активность:
ниасили код -_- мб в разрешённых целях только герои..
Старый 24.03.2008, 22:22
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
Ппц, не Flaeron, a Flareon!
Насчет стенки - не волнуйся)
Старый 24.03.2008, 22:40
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Я не смотрел код толком, но заметил строку AddUnitAbility - в ВЕ вроде бы есть деление спелов на геройские и не геройские, т.е. если юнит не герой, а просто юнит - то он не может использовать способность героя
Может проблема в том, что абила, которую ты даёш является недопустимой для простых юнитов...
Старый 04.04.2008, 04:31
Uk_gruby

offline
Опыт: 6,948
Активность:
DeaDoK+1to happy
+еще может стоит манакост у спела а у думи юнита нет маны
Старый 04.04.2008, 06:12
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
DeaDoK, кроме вышеперечисленного могу посоветовать:
1. Проверить работу кода без фильтр-функции.
2. Проверить кулдаун дамми-спелла.
3. Проверить возможные цели дамми-спелла.

В следующий раз постарайся нормально оформлять код, чтобы другие его могли осилить.

Кстати... Ты же не собираешься втыкать этот код в реальную карту? Это крайне неэффективный код >_<
call AddSpecialEffectTarget("rectifier.mdx", GetCodingUnit(), "hands")
Старый 04.04.2008, 11:10
S

offline
Опыт: 43,833
Активность:
Функцию SetHandle фстудию...
Также, автор - что за юнит (или что у тебя там) - 'A04Y'?
Также - проверь разрешенные цели для блудласта...
Старый 04.04.2008, 11:24
DeaDoK

offline
Опыт: 5,783
Активность:
Всё. Всё сДеЛОЛ. ДАММИ АРЕ САККЕРС!!!!

DeaDoK добавил:
Всем СПС.

DeaDoK добавил:
А 'A04Y' - это не юнит а спелл который есть у каждого дамми в игре и который проверяецца в каждом спелле.(Дабы не замучать досмерти бедных дамми xD)
Старый 07.04.2008, 12:50
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:25.