KF Server Redirect. Редирект на другой сервер

KF Server Redirect. Редирект на другой сервер

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

KF Server Redirect. Редирект на другой сервер KF Server Redirect. Редирект на другой сервер Полная версия: Если ставить мутатор только на тот сервак с которого redirect, то можно и таким ограничиться: Автор: Flame

Geekrainian #1

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

    Отправлено:

    KF Server Redirect. Редирект на другой сервер

    Полная версия:

    Class RedirectMut extends Mutator Config(RedirectMut);
    var config string NewAddress;
    var int currentPort;
    replication
    {
        reliable if(Role == ROLE_Authority)
            currentPort;
    }
    //для клиента ставим таймер, чтобы запустить перенаправление на другой сервер
    //через 5 секунд после присоединения
    //для сервера ищем порт текущего сервака и реплицируем его на клиент
    simulated function PostBeginPlay()
    {
        if(Level.NetMode == NM_Client)
            SetTimer(5.0,false);
        else
            currentPort=Level.Game.GetServerPort();
    }
    //В таймере на клиенте получаем текущий адрес сервера, добавляем ему порт,
    //полученный на сервере и реплицированный на клиента
    //(не нашёл сходу функций для того, чтобы получить текущий порт из под клиента)
    //Сравниваем текущий и новый адреса и если не совпадают - перенаправляем клиента
    simulated function Timer()
    {
        local string currentIP,currentAddress;
        local PlayerController PC;
        PC=Level.GetLocalPlayerController();
        if(PC==none) return;
        currentIP=PC.GetServerIP();
        currentAddress=currentIP$":"$currentPort;
        if(currentAddress!=NewAddress)
            PC.ConsoleCommand("open"@NewAddress);
    }
    defaultproperties
    {
        NewAddress="127.0.0.1:7707"
        GroupName="KF-RedirectMut"
        FriendlyName="RedirectMut"
        Description="RedirectMut"
        bAddToServerPackages=True
        bAlwaysRelevant=True
        RemoteRole=ROLE_SimulatedProxy
    }

    Если ставить мутатор только на тот сервак с которого redirect, то можно и таким ограничиться:

    Class RedirectMut extends Mutator Config(RedirectMut);
    var config string NewAddress;
    simulated function PostBeginPlay()
    {
        local PlayerController PC;
        if(Level.NetMode == NM_Client)
        {
            PC=Level.GetLocalPlayerController();
            PC.ConsoleCommand("open"@NewAddress);
        }
    }
    defaultproperties
    {
        NewAddress="127.0.0.1:7707"
        GroupName="KF-RedirectMut"
        FriendlyName="RedirectMut"
        Description="RedirectMut"
        bAddToServerPackages=True
        bAlwaysRelevant=True
        RemoteRole=ROLE_SimulatedProxy
    }

    Автор: Flame

    Назад