Иконка ресурса

случайная картинка экрана загрузки (скрипт+картинки) ( Interlude random changable Loading Screen ) base version

Нет прав для скачивания
для внедрения такого перебора требуется сборка интерфейса(скачать сам сборщик можно в подписи профиля), а именно замена скрипта в данном случае это LoadingWnd_e.uc, имена подгружаемых картинок и в каком паке они должны быть думаю понять не сложно из скрипта.
в архиве добавлен типичный интерфейс.ю с этой заменой. и пак картинок который наскрёб с разных клиентов.

если у вас кастомный то придётся имплементировать.
видео самой работы скрипта

если интересует только скрипт, комментарии тут есть, думаю будет понятно ( для билда их можно удалить )
Код:
class LoadingWnd_e extends LoadingWnd;

var int ValidIndexes[100];     // список индексов реально существующих текстур
var int ValidCount;            // количество найденных текстур
var int UsedIndexes[100];      // флаги использованных текстур
var int UsedCount;             // сколько уже показано

const TIMER_ID = 1;
const TIMER_DELAY = 500;

//------------------------------------------------------
// ИНИЦИАЛИЗАЦИЯ
//------------------------------------------------------
function OnLoad()
{
    RegisterEvent(EV_Restart);
    class'UIAPI_WINDOW'.static.SetUITimer("LoadingWnd", TIMER_ID, TIMER_DELAY);

    BuildValidTextureList();   // автопроверка и сбор списка текстур
}

//------------------------------------------------------
// СОБЫТИЯ
//------------------------------------------------------
function OnEvent(int Event_ID, string param)
{
    if (Event_ID == EV_Restart)
    {
        UpdateBackground();
    }
}

//------------------------------------------------------
// ТАЙМЕР
//------------------------------------------------------
function OnTimer(int TimerID)
{
    if (TimerID == TIMER_ID)
    {
        UpdateBackground();
    }
}

//------------------------------------------------------
// СБОР СПИСКА СУЩЕСТВУЮЩИХ ТЕКСТУР
//------------------------------------------------------
function BuildValidTextureList()
{
    local int i;
    local string texName;

    ValidCount = 0;

    for (i = 0; i < 100; i++)
    {
        texName = GetTextureName(i);
        if (TextureExists(texName))
        {
            ValidIndexes[ValidCount] = i;
            ValidCount++;
        }
    }

    if (ValidCount > 0)
        Debug("✅ Found " $ string(ValidCount) $ " valid loading textures.");
    else
        Debug("⚠ No valid textures found in range 0..99!");
}

//------------------------------------------------------
// ОБНОВЛЕНИЕ ФОНА
//------------------------------------------------------
function UpdateBackground()
{
    local string tex;
    local int idx;

    idx = GetNextValidIndex();

    if (idx >= 0)
    {
        tex = GetTextureName(idx);
        class'UIAPI_TEXTURECTRL'.static.SetTexture("LoadingWnd.BackTex", tex);
        Debug("🖼 Loaded texture: " $ tex);
    }
    else
    {
        tex = GetFallbackTexture();
        class'UIAPI_TEXTURECTRL'.static.SetTexture("LoadingWnd.BackTex", tex);
        Debug("🔁 Using fallback texture: " $ tex);
    }
}

//------------------------------------------------------
// ПОЛУЧЕНИЕ СЛЕДУЮЩЕГО СЛУЧАЙНОГО ИНДЕКСА
//------------------------------------------------------
function int GetNextValidIndex()
{
    local int randomIdx, tries;

    if (ValidCount == 0)
        return -1;

    // если все уже использованы — сбросим перед новым циклом
    if (UsedCount >= ValidCount)
    {
        Debug("🔄 All textures shown. Resetting used list...");
        ResetUsedIndexes();
    }

    for (tries = 0; tries < 100; tries++)
    {
        randomIdx = Rand(ValidCount);
        if (UsedIndexes[randomIdx] == 0)
        {
            UsedIndexes[randomIdx] = 1;
            UsedCount++;
            return ValidIndexes[randomIdx];
        }
    }

    // если вдруг не нашлось (не должно случиться)
    return -1;
}

//------------------------------------------------------
// ПОМОЩНИКИ
//------------------------------------------------------

// Формирует имя текстуры по индексу
function string GetTextureName(int idx)
{
    return "L2loading.loading" $ Right("00" $ idx, 2);
}

// Проверяет наличие текстуры в ресурсах
function bool TextureExists(string texName)
{
    local Texture t;
    t = Texture(DynamicLoadObject(texName, class'Texture', true));
    return t != None;
}

// Сброс использованных индексов
function ResetUsedIndexes()
{
    local int i;
    for (i = 0; i < 100; i++)
        UsedIndexes[i] = 0;
    UsedCount = 0;
    Debug("🔁 Reset used texture list");
}

// Резервная текстура
function string GetFallbackTexture()
{
    return "L2Font-e.loading_02-e";
}

defaultproperties
{
}
Реакции: Tassadar и kick

Последние рецензии

тут только 5
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…