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 11.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)
call CreateTextTagUnitBJ(textColor+minus+I2S(R2I(GetEventDamage()))+plus+"|r",u,0,fontSize,100.0,100.0,100.0,0.0)
set tt=GetLastCreatedTextTag()
call SetTextTagVelocityBJ(tt,96.0,90)
call SetTextTagPermanentBJ(tt,false)
call SetTextTagLifespanBJ(tt,lifeTime)
call SetTextTagFadepointBJ(tt,0.0)
call PolledWait(lifeTime2)
set u=null
set pl=null
set i=0
set fontSize=0
set lifeTime=0
set lifeTime2=0
set minus=""
set plus=""
set textColor=""
set tt=null
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()
call TriggerRegisterUnitEvent(SDMStheTrigger(),u,EVENT_UNIT_DAMAGED)
set u=null
endfunction
function theSDMSTriggerActions takes nothing returns nothing
local trigger UnitEnter=CreateTrigger()
local trigger TextTagCreate=SDMStheTrigger()
call TriggerRegisterEnterRectSimple(UnitEnter,GetPlayableMapRect())
call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)
call ForGroupBJ(GetUnitsInRectAll(GetPlayableMapRect()),function SDMSGroupFunction)
set UnitEnter=null
set TextTagCreate=null
endfunction
//========================================
//---------------Не трогать!--------------
//========================================
function InitTrig_the_SDMSTrigger 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