Добавлен Артас Менетил,
не публикуется
Эта библиотека очень похожа на Color. Но за одним исключением - тут можно раскрашивать текст в любые цвета, а не только в цвета игроков.
Так же, как и в Color есть отдельная возможность раскрасить текст в цвет игрока. Надо сказать, значения цветовых тэгов игроков и функция GetPlayerColorIndex былинагло спионерены взяты из Color - за что спасибо её автору.
Так же, как и в Color есть отдельная возможность раскрасить текст в цвет игрока. Надо сказать, значения цветовых тэгов игроков и функция GetPlayerColorIndex были
Как использовать библиотеку
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.
ColoredPlayerString(p,text) - возвращает строку text, покрашенную в цвет игрока. p - это integer.
ColoredPlayerName(p) - возвращает имя игрока p, покрашенное в его цвет. p - это integer.
Кроме того - переменные:
integer array pcR, integer array pcG, integer array pcB - цвета игроков по RGB.
string array pcS - цветовые теги для цветов игроков.
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
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Артас Менетил: Системы под старкрафт,а то на вар уже всё изобретено и 100 раз использовано,даже таким нубом как я
Стар отстойОтредактирован Nerevar
Хотя у любых систем главная слабость в том,что те кому они нужны не смогут ими воспользоваться,а те кто смогут - не захотят и сделают все по-своему =/
вот и думай...
А отличия своей можешь предложить автору Color для добавления в свою и обновления ее,ибо куча аналогов с парой отличий не круто