• Рекомендуем зарегистрироваться для просмотра контента и скачивания файлов!

Server Color

denfil777

Патриарх
Команда форума
Регистрация
12 Янв 2024
Сообщения
76
Реакции
10
Баллы
8
Цветное название сервера, карты + доп. информация (время, количество монстров, номер волны)

Переменные (задаются в ServerColorMut.ini)

ServerName - цвет названия сервера + название
MapColor - цвет карты
WaveColor - цвет номера волны (если цвет не задан - номер волны не выводится)
WavePrefix - префикс перед номером волны (например, Wave=)
TimeColor - цвет времени прошедшего с начала волны(если цвет не задан - время не выводится)
TimePrefix - префикс перед временем (например, Time=)
MonsterColor - цвет количество оставшихся монстров (если цвет не задан - информация не выводится)
MonsterPrefix - префикс перед количеством монстров (например, M=)
NotStartedColor - цвет информации о том, что игра не началась(если цвет не задан - информация не выводится)
NotStartedPrefix - Надпись отображаемая до начала карты (например, "Waiting Players")
Пример: До начала карты, на 1 волне, после 1 волны во время трейдера, на 4 волне

Ссылка

Код для вставки
Код:
ServerColorMut.ServerColorMut

Код с коментариями
Код:
class ServerColorMut extends Mutator config(ServerColorMut);

var config string ServerName;
var config string MapColor;
var config string WaveColor;
var config string WavePrefix;
var config string TimeColor;
var config string TimePrefix;
var config string MonsterColor;
var config string MonsterPrefix;
var config string NotStartedColor;
var config string NotStartedPrefix;
var ServerColorActor SCA;

function PostBeginPlay()
{
SCA = Spawn(class'ServerColorActor');
}

Код:
class ServerColorActor extends Info;

var GameRules GRules;

function PostBeginPlay()
{
    GRules = Spawn(class'ServerColorInfo');
    if(Level.Game.GameRulesModifiers == none)
        Level.Game.GameRulesModifiers = GRules;
    else
        Level.Game.GameRulesModifiers.AddGameRules(GRules);
    super(Actor).PostBeginPlay();
}
Код:
class ServerColorInfo extends GameRules;

function GetServerDetails(out GameInfo.ServerResponseLine ServerState)
{
    local string sTemp;
    local int waveNum;
    local int monsterNum;
    local int elapsedTime;
    local KFGameReplicationInfo KFGRI;
    KFGRI=KFGameReplicationInfo(Level.GRI);
    waveNum=KFGRI.WaveNumber + 1;
    elapsedTime=KFGRI.ElapsedTime;
    monsterNum=KFGRI.MaxMonsters;
    //Задаём название сервера. Если переменная в ини не нулевая, то рисуем в цвете то что прописано в ини
    if(class'ServerColorMut'.default.ServerName != "")
        ServerState.ServerName = class'ServerColorMut'.default.ServerName;
    else //Иначе рисуем белым цветом значение переменной ServerName заданной в KillingFloor.ini
        ServerState.ServerName = Level.Game.GameReplicationInfo.ServerName;
    //Если задан цвет для карты - отрисовываем название карты в цвете
    if(class'ServerColorMut'.default.MapColor != "")
    {
        sTemp = ServerState.MapName;
        if(Left(sTemp, 1) != "")
        {
            sTemp = class'ServerColorMut'.default.MapColor $ sTemp;
            ServerState.MapName = sTemp;
        }
    }
    //Если задан цвет для волны - отрисовываем номер волны, если не задан - ничего не пишем
    if(class'ServerColorMut'.default.WaveColor != "")
    {
        //цвет+префикс+значение
        sTemp = class'ServerColorMut'.default.WaveColor$class'ServerColorMut'.default.WavePrefix$waveNum;
        if (Level.Game.GetStateName() == 'MatchInProgress')
            ServerState.ServerName @=sTemp;
    }
    //Если задан цвет для времени - отрисовываем время прошедшее с начала карты, если не задан - ничего не пишем
    if(class'ServerColorMut'.default.TimeColor != "")
    {
        //цвет+префикс+значение
        sTemp = " " $ class'ServerColorMut'.default.TimeColor$class'ServerColorMut'.default.TimePrefix$GetTimeString(elapsedTime);
        if (Level.Game.GetStateName() == 'MatchInProgress')
            ServerState.ServerName @=sTemp;
    }
    //Если задан цвет для количества оставшихся монстров - отрисовываем, иначе - ничего не пишем
    if(class'ServerColorMut'.default.MonsterColor != "")
    {
        //цвет+префикс+значение
        sTemp = " "$class'ServerColorMut'.default.MonsterColor$class'ServerColorMut'.default.MonsterPrefix$monsterNum;
        if (Level.Game.GetStateName() == 'MatchInProgress')
            ServerState.ServerName @=sTemp;
    }
    //Задаём надпись и её цвет для ситуации, когда игра ещё не началась
    if    (class'ServerColorMut'.default.NotStartedColor != "")
    {
        sTemp = " "$class'ServerColorMut'.default.NotStartedColor$class'ServerColorMut'.default.NotStartedPrefix;
        if(Level.Game.GetStateName() != 'MatchInProgress')
            ServerState.ServerName @=sTemp;
    }
}

function string GetTimeString(int seconds)
{
    local int cMinutes,cSeconds;
    local string result;
    cMinutes=seconds / 60;
    cSeconds=seconds % 60;
    if(cMinutes<10)
        result$="0";
    result$=string(cMinutes);
    result$=":";
    if(cSeconds<10)
        result$="0";
    result$=string(cSeconds);
    return result;
}

Сделано корявенько, но пока сойдёт)
Кому надо поправить нюансы - правьте ServerColorInfo - вроде там всё предельно просто

Информация о сервере обновляется где-то раз в 10 секунд.

Ещё один инструмент попался,
Пожалуй он поудобнее, чем ServerColor.
UT2k4 Message Colourizer

Ссылка

Автор Flame.
 
Последнее редактирование:
Сверху Снизу