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

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

Ответ
 
Anufis

offline
Опыт: 6,290
Активность:
Помогите со спеллом
Код:
function Trig_Razmasistiy_Udar_Conditions takes nothing returns boolean
    if (GetSpellAbilityId() == 'A000') then
        return true
    endif
    return false
endfunction

function Trig_Razmasistiy_Udar_Func003002002 takes nothing returns boolean
    return GetBooleanAnd( IsUnitAliveBJ(GetFilterUnit()) == true,IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(GetTriggerUnit())) == true )
endfunction

function Damage takes real b returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), b, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
endfunction

function Trig_Razmasistiy_Udar_Actions takes nothing returns nothing
    local rect a
    local real b
    local group c
    set a = RectFromCenterSizeBJ(GetUnitLoc(GetTriggerUnit()), 150.00, 150.00)
    set b =20.00 +(I2R(GetUnitAbilityLevelSwapped('A000', GetTriggerUnit())) * 10.00 )
    set c = GetUnitsInRectMatching(a, Condition(function Trig_Razmasistiy_Udar_Func003002002))

    // Как это сделать так, чтобы работало?
    call ForGroup(c, function damage(b) )
endfunction

//===========================================================================
function InitTrig_Razmasistiy_Udar takes nothing returns nothing
    set gg_trg_Razmasistiy_Udar = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Razmasistiy_Udar, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Razmasistiy_Udar, Condition( function Trig_Razmasistiy_Udar_Conditions ) )
    call TriggerAddAction( gg_trg_Razmasistiy_Udar, function Trig_Razmasistiy_Udar_Actions )
endfunction


// учимся использовать тег [code]. © swdn

Отредактировано ShadoW DaemoN, 05.04.2009 в 19:39.
Старый 05.04.2009, 19:24
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
callback функции не могут ничего принимать или отдавать. щас кину исправленный вариант

Артте добавил:
Код:
function Trig_Razmasistiy_Udar_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_Razmasistiy_Udar_Func takes nothing returns boolean
    return GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) > 0 and IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(GetTriggerUnit()))
endfunction

function Damage takes nothing returns nothing
call UnitDamageTarget( GetTriggerUnit(), GetEnumUnit(), 20.00 +(I2R(GetUnitAbilityLevel(GetTriggerUnit(),'A000')) * 10.00 ),true,false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
endfunction

function Trig_Razmasistiy_Udar_Actions takes nothing returns nothing
local group c=CreateGroup()
call GroupEnumUnitsInRange(c, GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()), 75, Condition(function Trig_Razmasistiy_Udar_Func))
call ForGroup(c, function Damage)
call DestroyGroup(c)
set c=null
endfunction

//===========================================================================
function InitTrig_Razmasistiy_Udar takes nothing returns nothing
set gg_trg_Razmasistiy_Udar = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Razmasistiy_Udar, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Razmasistiy_Udar, Condition( function Trig_Razmasistiy_Udar_Conditions ) )
call TriggerAddAction( gg_trg_Razmasistiy_Udar, function Trig_Razmasistiy_Udar_Actions )
endfunction
Старый 05.04.2009, 19:37
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Как вариант
Код:
globals
    group g=CreateGroup()
    boolexpr b=null
endglobals

function Trig_Razmasistiy_Udar_Func takes nothing returns boolean
    return GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) > 0 and IsPlayerEnemy(GetOwningPlayer(GetFilterUnit()), GetOwningPlayer(GetTriggerUnit()))
endfunction

function Damage takes nothing returns nothing
    local unit f=GetFilterUnit()
    local unit u=GetTriggerUnit()
    if GetUnitState(f,UNIT_STATE_LIFE)>0 and IsPlayerEnemy(GetOwningPlayer(f),GetOwningPlayer(u)) then
        call UnitDamageTarget(u,f,20.00+GetUnitAbilityLevel(u,'A000')*10.00,true,false, ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    endif
    set f=null
    set u=null
    return false
endfunction

function Trig_Razmasistiy_Udar_Actions takes nothing returns nothing
    if GetSpellAbilityId()=='A000' then
        call GroupEnumUnitsInRange(g,GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()),75  ,b)
        call GroupClear(g)//Или ClearGroup(g) к сожалению точно не помню...
    endif
endfunction

//===========================================================================
function InitTrig_Razmasistiy_Udar takes nothing returns nothing
    set gg_trg_Razmasistiy_Udar = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Razmasistiy_Udar, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction( gg_trg_Razmasistiy_Udar, function Trig_Razmasistiy_Udar_Actions )
endfunction
Старый 06.04.2009, 16:58
Ответ

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

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

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

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



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