Показать сообщение отдельно
Непрочитано 14.10.2008, 11:54   #6
Аватар для PROGRAMMATOR
Администратор

По умолчанию Ответ: Настроить сервер Lineage Interlude на 3 локальных сети

megaBOT, проблема решаема, но нужна правка ядра, делов на пять минут.
Если интересно, то вот как это сделать на эмуляторе L2jServer:

Лезем и находим в директориях файл ServerList.java, открываем его:

PHP код:
public ServerList(L2LoginClient client)
    {
        
_servers = new FastList<ServerData>();
        
_lastServer client.getLastServer();
        
        for (
GameServerInfo gsi GameServerTable.getInstance().getRegisteredGameServers().values())
        {
            if (
gsi.getStatus() == ServerStatus.STATUS_GM_ONLY && client.getAccessLevel() > 0)
            {
                
// Server is GM-Only but you've got GM Status
                
addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            }
            else if (
gsi.getStatus() != ServerStatus.STATUS_GM_ONLY)
            {
                
// Server is not GM-Only
                
addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            }
            else
            {
                
// Server's GM-Only and you've got no GM-Status
                
addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), ServerStatus.STATUS_DOWNgsi.getId());
            }
        }
    } 
Добавим нужные нам функции

PHP код:
addServer("192.168.0.1"gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            
addServer("192.168.0.2"gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            
addServer("192.168.0.3"gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId()); 
IP-адреса ясное дело, измените на свои, добавляем это всё в код что я приводил выше.

PHP код:
public ServerList(L2LoginClient client)
    {
        
_servers = new FastList<ServerData>();
        
_lastServer client.getLastServer();
        
        for (
GameServerInfo gsi GameServerTable.getInstance().getRegisteredGameServers().values())
        {
            
addServer("192.168.0.1"gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            
addServer("192.168.0.2"gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            
addServer("192.168.0.3"gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            
            if (
gsi.getStatus() == ServerStatus.STATUS_GM_ONLY && client.getAccessLevel() > 0)
            {
                
// Server is GM-Only but you've got GM Status
                
addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            }
            else if (
gsi.getStatus() != ServerStatus.STATUS_GM_ONLY)
            {
                
// Server is not GM-Only
                
addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId());
            }
            else
            {
                
// Server's GM-Only and you've got no GM-Status
                
addServer(client.usesInternalIP() ? gsi.getInternalHost() : gsi.getExternalHost(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), ServerStatus.STATUS_DOWNgsi.getId());
            }
        }
    } 
Всё, главное в логине указать правильный порт, а на IP-адреса вписанные в конфиг он не будет обращать внимания. Один минус данного способа, это то что все три сервера будут отображаться в клиентах всех сетей, но зайти они смогут только на тот, который привязан к их IP-адресу.Если у вас есть более красивое решение проблемы то, дерзайте.

Джамшуд, пробуйте реализовать этим способом, если нет, то загляните на форум L2Emu.

С Ув. Юрий
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Сказали спасибо: