Custom Screen Message

Тема в разделе "Общего назначения", создана пользователем Arckon., 28 ноя 2016.

  1. Arckon.

    Arckon. Соучастник

    Приветствую, Товарищи.
    Суть: при загрузке карты по умолчанию на экране выводится следующее:

    [​IMG]
    Каким образом можно заменить текст, выделенный желтой рамкой на свой? Естественно, сообщения будут не однотипными, а различными, язык можно оставить по умолчанию - английский. Может, где-то следует прописывать? Со времен 2013 года на некоторых серверах замечал такую особенность. Буду благодарен, если кто-то выложит рабочий мутатор с пояснениями.

    P.S. Прошу прощения, если пишу не в той теме.
     
  2. Flame

    Flame -Заслуженый кодер форума-

    Функция KFMod.KFGameType.GetLoadingHint
    Берутся значения из KFHints в defaultproperties
    Только вот не знаю - достаточно ли будет поправить KFHints - ибо они localized, а значит клиент игры тащит значение из int и прочих файлов локализации

    Чтобы точно работало - можешь поправить саму функцию (придётся свой GameType делать, наследовать KFGameType), можно прямо в функции возвращать, можно свой массив сделать, элементы которого будут возвращаться
    Если это проблема - могу сделать рабочий пример
     
  3. Arckon.

    Arckon. Соучастник

    Да, хочется глянуть на пример.
     
  4. RaideN111

    RaideN111 Игровая Администрация

    В своем геймтайпе достаточно прописать эти KFHints. Вот пример как это сделано у меня:

    class DZ_GameType extends MCGameType config;


    ..................

    defaultproperties
    {
    //свои подсказки при подключении
    KFHints(0)="Вас приветствует проект Dead Zone... наслаждайтесь..."
    KFHints(1)="Посетите нашу группу ВК: VK.COM/KF_DZ"
    .............................
    KFHints(14)="Вас приветствует проект Dead Zone... наслаждайтесь..."
    }

    Мой геймтайп унаследован от Монстерконфига, который унаследован от KFGameType
     
    Essence и Flame нравится это.
  5. gall87

    gall87 Капо

    а подскажите, что бы еще и музыка проигрывалась во время загрузки, как бы сделать по проще?
     
  6. Flame

    Flame -Заслуженый кодер форума-

    Ну фиг знает
    Я перестраховался)
    Через внешний мутатор не помогло заменить значения KFHints

    Поэтому сделал такой SRGameType
    Код:
    class SRGameType extends KFGameType;
    
    var array<string> SRHints;
    
    static function string GetLoadingHint( PlayerController PC, string MapName, Color ColorHint )
    {
        local Material Shot;
        local UT2K4ServerLoading LO;
        local LevelSummary LS;
        local array<Material> TexToUse;
        local int i,j;
        local LoadingInfoImage CI;
    
        LS = LevelSummary(DynamicLoadObject(MapName$".LevelSummary", Class'LevelSummary', True));
        if( LS!=None && LS.ScreenShot!=None )
            Shot = LS.ScreenShot;
        if( Shot==None )
            Shot = Material(DynamicLoadObject(MapName$".ScreenShot", Class'Material', True));
        if( Shot!=None )
        {
            if( MaterialSequence(Shot)!=None )
            {
                For( i=0; i<MaterialSequence(Shot).SequenceItems.Length; i++ )
                {
                    TexToUse.Length = j+1;
                    TexToUse[j] = MaterialSequence(Shot).SequenceItems[i].Material;
                    j++;
                }
                Shot = TexToUse[Rand(j)];
            }
            if( Texture(Shot) != none )
                Texture(Shot).LODSet = LODSET_Interface;
            foreach PC.AllObjects(Class'UT2K4ServerLoading', LO)
            {
                CI = New(None)Class'LoadingInfoImage';
                LO.Operations[LO.Operations.Length] = CI;
                CI.Image = Shot;
                if( LS!=None )
                {
                    CI.MapTitle = LS.Title;
                    CI.MapAuthor = LS.Author;
                }
            }
        }
        return default.SRHints[Rand(default.SRHints.Length)];
    }
    
    
    defaultproperties
    {
        SRHints(0)="0"
        SRHints(1)="1"
        SRHints(2)="2"
        SRHints(3)="3"
        SRHints(4)="4"
        SRHints(5)="5"
        SRHints(6)="6"
        SRHints(7)="7"
        SRHints(8)="8"
        SRHints(9)="9"
        SRHints(10)="10"
        SRHints(11)="11"
        SRHints(12)="12"
        SRHints(13)="13"
        SRHints(14)="14"
    }
    
    Ну и добавил в ServerPerksMut.ServerPerksMut авто переход на SRGameType
    Код:
    Class ServerPerksMut extends Mutator Config(ServerPerks);
    
    ...
    function PostBeginPlay()
    {
        ...
        KFGT = KFGameType(Level.Game);
        if( Level.Game.HUDType~=Class'KFGameType'.Default.HUDType || Level.Game.HUDType~=Class'KFStoryGameInfo'.Default.HUDType )
        {
            bEnabledEmoIcons = bEnableChatIcons;
            Level.Game.HUDType = string(SRHudType);
        }
        //Flame. Добавим переход куда-нибудь сюда
        if(SRGameType(Level.Game)==none)
            Level.ServerTravel("?game=ServerPerks.SRGameType",true);
        ...
    }
    
    Соответственно правь значения массива SRHints

    Ссылка на исходники и уже скомпилированный SP

    Итог:
    [​IMG]
     
    Essence нравится это.
  7. kok-s

    kok-s Консильери

    Кому интересно:

    Можно использовать специальные коды цветов Unreal что бы раскрасить надписи. Например:
    KFHints(0)="шш@В меню настроек вы можете"
    Таким образом получим жёлтую надпись.

    Есть ещё интересный момент использование символов ||. Эти символы служат для переноса строк. Пример:
    KFHints(0)="В меню || настроек вы можете"
    Тогда надпись будет разделена.
     
    Flame, WipeMaster и Essence нравится это.