diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java index 687050007b..e0c4be72fe 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/GameServer.java @@ -141,6 +141,7 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PremiumManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeGuardManager; @@ -351,6 +352,7 @@ public class GameServer CursedWeaponsManager.getInstance(); TransformData.getInstance(); BotReportTable.getInstance(); + RankManager.getInstance(); if (Config.SELLBUFF_ENABLED) { SellBuffsManager.getInstance(); diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/RankManager.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/RankManager.java index 3580a1d165..a850f9be56 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/RankManager.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/instancemanager/RankManager.java @@ -37,11 +37,13 @@ public class RankManager { private static final Logger LOGGER = Logger.getLogger(RankManager.class.getName()); - private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC"; - private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC"; + public static final int PLAYER_LIMIT = 100; - private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC"; - private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC"; + private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC LIMIT " + PLAYER_LIMIT; + private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC LIMIT " + PLAYER_LIMIT; + + private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT; + private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT; private final Map _mainList = new ConcurrentHashMap<>(); private Map _snapshotList = new ConcurrentHashMap<>(); @@ -53,26 +55,6 @@ public class RankManager ThreadPool.scheduleAtFixedRate(this::update, 0, 1800000); } - public Map getRankList() - { - return _mainList; - } - - public Map getSnapshotList() - { - return _snapshotList; - } - - public Map getOlyRankList() - { - return _mainOlyList; - } - - public Map getSnapshotOlyList() - { - return _snapshotOlyList; - } - private synchronized void update() { // Load charIds All @@ -80,6 +62,7 @@ public class RankManager _mainList.clear(); _snapshotOlyList = _mainOlyList; _mainOlyList.clear(); + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(SELECT_CHARACTERS)) { @@ -117,6 +100,7 @@ public class RankManager { LOGGER.log(Level.WARNING, "Could not load chars total rank data: " + this + " - " + e.getMessage(), e); } + // load olympiad data. try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(GET_CURRENT_CYCLE_DATA)) @@ -237,13 +221,33 @@ public class RankManager } } - private static class SingletonHolder + public Map getRankList() { - protected static final RankManager INSTANCE = new RankManager(); + return _mainList; + } + + public Map getSnapshotList() + { + return _snapshotList; + } + + public Map getOlyRankList() + { + return _mainOlyList; + } + + public Map getSnapshotOlyList() + { + return _snapshotOlyList; } public static RankManager getInstance() { return SingletonHolder.INSTANCE; } + + private static class SingletonHolder + { + protected static final RankManager INSTANCE = new RankManager(); + } } \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java index 707137fe27..ae3b69c3e3 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java @@ -37,5 +37,4 @@ public class RequestOlympiadMyRankingInfo implements IClientIncomingPacket { client.sendPacket(new ExOlympiadMyRankingInfo(client.getPlayer())); } - } diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java index 3f90cdfbbc..fa971621d4 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java @@ -48,5 +48,4 @@ public class RequestOlympiadRankingInfo implements IClientIncomingPacket { client.sendPacket(new ExOlympiadRankingInfo(client.getPlayer(), _tabId, _rankingType, _unk, _classId, _serverId)); } - } diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java index 0b53d8a99b..06a087c36e 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java @@ -25,6 +25,7 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.impl.ClanTable; +import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.entity.Hero; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -34,11 +35,11 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; */ public class ExOlympiadHeroAndLegendInfo implements IClientOutgoingPacket { - private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC"; + // TODO: Move query and store data at RankManager. + private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC LIMIT " + RankManager.PLAYER_LIMIT; public ExOlympiadHeroAndLegendInfo() { - } @Override diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java index 33ef57609e..46f5033131 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java @@ -26,6 +26,7 @@ import java.util.GregorianCalendar; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.entity.Hero; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; */ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket { - private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ?"; - private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ?"; + // TODO: Move query and store data at RankManager. + private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT; + private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT; + private final PlayerInstance _player; public ExOlympiadMyRankingInfo(PlayerInstance player) @@ -98,6 +101,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket { LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage()); } + int previousPlace = 0; int previousWins = 0; int previousLoses = 0; @@ -126,6 +130,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket { LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage()); } + int heroCount = 0; int legendCount = 0; if (Hero.getInstance().getCompleteHeroes().containsKey(_player.getObjectId())) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java index 7938927e07..e353e889b8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/GameServer.java @@ -138,6 +138,7 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager; import org.l2jmobius.gameserver.instancemanager.PremiumManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.ServerRestartManager; import org.l2jmobius.gameserver.instancemanager.SiegeGuardManager; @@ -347,6 +348,7 @@ public class GameServer CursedWeaponsManager.getInstance(); TransformData.getInstance(); BotReportTable.getInstance(); + RankManager.getInstance(); if (Config.SELLBUFF_ENABLED) { SellBuffsManager.getInstance(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/RankManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/RankManager.java index 3580a1d165..a850f9be56 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/RankManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/instancemanager/RankManager.java @@ -37,11 +37,13 @@ public class RankManager { private static final Logger LOGGER = Logger.getLogger(RankManager.class.getName()); - private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC"; - private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC"; + public static final int PLAYER_LIMIT = 100; - private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC"; - private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC"; + private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC LIMIT " + PLAYER_LIMIT; + private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC LIMIT " + PLAYER_LIMIT; + + private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT; + private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT; private final Map _mainList = new ConcurrentHashMap<>(); private Map _snapshotList = new ConcurrentHashMap<>(); @@ -53,26 +55,6 @@ public class RankManager ThreadPool.scheduleAtFixedRate(this::update, 0, 1800000); } - public Map getRankList() - { - return _mainList; - } - - public Map getSnapshotList() - { - return _snapshotList; - } - - public Map getOlyRankList() - { - return _mainOlyList; - } - - public Map getSnapshotOlyList() - { - return _snapshotOlyList; - } - private synchronized void update() { // Load charIds All @@ -80,6 +62,7 @@ public class RankManager _mainList.clear(); _snapshotOlyList = _mainOlyList; _mainOlyList.clear(); + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(SELECT_CHARACTERS)) { @@ -117,6 +100,7 @@ public class RankManager { LOGGER.log(Level.WARNING, "Could not load chars total rank data: " + this + " - " + e.getMessage(), e); } + // load olympiad data. try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(GET_CURRENT_CYCLE_DATA)) @@ -237,13 +221,33 @@ public class RankManager } } - private static class SingletonHolder + public Map getRankList() { - protected static final RankManager INSTANCE = new RankManager(); + return _mainList; + } + + public Map getSnapshotList() + { + return _snapshotList; + } + + public Map getOlyRankList() + { + return _mainOlyList; + } + + public Map getSnapshotOlyList() + { + return _snapshotOlyList; } public static RankManager getInstance() { return SingletonHolder.INSTANCE; } + + private static class SingletonHolder + { + protected static final RankManager INSTANCE = new RankManager(); + } } \ No newline at end of file diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java index 707137fe27..ae3b69c3e3 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadMyRankingInfo.java @@ -37,5 +37,4 @@ public class RequestOlympiadMyRankingInfo implements IClientIncomingPacket { client.sendPacket(new ExOlympiadMyRankingInfo(client.getPlayer())); } - } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java index 3f90cdfbbc..fa971621d4 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestOlympiadRankingInfo.java @@ -48,5 +48,4 @@ public class RequestOlympiadRankingInfo implements IClientIncomingPacket { client.sendPacket(new ExOlympiadRankingInfo(client.getPlayer(), _tabId, _rankingType, _unk, _classId, _serverId)); } - } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java index d8c090e31a..e58db6805e 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadHeroAndLegendInfo.java @@ -25,6 +25,7 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.gameserver.data.sql.impl.ClanTable; +import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.entity.Hero; import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; @@ -34,11 +35,11 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; */ public class ExOlympiadHeroAndLegendInfo implements IClientOutgoingPacket { - private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC"; + // TODO: Move query and store data at RankManager. + private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC LIMIT " + RankManager.PLAYER_LIMIT; public ExOlympiadHeroAndLegendInfo() { - } @Override diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java index 4f80464f38..aaa5a6d705 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExOlympiadMyRankingInfo.java @@ -26,6 +26,7 @@ import java.util.GregorianCalendar; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.instancemanager.RankManager; import org.l2jmobius.gameserver.model.StatsSet; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.entity.Hero; @@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; */ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket { - private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ?"; - private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ?"; + // TODO: Move query and store data at RankManager. + private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT; + private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT; + private final PlayerInstance _player; public ExOlympiadMyRankingInfo(PlayerInstance player) @@ -98,6 +101,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket { LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage()); } + int previousPlace = 0; int previousWins = 0; int previousLoses = 0; @@ -126,6 +130,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket { LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage()); } + int heroCount = 0; int legendCount = 0; if (Hero.getInstance().getCompleteHeroes().containsKey(_player.getObjectId()))