Библиотека FullColor

Добавлен , не публикуется
Эта библиотека очень похожа на Color. Но за одним исключением - тут можно раскрашивать текст в любые цвета, а не только в цвета игроков.
Так же, как и в Color есть отдельная возможность раскрасить текст в цвет игрока. Надо сказать, значения цветовых тэгов игроков и функция GetPlayerColorIndex были нагло спионерены взяты из Color - за что спасибо её автору.

Как использовать библиотеку

ColoredString(r,g,b,text) - возвращает строку text, покрашенную в указанный цвет. Значения r,g,b - целые, 0<=r,g,b<256.
ColoredPlayerString(p,text) - возвращает строку text, покрашенную в цвет игрока. p - это integer.
ColoredPlayerName(p) - возвращает имя игрока p, покрашенное в его цвет. p - это integer.
Кроме того - переменные:
integer array pcR, integer array pcG, integer array pcB - цвета игроков по RGB.
string array pcS - цветовые теги для цветов игроков.

Код библиотеки

Код
library FullColor initializer InitFullColor
    globals
        private string array D2H
        integer array pcR
        integer array pcG
        integer array pcB
        string array  pcS
    endglobals
    
    function GetPlayerColorIndex takes integer nPlayerIndex returns integer
        local playercolor pc = GetPlayerColor( Player( nPlayerIndex ) )

        if ( pc == PLAYER_COLOR_RED ) then
            return 0
        elseif ( pc == PLAYER_COLOR_BLUE ) then
            return 1
        elseif ( pc == PLAYER_COLOR_CYAN ) then
            return 2
        elseif ( pc == PLAYER_COLOR_PURPLE ) then
            return 3
        elseif ( pc == PLAYER_COLOR_YELLOW ) then
            return 4
        elseif ( pc == PLAYER_COLOR_ORANGE ) then
            return 5
        elseif ( pc == PLAYER_COLOR_GREEN ) then
            return 6
        elseif ( pc == PLAYER_COLOR_PINK ) then
            return 7
        elseif ( pc == PLAYER_COLOR_LIGHT_GRAY ) then
            return 8
        elseif ( pc == PLAYER_COLOR_LIGHT_BLUE ) then
            return 9
        elseif ( pc == PLAYER_COLOR_AQUA ) then
            return 10
        elseif ( pc == PLAYER_COLOR_BROWN ) then
            return 11
        endif

        return 12
    endfunction
    
    function ColoredString takes integer r, integer g, integer b, string text returns string
        return "|cff"+D2H[r/16]+D2H[ModuloInteger(r,16)]+D2H[g/16]+D2H[ModuloInteger(g,16)]+D2H[b/16]+D2H[ModuloInteger(b,16)]+text+"|r"
    endfunction
    
    function ColoredPlayerString takes integer p, string text returns string
        return pcS[GetPlayerColorIndex(p)]+text+"|r"
    endfunction
    
    function ColoredPlayerName takes integer p returns string
        return pcS[GetPlayerColorIndex(p)]+GetPlayerName(Player(p))+"|r"
    endfunction
    
    function InitFullColor takes nothing returns nothing
        set D2H[ 0] = "0"
        set D2H[ 1] = "1"
        set D2H[ 2] = "2"
        set D2H[ 3] = "3"
        set D2H[ 4] = "4"
        set D2H[ 5] = "5"
        set D2H[ 6] = "6"
        set D2H[ 7] = "7"
        set D2H[ 8] = "8"
        set D2H[ 9] = "9"
        set D2H[10] = "a"
        set D2H[11] = "b"
        set D2H[12] = "c"
        set D2H[13] = "d"
        set D2H[14] = "e"
        set D2H[15] = "f"
        
        set pcR[0] = 255
        set pcG[0] = 0
        set pcB[0] = 0
        set pcS[0] = "|cffff0000" 

        set pcR[1] = 0
        set pcG[1] = 0
        set pcB[1] = 255
        set pcS[1] = "|cff0000ff" 

        set pcR[2] = 0
        set pcG[2] = 245
        set pcB[2] = 255
        set pcS[2] = "|cff00f5ff" 

        set pcR[3] = 85
        set pcG[3] = 26
        set pcB[3] = 139
        set pcS[3] = "|cff551A8B" 

        set pcR[4] = 255
        set pcG[4] = 255
        set pcB[4] = 0
        set pcS[4] = "|cffffff00"

        set pcR[5] = 248
        set pcG[5] = 154
        set pcB[5] = 0
        set pcS[5] = "|cffEE9A00" 

        set pcR[6] = 0
        set pcG[6] = 255
        set pcB[6] = 0
        set pcS[6] = "|cff00CD00" 

        set pcR[7] = 255
        set pcG[7] = 105
        set pcB[7] = 180
        set pcS[7] = "|cffFF69B4" 

        set pcR[8] = 192
        set pcG[8] = 192
        set pcB[8] = 192
        set pcS[8] = "|cffC0C0C0" 

        set pcR[9] = 176
        set pcG[9] = 226
        set pcB[9] = 255
        set pcS[9] = "|cffB0E2FF" 

        set pcR[10] = 0
        set pcG[10] = 100
        set pcB[10] = 0
        set pcS[10] = "|cff006400"
        
        set pcR[11] = 139
        set pcG[11] = 69
        set pcB[11] = 19
        set pcS[11] = "|cff8B4513"
        
        set pcR[12] = 0
        set pcG[12] = 0
        set pcB[12] = 0
        set pcS[12] = "|cff000000"
        
    endfunction
