Всем привет. Использую сборку 4.9 геров с клиентом 4.9 руофф. Столкнулся с 1 проблемой, если в рейтинге бездны свыше 44 персонажа, то при потыке открыть окно рейтинга клиент критует, при этом ошибок в логах нету, идет просто дисконект и вылетает сендлог. Копался и нарыл этот файл AbyssRankingCache с: Код: private List<SM_ABYSS_RANKING_PLAYERS> generatePacketsForRace(Race race) { //players orderd by ap ArrayList<AbyssRankingResult> list = getDAO().getAbyssRankingPlayers(race, RankingConfig.TOP_RANKING_MAX_OFFLINE_DAYS); int page = 1; List<SM_ABYSS_RANKING_PLAYERS> playerPackets = new ArrayList<SM_ABYSS_RANKING_PLAYERS>(); for (int i = 0; i < list.size(); i += 44) { if (list.size() > i + 44) { playerPackets.add(new SM_ABYSS_RANKING_PLAYERS(lastUpdate, list.subList(i, i + 44), race, page, false)); } else { playerPackets.add(new SM_ABYSS_RANKING_PLAYERS(lastUpdate, list.subList(i, list.size()), race, page, true)); } page++; } return playerPackets; } Изменил значение 44 на 300, не помогло, откатил файл до исходного состояния. В чем заключается проблема? В клиенте, или в пакетах сервера? Можете подсказать где это правиться?
а ты тут походу нечего не сделаешь ( особо не смотрел ) , мне кажется тут такая же хрень как и с почтой если больше 100 писем сам клиент критует
в консоли кроме как лога дисконекта нету( заменил 44 на 10, все равно так же. ошибка это во всех открытых сборках 4.8+ , где то наверное в пакетке что-то не то. Может кто сталкивался с этим? на 4,7 все нормас, даже с тем кодом, который я скинул выше.
я думаю вы хней маетесь , если в рейтинге не отображается больше 44 персонажей то скорей всего сам клиент ( окно рейтинга ) больше не вмещает , для начала зайдите на офф сервер и посмотрите какое там количество персонажей отображается в рейтинге
На оффе всё нормально, но там версия уже намного выше, так что про 4.9 точно не узнать, но как минимум 300 в топе должно быть.
private List<SM_ABYSS_RANKING_PLAYERS> generatePacketsForRace(Race race) { ArrayList<AbyssRankingResult> list = getDAO().getAbyssRankingPlayers(race, AbyssRankEnum.STAR1_OFFICER.getRequiredGP(), RankingConfig.TOP_RANKING_MAX_OFFLINE_DAYS); int page = 1; List<SM_ABYSS_RANKING_PLAYERS> playerPackets = new ArrayList(); for (int i = 0; i < list.size(); i += 300) { if (list.size() > i + 300) { playerPackets.add(new SM_ABYSS_RANKING_PLAYERS(this.lastUpdate, list.subList(i, i + 300), race, page, false)); } else { playerPackets.add(new SM_ABYSS_RANKING_PLAYERS(this.lastUpdate, list.subList(i, list.size()), race, page, true)); } page++; } return playerPackets; } public class SM_ABYSS_RANKING_PLAYERS @Override protected void writeImpl(AionConnection con) { writeD(race);// 0:Elyos 1:Asmo writeD(lastUpdate);// Date writeD(page); writeD(isEndPacket ? 0x7F : 0);// 0:Nothing 1:Update Table writeH(data.size());// list size for (AbyssRankingResult rs : data) { writeD(rs.getRankPos());// Current Rank writeD(rs.getPlayerAbyssRank());// Abyss rank writeD((rs.getOldRankPos() == 0) ? 501 : rs.getOldRankPos());// Old Rank writeD(rs.getPlayerId()); // PlayerID writeD(race); writeD(rs.getPlayerClass().getClassId());// Class Id writeD(0); // Sex ? 0=male / 1=female writeQ(rs.getPlayerAP());// Abyss Points writeD(rs.getPlayerGP());// Glory Points 4.5.2 writeH(rs.getPlayerLevel()); writeS(rs.getPlayerName(), 52);// Player Name writeS(rs.getLegionName(), 82);// Legion Name writeD(0);//unk 3.5 } } Вот структура пакета для 4.9 .
А вообще надо какие нибудь логи показывать, все ровно для вывода инфы в игре если ошибка то покажет в консоль.