//TESH.scrollpos=-1
//TESH.alwaysfold=0
function GetPlayerNameColored takes player id returns string
local playercolor col=GetPlayerColor(id)
local string r=GetPlayerName(id)
if col == PLAYER_COLOR_RED then
set r="|cffff0000" +r+"|r"
elseif col == PLAYER_COLOR_BLUE then
set r="|cff0000ff"+r+"|r"
elseif col == PLAYER_COLOR_CYAN then
set r= "|cff00f5ff"+r+"|r"
elseif col == PLAYER_COLOR_PURPLE then
set r="|cff551A8B"+r+"|r"
elseif col == PLAYER_COLOR_YELLOW then
set r="|cffffff00"+r+"|r"
elseif col == PLAYER_COLOR_ORANGE then
set r="|cffEE9A00"+r+"|r"
elseif col == PLAYER_COLOR_GREEN then
set r="|cff00CD00"+r+"|r"
elseif col == PLAYER_COLOR_PINK then
set r= "|cffFF69B4"+r+"|r"
elseif col == PLAYER_COLOR_LIGHT_GRAY then
set r="|cffC0C0C0"+r+"|r"
elseif col == PLAYER_COLOR_LIGHT_BLUE then
set r="|cffB0E2FF"+r+"|r"
elseif col == PLAYER_COLOR_AQUA then
set r="|cff006400"+r+"|r"
elseif col == PLAYER_COLOR_BROWN then
set r="|cff8B4513"+r+"|r"
else
set r="|cff000000"+r+"|r"
endif
set col=null
return r
endfunction
function ValueColor takes integer col, integer val returns string
local string s =I2S(val)
if col == 2 then
set s= ("|cFFFF5800"+s+"|r")
elseif col == 3 then
set s= ("|cFF077E81"+s+"|r")
elseif col == 4 then
set s= ("|cFFFFDC00"+s+"|r")
endif
return s
endfunction
//=================================================================
function setcfg takes string key, string val returns nothing
call StoreString(udg_Multiboard_Cashe, "config", key, val)
endfunction
function cfg takes string key returns string
return GetStoredString(udg_Multiboard_Cashe, "config", key)
endfunction
function cfgi takes string key returns integer
return S2I(cfg(key))
endfunction
//==================================================================
function CreateMultiboardRow takes player p returns nothing
set udg_Multiboard_RowIndex = udg_Multiboard_RowIndex + 1
call MultiboardSetRowCount( udg_Multiboard, udg_Multiboard_RowIndex )
call MultiboardSetItemWidthBJ( udg_Multiboard, 1, udg_Multiboard_RowIndex, 8.00 )
call MultiboardSetItemWidthBJ( udg_Multiboard, 2, udg_Multiboard_RowIndex, 6.00 )
call MultiboardSetItemWidthBJ( udg_Multiboard, 3, udg_Multiboard_RowIndex, 6.00 )
call MultiboardSetItemWidthBJ( udg_Multiboard, 4, udg_Multiboard_RowIndex, 6.00 )
call MultiboardSetItemStyleBJ( udg_Multiboard, 1, udg_Multiboard_RowIndex, true, false )
call MultiboardSetItemStyleBJ( udg_Multiboard, 2, udg_Multiboard_RowIndex, true, false )
call MultiboardSetItemStyleBJ( udg_Multiboard, 3, udg_Multiboard_RowIndex, true, false )
call MultiboardSetItemStyleBJ( udg_Multiboard, 4, udg_Multiboard_RowIndex, true, false )
call MultiboardSetItemValueBJ( udg_Multiboard, 1, udg_Multiboard_RowIndex, GetPlayerNameColored(p) )
call MultiboardSetItemValueBJ( udg_Multiboard, 2, udg_Multiboard_RowIndex,ValueColor(2, udg_PL_Frags[GetConvertedPlayerId(p)]) )
call MultiboardSetItemValueBJ( udg_Multiboard, 3, udg_Multiboard_RowIndex,ValueColor(3, udg_PL_Deads[GetConvertedPlayerId(p)]) )
call MultiboardSetItemValueBJ( udg_Multiboard, 4, udg_Multiboard_RowIndex,ValueColor(4, GetPlayerState(GetTriggerPlayer(), PLAYER_STATE_RESOURCE_GOLD)) )
call StoreInteger(udg_Multiboard_Cashe, I2S(GetConvertedPlayerId(p)), "multiboard row", udg_Multiboard_RowIndex)
endfunction
//=================================CreateMultiboard========================================
function Create_Multiboard takes nothing returns nothing
local integer i =1
call CreateMultiboardBJ( 4, 1, "Golem Wars" )
set udg_Multiboard = GetLastCreatedMultiboard()
//Interface
call MultiboardSetItemWidthBJ( udg_Multiboard, 1, 1, 8.00 )
call MultiboardSetItemWidthBJ( udg_Multiboard, 2, 1, 6.00 )
call MultiboardSetItemWidthBJ( udg_Multiboard, 3, 1, 6.00 )
call MultiboardSetItemWidthBJ( udg_Multiboard, 4, 1, 6.00 )
call MultiboardSetItemStyleBJ( udg_Multiboard, 1, ( 1 ), true, false )
call MultiboardSetItemStyleBJ( udg_Multiboard, 2, ( 1 ), true, true )
call MultiboardSetItemStyleBJ( udg_Multiboard, 3, ( 1 ), true, true )
call MultiboardSetItemStyleBJ( udg_Multiboard, 4, ( 1 ), true, true )
call MultiboardSetItemValueBJ( udg_Multiboard, 1, 1, "|cFF009B50Players:|r" )
call MultiboardSetItemValueBJ( udg_Multiboard, 2, 1, "|cFF00FF00Kills|r" )
call MultiboardSetItemValueBJ( udg_Multiboard, 3, 1, "|cFF077E81Deads|r" )
call MultiboardSetItemValueBJ( udg_Multiboard, 4, 1, "|cFFFFDC00Gold|r" )
call MultiboardSetItemIconBJ( udg_Multiboard, 2, 1, "ReplaceableTextures\\WorldEditUI\\Editor-MultipleUnits.blp" )
call MultiboardSetItemIconBJ( udg_Multiboard, 3, 1, "ReplaceableTextures\\CommandButtons\\BTNAnkh.blp" )
call MultiboardSetItemIconBJ( udg_Multiboard, 4, 1, "UI\\Feedback\\Resources\\ResourceGold.blp" )
//AddPlayers
loop
exitwhen i ==13
if GetPlayerSlotState(ConvertedPlayer(i)) == PLAYER_SLOT_STATE_PLAYING then
call CreateMultiboardRow(ConvertedPlayer(i))
endif
set i=(i+1)
endloop
endfunction
//========================================================================================
function RefreshMultiboardItem takes player p, integer col, integer value returns nothing
local integer row = GetStoredInteger(udg_Multiboard_Cashe, I2S(GetConvertedPlayerId(p)), "multiboard row")
if row !=0 then
call MultiboardSetItemValueBJ( udg_Multiboard, col,row, ValueColor(col, value) )
endif
set row = 0
endfunction
function addI takes nothing returns nothing
set udg_HEX_string = "||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||"
endfunction
Name | Type | is_array | initial_value |
AI_right | boolean | Yes | |
BarName | string | Yes | |
BarPlayer | force | Yes | |
BarSetting | integer | Yes | |
BarString | string | Yes | |
BarSystemsNumber | integer | No | |
biginInteger | integer | No | |
Boolean | boolean | Yes | |
Caster | unit | Yes | |
CountPlayers | integer | No | |
Deads | integer | Yes | |
DialogButton | button | Yes | |
FloatingText | texttag | Yes | |
HEROS | unit | Yes | |
HEX_coder | string | No | |
HEX_runer | integer | Yes | |
HEX_string | string | No | |
ItemGet | itemcode | No | |
ItemSpell | item | No | |
ItemStore | itemcode | Yes | |
ItemSuccess | boolean | No | |
Kills | integer | Yes | |
mach | unit | No | |
Meteor | unit | No | |
moved | unit | Yes | |
MovedAvtoFacing | boolean | Yes | |
MovedCaster | unit | Yes | |
MovedDamage | real | Yes | |
MovedDeath | boolean | Yes | |
MovedIsSnorads | boolean | Yes | |
MovedPozition | location | Yes | |
MovedRang | real | Yes | |
MoveFacing | real | Yes | |
MoveOforON | boolean | Yes | |
Multiboard | multiboard | No | |
MULTIBOARD | multiboard | Yes | |
Multiboard_Cashe | gamecache | No | |
Multiboard_Chashe | gamecache | No | |
Multiboard_RowIndex | integer | No | 1 |
Multiboard_timer | real | No | |
n | integer | No | IntegerMaxPlayers |
number | integer | No | |
Omon | unit | Yes | |
Omon1 | integer | No | |
p | location | No | |
Picked_Units_Groop | group | No | |
PickUnit | unit | Yes | |
PL_Deads | integer | Yes | |
PL_Frags | integer | Yes | |
PLAYER | player | Yes | |
Player1 | player | No | |
PLAYER2 | player | Yes | |
Player_deaths | integer | Yes | |
Player_rows | integer | Yes | |
PlayerColor | string | Yes | |
Players_score | integer | Yes | |
Playersgroup | force | No | |
playerunit | unit | Yes | |
Points | image | Yes | |
realMove | real | Yes | |
realStop | real | Yes | |
Rezinka | unit | No | |
RunOrNO | boolean | Yes | |
SDMStrigger | trigger | No | |
SP | effect | No | |
Specef | effect | No | |
SpecEffects | effect | No | |
SpellItem | abilcode | Yes | |
SpellUnit | unit | Yes | |
StartDialog | dialog | Yes | |
Strings_Health | string | Yes | |
Strings_Mana | string | Yes | |
Target | unit | No | |
Target1 | unit | No | |
Terrain | terraintype | No | |
Text | texttag | No | |
Textuinit | unit | Yes | |
Timer | timerdialog | Yes | |
Unit | unit | No |
//TESH.scrollpos=-1
//TESH.alwaysfold=0
function SDMSTextVars takes integer PlayerNumber returns string
local string array Color
set Color[0] = "|c00FF0303"
set Color[1] = "|cFF0000FF"
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 12.0
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=""
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()
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_Damage 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
//TESH.scrollpos=-1
//TESH.alwaysfold=0
function Trig_dead2_Conditions takes nothing returns boolean
if ( not ( GetOwningPlayer(GetDyingUnit()) == Player(PLAYER_NEUTRAL_AGGRESSIVE) ) ) then
return false
endif
return true
endfunction
function Trig_dead2_Actions takes nothing returns nothing
local unit d
set d = GetDyingUnit()
call AddSpecialEffectLocBJ( GetUnitLoc(d), "Objects\\Spawnmodels\\Human\\HumanLargeDeathExplode\\HumanLargeDeathExplode.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call TriggerSleepAction( 10.00 )
call AddSpecialEffectLocBJ( GetUnitLoc(d), "Abilities\\Spells\\Demon\\ReviveDemon\\ReviveDemon.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call CreateNUnitsAtLoc( 1, GetUnitTypeId(d), Player(PLAYER_NEUTRAL_AGGRESSIVE), GetUnitLoc(GetDyingUnit()), bj_UNIT_FACING )
endfunction
//===========================================================================
function InitTrig_dead2 takes nothing returns nothing
set gg_trg_dead2 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_dead2, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_dead2, Condition( function Trig_dead2_Conditions ) )
call TriggerAddAction( gg_trg_dead2, function Trig_dead2_Actions )
endfunction
function ItemSys_CombineItem takes nothing returns nothing
local unit u = GetTriggerUnit()
local boolean array used
local integer i = 0
local integer j = 1
local boolean exit = false
local boolean noitem = false
loop
exitwhen udg_ItemStore[j] == 0 or noitem == true
set exit = false
set i = 0
loop
exitwhen i > 5 or exit == true
if GetItemTypeId(UnitItemInSlot(u,i)) == udg_ItemStore[j] and used[i] == false then
set exit = true
set used[i] = true
set j = j + 1
else
set i = i + 1
endif
endloop
if exit == false then
set noitem = true
endif
endloop
set i = 0
if noitem == false then
loop
exitwhen i > 5
if used[i] == true then
call RemoveItem(UnitItemInSlot(u,i))
endif
set i = i + 1
endloop
call UnitAddItemById(u,udg_ItemGet)
set udg_ItemSuccess = true
else
set udg_ItemSuccess = false
endif
set i = 1
loop
exitwhen i > 6
set udg_ItemStore[i] = 0
set i = i + 1
endloop
set u = null
endfunction
//===========================================================================
function InitTrig_ItemsSistem takes nothing returns nothing
endfunction
//TESH.scrollpos=4
//TESH.alwaysfold=0
function Trig_Update_Actions takes nothing returns nothing
local integer i = udg_CountPlayers
loop
call MultiboardSetItemValueBJ( udg_MULTIBOARD[i], 2, 1, udg_Strings_Health[R2I(( GetUnitLifePercent(udg_Unit) * 2.55 ))] )
call MultiboardSetItemValueBJ( udg_MULTIBOARD[i], 2, 2, udg_Strings_Mana[R2I(( GetUnitManaPercent(udg_Unit) * 2.55 ))] )
call MultiboardSetItemValueBJ( udg_MULTIBOARD[i], 3, 1, ( ( "|cFF00FF00" + I2S(R2I(GetUnitLifePercent(udg_Unit))) ) + ( "%" + "|r" ) ) )
call MultiboardSetItemValueBJ( udg_MULTIBOARD[i], 3, 2, ( ( "|cFF3300FF" + I2S(R2I(GetUnitManaPercent(udg_Unit))) ) + ( "%" + "|r" ) ) )
call MultiboardSetItemValueBJ( udg_MULTIBOARD[i], 3, 3, ( "|cFFFFFF00" + I2S(GetPlayerState(GetOwningPlayer(udg_Unit), PLAYER_STATE_RESOURCE_GOLD)) ) )
set i = i - 1
exitwhen i == 0
endloop
endfunction
//===========================================================================
function InitTrig_Update takes nothing returns nothing
set gg_trg_Update = CreateTrigger( )
call TriggerRegisterTimerEvent( gg_trg_Update, 0.1, true )
call TriggerAddAction( gg_trg_Update, function Trig_Update_Actions )
endfunction
function Trig_TimerMultiboard_Actions takes nothing returns nothing
local integer isec = cfgi ("MBiSec")
local integer imin = cfgi ("MBiMin")
local string ssec
local string time
set isec = isec + 1
if isec == 60 then
set imin = imin + 1
set isec = 0
endif
if isec < 10 then
set ssec = "0" + I2S(isec)
else
set ssec = I2S(isec)
endif
set time = I2S(imin) + ":" + ssec
call MultiboardSetTitleText( udg_Multiboard, "|cFF00F550"+"Golem Wars < " +time+" >" + "|r")
call setcfg ("MBiSec", I2S(isec))
call setcfg ("MBiMin", I2S(imin))
call setcfg ("MBTime", time)
endfunction
//===========================================================================
function InitTrig_TimerMultiboard takes nothing returns nothing
set gg_trg_TimerMultiboard = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_TimerMultiboard, 1.00 )
call TriggerAddAction( gg_trg_TimerMultiboard, function Trig_TimerMultiboard_Actions )
endfunction
//TESH.scrollpos=-1
//TESH.alwaysfold=0
function Trig_Frags_Deads_Actions takes nothing returns nothing
local integer dead = GetConvertedPlayerId(GetOwningPlayer(GetDyingUnit()))
local integer frag = GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))
if ((frag < 13) and (IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO)) and (GetOwningPlayer(GetDyingUnit()) != GetOwningPlayer(GetKillingUnitBJ()))) == true then
set udg_PL_Frags[frag] = ( udg_PL_Frags[frag] + 1 )
call RefreshMultiboardItem(GetOwningPlayer(GetKillingUnitBJ()), 2, udg_PL_Frags[frag])
endif
if (dead < 13 and IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO)) == true then
set udg_PL_Deads[dead] = ( udg_PL_Deads[dead] + 1 )
call RefreshMultiboardItem (GetOwningPlayer(GetDyingUnit()), 3, udg_PL_Deads[dead])
endif
set dead = 0
set frag = 0
endfunction
//===========================================================================
function InitTrig_Refresh_Frags_Deads takes nothing returns nothing
set gg_trg_Refresh_Frags_Deads = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Refresh_Frags_Deads, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction( gg_trg_Refresh_Frags_Deads, function Trig_Frags_Deads_Actions )
endfunction
//TESH.scrollpos=-1
//TESH.alwaysfold=0
function Trig_t8_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'AIfz' ) ) then
return false
endif
return true
endfunction
function moverez takes nothing returns nothing
local timer t = CreateTimer()
call SetUnitPositionLoc( udg_Rezinka, PolarProjectionBJ(GetUnitLoc(udg_Rezinka), 32.00, GetUnitFacing(udg_Rezinka)) )
call SetUnitFacingToFaceUnitTimed( udg_Rezinka, udg_Caster[1],0)
call DestroyTimer(t)
endfunction
function Trig_t8_Actions takes nothing returns nothing
local unit ps
local timer t = CreateTimer()
set udg_Caster[1] = GetSpellAbilityUnit()
set udg_Rezinka = GetSpellTargetUnit()
set ps = udg_Rezinka
call SetUnitPathing( udg_Rezinka, false )
call moverez()
call TimerStart(t,0.04,true,function moverez)
call TriggerSleepAction( 2.50 )
set udg_Rezinka = ps
call SetUnitPathing( udg_Rezinka, true )
call DestroyTimer(t)
set ps = null
endfunction
//===========================================================================
function InitTrig_t8 takes nothing returns nothing
set gg_trg_t8 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_t8, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_t8, Condition( function Trig_t8_Conditions ) )
call TriggerAddAction( gg_trg_t8, function Trig_t8_Actions )
endfunction