Не могу присвоить значение

BadStealth

Величайший
Партнер
Emu-Dev
Победитель в номинации 2023
Победитель в номинации 2022
Победитель в номинации 2021
Победитель в номинации 2020
Просветитель
Клиент разработчик
Старожил I степени
Преподаватель
За веру и верность форуму
Победитель в номинации 2019
Сообщения
309
Розыгрыши
0
Репутация
419
Реакции
524
Баллы
1 573
Ребят понимаю что нубский вопрос, но все же. Вобщем у меня из конфига выводится строка с именем FREE
Затем я ее пытаюсь сравнить в другом файле со строкой "FREE"
Из конфига строка возвращает FREE
Код:
String TYPE = Config.SERVER_TYPE;

    if(TYPE.equalsIgnoreCase("FREE"))
    {
         bits |= 0x40;
    }
Все компилиться но при вводе выходят ошибки. Подскажите как можно сравнить эти 2 строки.
Пытался поменять
Код:
String TYPE = Config.SERVER_TYPE;

    if("FREE".equalsIgnoreCase(TYPE))
    {
         bits |= 0x40;
    }
Но сравнение не проходит.
На шмакси создал подобную тему с вопросом-но там что-то тихо.
Ребят как мне сравнить строку из конфига со строкой равной "FREE"
 
Ребят понимаю что нубский вопрос, но все же. Вобщем у меня из конфига выводится строка с именем FREE
Затем я ее пытаюсь сравнить в другом файле со строкой "FREE"
Из конфига строка возвращает FREE
Код:
String TYPE = Config.SERVER_TYPE;

    if(TYPE.equalsIgnoreCase("FREE"))
    {
         bits |= 0x40;
    }
Все компилиться но при вводе выходят ошибки. Подскажите как можно сравнить эти 2 строки.
Пытался поменять
Код:
String TYPE = Config.SERVER_TYPE;

    if("FREE".equalsIgnoreCase(TYPE))
    {
         bits |= 0x40;
    }
Но сравнение не проходит.
На шмакси создал подобную тему с вопросом-но там что-то тихо.
Ребят как мне сравнить строку из конфига со строкой равной "FREE"
Какие сурсы, дай кусок норм кода, лог ошибки, побольше инфы.
 
Сурсы VoronTeam.
Код:
package l2p.loginserver.serverpackets;

import javolution.util.FastList;
import l2p.gameserver.loginservercon.AdvIP;
import l2p.loginserver.GameServerTable;
import l2p.loginserver.L2LoginClient;
import l2p.loginserver.gameservercon.GameServerInfo;
import l2p.loginserver.gameservercon.gspackets.ServerStatus;
import l2p.util.Util;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import l2p.Config;

public final class ServerList extends L2LoginServerPacket
{
    private List<ServerData> _servers;
    private int _lastServer;

    class ServerData
    {
        String ip;
        int port;
        boolean pvp;
        int currentPlayers;
        int maxPlayers;
        boolean testServer;
        boolean brackets;
        boolean clock;
        int status;
        public int server_id;
        boolean fail;

        ServerData(String pIp, int pPort, boolean pPvp, boolean pTestServer, int pCurrentPlayers, int pMaxPlayers, boolean pBrackets, boolean pClock, int pStatus, int pServer_id, boolean fail)
        {
            ip = pIp;
            port = pPort;
            pvp = pPvp;
            testServer = pTestServer;
            currentPlayers = pCurrentPlayers;
            maxPlayers = pMaxPlayers;
            brackets = pBrackets;
            clock = pClock;
            status = pStatus;
            server_id = pServer_id;
            this.fail = fail;
        }
    }

