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

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

Закрытая тема
 
PiCkUpEr_AsT

offline
Опыт: 1,060
Активность:
ошибка, не могу разобраться
Код:
function Enemy_Cond_Attacking_Sys takes nothing returns boolean
    local timer t=GetExpiredTimer()
    local unit u=LoadUnitHandle(udg_h,GetHandleId(t),1)
    local unit tar=LoadUnitHandle(udg_h,GetHandleId(t),2)
    set t=null
    if IsUnitEnemy(u,GetOwningPlayer(tar))==true and GetUnitState(tar,UNIT_STATE_LIFE)>.405 then
        return true
    endif
    set u=null
    set tar=null
    return false
endfunction

function Trig_Ranged_Actions_Dmg takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit u=LoadUnitHandle(udg_h,GetHandleId(t),1)
    local unit tar=LoadUnitHandle(udg_h,GetHandleId(t),2)
    if Enemy_Cond_Attacking_Sys then
        call UnitDT(u,tar,4,25.)
    endif
    call FlushChildHashtable(udg_h,GetHandleId(t))
    call DestroyTimer(t)
    set t=null
endfunction

function Trig_Ranged_Actions takes nothing returns nothing
    local timer t=CreateTimer()
    local unit u=GetAttacker()
    local unit tar=GetTriggerUnit()
    local real dx = GetUnitX(tar) - GetUnitX(u)
    local real dy = GetUnitY(tar) - GetUnitY(u)
    local real dur=SquareRoot(dx * dx + dy * dy)
    local real duration=dur+.5/750.
    call SaveUnitHandle(udg_h,GetHandleId(t),1,u)
    call SaveUnitHandle(udg_h,GetHandleId(t),2,tar)
    if Enemy_Cond_Attacking_Sys then
        call TimerStart(t,duration,false,function Trig_Ranged_Actions_Dmg)
    endif
    set t=null
    set u=null
    set tar=null
endfunction


при сохранении Джасс выдаёт следующую ошибку:
Старый 04.07.2011, 13:28
DKbru

offline
Опыт: 1,407
Активность:
if Enemy_Cond_Attacking_Sys()==true (false) then
Старый 04.07.2011, 13:34
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
DemoN2099, бред не пиши, на скрине тот же код, что выложил автор. JassHelper, думая что Enemy_Cond_Attacking_Sys - переменная, заменил её на 1.
Вне зависимости от того, есть ли у функции аргументы или нет, необходимо указывать скобки при вызове:
    if Enemy_Cond_Attacking_Sys() then
        call UnitDT(u,tar,4,25.)
    endif
...
    if Enemy_Cond_Attacking_Sys() then
        call TimerStart(t,duration,false,function Trig_Ranged_Actions_Dmg)
    endif
Это раз. Во-вторых, можно обойтись без этой функции:
// вместо:
if Enemy_Cond_Attacking_Sys() then

// поставить:
if IsUnitEnemy(u,GetOwningPlayer(tar)) and GetWidgetLife(tar)>.405 then
Старый 04.07.2011, 13:38
PiCkUpEr_AsT

offline
Опыт: 1,060
Активность:
всё, понял, биг спс
Старый 04.07.2011, 13:39
Закрытая тема

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

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

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

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



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