endlibrary

Код с быстродействием

Это та же библиотека, но только тут всё работает немного быстрее - перевод из Dec в Hex осуществляется 1 раз в начале, а не каждый раз. Но вот только это займёт больше оперативной памяти - массив из 256 строк.
Код
library FullColor initializer InitFullColor
    globals
        private string array D2H
        private string array D2H2
        integer array pcR
        integer array pcG
        integer array pcB
        string array  pcS
    endglobals
    
    function GetPlayerColorIndex takes integer nPlayerIndex returns integer
        local playercolor pc = GetPlayerColor( Player( nPlayerIndex ) )

        if ( pc == PLAYER_COLOR_RED ) then
            return 0
        elseif ( pc == PLAYER_COLOR_BLUE ) then
            return 1
        elseif ( pc == PLAYER_COLOR_CYAN ) then
            return 2
        elseif ( pc == PLAYER_COLOR_PURPLE ) then
            return 3
        elseif ( pc == PLAYER_COLOR_YELLOW ) then
            return 4
        elseif ( pc == PLAYER_COLOR_ORANGE ) then
            return 5
        elseif ( pc == PLAYER_COLOR_GREEN ) then
            return 6
        elseif ( pc == PLAYER_COLOR_PINK ) then
            return 7
        elseif ( pc == PLAYER_COLOR_LIGHT_GRAY ) then
            return 8
        elseif ( pc == PLAYER_COLOR_LIGHT_BLUE ) then
            return 9
        elseif ( pc == PLAYER_COLOR_AQUA ) then
            return 10
        elseif ( pc == PLAYER_COLOR_BROWN ) then
            return 11
        endif

        return 12
    endfunction
    
    function ColoredString takes integer r, integer g, integer b, string text returns string
        return "|cff"+D2H2[r]+D2H2[g]+D2H2[b]+text+"|r"
    endfunction
    
    function ColoredPlayerString takes integer p, string text returns string
        return pcS[GetPlayerColorIndex(p)]+text+"|r"
    endfunction
    
    function ColoredPlayerName takes integer p returns string
        return pcS[GetPlayerColorIndex(p)]+GetPlayerName(Player(p))+"|r"
    endfunction
    
    function InitFullColor takes nothing returns nothing
        local integer i=0
        set D2H[ 0] = "0"
        set D2H[ 1] = "1"
        set D2H[ 2] = "2"
        set D2H[ 3] = "3"
        set D2H[ 4] = "4"
        set D2H[ 5] = "5"
        set D2H[ 6] = "6"
        set D2H[ 7] = "7"
        set D2H[ 8] = "8"
        set D2H[ 9] = "9"
        set D2H[10] = "a"
        set D2H[11] = "b"
        set D2H[12] = "c"
        set D2H[13] = "d"
        set D2H[14] = "e"
        set D2H[15] = "f"
        
        set pcR[0] = 255
        set pcG[0] = 0
        set pcB[0] = 0
        set pcS[0] = "|cffff0000" 

        set pcR[1] = 0
        set pcG[1] = 0
        set pcB[1] = 255
        set pcS[1] = "|cff0000ff" 

        set pcR[2] = 0
        set pcG[2] = 245
        set pcB[2] = 255
        set pcS[2] = "|cff00f5ff" 

        set pcR[3] = 85
        set pcG[3] = 26
        set pcB[3] = 139
        set pcS[3] = "|cff551A8B" 

        set pcR[4] = 255
        set pcG[4] = 255
        set pcB[4] = 0
        set pcS[4] = "|cffffff00"

        set pcR[5] = 248
        set pcG[5] = 154
        set pcB[5] = 0
        set pcS[5] = "|cffEE9A00" 

        set pcR[6] = 0
        set pcG[6] = 255
        set pcB[6] = 0
        set pcS[6] = "|cff00CD00" 

        set pcR[7] = 255
        set pcG[7] = 105
        set pcB[7] = 180
        set pcS[7] = "|cffFF69B4" 

        set pcR[8] = 192
        set pcG[8] = 192
        set pcB[8] = 192
        set pcS[8] = "|cffC0C0C0" 

        set pcR[9] = 176
        set pcG[9] = 226
        set pcB[9] = 255
        set pcS[9] = "|cffB0E2FF" 

        set pcR[10] = 0
        set pcG[10] = 100
        set pcB[10] = 0
        set pcS[10] = "|cff006400"
        
        set pcR[11] = 139
        set pcG[11] = 69
        set pcB[11] = 19
        set pcS[11] = "|cff8B4513"
        
        set pcR[12] = 0
        set pcG[12] = 0
        set pcB[12] = 0
        set pcS[12] = "|cff000000"
        
        loop
            exitwhen(i>255)
            set D2H2[i]=D2H[i/16]+D2H[ModuloInteger(i,16)]
            set i=i+1
        endloop
    endfunction