    public ServerList(L2LoginClient client, boolean fail)
    {
        _servers = new FastList<ServerData>();
        _lastServer = client.getLastServer();
        for(GameServerInfo gsi : GameServerTable.getInstance().getRegisteredGameServers().values())
        {
            Boolean added = false;
            if(client.getIpAddress().equals("Null IP"))
            {
                continue;
            }
            String ipAddr = Util.isInternalIP(client.getIpAddress()) ? gsi.getInternalHost() : gsi.getExternalHost();
            if(ipAddr == null || ipAddr.equals("Null IP"))
            {
                continue;
            }
            if(gsi.getAdvIP() != null)
            {
                for(AdvIP ip : gsi.getAdvIP())
                {
                    if(!added && GameServerTable.getInstance().CheckSubNet(client.getConnection().getSocket().getInetAddress().getHostAddress(), ip))
                    {
                        added = true;
                        addServer(ip.ipadress, gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId(), fail);
                    }
                }
            }
            if(!added)
            {
                if(ipAddr.equals("*"))
                {
                    addServer(client.getConnection().getSocket().getLocalAddress().getHostAddress(), gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId(), fail);
                }
                else
                {
                    addServer(ipAddr, gsi.getPort(), gsi.isPvp(), gsi.isTestServer(), gsi.getCurrentPlayerCount(), gsi.getMaxPlayers(), gsi.isShowingBrackets(), gsi.isShowingClock(), gsi.getStatus(), gsi.getId(), fail);
                }
            }
        }
    }

    public void addServer(String ip, int port, boolean pvp, boolean testServer, int currentPlayer, int maxPlayer, boolean brackets, boolean clock, int status, int server_id, boolean fail)
    {
        _servers.add(new ServerData(ip, port, pvp, testServer, currentPlayer, maxPlayer, brackets, clock, status, server_id, fail));
    }

    @Override
    public void write()
    {
        writeC(0x04);
        writeC(_servers.size());
        writeC(_lastServer);
       
        String TYPE = Config.SERVER_TYPE;
       
        for(ServerData server : _servers)
        {
            writeC(server.server_id);
            try
            {
                InetAddress i4 = InetAddress.getByName(server.ip);
                byte[] raw = i4.getAddress();
                writeC(raw[0] & 0xff);
                writeC(raw[1] & 0xff);
                writeC(raw[2] & 0xff);
                writeC(raw[3] & 0xff);
            }
            catch(UnknownHostException e)
            {
                e.printStackTrace();
                writeC(127);
                writeC(0);
                writeC(0);
                writeC(1);
            }
            writeD(server.port);
            writeC(0x00); // age limit
            writeC(server.pvp ? 0x01 : 0x00);
            writeH(server.currentPlayers);
            writeH(server.maxPlayers);
            writeC((server.status == ServerStatus.STATUS_DOWN || server.fail) ? 0x00 : 0x01);
            int bits = 0;
            if(server.testServer)
            {
                bits |= 0x04;
            }
            if(server.clock)
            {
                bits |= 0x02;
            }
           
            if(TYPE.equalsIgnoreCase("FREE"))
            {
                bits |= 0x40;
            }
            if(TYPE.equalsIgnoreCase("EVENT"))
            {
                bits |= 0x20;
            }
            // 0x10 - Character creation restricted
            // 0x20 - Event Server
            // 0x40 - Free Server
            writeD(bits);
            writeC(server.brackets ? 0x01 : 0x00);
        }
    }
}
Config.java

Код:
  public static String SERVER_TYPE;
Значение берется из конфига Normal, Free, Event и т.д.
 
Ребят понимаю что нубский вопрос, но все же. Вобщем у меня из конфига выводится строка с именем FREE
Затем я ее пытаюсь сравнить в другом файле со строкой "FREE"
Из конфига строка возвращает FREE
Код:
String TYPE = Config.SERVER_TYPE;

    if(TYPE.equalsIgnoreCase("FREE"))
    {
         bits |= 0x40;
    }
Все компилиться но при вводе выходят ошибки. Подскажите как можно сравнить эти 2 строки.
Пытался поменять
Код:
String TYPE = Config.SERVER_TYPE;

    if("FREE".equalsIgnoreCase(TYPE))
    {
         bits |= 0x40;
    }
Но сравнение не проходит.
На шмакси создал подобную тему с вопросом-но там что-то тихо.
Ребят как мне сравнить строку из конфига со строкой равной "FREE"

Вообще-то оба варианта одинаковы и проверка работает верно.
Вы забыли о главном - выложить лог ошибки. Могу предположить, что проблема в том, что TYPE == null (конфиг не парсится).
 
Вы правы если делаю по первому варианту то появляется ошибка NullPointerException.
По второму ошибки нет но и не заходит. А как понять не парсится конфиг. Что сделать?
 
