-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:
MobiusDev
2015-07-01 18:50:01 +00:00
parent 167efe6abf
commit 190a0e1c95
22 changed files with 171 additions and 502 deletions

View File

@ -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);

View File

@ -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)
{

View File

@ -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;

View File

@ -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);");

View File

@ -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();
}
}

View File

@ -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());

View File

@ -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)

View File

@ -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());

View File

@ -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;
}

View File

@ -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),

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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();

View File

@ -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;
}
}

View File

@ -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))

View File

@ -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());

View File

@ -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", "");
}
}