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

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

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

offline
Опыт: 1,162
Активность:
Не отслеживается получение урона
Кастер кастует спел в цель и стартует таймер(см ниже). Как поставить условие при котором бы отслеживалось получила цель урон или нет?
function qwerty_Main takes nothing returns nothing
local timer Timer=GetExpiredTimer()
local unit Target = LoadUnitHandle(udg_h,GetHandleId(Timer),2)
local unit Caster = LoadUnitHandle(udg_h,GetHandleId(Timer),1)
local real lim = LoadReal(udg_h,GetHandleId(Timer),3)
local integer n = LoadInteger(udg_h,GetHandleId(Timer),4)
set n = n+1
if n == 150 or lim==0 then
    call DestroyTimer(Timer)
    else
        if (GetTriggerEventId()== EVENT_PLAYER_UNIT_ATTACKED and GetAttacker() == Target) then
        call DisplayTextToForce( GetPlayersAll(), "DMG1" )
        else
        call DisplayTextToForce( GetPlayersAll(), "DMG2" )
        endif
    call SaveInteger(udg_h,GetHandleId(Timer),3,n)
endif

endfunction
Старый 30.03.2011, 02:01
Diaboliko
Silenced by Diaboliko
offline
Опыт: 16,108
Активность:
set T=CreateTrigger()
call TriggerRegisterUnitEvent(T,Атакованый юнит,EVENT_UNIT_DAMAGED)
call TriggerAddAction(T,function Функция)
Т- переменная типа trigger, глобальная, желательно....
Старый 30.03.2011, 06:08
Dartesk

offline
Опыт: 1,162
Активность:
вроде сделал как написано, и если боевая единица получает крон, то вылетаю с фаталом в винду
function HolyShild_Main takes nothing returns nothing
local timer Timer=GetExpiredTimer()
local unit Target = LoadUnitHandle(udg_h,GetHandleId(Timer),2)
local unit Caster = LoadUnitHandle(udg_h,GetHandleId(Timer),1)
local real Dmglim = LoadReal(udg_h,GetHandleId(Timer),3)
local integer n = LoadInteger(udg_h,GetHandleId(Timer),4)
local trigger trig=GetTriggeringTrigger()
call DisplayTextToForce( GetPlayersAll(), "go" )
set n = n+1
if n == 150 then
    call DestroyTimer(Timer)
    call DestroyTrigger(trig)
    else
        if GetTriggerEventId()== EVENT_UNIT_DAMAGED then
        call DisplayTextToForce( GetPlayersAll(), "DMG1" )
        else
        call DisplayTextToForce( GetPlayersAll(), "DMG2" )
        endif
    call SaveInteger(udg_h,GetHandleId(Timer),3,n)
endif

endfunction


function HolyShild_Actions takes nothing returns nothing
local timer Timer=CreateTimer()
local unit Caster = GetSpellAbilityUnit()
local unit Target = GetSpellTargetUnit()
local real Dmglim = 0
local integer Level = GetUnitAbilityLevel(Caster,'A010')
local trigger trig=CreateTrigger()
set Dmglim = 120
call SaveUnitHandle(udg_h,GetHandleId(Timer),1,Caster)
call SaveUnitHandle(udg_h,GetHandleId(Timer),2,Target)
call SaveReal(udg_h,GetHandleId(Timer),3,Dmglim)
call DisplayTextToForce( GetPlayersAll(), "start" )
call TriggerRegisterTimerEvent(trig,.2,true)
call TriggerRegisterUnitEvent(trig,Target,EVENT_UNIT_DAMAGED)
call TriggerAddAction(trig,function HolyShild_Main)
endfunction
Старый 30.03.2011, 09:38
JimALIEN
вдупляет sc2 editor
offline
Опыт: 7,176
Активность:
Тут вроде не нужен периодический таймер, таймер одноразовый на время действия спела, по истечении удаляет тригер созданый под юнита и чистит хеш-таблицу. А все что будет происходить с юнитом при получении урона вписывай в динамический тригер, там же проверяй лимит поглощения щита и если он исчерпан, то стопай таймер и также чисти таблицу и удаляй тригер.
Зы: надеюсь на словах понятно, с мобилы код писать проблемно)
Старый 30.03.2011, 11:12
Dartesk

offline
Опыт: 1,162
Активность:
JimALIEN:
Тут вроде не нужен периодический таймер, таймер одноразовый на время действия спела, по истечении удаляет тригер созданый под юнита и чистит хеш-таблицу. А все что будет происходить с юнитом при получении урона вписывай в динамический тригер, там же проверяй лимит поглощения щита и если он исчерпан, то стопай таймер и также чисти таблицу и удаляй тригер.
Зы: надеюсь на словах понятно, с мобилы код писать проблемно)
Все спасибо я правда сделал с периодическим таймером(ибо тут не весь спел был) а остальное так же))))
Старый 30.03.2011, 14:27
Закрытая тема

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

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

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

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



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