XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DioD

offline
Опыт: 45,134
Активность:
Цветовые кодеки
Полностью соответствует цветам игры полученым из MPQ архива.
Прилагается не очень удобная таблица, ибо замучился форматировать.
Код:
--ID- -R- -G-  -B-    -TrueCode-
0---- 255 -3   -3    |c00FF0303|r
1---- 0   -66  -255  |c000042FF|r
2---- 28  -230 -185  |c001CE6B9|r
3---- 84  -0   -129  |c00540081|r
4---- 255 -252 -1    |c00FFFC01|r
5---- 254 -138 -14   |c00FE8A0E|r
6---- 32  -192 -0    |c0020C000|r
7---- 229 -91  -176  |c00E55BB0|r
8---- 149 -150 -151  |c00959697|r
9---- 126 -191 -241  |c007EBFF1|r
10--- 16  -98  -70   |c00106246|r
11--- 78  -42  -4    |c004E2A04|r
12-15 40  -40  -40   |c00282828|r


Теперь собственно функция, их две.
Код:
function ColoredNameDB takes player P returns string
    local integer D = GetPlayerId(P)
    if (D <= 5) then
        return "|c" + SubString("00FF0303000042FF001CE6B90054008100FFFC0100FE8A0E" ,D*8, D*8+8) + GetPlayerName(P) + "|r"
    else
        set D=D-6
        return "|c" + SubString("0020C00000E55BB000959697007EBFF100106246004E2A04" ,D*8, D*8+8) + GetPlayerName(P) + "|r"
    endif
    set D = 0
    set P = null
    return null
endfunction

Функция возращает раскрашеное имя игрока, если игрок нейтральный имя будет чёрное.
Код:
function SetColoredName takes nothing returns nothing
    local integer LOOP = 0
    loop
        exitwhen LOOP > 11
        call SetPlayerName(Player(LOOP),ColoredNameDB(Player(LOOP)))
        set LOOP = LOOP + 1
    endloop
    set LOOP=0
endfunction

Раставляет раскрашеные имена для всех игроков, работает и для нейтралов если увеличить цикл.

Отредактировано DioD, 11.06.2006 в 13:41.
Старый 06.06.2006, 15:02
NETRAT

offline
Опыт: 83,712
Активность:
Гм, может эту громадину скомпоновать в одну строку или в массив и вместо if делать или substr или прямую индексацию?
Старый 06.06.2006, 15:33
dk

offline
Опыт: 60,293
Активность:
а вобще это скорей не статья а наработка!
Старый 06.06.2006, 15:53
zibada

offline
Опыт: отключен
а так не проще? =)

Код:
function InitPlayerColorStrings takes nothing returns nothing
   set udg_PlayerColors[0] = "|c00FF0303"
   //.....
   set udg_PlayerColors[15] = "|c00282828"
endfunction

function GetPlayerColorString takes player p returns string
   return udg_PlayerColors[GetPlayerId(p)]
endfunction


и дальше юзать как-то так:
call BJDebugMsg(GetPlayerColorString(Player(0)) + GetPlayerName(Player(0)) + "|r")

ну или в кэш эти строки запихать, если лишнюю глобалку не хочется делать.

DimonT добавил:
едем в барахолку.
Старый 06.06.2006, 16:01
NETRAT

offline
Опыт: 83,712
Активность:
Да я о том же, правда, имхо кеш для такой мелочи - слишком
Еще вариант -
Код:
function GetColorPrefix integer i returns string
    return SubString("|c00FF0303 ........... |c00282828", i*10, 10)
endfunction

как-то так в-общем
Старый 06.06.2006, 16:16
DioD

offline
Опыт: 45,134
Активность:
Ну насчёт кеша и масивов не знаю, сделано так, что-бы скопировал и готово.
Основная цель это именно коды цветов.
Старый 06.06.2006, 16:16
Toadcop

offline
Опыт: 54,313
Активность:
DioD а для техттагов или МБ типа РГБ ? цвета =) у меня есть если надо могу выложить.
Старый 07.06.2006, 16:55
DioD

offline
Опыт: 45,134
Активность:
РГБ прилагается своё родное, сверху в табличке, а вообще я не понял про что ты, но будет очень интересно если ты поведаешь.
Старый 07.06.2006, 17:10
Toadcop

offline
Опыт: 54,313
Активность:
DioD я про то что у тебя нету ! т.е. MultiboardSetItemColor() кушает r,g,b ! хотя можно и как у тебя но никогда нельзя забывать про лишние строки ;)
Старый 07.06.2006, 17:13
DioD

offline
Опыт: 45,134
Активность:
А, забыл, но ничего, я как только протестирую про субстринги всё будет номально, просто добавиться еще 2 функции, хранилище и функция присвоения цвета.
Старый 07.06.2006, 17:29
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 05:59.