1

» WarCraft 3 / Библиотека функций

Не уверен, что кому-нибудь пригодится, но предложить особо нечего, ибо много уже выложено здесь.
Вообщем мини-скрипт для удобства учета игрового времени(можно использовать для мультиборда или текстовых сообщений во время игры)
Сунуть можно в Custom Script вашей карты, нужно только инициализировать таймер, обратившись к функции ts_Start. Чтобы получить строку с пройденным временем нужно лишь обратиться к функции ts_GetTime.
//***************************************************************************
//*
//*   TimeScript v1.0
//*   Автор Tosky
//*
//***************************************************************************

//===========================================================================
// Функция для удобства 
// (Возвращает одну из двух строк по условию, где первая - истинная)

function ts_iif takes boolean b, string s1, string s2 returns string
    if b then
        return s1
    else
        return s2
    endif
endfunction

//===========================================================================
// Возвращает строку вида 0:00:00

function ts_GetTime takes nothing returns string
    local integer i
    local string s
    local string m
    local string h = I2S(ts_GetHours())
    set i = bj_meleeTwinkedHeroes[1000]
    set s = ts_iif(i > 9, I2S(i), "0" + I2S(i))
    set i = bj_meleeTwinkedHeroes[1001]
    set m = ts_iif(i > 9, I2S(i), "0" + I2S(i))
    return h + ":" + m + ":" + s
endfunction

//===========================================================================
// Cоздает текстовое сообщение вида "0:00:00 - Сообщение"
// для указанного игрока по номеру(где -1 = Для всех игроков-людей)

function ts_Msg takes integer id, string msg returns nothing
    local player p = GetLocalPlayer()
    if id != -1 then
        set p = Player(id)
    endif
    call DisplayTimedTextToPlayer(p, 0, 0, 30.0, "|cffffcc00" + ts_GetTime() + "|r - " + msg)
    set p = null
endfunction

//===========================================================================
// Функция учета времени

function ts_Timer takes nothing returns nothing
    local integer s = bj_meleeTwinkedHeroes[1000]
    local integer m = bj_meleeTwinkedHeroes[1001]
    local integer h = bj_meleeTwinkedHeroes[1002]
    set s = s + 1
    if s == 60 then
        set s = 0
        set m = m + 1
    endif
    if m == 60 then
        set m = 0
        set h = h + 1
    endif
    set bj_meleeTwinkedHeroes[1000] = s
    set bj_meleeTwinkedHeroes[1001] = m
    set bj_meleeTwinkedHeroes[1002] = h
endfunction

//===========================================================================
// Функция запуска(Запустите при инициализации)

function ts_Start takes nothing returns nothing
    local timer tm = CreateTimer()
    call TimerStart(tm, 1.0, true, function ts_Timer)
    set tm = null
endfunction