Библиотека Color

Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка

Что нам даёт?

Небольшая библиотека позволяющая больше не замораживаться с тегами цветов...
GetColoredPlayerName берет номер игрока и возвращает строку и разукрашенным именем игрока в его цвет.
GetColoredString берет номер (от 0 до 11) и строку, возвращает строку с цветом игрока с указанным номером.
RED[PlayerNumber] - глобальная переменная, нужна в функциях типа SetUnitVertexColor(unit, int Red,int Green, Int Blue int, Alpha
GREEN[PlayerNumber] - аналогично
BLUE[PlayerNumber] - аналогично

Подробно об использовании

Копируем себе в кастом код карты или какой-нибудь триггер. настройка не требуется
Потом используем, вот пару примеров:
function PlayerLeft takes player pl returns nothing
    local integer nPlayerIndex = GetPlayerId( pl )
    ...
    некие деисвтия
    ...
    call DisplayTextToForce( GetPLayersAll( ), GetColoredPlayerName( nPlayerIndex ) + " " + GetColoredString( 6, "Выходит из игры!" )
endfunction

fucntion SelectShop takes unit uShop, player pl returns nothing
    local integer nPlayerIndex = GetPlayerId( pl )
    if GetLocalPlayer( ) == pl then
        call SetUnitVertexColor( uShop, RED[nPlayerIndex], GREEN[nPlayerIndex], BLUE[nPlayerIndex], 255 )
    endif
endfucniton
//легко и просто...
код библиотеки
library Color initializer InitColor
//===========================================================================//
// Автор: quq_CCCP  для сайта XGM.RU                                         //
// копируем и юзаем, GetColoredPlayerName, GetColoredString, RED, GREEN, BLUE//
//===========================================================================//
    globals
        integer array RED
        integer array GREEN
        integer array BLUE
        private string array ColorString
    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 0
    endfunction

    function GetColoredString takes integer nPlayerIndex, string str returns string
        return ColorString[GetPlayerColorIndex( nPlayerIndex )] + str + "|r"
    endfunction

    function GetColoredPlayerName takes integer nPlayerIndex returns string
        return GetColoredString( nPlayerIndex, GetPlayerName( Player( nPlayerIndex ) ) )
    endfunction

    function InitColor takes nothing returns nothing
        local integer nIndex = 0
        set RED[nIndex] = 255
        set GREEN[nIndex] = 0
        set BLUE[nIndex] = 0
        set ColorString[nIndex] = "|cffff0000" //red

        set nIndex = nIndex + 1
        set RED[nIndex] = 0
        set GREEN[nIndex] = 0
        set BLUE[nIndex] = 255
        set ColorString[nIndex] = "|cff0000ff" //blue

        set nIndex = nIndex + 1
        set RED[nIndex] = 0
        set GREEN[nIndex] = 245
        set BLUE[nIndex] = 255
        set ColorString[nIndex] = "|cff00f5ff" //Teal

        set nIndex = nIndex + 1
        set RED[nIndex] = 85
        set GREEN[nIndex] = 26
        set BLUE[nIndex] = 139
        set ColorString[nIndex] = "|cff551A8B" //Purple

        set nIndex = nIndex + 1
        set RED[nIndex] = 255
        set GREEN[nIndex] = 255
        set BLUE[nIndex] = 0
        set ColorString[nIndex] = "|cffffff00" //Yellow

        set nIndex = nIndex + 1
        set RED[nIndex] = 248
        set GREEN[nIndex] = 154
        set BLUE[nIndex] = 0
        set ColorString[nIndex] = "|cffEE9A00" //Orange

        set nIndex = nIndex + 1
        set RED[nIndex] = 0
        set GREEN[nIndex] = 255
        set BLUE[nIndex] = 0
        set ColorString[nIndex] = "|cff00CD00" //Green

        set nIndex = nIndex + 1
        set RED[nIndex] = 255
        set GREEN[nIndex] = 105
        set BLUE[nIndex] = 180
        set ColorString[nIndex] = "|cffFF69B4" //Pink

        set nIndex = nIndex + 1
        set RED[nIndex] = 192
        set GREEN[nIndex] = 192
        set BLUE[nIndex] = 192
        set ColorString[nIndex] = "|cffC0C0C0" //Gray

        set nIndex = nIndex + 1
        set RED[nIndex] = 176
        set GREEN[nIndex] = 226
        set BLUE[nIndex] = 255
        set ColorString[nIndex] = "|cffB0E2FF" //Light Blue

        set nIndex = nIndex + 1
        set RED[nIndex] = 0
        set GREEN[nIndex] = 100
        set BLUE[nIndex] = 0
        set ColorString[nIndex] = "|cff006400" //Dark Green

        set nIndex = nIndex + 1
        set RED[nIndex] = 139
        set GREEN[nIndex] = 69
        set BLUE[nIndex] = 19
        set ColorString[nIndex] = "|cff8B4513" //Brown
    endfunction

    function ResetPlayerNameColor takes boolean bColored returns nothing
        local integer nIndex = 0
        loop
            exitwhen nIndex >= 8

            if ( bColored ) then
                call SetPlayerName( Player( nIndex ), GetColoredPlayerName( nIndex ) )
            else
                call SetPlayerName( Player( nIndex ), GetPlayerName( Player( nIndex ) ) )
            endif
        
            set nIndex = nIndex + 1
        endloop
    endfunction
    
endlibrary
`
ОЖИДАНИЕ РЕКЛАМЫ...
6
27
12 лет назад
6
Умница! :)
9
25
12 лет назад
9
кому это надо в 2012? лол
2
9
12 лет назад
2
Под текст есть такая программа: там цвета из пэинта и с градиентами. А вот на счет осатльного, наверное, полезная вещь.
0
17
12 лет назад
0
GenElCon:
Под текст есть такая программа: там цвета из пэинта и с градиентами. А вот на счет осатльного, наверное, полезная вещь.
Поступаю еще проще, юзаю таблицу "безопасных цветов" Лебедева.
1
27
12 лет назад
1
GenElCon, тут удобнее для многих имхо будет, не надо столько раз копипастить.
agentex, а почему нет?
0
29
12 лет назад
0
когда увидел название, ожидал что-то то типо этого. Вбиваем строку с тегами и получаем приколюхи. Например так:
[p:1]text[/]
[c:red]text[/]
[p:player_name]text[/]
0
22
12 лет назад
0
Автору, конечно, спасибо, но это элементарно.
1
12
12 лет назад
1
Кстати - учитесь как правильно называть переменки.
1
33
12 лет назад
1
0
29
12 лет назад
0
Ну вот <_<
1
32
12 лет назад
1
Ну суть этой библиотеки не в том что она сложная, а втом что она удобна, и экономит место...
Не надо постоянно копировать, вставить.. теги... открывать сторонние проги, раздувать код, взял и разукрасил строчку в карсный цвет 1 функцией...
2
33
12 лет назад
2
Ну суть этой библиотеки не в том что она сложная
А в том, что она забагована, и написана автором, которому еще рано писать библиотеки.
  1. GetColoredString вернет строку цвета первого игрока для любого индекса меньше 0 или больше 11.
  2. Нет цветов для нейтралов.
  3. GetColoredString и GetPlayerColorIndex - типичный индусский код с конвертацией номера игрока в его цвет и обратно.
2
32
12 лет назад
2
Ну и ну, нету цветов для нейтралов... Ты сам их юзаеш? еле видный на экране чёрный....
Поправлю, добавлю функций, если тебе не надо и ты сам такое написать в состоянии то это вовсе не значит что это некому не нужно...
0
1
12 лет назад
0
Все как будто на китайском:)!! Как вы это всё понимаете?
6
32
12 лет назад
6
Klimenty, если ты некогда не учил английский язык, и некогда не в своей жизни не учился программированию, то не надо тут ставить минус мне, поставь его себе, и иди учись, учись, учись, а не просиживай штаны за компом....
>Все как будто на китайском:)!!
На английском, причём школяр переведёт чё там написано, будто словво Color, Player, Name, String, Red, Green, Blue вам незнакомы...
Сочуствую, советую скачать себе самоучитель английского языка, и прочитать пару книг о программировании...
0
22
12 лет назад
0
quq_CCCP:
Klimenty, если ты некогда не учил английский язык, и некогда не в своей жизни не учился программированию, то не надо тут ставить минус мне, поставь его себе, и иди учись, учись, учись, а не просиживай штаны за компом....
>Все как будто на китайском:)!!
На английском, причём школяр переведёт чё там написано, будто словво Color, Player, Name, String, Red, Green, Blue вам незнакомы...
Сочуствую, советую скачать себе самоучитель английского языка, и прочитать пару книг о программировании...
Да ладно, реагировать на всё подряд никакой реагировалки не хватит.
Сейчас, кстати, более вниманительно просмотрел код и мне показалось что он излишне запутан. Я буквально вчера запилил себе функцию с аналогичным действием и уложился в 2 раза меньше строк. А ещё я не заметил проверку на включенный фильтр союзников.
1
32
12 лет назад
1
bladget, правда? ну там по мимо строк еще есть Integer'ы да задания цвета... Я решил не добавлять функции с заданием цвета, юниту, лейболборду, мулльтиборду и тд...
Я подумывал несколько переделать библиотеку и добавить пару функций, а именно функция которая разукрашивает текст в разные цвета как радуга... Раньше для этого приходилось долго возится, копировать теги и проверять всё по 10 раз...
Прадо незнаю будет ли это интересно другим... итак обкакали по уши, типа некому ненужно, все и так знают... (Некого не видел аналога, все парятся с тегами, копируют....)
0
2
12 лет назад
0
Срасибо большое, теперь действительно не ннадо париться с цветом, а то надоело при каждой новой установке Варкрафта записывать к кому цвету какой код относится!
Этот комментарий удален
0
15
10 лет назад
Отредактирован EnergyFrost
0
Отличная библиотека. Экономит массу времени . Спасибо!
0
21
5 лет назад
0
Обновить бы?
0
28
5 лет назад
Отредактирован PT153
0
Раз уж на то пошло...
ADOLF:
GetColoredString вернет строку цвета первого игрока для любого индекса меньше 0 или больше 11.
А кто-то в здравом уме будет пихать такие индексы? Сейчас уже больше 11 до 23 включительно можно.
Да и в целом, ничего в этом страшного нет, зачем в эту функцию пихать не самые полезные проверки.
Но бы возвращал 12 вместо 0, на 12-м индексе была бы чистая строка.
Нет цветов для нейтралов.
А его и нет в common.j.
GetColoredString и GetPlayerColorIndex - типичный индусский код с конвертацией номера игрока в его цвет и обратно.
GetPlayerColorIndex - нет тут никакой лишней конвертации, если у игрока 0 стоит синий цвет, то вернётся единица.
GetColoredString - аналогично.

Но я бы сделал передачу не индекса, а игрока, причём скорее всего структуру, основанную на player.
0
21
5 лет назад
Отредактирован Raised
0
Раз уж на то пошло...
ADOLF:
Лол. Дух Адольфа призвать собрался, а, некромансер?
0
28
5 лет назад
0
Лол.
А ты чего это заливаешь картинки на какие-то сайты?
Я хотел написать своё сообщение об этом ещё когда только впервые увидел (это было недавно), но "некропостинг" с целью обсудить слова семилетней давности дело такое себе. А тут как раз случай обернулся, так почему бы и нет.

По поводу самого обновления: не знаю, может и стоит, лично я себе сам напишу, как нужно будет. Могу выложить либу для хоткеев диалогов, если кому нужно.
8
33
5 лет назад
8
Raised:
Лол. Дух Адольфа призвать собрался, а, некромансер?
Он собрался, попытался и добился успеха. А чего добился ТЫ?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.