endlibrary
`
ОЖИДАНИЕ РЕКЛАМЫ...
4
34
12 лет назад
4
Слоупоки на дворе уже 2012 год, а вы все делаете колорлибы для вара. Такое было бы полезно лет 10 назад )
0
14
12 лет назад
0
Хорошо, что бы в хотели видеть?
1
25
12 лет назад
1
Лучшем для старика сделали,или он использует колоры вара?
Артас Менетил:
Хорошо, что бы в хотели видеть?
Системы под старкрафт,а то на вар уже всё изобретено и 100 раз использовано,даже таким нубом как я
0
34
12 лет назад
0
Системы под старкрафт,а то на вар уже всё изобретено и 100 раз использовано,даже таким нубом как я
какие системы, там колорпикер встроенный )
0
14
12 лет назад
0
Стар отстой
sleep:
Лучшем для старика сделали,или он использует колоры вара?
Артас Менетил:
Хорошо, что бы в хотели видеть?
Системы под старкрафт,а то на вар уже всё изобретено и 100 раз использовано,даже таким нубом как я
Я насчёт вара
0
20
12 лет назад
Отредактирован Nerevar
0
Артас Менетил, загляни в академию\барахолку и посмотри какие системы часто всего востребованы,кучу цветовых с парой отличий публиковать никакого смысла нет...
Хотя у любых систем главная слабость в том,что те кому они нужны не смогут ими воспользоваться,а те кто смогут - не захотят и сделают все по-своему =/
вот и думай...
А отличия своей можешь предложить автору Color для добавления в свою и обновления ее,ибо куча аналогов с парой отличий не круто
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.