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

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

Закрытая тема
 
Критик
Нету времени(
offline
Опыт: 3,375
Активность:
Использование локальных переменных в условии
В моем триггере я использую локальные переменные. Они используются в действии и в условии. При проверке пишет ошибку.
Старый 18.10.2009, 20:58
ZregerZ
Мы - лёд!
offline
Опыт: 7,029
Активность:
мб покажешь код?
Старый 18.10.2009, 20:59
Критик
Нету времени(
offline
Опыт: 3,375
Активность:
А и сам вопрос. Можно использовать локальные переменные в условии или нет?
Старый 18.10.2009, 21:00
agentex

offline
Опыт: 34,534
Активность:
Можно использовать локальные переменные в условии или нет?
локальные переменные можно использовать в любой функции
Старый 18.10.2009, 21:02
Критик
Нету времени(
offline
Опыт: 3,375
Активность:
Код:
function Trig_M1_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

function Trig_M1_Func004C takes nothing returns boolean
    if ( not ( GetOwningPlayer(GetSpellTargetUnit()) != GetOwningPlayer(GetSpellAbilityUnit()) ) ) then
        return false
    endif
    return true
endfunction

function Trig_M1_Actions takes nothing returns nothing
    local location t
    set t = GetUnitLoc(GetSpellTargetUnit())
    call TriggerSleepAction( 0.20 )
    call SetUnitPositionLoc( GetSpellTargetUnit(), GetUnitLoc(GetSpellAbilityUnit()) )
    call SetUnitPositionLoc( GetSpellAbilityUnit(), t )
    if ( Trig_m2_Func001C() ) then
        call UnitDamageTargetBJ( GetSpellAbilityUnit(), GetSpellTargetUnit(), ( I2R(GetUnitAbilityLevelSwapped('A000', GetSpellAbilityUnit())) * 100.00 ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
    else
    endif
endfunction

//===========================================================================
function InitTrig_M1 takes nothing returns nothing
    set gg_trg_M1 = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_M1, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_M1, Condition( function Trig_M1_Conditions ) )
    call TriggerAddAction( gg_trg_M1, function Trig_M1_Actions )
endfunction
Старый 18.10.2009, 21:04
Артте
Open up your eyes
offline
Опыт: 24,373
Активность:
Критик:
if ( Trig_m2_Func001C() ) then
где?
Артте добавил:
вообще код достоин фильма ужасов
Старый 18.10.2009, 21:10
Критик
Нету времени(
offline
Опыт: 3,375
Активность:
Поменял:
Код:
if ( Trig_m2_Func001C() ) then

на
Код:
if ( Trig_M1_Func001C() ) then

Непомогло! Я джасс знаю на 1 из 100. Что поделать.
Старый 18.10.2009, 21:14
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Критик, хм....а нельзя ли так?(с самим условием вроде не напутал ^_^)
if ( ( GetOwningPlayer(GetSpellTargetUnit()) != GetOwningPlayer(GetSpellAbilityUnit()) )) then
Старый 18.10.2009, 21:18
agentex

offline
Опыт: 34,534
Активность:
а нельзя ли так?
return GetOwningPlayer(GetSpellTargetUnit())!=GetOwningPlayer(GetSpellAbilityUnit())
Старый 18.10.2009, 21:22
Критик
Нету времени(
offline
Опыт: 3,375
Активность:
Сделал задачу по другому и решил не парить себе мозг. Спасибо за помощь, но ответа я не понял)) Так что тему можно закрывать. Извиняюсь за забирание времени.
Старый 18.10.2009, 21:26
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Или так...
Код:
function Trig_M1_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_M1_Func004C takes nothing returns boolean
    local unit u = GetSpellTargetUnit  ()
    local unit v = GetSpellAbilityUnit ()
    local player pu = GetOwningPlayer (u)
    local player pv = GetOwningPlayer (v)
    local boolean b = pu == pv
    set u  = null
    set v  = null
    set pv = null 
    set pv = null
    if b then
        return false
    endif
    return true
endfunction

function Trig_M1_Actions takes nothing returns nothing
    local unit u = GetSpellTargetUnit  ()
    local unit v = GetSpellAbilityUnit ()
    call TriggerSleepAction (0.20)
    call SetUnitPosition (u, GetUnitX (v), GetUnitY (v))
    call SetUnitPosition (v, GetUnitX (u), GetUnitY (u))
    if Trig_m2_Func001C () then
        call UnitDamageTarget (v, u, GetUnitAbilityLevel (v, 'A000') * 100.00, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
    endif
    set u = null
    set v = null
endfunction

function InitTrig_M1 takes nothing returns nothing
    local integer i = 0
    local player p
    set gg_trg_M1 = CreateTrigger ()
    loop
        set p = Player (i)
        call TriggerRegisterPlayerUnitEvent (gg_trg_M1, p, EVENT_PLAYER_UNIT_SPELL_CAST, null)
        set i = i + 1
    exitwhen i == bj_MAX_PLAYER_SLOTS
    endloop
    call TriggerAddCondition (gg_trg_M1, Condition (function Trig_M1_Conditions))
    call TriggerAddAction (gg_trg_M1, function Trig_M1_Actions)
    set p = null
endfunction
Старый 18.10.2009, 21:26
agentex

offline
Опыт: 34,534
Активность:
function Trig_M1_Func004C takes nothing returns boolean
    local unit u = GetSpellTargetUnit  ()
    local unit v = GetSpellAbilityUnit ()
    local player pu = GetOwningPlayer (u)
    local player pv = GetOwningPlayer (v)
    local boolean b = pu == pv
    set u  = null
    set v  = null
    set pv = null 
    set pv = null
    if pu == pv then
        return true
    endif
    return false
endfunction
типо лол?
Старый 18.10.2009, 21:29
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Цитата:
Сообщение от agentex
типо лол?

тсс. никто ничего не видел, ага.
Старый 18.10.2009, 21:30
Артте
Open up your eyes
offline
Опыт: 24,373
Активность:
Sunn:
set pv = null
set pv = null
типо лол?
Старый 18.10.2009, 21:41
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Цитата:
Сообщение от Артте
~Sunn:
> set pv = null
> set pv = null
типо лол?

Что-то не так?)
Старый 18.10.2009, 21:43
Артте
Open up your eyes
offline
Опыт: 24,373
Активность:
...
function Trig_M1_Func004C takes nothing returns boolean
    local unit u = GetSpellTargetUnit  ()
    local unit v = GetSpellAbilityUnit ()
    local player pu = GetOwningPlayer (u)
    local player pv = GetOwningPlayer (v)
    set u  = null
    set v  = null
    set pv = null 
    set pu = null
    return (pu == pv )
endfunction

call SetUnitPosition (u, GetUnitX (v), GetUnitY (v))
call SetUnitPosition (v, GetUnitX (u), GetUnitY (u))
вот это вообще эпик фейл
Старый 18.10.2009, 21:47
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
И что ты в итоге получишь? Вечный true? agentex показал мне ошибку, которую я исправил. В моем первом посте этой очепятки больше нет. А ты, судя по всему, смотришь на его пост...
Старый 18.10.2009, 21:49
Артте
Open up your eyes
offline
Опыт: 24,373
Активность:

Sunn:
Trig_m2_Func001C ()
покажи мне эту функцию, ага
Старый 18.10.2009, 21:49
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Цитата:
Сообщение от Sunn
call SetUnitPosition (u, GetUnitX (v), GetUnitY (v))
call SetUnitPosition (v, GetUnitX (u), GetUnitY (u))
вот это вообще эпик фейл

почему же?
Старый 18.10.2009, 21:49
agentex

offline
Опыт: 34,534
Активность:
я ничего не показывал, я прокомментил код соответствующе его содержанию
Старый 18.10.2009, 21:50
Закрытая тема

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

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

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

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



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