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

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

Ответ
 
Castiel

offline
Опыт: 2,093
Активность:
Помогите с триггером
Почему мне пишет "Undeclared variable u" в функции GD и GE. Я понял, что там нельзя ставить локальные переменные, а вот воспользоваься глобальными пока нехочу, через GetTriggerUnit() тоже не пашет. Вот собстно код. Помогите ):

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

function GE takes nothing returns boolean
    return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(u)) == true )
endfunction

function GD takes nothing returns nothing
    call UnitDamageTarget( u, GetEnumUnit(), 30 * GetUnitAbilityLevel(u, 'Awar'), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_POISON, null )
endfunction

function Trig_Fire_Nova_Actions takes nothing returns nothing
    local unit u = GetSpellAbilityUnit()
    local unit u2 = GetSpellTargetUnit()
    local group g
    local location l
    call TriggerSleepAction( I2R(( 13 - GetUnitAbilityLevel (u, 'A01Z') )) )
    if ( IsUnitAliveBJ(u2) == true ) then
        set bj_forLoopAIndex = 1
        set bj_forLoopAIndexEnd = 36
        loop
            exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
            set l = GetUnitLoc(u2)
            call CreateNUnitsAtLoc( 1, 'h009', GetOwningPlayer(u), PolarProjectionBJ(l, 20.00, ( 10.00 * I2R(GetForLoopIndexA()) )), ( 10.00 * I2R(GetForLoopIndexA()) ) )
            call UnitApplyTimedLife( GetLastCreatedUnit(), 'BTLF', 2.00)
            call IssuePointOrderLoc( GetLastCreatedUnit(), "carrionswarm", PolarProjectionBJ(l, 250.00, ( 10.00 * I2R(GetForLoopIndexA()) )) )
            call RemoveLocation (l)
            set bj_forLoopAIndex = bj_forLoopAIndex + 1
        endloop
        set g = GetUnitsInRangeOfLocMatching(250.00, GetUnitLoc(u), Condition (function GE ))
        call ForGroup( g, function GD )
        call DestroyGroup (g) 
    else
    endif
    set u = null
    set u2 = null
endfunction
Старый 15.03.2009, 16:51
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
только через глобалки
Старый 15.03.2009, 17:14
Integro
старожило
offline
Опыт: 630
Активность:
Цитата:
Сообщение от Castiel
//...
function GE takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(u))
endfunction
//...
function GD takes nothing returns nothing
call UnitDamageTarget( u, GetEnumUnit(), 30 * GetUnitAbilityLevel(u, 'Awar'), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_POISON, null )
endfunction
//...

Выделенные фрагменты делаются через глобальные переменные или кэш или GetSpellAbilityUnit()
Старый 15.03.2009, 20:43
Igores
НИИ 4А-Во! Кафедра Джасс.
offline
Опыт: 5,325
Активность:
В функции гд пиши getenumunit, вместо u.
Старый 16.03.2009, 12:36
JET_LI

offline
Опыт: 1,724
Активность:
Igores! Я понимаю торопишься, ну будь добр напиши красиво!!))
вот так красивее!)
GetEnumUnit()
Castiel!
GetEnumUnit() это тоже самое, как в редакторе, где ты просто выбираешь действия и он те сам прописывает скрипт, вот скрипт выглядит так: GetEnumUnit(), а в выборе действий: PickedUnit.

JET_LI добавил:
Всё просто!)
Старый 16.03.2009, 13:20
Ответ

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

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

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

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



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