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

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

Ответ
 
DeT

offline
Опыт: 5,715
Активность:
[Наработка] - Система Плав.Тексттагов + полезность
Код:
Глобалки:
DS_Trigger - Триггер(массив)
DS_Count - Целочисленная
DS_Time - Целочисленная(Массив)




Код:
function DS_UAttacked takes nothing returns nothing
    local texttag tt
    local integer d = R2I(GetEventDamage())
    set tt = CreateTextTag()
    call SetTextTagTextBJ(tt,I2S(d),9.0)
    call SetTextTagPosUnit(tt,GetTriggerUnit(),0)
    call SetTextTagColor(tt,255,10,10,30)
    call SetTextTagAge(tt,1)
    call SetTextTagFadepoint(tt,1.0)
    call SetTextTagLifespan(tt,2.0)
    call SetTextTagVelocity(tt,0.0,0.03)
    call SetTextTagPermanent(tt,false)
    //call SetTextTagVisibility(tt,true)
    set tt = null
endfunction

function DS_AddUnit takes nothing returns nothing
    set udg_DS_Trigger[udg_DS_Count] = CreateTrigger()
    call TriggerRegisterUnitEvent(udg_DS_Trigger[udg_DS_Count],GetTriggerUnit(),EVENT_UNIT_DAMAGED)
    call TriggerAddAction(udg_DS_Trigger[udg_DS_Count],function DS_UAttacked)
    set udg_DS_Time[udg_DS_Count] = 2
    set udg_DS_Count = udg_DS_Count + 1
endfunction

function DS_TL takes nothing returns nothing
    local integer i = 0
    loop
    exitwhen i > udg_DS_Count - 1
        set udg_DS_Time[i] = udg_DS_Time[i] - 1
        if udg_DS_Time[i]<=0 then
            call DestroyTrigger(udg_DS_Trigger[i])
            set udg_DS_Trigger[i] = udg_DS_Trigger[udg_DS_Count - 1]
            set udg_DS_Trigger[udg_DS_Count - 1] = null
            set udg_DS_Time[i] = udg_DS_Time[udg_DS_Count - 1]
            set udg_DS_Time[udg_DS_Count - 1] = 0
            set udg_DS_Count =  udg_DS_Count - 1
        else
        endif
    set i = i + 1
    endloop
endfunction


Создаем триггер "TimeLEsser" с событием Времы - Periodic Event - 1sec.
пихаем туда ф-ию
Код:
function DS_TL takes nothing returns nothing

Вызваем(в экшнах): call DS_TL()

Создаем триггер с событием "Юнит атакован" и пихаем туда остальной код

вызываем(в экшнах): call DS_AddUnit()


Собсно вместо создания тексттага мона обрабатывать свои командыи ф-июю вставлять!

так например в заказах на спеллы лежит подобное нечто!!
Прикрепленные файлы
Тип файла: w3x Sys.w3x (9.2 Кбайт, 270 просмотров )

Отредактировано DeT, 18.04.2007 в 23:09.
Старый 18.04.2007, 17:18
DioD

offline
Опыт: 45,134
Активность:
http://xgm.guru/forum/showthread.php?t=10887

вот в карте структура Process Damage работает на пять не вызывает утечек да и текст легче настроить.

а тут на каждую атаку функция получения урона, ХЗ зачем это надо, ничего кроме масс вычислений это не даёт.

Отредактировано Кет, 12.05.2007 в 19:40.
Старый 18.04.2007, 18:34
DeT

offline
Опыт: 5,715
Активность:
DioD дубыдубадубыды

фишка в том, что тута мона реализовать например систему прокачки как в ТЕС. + делать то что нужно..в общем кому нада -берите...у мну есть карта примересил хоть ктониьт скажет что нужно-выложу(ну карта в виде компании)

DeT добавил:
Добавил аттач..простейший пример..сложнее -могу выложить
Старый 18.04.2007, 23:09
Кет

offline
Опыт: 111,109
Активность:
DeT, написанное в первом посте есть в комментариях к карте?
Старый 21.04.2007, 20:51
DeT

offline
Опыт: 5,715
Активность:
нет, нету

DeT добавил:
в карте все уже сделано что в коммментах
Старый 22.04.2007, 10:27
DeT

offline
Опыт: 5,715
Активность:
Кед, заливаете или нед?
Старый 22.04.2007, 17:11
Кет

offline
Опыт: 111,109
Активность:
я имею в виду комменты. САМИ комменты, понимаешь?
чтобы человек мог разобраться в структуре наработки и настроить её под себя, иначе она ничем не отличается от двух уже залитых в базу аттак-логов.
Старый 22.04.2007, 20:14
DeT

offline
Опыт: 5,715
Активность:
именю-напишу
и ето не просто аттак лог =\
Старый 22.04.2007, 21:05
DeT

offline
Опыт: 5,715
Активность:
2pizza у тя ящик сообщений полный

выложу сюда
Код:
function DS_UAttacked takes nothing returns nothing
    local unit a = GetEventDamageSource()
    call SetUnitState(a,UNIT_STATE_MANA,GetUnitState(a,UNIT_STATE_MANA)-1)
    if GetUnitState(a,UNIT_STATE_MANA) == 0 then
        //Тут способ отбирания атаки или чего тебе там нужно
    else
    endif
endfunction
Старый 03.05.2007, 13:27
2pizza

offline
Опыт: 1,478
Активность:
DeT, пасиба!
Старый 04.05.2007, 13:18
Кет

offline
Опыт: 111,109
Активность:
---
залито.
опыт: 245
Старый 12.05.2007, 20:23
Ответ

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

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

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

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



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