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_DOWN, gsi.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_DOWN, gsi.getId());
}
}
}
Всё, главное в логине указать правильный порт, а на IP-адреса вписанные в конфиг он не будет обращать внимания. Один минус данного способа, это то что все три сервера будут отображаться в клиентах всех сетей, но зайти они смогут только на тот, который привязан к их IP-адресу.Если у вас есть более красивое решение проблемы то, дерзайте.
Джамшуд, пробуйте реализовать этим способом, если нет, то загляните на форум L2Emu.
С Ув. Юрий