↑ ↓

Рейтинг бездны

Тема в разделе "Помощь", создана пользователем nokiafan1111, 25 мар 2018.

  1. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    Всем привет.
    Использую сборку 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, не помогло, откатил файл до исходного состояния.

    В чем заключается проблема? В клиенте, или в пакетах сервера?
    Можете подсказать где это правиться?
     
  2. Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    А ошибок в консоли нет?
     
  3. Offline

    romanz Ефрейтор Модератор

    743
    165
    76
    Кредиты:
    $26.070,43
    Репутация:
    23
    а ты тут походу нечего не сделаешь ( особо не смотрел ) , мне кажется тут такая же хрень как и с почтой если больше 100 писем сам клиент критует
     
  4. Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Ещё может список слишком длинный, попробуй поменьше в 1 пакет пихать (замени 44 на 10)
     
    Последние данные очков репутации:
    nokiafan1111: 1 Очко 2 апр 2018
    nokiafan1111 нравится это.
  5. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    в консоли кроме как лога дисконекта нету(
    заменил 44 на 10, все равно так же.
    ошибка это во всех открытых сборках 4.8+ , где то наверное в пакетке что-то не то. Может кто сталкивался с этим?
    на 4,7 все нормас, даже с тем кодом, который я скинул выше.
     
  6. Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Значит сам пакет кривой, посмотри SM_ABYSS_RANKING_PLAYERS от 5+ версий, может подойдёт на 4.9
     
  7. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    не подошел, я в тупике :(
     
  8. Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    А так на всех серверах 4.9?
     
  9. Offline

    romanz Ефрейтор Модератор

    743
    165
    76
    Кредиты:
    $26.070,43
    Репутация:
    23
    я думаю вы хней маетесь , если в рейтинге не отображается больше 44 персонажей то скорей всего сам клиент ( окно рейтинга ) больше не вмещает ,
    для начала зайдите на офф сервер и посмотрите какое там количество персонажей отображается в рейтинге
     
  10. Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    На оффе всё нормально, но там версия уже намного выше, так что про 4.9 точно не узнать, но как минимум 300 в топе должно быть.
     
  11. Offline

    SG Shaiy Ефрейтор

    402
    95
    61
    Кредиты:
    $15.767,72
    Репутация:
    9
    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 .
     
    nokiafan1111 нравится это.
  12. Offline

    SG Shaiy Ефрейтор

    402
    95
    61
    Кредиты:
    $15.767,72
    Репутация:
    9
    А вообще надо какие нибудь логи показывать, все ровно для вывода инфы в игре если ошибка то покажет в консоль.
     
  13. Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Думаю там не просто так стоит ограничение 44 тела на пакет) Клиент больше не принимает скорее всего
     
  14. TopicStarter Overlay
    Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    помог этот вариант)
    спс):beer2-38:
     
  15. Offline

    meridianblade Ефрейтор

    199
    19
    51
    Кредиты:
    $375,52
    Репутация:
    3
    Видимо руофф клиент отличается от NA (или под какой там серваки делают)