-Reworked Raid Points system (ranking system deleted in Valiance update).
-Raidpoints moved to characters.sql -Fixed calls to unexistent skill levels. Contributed by NviX.
This commit is contained in:
@ -402,18 +402,6 @@ public final class Config
|
||||
public static int REPUTATION_SCORE_PER_KILL;
|
||||
public static int JOIN_ACADEMY_MIN_REP_SCORE;
|
||||
public static int JOIN_ACADEMY_MAX_REP_SCORE;
|
||||
public static int RAID_RANKING_1ST;
|
||||
public static int RAID_RANKING_2ND;
|
||||
public static int RAID_RANKING_3RD;
|
||||
public static int RAID_RANKING_4TH;
|
||||
public static int RAID_RANKING_5TH;
|
||||
public static int RAID_RANKING_6TH;
|
||||
public static int RAID_RANKING_7TH;
|
||||
public static int RAID_RANKING_8TH;
|
||||
public static int RAID_RANKING_9TH;
|
||||
public static int RAID_RANKING_10TH;
|
||||
public static int RAID_RANKING_UP_TO_50TH;
|
||||
public static int RAID_RANKING_UP_TO_100TH;
|
||||
public static int CLAN_LEVEL_6_COST;
|
||||
public static int CLAN_LEVEL_7_COST;
|
||||
public static int CLAN_LEVEL_8_COST;
|
||||
@ -1381,18 +1369,6 @@ public final class Config
|
||||
REPUTATION_SCORE_PER_KILL = Feature.getInt("ReputationScorePerKill", 1);
|
||||
JOIN_ACADEMY_MIN_REP_SCORE = Feature.getInt("CompleteAcademyMinPoints", 190);
|
||||
JOIN_ACADEMY_MAX_REP_SCORE = Feature.getInt("CompleteAcademyMaxPoints", 650);
|
||||
RAID_RANKING_1ST = Feature.getInt("1stRaidRankingPoints", 1250);
|
||||
RAID_RANKING_2ND = Feature.getInt("2ndRaidRankingPoints", 900);
|
||||
RAID_RANKING_3RD = Feature.getInt("3rdRaidRankingPoints", 700);
|
||||
RAID_RANKING_4TH = Feature.getInt("4thRaidRankingPoints", 600);
|
||||
RAID_RANKING_5TH = Feature.getInt("5thRaidRankingPoints", 450);
|
||||
RAID_RANKING_6TH = Feature.getInt("6thRaidRankingPoints", 350);
|
||||
RAID_RANKING_7TH = Feature.getInt("7thRaidRankingPoints", 300);
|
||||
RAID_RANKING_8TH = Feature.getInt("8thRaidRankingPoints", 200);
|
||||
RAID_RANKING_9TH = Feature.getInt("9thRaidRankingPoints", 150);
|
||||
RAID_RANKING_10TH = Feature.getInt("10thRaidRankingPoints", 100);
|
||||
RAID_RANKING_UP_TO_50TH = Feature.getInt("UpTo50thRaidRankingPoints", 25);
|
||||
RAID_RANKING_UP_TO_100TH = Feature.getInt("UpTo100thRaidRankingPoints", 12);
|
||||
CLAN_LEVEL_6_COST = Feature.getInt("ClanLevel6Cost", 5000);
|
||||
CLAN_LEVEL_7_COST = Feature.getInt("ClanLevel7Cost", 10000);
|
||||
CLAN_LEVEL_8_COST = Feature.getInt("ClanLevel8Cost", 20000);
|
||||
|
@ -130,7 +130,6 @@ import com.l2jserver.gameserver.instancemanager.PetitionManager;
|
||||
import com.l2jserver.gameserver.instancemanager.PremiumManager;
|
||||
import com.l2jserver.gameserver.instancemanager.PunishmentManager;
|
||||
import com.l2jserver.gameserver.instancemanager.QuestManager;
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager;
|
||||
import com.l2jserver.gameserver.instancemanager.SiegeManager;
|
||||
import com.l2jserver.gameserver.instancemanager.WalkingManager;
|
||||
@ -263,7 +262,6 @@ public final class GameServer
|
||||
CharNameTable.getInstance();
|
||||
BeautyShopData.getInstance();
|
||||
AdminData.getInstance();
|
||||
RaidBossPointsManager.getInstance();
|
||||
CharSummonTable.getInstance().init();
|
||||
if (!Config.SERVER_CLASSIC_SUPPORT)
|
||||
{
|
||||
|
@ -56,6 +56,7 @@ public final class MultisellData implements IXmlReader
|
||||
public static final int PC_BANG_POINTS = -100;
|
||||
public static final int CLAN_REPUTATION = -200;
|
||||
public static final int FAME = -300;
|
||||
public static final int RAID_POINTS = -500;
|
||||
// Misc
|
||||
private static final FileFilter NUMERIC_FILTER = new NumericNameFilter();
|
||||
|
||||
@ -312,6 +313,12 @@ public final class MultisellData implements IXmlReader
|
||||
player.sendPacket(SystemMessageId.YOU_DON_T_HAVE_ENOUGH_FAME_TO_DO_THAT);
|
||||
break;
|
||||
}
|
||||
case RAID_POINTS:
|
||||
if (player.getRaidPoints() < amount)
|
||||
{
|
||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_RAID_POINTS);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -338,7 +345,10 @@ public final class MultisellData implements IXmlReader
|
||||
case FAME:
|
||||
player.setFame(player.getFame() - (int) amount);
|
||||
player.sendPacket(new UserInfo(player));
|
||||
// player.sendPacket(new ExBrExtraUserInfo(player));
|
||||
return true;
|
||||
case RAID_POINTS:
|
||||
player.setRaidPoints(player.getRaidPoints() - (int) amount);
|
||||
player.sendPacket(new UserInfo(player));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -354,7 +364,10 @@ public final class MultisellData implements IXmlReader
|
||||
case FAME:
|
||||
player.setFame((int) (player.getFame() + amount));
|
||||
player.sendPacket(new UserInfo(player));
|
||||
// player.sendPacket(new ExBrExtraUserInfo(player));
|
||||
break;
|
||||
case RAID_POINTS:
|
||||
player.setRaidPoints((int) (player.getRaidPoints() + amount));
|
||||
player.sendPacket(new UserInfo(player));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -394,6 +407,7 @@ public final class MultisellData implements IXmlReader
|
||||
case PC_BANG_POINTS:
|
||||
case CLAN_REPUTATION:
|
||||
case FAME:
|
||||
case RAID_POINTS:
|
||||
return true;
|
||||
default:
|
||||
return ing.getTemplate() != null;
|
||||
|
@ -235,7 +235,6 @@ public abstract class IdFactory
|
||||
cleanCount += stmt.executeUpdate("DELETE FROM character_skills WHERE character_skills.charId NOT IN (SELECT charId FROM characters);");
|
||||
cleanCount += stmt.executeUpdate("DELETE FROM character_skills_save WHERE character_skills_save.charId NOT IN (SELECT charId FROM characters);");
|
||||
cleanCount += stmt.executeUpdate("DELETE FROM character_subclasses WHERE character_subclasses.charId NOT IN (SELECT charId FROM characters);");
|
||||
cleanCount += stmt.executeUpdate("DELETE FROM character_raid_points WHERE character_raid_points.charId NOT IN (SELECT charId FROM characters);");
|
||||
cleanCount += stmt.executeUpdate("DELETE FROM character_instance_time WHERE character_instance_time.charId NOT IN (SELECT charId FROM characters);");
|
||||
cleanCount += stmt.executeUpdate("DELETE FROM character_ui_actions WHERE character_ui_actions.charId NOT IN (SELECT charId FROM characters);");
|
||||
cleanCount += stmt.executeUpdate("DELETE FROM character_ui_categories WHERE character_ui_categories.charId NOT IN (SELECT charId FROM characters);");
|
||||
|
@ -1,181 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* L2J Server is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.instancemanager;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.l2jserver.L2DatabaseFactory;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
|
||||
/**
|
||||
* @author Kerberos, JIV
|
||||
* @version 8/24/10
|
||||
*/
|
||||
public class RaidBossPointsManager
|
||||
{
|
||||
private static final Logger _log = Logger.getLogger(RaidBossPointsManager.class.getName());
|
||||
|
||||
private final Map<Integer, Map<Integer, Integer>> _list = new ConcurrentHashMap<>();
|
||||
|
||||
public RaidBossPointsManager()
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
private final void init()
|
||||
{
|
||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||
Statement s = con.createStatement();
|
||||
ResultSet rs = s.executeQuery("SELECT `charId`,`boss_id`,`points` FROM `character_raid_points`"))
|
||||
{
|
||||
while (rs.next())
|
||||
{
|
||||
int charId = rs.getInt("charId");
|
||||
int bossId = rs.getInt("boss_id");
|
||||
int points = rs.getInt("points");
|
||||
Map<Integer, Integer> values = _list.get(charId);
|
||||
if (values == null)
|
||||
{
|
||||
values = new HashMap<>();
|
||||
}
|
||||
values.put(bossId, points);
|
||||
_list.put(charId, values);
|
||||
}
|
||||
_log.info(getClass().getSimpleName() + ": Loaded " + _list.size() + " Characters Raid Points.");
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Couldnt load raid points ", e);
|
||||
}
|
||||
}
|
||||
|
||||
public final void updatePointsInDB(L2PcInstance player, int raidId, int points)
|
||||
{
|
||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement ps = con.prepareStatement("REPLACE INTO character_raid_points (`charId`,`boss_id`,`points`) VALUES (?,?,?)"))
|
||||
{
|
||||
ps.setInt(1, player.getObjectId());
|
||||
ps.setInt(2, raidId);
|
||||
ps.setInt(3, points);
|
||||
ps.executeUpdate();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update char raid points for player: " + player, e);
|
||||
}
|
||||
}
|
||||
|
||||
public final void addPoints(L2PcInstance player, int bossId, int points)
|
||||
{
|
||||
final Map<Integer, Integer> tmpPoint = _list.computeIfAbsent(player.getObjectId(), k -> new HashMap<>());
|
||||
updatePointsInDB(player, bossId, tmpPoint.merge(bossId, points, Integer::sum));
|
||||
}
|
||||
|
||||
public final int getPointsByOwnerId(int ownerId)
|
||||
{
|
||||
Map<Integer, Integer> tmpPoint = _list.get(ownerId);
|
||||
int totalPoints = 0;
|
||||
|
||||
if ((tmpPoint == null) || tmpPoint.isEmpty())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (int points : tmpPoint.values())
|
||||
{
|
||||
totalPoints += points;
|
||||
}
|
||||
return totalPoints;
|
||||
}
|
||||
|
||||
public final Map<Integer, Integer> getList(L2PcInstance player)
|
||||
{
|
||||
return _list.get(player.getObjectId());
|
||||
}
|
||||
|
||||
public final void cleanUp()
|
||||
{
|
||||
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
||||
PreparedStatement statement = con.prepareStatement("DELETE from character_raid_points WHERE charId > 0"))
|
||||
{
|
||||
statement.executeUpdate();
|
||||
_list.clear();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't clean raid points", e);
|
||||
}
|
||||
}
|
||||
|
||||
public final int calculateRanking(int playerObjId)
|
||||
{
|
||||
Map<Integer, Integer> rank = getRankList();
|
||||
if (rank.containsKey(playerObjId))
|
||||
{
|
||||
return rank.get(playerObjId);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getRankList()
|
||||
{
|
||||
final Map<Integer, Integer> tmpPoints = new HashMap<>();
|
||||
for (int ownerId : _list.keySet())
|
||||
{
|
||||
int totalPoints = getPointsByOwnerId(ownerId);
|
||||
if (totalPoints != 0)
|
||||
{
|
||||
tmpPoints.put(ownerId, totalPoints);
|
||||
}
|
||||
}
|
||||
|
||||
final List<Entry<Integer, Integer>> list = new ArrayList<>(tmpPoints.entrySet());
|
||||
list.sort(Comparator.comparing(Entry<Integer, Integer>::getValue).reversed());
|
||||
int ranking = 1;
|
||||
final Map<Integer, Integer> tmpRanking = new HashMap<>();
|
||||
for (Entry<Integer, Integer> entry : list)
|
||||
{
|
||||
tmpRanking.put(entry.getKey(), ranking++);
|
||||
}
|
||||
return tmpRanking;
|
||||
}
|
||||
|
||||
public static final RaidBossPointsManager getInstance()
|
||||
{
|
||||
return SingletonHolder._instance;
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final RaidBossPointsManager _instance = new RaidBossPointsManager();
|
||||
}
|
||||
}
|
@ -19,7 +19,6 @@
|
||||
package com.l2jserver.gameserver.model.actor.instance;
|
||||
|
||||
import com.l2jserver.gameserver.enums.InstanceType;
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.actor.L2Summon;
|
||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
||||
@ -87,7 +86,7 @@ public final class L2GrandBossInstance extends L2MonsterInstance
|
||||
{
|
||||
for (L2PcInstance member : player.getParty().getMembers())
|
||||
{
|
||||
RaidBossPointsManager.getInstance().addPoints(member, getId(), (getLevel() / 2) + Rnd.get(-5, 5));
|
||||
member.setRaidPoints(member.getRaidPoints() + ((getLevel() / 2) + Rnd.get(-5, 5)));
|
||||
if (member.isNoble())
|
||||
{
|
||||
Hero.getInstance().setRBkilled(member.getObjectId(), getId());
|
||||
@ -96,7 +95,7 @@ public final class L2GrandBossInstance extends L2MonsterInstance
|
||||
}
|
||||
else
|
||||
{
|
||||
RaidBossPointsManager.getInstance().addPoints(player, getId(), (getLevel() / 2) + Rnd.get(-5, 5));
|
||||
player.setRaidPoints(player.getRaidPoints() + ((getLevel() / 2) + Rnd.get(-5, 5)));
|
||||
if (player.isNoble())
|
||||
{
|
||||
Hero.getInstance().setRBkilled(player.getObjectId(), getId());
|
||||
|
@ -209,6 +209,7 @@ import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerPKCha
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerProfessionChange;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerPvPChanged;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerPvPKill;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerRaidPointsChanged;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerSubChange;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerTransform;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.mentoring.OnPlayerMenteeStatus;
|
||||
@ -366,8 +367,8 @@ public final class L2PcInstance extends L2Playable
|
||||
private static final String DELETE_ITEM_REUSE_SAVE = "DELETE FROM character_item_reuse_save WHERE charId=?";
|
||||
|
||||
// Character Character SQL String Definitions:
|
||||
private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,reputation,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,clan_privs,wantspeace,base_class,nobless,power_grade,createDate) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,reputation=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,pccafe_points=?,language=?,faction=? WHERE charId=?";
|
||||
private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,reputation,fame,raidpoints,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,clan_privs,wantspeace,base_class,nobless,power_grade,createDate) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,reputation=?,fame=?,raidpoints=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,pccafe_points=?,language=?,faction=? WHERE charId=?";
|
||||
private static final String RESTORE_CHARACTER = "SELECT * FROM characters WHERE charId=?";
|
||||
|
||||
// Character Premium System String Definitions:
|
||||
@ -467,6 +468,9 @@ public final class L2PcInstance extends L2Playable
|
||||
private int _fame;
|
||||
private ScheduledFuture<?> _fameTask;
|
||||
|
||||
/** The Raid Points of this L2PcInstance */
|
||||
private int _raidPoints;
|
||||
|
||||
private volatile ScheduledFuture<?> _teleportWatchdog;
|
||||
|
||||
/** The Siege state of the L2PcInstance */
|
||||
@ -2302,7 +2306,7 @@ public final class L2PcInstance extends L2Playable
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Fame of this L2PcInstane
|
||||
* Set the Fame of this L2PcInstance
|
||||
* @param fame
|
||||
*/
|
||||
public void setFame(int fame)
|
||||
@ -2311,6 +2315,24 @@ public final class L2PcInstance extends L2Playable
|
||||
_fame = (fame > Config.MAX_PERSONAL_FAME_POINTS) ? Config.MAX_PERSONAL_FAME_POINTS : fame;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the Raid Points of this L2PcInstance
|
||||
*/
|
||||
public int getRaidPoints()
|
||||
{
|
||||
return _raidPoints;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Raid Points of this L2PcInstance
|
||||
* @param raidPoints
|
||||
*/
|
||||
public void setRaidPoints(int raidPoints)
|
||||
{
|
||||
EventDispatcher.getInstance().notifyEventAsync(new OnPlayerRaidPointsChanged(this, _raidPoints, raidPoints), this);
|
||||
_raidPoints = raidPoints;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the ClassId object of the L2PcInstance contained in L2PcTemplate.
|
||||
*/
|
||||
@ -6947,23 +6969,24 @@ public final class L2PcInstance extends L2Playable
|
||||
statement.setInt(17, getKarma());
|
||||
statement.setInt(18, getReputation());
|
||||
statement.setInt(19, getFame());
|
||||
statement.setInt(20, getPvpKills());
|
||||
statement.setInt(21, getPkKills());
|
||||
statement.setInt(22, getClanId());
|
||||
statement.setInt(23, getRace().ordinal());
|
||||
statement.setInt(24, getClassId().getId());
|
||||
statement.setLong(25, getDeleteTimer());
|
||||
statement.setInt(26, hasDwarvenCraft() ? 1 : 0);
|
||||
statement.setString(27, getTitle());
|
||||
statement.setInt(28, getAppearance().getTitleColor());
|
||||
statement.setInt(29, getAccessLevel().getLevel());
|
||||
statement.setInt(30, isOnlineInt());
|
||||
statement.setInt(31, getClanPrivileges().getBitmask());
|
||||
statement.setInt(32, getWantsPeace());
|
||||
statement.setInt(33, getBaseClass());
|
||||
statement.setInt(34, isNoble() ? 1 : 0);
|
||||
statement.setLong(35, 0);
|
||||
statement.setDate(36, new Date(getCreateDate().getTimeInMillis()));
|
||||
statement.setInt(20, getRaidPoints());
|
||||
statement.setInt(21, getPvpKills());
|
||||
statement.setInt(22, getPkKills());
|
||||
statement.setInt(23, getClanId());
|
||||
statement.setInt(24, getRace().ordinal());
|
||||
statement.setInt(25, getClassId().getId());
|
||||
statement.setLong(26, getDeleteTimer());
|
||||
statement.setInt(27, hasDwarvenCraft() ? 1 : 0);
|
||||
statement.setString(28, getTitle());
|
||||
statement.setInt(29, getAppearance().getTitleColor());
|
||||
statement.setInt(30, getAccessLevel().getLevel());
|
||||
statement.setInt(31, isOnlineInt());
|
||||
statement.setInt(32, getClanPrivileges().getBitmask());
|
||||
statement.setInt(33, getWantsPeace());
|
||||
statement.setInt(34, getBaseClass());
|
||||
statement.setInt(35, isNoble() ? 1 : 0);
|
||||
statement.setLong(36, 0);
|
||||
statement.setDate(37, new Date(getCreateDate().getTimeInMillis()));
|
||||
statement.executeUpdate();
|
||||
}
|
||||
catch (Exception e)
|
||||
@ -7017,6 +7040,7 @@ public final class L2PcInstance extends L2Playable
|
||||
player.setKarma(rset.getInt("karma"));
|
||||
player.setReputation(rset.getInt("reputation"));
|
||||
player.setFame(rset.getInt("fame"));
|
||||
player.setRaidPoints(rset.getInt("raidpoints"));
|
||||
player.setPvpKills(rset.getInt("pvpkills"));
|
||||
player.setPkKills(rset.getInt("pkkills"));
|
||||
player.setOnlineTime(rset.getLong("onlinetime"));
|
||||
@ -7579,19 +7603,20 @@ public final class L2PcInstance extends L2Playable
|
||||
statement.setInt(19, getKarma());
|
||||
statement.setInt(20, getReputation());
|
||||
statement.setInt(21, getFame());
|
||||
statement.setInt(22, getPvpKills());
|
||||
statement.setInt(23, getPkKills());
|
||||
statement.setInt(24, getClanId());
|
||||
statement.setInt(25, getRace().ordinal());
|
||||
statement.setInt(26, getClassId().getId());
|
||||
statement.setLong(27, getDeleteTimer());
|
||||
statement.setString(28, getTitle());
|
||||
statement.setInt(29, getAppearance().getTitleColor());
|
||||
statement.setInt(30, getAccessLevel().getLevel());
|
||||
statement.setInt(31, isOnlineInt());
|
||||
statement.setInt(32, getClanPrivileges().getBitmask());
|
||||
statement.setInt(33, getWantsPeace());
|
||||
statement.setInt(34, getBaseClass());
|
||||
statement.setInt(22, getRaidPoints());
|
||||
statement.setInt(23, getPvpKills());
|
||||
statement.setInt(24, getPkKills());
|
||||
statement.setInt(25, getClanId());
|
||||
statement.setInt(26, getRace().ordinal());
|
||||
statement.setInt(27, getClassId().getId());
|
||||
statement.setLong(28, getDeleteTimer());
|
||||
statement.setString(29, getTitle());
|
||||
statement.setInt(30, getAppearance().getTitleColor());
|
||||
statement.setInt(31, getAccessLevel().getLevel());
|
||||
statement.setInt(32, isOnlineInt());
|
||||
statement.setInt(33, getClanPrivileges().getBitmask());
|
||||
statement.setInt(34, getWantsPeace());
|
||||
statement.setInt(35, getBaseClass());
|
||||
|
||||
long totalOnlineTime = _onlineTime;
|
||||
if (_onlineBeginTime > 0)
|
||||
@ -7599,21 +7624,21 @@ public final class L2PcInstance extends L2Playable
|
||||
totalOnlineTime += (System.currentTimeMillis() - _onlineBeginTime) / 1000;
|
||||
}
|
||||
|
||||
statement.setLong(35, totalOnlineTime);
|
||||
statement.setInt(36, isNoble() ? 1 : 0);
|
||||
statement.setInt(37, getPowerGrade());
|
||||
statement.setInt(38, getPledgeType());
|
||||
statement.setInt(39, getLvlJoinedAcademy());
|
||||
statement.setLong(40, getApprentice());
|
||||
statement.setLong(41, getSponsor());
|
||||
statement.setLong(42, getClanJoinExpiryTime());
|
||||
statement.setLong(43, getClanCreateExpiryTime());
|
||||
statement.setString(44, getName());
|
||||
statement.setLong(45, 0); // unset
|
||||
statement.setInt(46, getBookMarkSlot());
|
||||
statement.setInt(47, _vitalityPoints); // unset
|
||||
statement.setInt(48, getPcBangPoints());
|
||||
statement.setString(49, getLang());
|
||||
statement.setLong(36, totalOnlineTime);
|
||||
statement.setInt(37, isNoble() ? 1 : 0);
|
||||
statement.setInt(38, getPowerGrade());
|
||||
statement.setInt(39, getPledgeType());
|
||||
statement.setInt(40, getLvlJoinedAcademy());
|
||||
statement.setLong(41, getApprentice());
|
||||
statement.setLong(42, getSponsor());
|
||||
statement.setLong(43, getClanJoinExpiryTime());
|
||||
statement.setLong(44, getClanCreateExpiryTime());
|
||||
statement.setString(45, getName());
|
||||
statement.setLong(46, 0); // unset
|
||||
statement.setInt(47, getBookMarkSlot());
|
||||
statement.setInt(48, _vitalityPoints); // unset
|
||||
statement.setInt(49, getPcBangPoints());
|
||||
statement.setString(50, getLang());
|
||||
|
||||
int factionId = 0;
|
||||
if (isGood())
|
||||
@ -7624,9 +7649,9 @@ public final class L2PcInstance extends L2Playable
|
||||
{
|
||||
factionId = 2;
|
||||
}
|
||||
statement.setInt(50, factionId);
|
||||
statement.setInt(51, factionId);
|
||||
|
||||
statement.setInt(51, getObjectId());
|
||||
statement.setInt(52, getObjectId());
|
||||
statement.execute();
|
||||
}
|
||||
catch (Exception e)
|
||||
@ -11709,7 +11734,7 @@ public final class L2PcInstance extends L2Playable
|
||||
catch (Exception e)
|
||||
{
|
||||
_log.log(Level.SEVERE, "deleteMe()", e);
|
||||
}// returns pet to control item
|
||||
} // returns pet to control item
|
||||
}
|
||||
|
||||
if (getClan() != null)
|
||||
|
@ -21,7 +21,6 @@ package com.l2jserver.gameserver.model.actor.instance;
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.enums.InstanceType;
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager;
|
||||
import com.l2jserver.gameserver.model.L2Spawn;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
@ -83,7 +82,7 @@ public class L2RaidBossInstance extends L2MonsterInstance
|
||||
{
|
||||
for (L2PcInstance member : player.getParty().getMembers())
|
||||
{
|
||||
RaidBossPointsManager.getInstance().addPoints(member, getId(), (getLevel() / 2) + Rnd.get(-5, 5));
|
||||
member.setRaidPoints(member.getRaidPoints() + ((getLevel() / 2) + Rnd.get(-5, 5)));
|
||||
if (member.isNoble())
|
||||
{
|
||||
Hero.getInstance().setRBkilled(member.getObjectId(), getId());
|
||||
@ -92,7 +91,7 @@ public class L2RaidBossInstance extends L2MonsterInstance
|
||||
}
|
||||
else
|
||||
{
|
||||
RaidBossPointsManager.getInstance().addPoints(player, getId(), (getLevel() / 2) + Rnd.get(-5, 5));
|
||||
player.setRaidPoints(player.getRaidPoints() + ((getLevel() / 2) + Rnd.get(-5, 5)));
|
||||
if (player.isNoble())
|
||||
{
|
||||
Hero.getInstance().setRBkilled(player.getObjectId(), getId());
|
||||
|
@ -302,17 +302,13 @@ public final class L2TeleporterInstance extends L2Npc
|
||||
switch (itemId)
|
||||
{
|
||||
case MultisellData.PC_BANG_POINTS:
|
||||
{
|
||||
return "Player Commendation Points";
|
||||
}
|
||||
case MultisellData.CLAN_REPUTATION:
|
||||
{
|
||||
return "Clan Reputation Points";
|
||||
}
|
||||
case MultisellData.FAME:
|
||||
{
|
||||
return "Fame";
|
||||
}
|
||||
case MultisellData.RAID_POINTS:
|
||||
return "Raid Points";
|
||||
}
|
||||
return "Unknown item: " + itemId;
|
||||
}
|
||||
|
@ -67,6 +67,7 @@ import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerPKCha
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerProfessionChange;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerPvPChanged;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerPvPKill;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerRaidPointsChanged;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerRestore;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerSelect;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerSkillLearn;
|
||||
@ -198,6 +199,7 @@ public enum EventType
|
||||
ON_PLAYER_DLG_ANSWER(OnPlayerDlgAnswer.class, void.class, TerminateReturn.class),
|
||||
ON_PLAYER_EQUIP_ITEM(OnPlayerEquipItem.class, void.class),
|
||||
ON_PLAYER_FAME_CHANGED(OnPlayerFameChanged.class, void.class),
|
||||
ON_PLAYER_RAID_POINTS_CHANGED(OnPlayerRaidPointsChanged.class, void.class),
|
||||
// Henna events
|
||||
ON_PLAYER_HENNA_ADD(OnPlayerHennaAdd.class, void.class),
|
||||
ON_PLAYER_HENNA_REMOVE(OnPlayerHennaRemove.class, void.class),
|
||||
|
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* L2J Server is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.model.events.impl.character.player;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.events.EventType;
|
||||
import com.l2jserver.gameserver.model.events.impl.IBaseEvent;
|
||||
|
||||
/**
|
||||
* @author NviX
|
||||
*/
|
||||
public class OnPlayerRaidPointsChanged implements IBaseEvent
|
||||
{
|
||||
private final L2PcInstance _activeChar;
|
||||
private final int _oldRaidPoints;
|
||||
private final int _newRaidPoints;
|
||||
|
||||
public OnPlayerRaidPointsChanged(L2PcInstance activeChar, int oldRaidPoints, int newRaidPoints)
|
||||
{
|
||||
_activeChar = activeChar;
|
||||
_oldRaidPoints = oldRaidPoints;
|
||||
_newRaidPoints = newRaidPoints;
|
||||
}
|
||||
|
||||
public L2PcInstance getActiveChar()
|
||||
{
|
||||
return _activeChar;
|
||||
}
|
||||
|
||||
public int getOldRaidPoints()
|
||||
{
|
||||
return _oldRaidPoints;
|
||||
}
|
||||
|
||||
public int getNewRaidPoints()
|
||||
{
|
||||
return _newRaidPoints;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventType getType()
|
||||
{
|
||||
return EventType.ON_PLAYER_RAID_POINTS_CHANGED;
|
||||
}
|
||||
|
||||
}
|
@ -535,12 +535,6 @@ public final class L2GameClient extends MMOClient<MMOConnection<L2GameClient>> i
|
||||
ps.execute();
|
||||
}
|
||||
|
||||
try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_raid_points WHERE charId=?"))
|
||||
{
|
||||
ps.setInt(1, objid);
|
||||
ps.execute();
|
||||
}
|
||||
|
||||
try (PreparedStatement ps = con.prepareStatement("DELETE FROM character_reco_bonus WHERE charId=?"))
|
||||
{
|
||||
ps.setInt(1, objid);
|
||||
|
@ -965,7 +965,8 @@ public final class L2GamePacketHandler implements IPacketHandler<L2GameClient>,
|
||||
msg = new RequestFortressSiegeInfo();
|
||||
break;
|
||||
case 0x3d:
|
||||
msg = new RequestGetBossRecord();
|
||||
// Unused
|
||||
// msg = new RequestGetBossRecord();
|
||||
break;
|
||||
case 0x3e:
|
||||
msg = new RequestRefine();
|
||||
|
@ -1,76 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* L2J Server is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.clientpackets;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExGetBossRecord;
|
||||
|
||||
/**
|
||||
* Format: (ch) d
|
||||
* @author -Wooden-
|
||||
*/
|
||||
public class RequestGetBossRecord extends L2GameClientPacket
|
||||
{
|
||||
private static final String _C__D0_40_REQUESTGETBOSSRECORD = "[C] D0:40 RequestGetBossRecord";
|
||||
private int _bossId;
|
||||
|
||||
@Override
|
||||
protected void readImpl()
|
||||
{
|
||||
_bossId = readD();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void runImpl()
|
||||
{
|
||||
L2PcInstance activeChar = getClient().getActiveChar();
|
||||
if (activeChar == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_bossId != 0)
|
||||
{
|
||||
_log.info("C5: RequestGetBossRecord: d: " + _bossId + " ActiveChar: " + activeChar); // should be always 0, log it if isnt 0 for furture research
|
||||
}
|
||||
|
||||
int points = RaidBossPointsManager.getInstance().getPointsByOwnerId(activeChar.getObjectId());
|
||||
int ranking = RaidBossPointsManager.getInstance().calculateRanking(activeChar.getObjectId());
|
||||
|
||||
Map<Integer, Integer> list = RaidBossPointsManager.getInstance().getList(activeChar);
|
||||
|
||||
// trigger packet
|
||||
activeChar.sendPacket(new ExGetBossRecord(ranking, points, list));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType()
|
||||
{
|
||||
return _C__D0_40_REQUESTGETBOSSRECORD;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean triggersOnActionRequest()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
@ -20,7 +20,6 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.ExperienceData;
|
||||
import com.l2jserver.gameserver.enums.UserInfoType;
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
|
||||
import com.l2jserver.gameserver.model.Elementals;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
import com.l2jserver.gameserver.model.L2Party;
|
||||
@ -315,7 +314,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
|
||||
writeD(_activeChar.getVitalityPoints());
|
||||
writeC(0x00); // Vita Bonus
|
||||
writeD(_activeChar.getFame());
|
||||
writeD(RaidBossPointsManager.getInstance().getPointsByOwnerId(_activeChar.getObjectId()));
|
||||
writeD(_activeChar.getRaidPoints());
|
||||
}
|
||||
|
||||
if (containsMask(UserInfoType.SLOTS))
|
||||
|
@ -46,7 +46,6 @@ import com.l2jserver.gameserver.taskmanager.tasks.TaskDailySkillReuseClean;
|
||||
import com.l2jserver.gameserver.taskmanager.tasks.TaskDailyWorldChatPointReset;
|
||||
import com.l2jserver.gameserver.taskmanager.tasks.TaskGlobalVariablesSave;
|
||||
import com.l2jserver.gameserver.taskmanager.tasks.TaskOlympiadSave;
|
||||
import com.l2jserver.gameserver.taskmanager.tasks.TaskRaidPointsReset;
|
||||
import com.l2jserver.gameserver.taskmanager.tasks.TaskRecom;
|
||||
import com.l2jserver.gameserver.taskmanager.tasks.TaskRestart;
|
||||
import com.l2jserver.gameserver.taskmanager.tasks.TaskScript;
|
||||
@ -192,7 +191,6 @@ public final class TaskManager
|
||||
registerTask(new TaskDailyWorldChatPointReset());
|
||||
registerTask(new TaskGlobalVariablesSave());
|
||||
registerTask(new TaskOlympiadSave());
|
||||
registerTask(new TaskRaidPointsReset());
|
||||
registerTask(new TaskRecom());
|
||||
registerTask(new TaskRestart());
|
||||
registerTask(new TaskScript());
|
||||
|
@ -1,118 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* L2J Server is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.taskmanager.tasks;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||
import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
import com.l2jserver.gameserver.taskmanager.Task;
|
||||
import com.l2jserver.gameserver.taskmanager.TaskManager;
|
||||
import com.l2jserver.gameserver.taskmanager.TaskManager.ExecutedTask;
|
||||
import com.l2jserver.gameserver.taskmanager.TaskTypes;
|
||||
|
||||
public class TaskRaidPointsReset extends Task
|
||||
{
|
||||
public static final String NAME = "raid_points_reset";
|
||||
|
||||
@Override
|
||||
public String getName()
|
||||
{
|
||||
return NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeElapsed(ExecutedTask task)
|
||||
{
|
||||
Calendar cal = Calendar.getInstance();
|
||||
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY)
|
||||
{
|
||||
// reward clan reputation points
|
||||
Map<Integer, Integer> rankList = RaidBossPointsManager.getInstance().getRankList();
|
||||
for (L2Clan c : ClanTable.getInstance().getClans())
|
||||
{
|
||||
for (Entry<Integer, Integer> entry : rankList.entrySet())
|
||||
{
|
||||
if ((entry.getValue() <= 100) && c.isMember(entry.getKey()))
|
||||
{
|
||||
int reputation = 0;
|
||||
switch (entry.getValue())
|
||||
{
|
||||
case 1:
|
||||
reputation = Config.RAID_RANKING_1ST;
|
||||
break;
|
||||
case 2:
|
||||
reputation = Config.RAID_RANKING_2ND;
|
||||
break;
|
||||
case 3:
|
||||
reputation = Config.RAID_RANKING_3RD;
|
||||
break;
|
||||
case 4:
|
||||
reputation = Config.RAID_RANKING_4TH;
|
||||
break;
|
||||
case 5:
|
||||
reputation = Config.RAID_RANKING_5TH;
|
||||
break;
|
||||
case 6:
|
||||
reputation = Config.RAID_RANKING_6TH;
|
||||
break;
|
||||
case 7:
|
||||
reputation = Config.RAID_RANKING_7TH;
|
||||
break;
|
||||
case 8:
|
||||
reputation = Config.RAID_RANKING_8TH;
|
||||
break;
|
||||
case 9:
|
||||
reputation = Config.RAID_RANKING_9TH;
|
||||
break;
|
||||
case 10:
|
||||
reputation = Config.RAID_RANKING_10TH;
|
||||
break;
|
||||
default:
|
||||
if (entry.getValue() <= 50)
|
||||
{
|
||||
reputation = Config.RAID_RANKING_UP_TO_50TH;
|
||||
}
|
||||
else
|
||||
{
|
||||
reputation = Config.RAID_RANKING_UP_TO_100TH;
|
||||
}
|
||||
break;
|
||||
}
|
||||
c.addReputationScore(reputation, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RaidBossPointsManager.getInstance().cleanUp();
|
||||
_log.info("Raid Points Reset Global Task: launched.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializate()
|
||||
{
|
||||
super.initializate();
|
||||
TaskManager.addUniqueTask(NAME, TaskTypes.TYPE_GLOBAL_TASK, "1", "00:10:00", "");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user