Отображение статуса сервера.

Die

Прославленный
Проверенный
Старожил I степени
Сообщения
467
Розыгрыши
0
Решения
1
Репутация
606
Реакции
212
Баллы
1 438
Хроники
  1. Fafurion
Исходники
Присутствуют
Сборка
l2jmobius
Добрый вечер, появился такой вопрос. Какой пакет отвечает за то, где отображать сервер в выборе сервера (классик, или обычный).
 
Решение
Добрый вечер, появился такой вопрос. Какой пакет отвечает за то, где отображать сервер в выборе сервера (классик, или обычный).
VERSION_CHECK или как его обзывают "KeyPacket"
Java:
    @Override
    public void write()
    {
        ServerPackets.VERSION_CHECK.writeId(this);
        writeByte(_result); // 0 - wrong protocol, 1 - protocol ok
        for (int i = 0; i < 8; i++)
        {
            writeByte(_key[i]); // key
        }
        writeInt(Config.PACKET_ENCRYPTION); // use blowfish encryption
        writeInt(Config.SERVER_ID); // server id
        writeByte(0); // merged server
        writeInt(0); // obfuscation key
        writeByte(0);    // essence 0x04, classic 0x01
        writeByte(0);    // arena 0x01 = not...
Добрый вечер, появился такой вопрос. Какой пакет отвечает за то, где отображать сервер в выборе сервера (классик, или обычный).
VERSION_CHECK или как его обзывают "KeyPacket"
Java:
    @Override
    public void write()
    {
        ServerPackets.VERSION_CHECK.writeId(this);
        writeByte(_result); // 0 - wrong protocol, 1 - protocol ok
        for (int i = 0; i < 8; i++)
        {
            writeByte(_key[i]); // key
        }
        writeInt(Config.PACKET_ENCRYPTION); // use blowfish encryption
        writeInt(Config.SERVER_ID); // server id
        writeByte(0); // merged server
        writeInt(0); // obfuscation key
        writeByte(0);    // essence 0x04, classic 0x01
        writeByte(0);    // arena 0x01 = not used, send Queue info and after nothing
        writeByte(0);    // 1 == no play button
    }

VERSION_CHECK или как его обзывают "KeyPacket"
Java:
    @Override
    public void write()
    {
        ServerPackets.VERSION_CHECK.writeId(this);
        writeByte(_result); // 0 - wrong protocol, 1 - protocol ok
        for (int i = 0; i < 8; i++)
        {
            writeByte(_key[i]); // key
        }
        writeInt(Config.PACKET_ENCRYPTION); // use blowfish encryption
        writeInt(Config.SERVER_ID); // server id
        writeByte(0); // merged server
        writeInt(0); // obfuscation key
        writeByte(0);    // essence 0x04, classic 0x01
        writeByte(0);    // arena 0x01 = not used, send Queue info and after nothing
        writeByte(0);    // 1 == no play button
    }
Если что - это чисто для понимания клиенту - какие ДАТ файлы грузить.
Для отображения в меню выбора сервера - в пакете ЛОГИН СЕРВЕР "SERVER_LIST" нужно манипулировать со значениями _serverType.

Java:
        LoginServerPackets.SERVER_LIST.writeId(this);
        writeByte(_servers.size());
        writeByte(_lastServer);
        for (ServerData server : _servers)
        {
            writeByte(server._serverId); // server id
          
            writeByte(server._ip[0] & 0xff);
            writeByte(server._ip[1] & 0xff);
            writeByte(server._ip[2] & 0xff);
            writeByte(server._ip[3] & 0xff);
          
            writeInt(server._port);
            writeByte(server._ageLimit); // Age Limit 0, 15, 18
            writeByte(server._pvp ? 0x01 : 0x00);
            writeShort(server._currentPlayers);
            writeShort(server._maxPlayers);
            writeByte(server._status == ServerStatus.STATUS_DOWN ? 0x00 : 0x01);
            writeInt(server._serverType); // 1: Normal, 2: Relax, 4: Public Test, 8: No Label, 16: Character Creation Restricted, 32: Event, 64: Free
            writeByte(server._brackets ? 0x01 : 0x00);
        }
А значения там...
Java:
case "normal" -> serverType |= 0x01;
case "classic" -> serverType |= 0x400;
case "aden" -> serverType |= 0x1000;
 
Решение
LoginServerPackets.SERVER_LIST.writeId(this);
writeByte(_servers.size());
writeByte(_lastServer);
for (ServerData server : _servers)
{
writeByte(server._serverId); // server id

writeByte(server._ip[0] & 0xff);
writeByte(server._ip[1] & 0xff);
writeByte(server._ip[2] & 0xff);
writeByte(server._ip[3] & 0xff);

writeInt(server._port);
writeByte(server._ageLimit); // Age Limit 0, 15, 18
writeByte(server._pvp ? 0x01 : 0x00);
writeShort(server._currentPlayers);
writeShort(server._maxPlayers);
writeByte(server._status == ServerStatus.STATUS_DOWN ? 0x00 : 0x01);
writeInt(server._serverType); // 1: Normal, 2: Relax, 4: Public Test, 8: No Label, 16: Character Creation Restricted, 32: Event, 64: Free
writeByte(server._brackets ? 0x01 : 0x00);
}
Можешь залить плиз пак пакетов игровой сервер - клиент и наоборот, сколько сборок не открываю, криво прописано, одно противоречит другому, у тебя тут вроде все понятно написано :)))
 
Назад
Сверху Снизу