Force Game Start Mutator - Принудительный старт игры

Force Game Start Mutator - Принудительный старт игры

  • Тема закрыта
  • Вы не можете ответить в тему

Force Game Start Mutator - Принудительный старт игры Force Game Start Mutator - Принудительный старт игры Мутатор автоматически стартует игру (не дожидаясь пока все нажмут "готов") через определённый интервал времени. Интервал настраивается в файле ForceGameStartMut.ini...

Geekrainian #1

    • Группа: Администратор
    • Сообщений: 800

    Отправлено:

    Force Game Start Mutator - Принудительный старт игры

    Мутатор автоматически стартует игру (не дожидаясь пока все нажмут “готов”) через определённый интервал времени.

    Интервал настраивается в файле ForceGameStartMut.ini
    (параметр waitingInterval в секундах)
    Добавлять в виде ForceGameStartMut.ForceGameStartMut

    class ForceGameStartMut extends Mutator config(ForceGameStartMut);
    
    var config int waitingInterval;
    var int startWaiting;
    var bool firstPlayerArrived;
    
    function PostBeginPlay()
    {
        startWaiting = Level.TimeSeconds;
        firstPlayerArrived = false;
        SetTimer(5.0, true);
    }
    
    function Timer()
    {
        local int playersN;
    
        // Проверяем состояние игры. Если мы не находимся в ожидании старта, то выходим.
        if (!Level.Game.bWaitingToStartMatch)
            return;
    
        // Проверим, не появились ли игроки. При появлении одного игрока таймер сбрасывается.
        playersN = PlayersNumber();
    
        if (playersN == 0)
            return;
    
        if (playersN > 0 && !firstPlayerArrived)
        {
            firstPlayerArrived = true;
            startWaiting = Level.TimeSeconds;
            return;
        }
    
        // Ждём, пока не пройдёт waitingInterval секунд после появления первого игрока.
        if (Level.TimeSeconds - startWaiting < waitingInterval)
            return;
    
        // Начинаем игру
        Level.Game.StartMatch();
    }
    
    function int PlayersNumber()
    {
        local int N;
        local Controller C;
    
        N = 0;
        for (C = Level.ControllerList; C != None; C = C.nextController)
        {
            if (C.IsA('PlayerController') && C.PlayerReplicationInfo.PlayerID > 0 && C.PlayerReplicationInfo.bWaitingPlayer)
                N++;
        }
        return N;
    }
    
    defaultproperties
    {
        waitingInterval=60
        bAddToServerPackages=True
        GroupName="ForceGameStartMut"
        FriendlyName="ForceGameStartMut"
        Description="Forces game start if some players are not ready for a long period of time"
    }

    Автор: Flame
    Скомпилированная версия: https://yadi.sk/d/giSP0sgucjCuF

    Назад