Сейчас прописал вместо
Код:
String TYPE = Config.SERVER_TYPE;
это
Код:
String TYPE = "FREE";
Проверка прошла успешно все нормально работает. Но как сделать чтобы бралось значение с конфига? И почему не парсится?
В конфиге вывел через Log значение- все нормально присваиваются значения. Вот засада.
 
Вы правы если делаю по первому варианту то появляется ошибка NullPointerException.
По второму ошибки нет но и не заходит. А как понять не парсится конфиг. Что сделать?
Потому-что во-втором варианте в equalsIgnoreCase() есть проверка на null входного значения.

Сейчас прописал вместо
Код:
String TYPE = Config.SERVER_TYPE;
это
Код:
String TYPE = "FREE";
Проверка прошла успешно все нормально работает. Но как сделать чтобы бралось значение с конфига? И почему не парсится?
В конфиге вывел через Log значение- все нормально присваиваются значения. Вот засада.

Если пользуетесь стандартными библиотеками и конфигурации грузятся с помощью Properties, то:
Код:
public static String SERVER_TYPE;
...
SERVER_TYPE = properties.getProperty("имя в конфиге", "дефолтное значение");


P.S. Вы бы лучше Config.java выложили, было бы понятней в чем проблема.
 
использовать это в 2016 :pandaredlol:
 
Вот так в Config.java прописано.
Код:
public static String SERVER_TYPE;
Код:
SERVER_TYPE = getProperty(serverSettings, "ServerType", "Normal").trim();

Код:
private static String getProperty(Properties prop, String name, String _default)
    {
        String s = getProperty(prop, name);
        return s == null ? _default : s;
    }

Я думаю что в методе getProperty что-то не так. Или там пробелы или запятые лишние присваивает. Поэтому и разные получаются.
 
В config.java при проверке выводит значение.
А в ServerList.java при проверке выводит что строка null
Выходит что не читает данные с config.java.
 
Разобрался в чем была проблема. Вобщем у меня Config.java разбит на загрузку GamaServer конфигов и LoginServer конфигов.
Значение у меня бралось из GameServer поэтому выдавало null.
Когда переписал в LoginServer все стало нормально работать, но при условии что эти самые переменные из конфига Server.ini переписать в LoginServer.ini
Теперь вопрос как сделать чтобы читалось с файла Gamesrver.ini и передавалось в LoginServer_MODE(Загрузка конфигов для LoginServer)???
 
Сервер коммуникации смотреть
 
Сервер коммуникации смотреть
А разве нельзя как-то перенести значение. Ведь оно уже объявлено в файле.
public static String SERVER_TYPE;----это то полученное значение с конфигов GameServer.
Вот там прописано что берется значение.
SERVER_TYPE = getProperty(serverSettings, "ServerType", "Normal").trim();
LoginServer
LOGIN_SERVER_TYPE = SERVER_TYPE; думал так но не присваивается.
Сильно не пинайте просто копаюсь в сервере когда есть свободное время. Уже голова кругом и иногда очень сильно туплю.
 
А разве нельзя как-то перенести значение. Ведь оно уже объявлено в файле.
public static String SERVER_TYPE;----это то полученное значение с конфигов GameServer.
Вот там прописано что берется значение.
SERVER_TYPE = getProperty(serverSettings, "ServerType", "Normal").trim();
LoginServer
LOGIN_SERVER_TYPE = SERVER_TYPE; думал так но не присваивается.
Сильно не пинайте просто копаюсь в сервере когда есть свободное время. Уже голова кругом и иногда очень сильно туплю.
Смотрим сервер коммуникации и делаем.
 
тимвивер в студию, посмотрим.

при себе совсем желательно иметь intellj idea, блокнотом не особо удобно.
 
Вот из-за этих строк я думаю и идет такое
Код:
 if(Server.SERVER_MODE == Server.MODE_GAMESERVER || Server.SERVER_MODE == Server.MODE_COMBOSERVER)
Код:
else if(Server.SERVER_MODE == Server.MODE_LOGINSERVER)
 
Вот из-за этих строк я думаю и идет такое
Код:
 if(Server.SERVER_MODE == Server.MODE_GAMESERVER || Server.SERVER_MODE == Server.MODE_COMBOSERVER)
Код:
else if(Server.SERVER_MODE == Server.MODE_LOGINSERVER)

я уже написал чё нужно сделать. уеду через 20-30 минут. поторопишься - сейчас посмотрим.
 
Назад
Сверху Снизу