Как сделать отображение полученного урона над юнитом? Сделал такой триггер: Создать плавающий текст гласящий (строка(целое число(полученные повреждения))) над (атакованный юнит) с Z смещением 0% и т д (там цвет, размер шрифта)
вообще хотелось бы на гуи, ктонибуть сможет сделать или дать готовую наработку? а то чтото в том что кинул DeadJass, я почти ничего не понял джас не понимаю
//======================================== //----------цветовые переменные----------- //======================================== function SDMSTextVars takes integer PlayerNumber returns string local string array Color set Color[0] = "|c00FF0303"//Игрок 1(красный) set Color[1] = "|c000042FF"//и по порядку... set Color[2] = "|c001CE6B9" set Color[3] = "|c00540079" set Color[4] = "|c00FFFC01" set Color[5] = "|c00FE8A0E" set Color[6] = "|c00FE8A0E" set Color[7] = "|c00E55BB0" set Color[8] = "|c00959697" set Color[9] = "|c007EBFF1" set Color[10] = "|c00106246" set Color[11] = "|c004E2A04" set Color[12] = "|c00282828"// \ set Color[13] = "|c00282828"// >>Три нейтральных игрока set Color[14] = "|c00282828"// / return Color[PlayerNumber] endfunction //======================================== //---------Возвращаемые значения---------- //======================================== function SDMSFontSize takes nothing returns real return 10.0//Размер шрифта, которым будут писаться плавающие строки. Не ставить слишком маленький, т.к. не будет видно. Рекомендую 10-15 пунктов. endfunction function SDMStheTrigger takes nothing returns trigger return udg_SDMStrigger endfunction function SDMSLifeTime takes nothing returns real return 1.5//Время продолжительности строки. Большой не ставить, т. к. будет лагать. Рекомендую 1-2 секунды. endfunction function SDMSLifeTimeSecondary takes nothing returns real return 2.0//Дополнительное время продолжительности жизни строки. Не ставить меньше, чем основное, но чем меньше это значение, тем меньше утечка памяти. Рекомендую 120-200% от основного времени. endfunction function SDMSMinus takes nothing returns string return "-"//Возвращает то, что стоит перед числом нанесённого урона. Примеры: //"Нанесено " например: Нанесено 15 //"Получено " например: Получено 21 //"" например: 16 //Рекомендую использовать "-" из-за большей производительности endfunction function SDMSPlus takes nothing returns string return ""//Возвращает то, что стоит перед числом нанесённого урона. Примеры: //" ед. урона" например: 15 ед. урона //" очков повреждения" например: 21 очков повреждения //Рекомендую использовать "" из-за большей производительности. Комбинируя функции Minus и Plus, можно добиваться отличных результатов. Например: Нанесено 17 ед. урона. endfunction //======================================== //----Постоянные функции - не изменять!--- //======================================== function SDMSCreateTextTag takes nothing returns nothing local unit u=GetAttackedUnitBJ() local player pl=GetOwningPlayer(u) local integer i=GetConvertedPlayerId(pl) local texttag tt=null local real fontSize=SDMSFontSize() local real lifeTime=SDMSLifeTime() local real lifeTime2=SDMSLifeTimeSecondary() local string minus=SDMSMinus() local string plus=SDMSPlus() local string textColor=SDMSTextVars(i-1)
set u=null set pl=null set i=0 set fontSize=0 set lifeTime=0 set lifeTime2=0 set minus="" set plus="" set textColor="" call DestroyTextTagBJ(tt) endfunction function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing call TriggerRegisterUnitEvent(SDMStheTrigger(),GetEnteringUnit(),EVENT_UNIT_DAMAGED) endfunction function SDMSGroupFunction takes nothing returns nothing local unit u=GetEnumUnit()
set u=null endfunction function theSDMSTriggerActions takes nothing returns nothing local trigger UnitEnter=CreateTrigger() local trigger TextTagCreate=SDMStheTrigger()
set UnitEnter=null set TextTagCreate=null endfunction //======================================== //---------------Не трогать!-------------- //======================================== function InitTrig_Damage_show takes nothing returns nothing local trigger tr=CreateTrigger()
set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер. call TriggerAddAction(SDMStheTrigger(),function SDMSCreateTextTag) call TriggerRegisterTimerEventSingle(tr,0.0) call TriggerAddAction(tr,function theSDMSTriggerActions)
set tr=null endfunction
Правишь триггер в jass стираешь там всё и ставишь это ^ , создаёшь переменную SDMStrigger типа триггер и юзаешьь на здоровье. Наработка не моя.
Kakolookia, Есть такой вариант, не знаю как в работоспособности: Нужно 1 переменная групы "group" Событие юнит атакован Условие Юнит не в групе group Действие - Тригер - Добавить событие(2 триг) - Атакован получает урон Добавить атакованого в групу group
2 триг Действие Текст(Damage Taken) над Trigger unit
Сообщение отредактировал Mep3aB4uK - Воскресенье, 12 Июня 2011, 19:47:18
да мне как бы понять охото как это делается, чтобы в следующий раз если делать, а то ты сделашь я ниче не пойму, и смысл?
Как-то прохладно, значит надо научиться разбираться в коде (не обязательно во всём джассе, а в том, что тебе скинули для твоих целей). Тебе же сказали, что на триггерах это очень сложно. Да и судя по предложенным триггерам, это ещё и будет жрать кучу памяти.
на гуи можно ._. просто при инициализации карты, нужно выбрать всех юнитов на карте и к триггеру который должен показывать плавающий текст добавить событие (Picked unit) - takes damage. Но тут есть тонкость, при создании любого юнита непосредственно во время игры, придется каждый раз добавлять на созданного юнита событие.
Добавлено (13-06-2011, 13:16) --------------------------------------------- хотя карта долго грузится наверно будет =/