Fixed max clan mission count, also DailyTaskManager and PlayerVariables cleanup.

Thanks to nasseka.
This commit is contained in:
MobiusDevelopment
2021-11-18 13:02:32 +00:00
parent f2085e07fc
commit df9fb73a40
74 changed files with 545 additions and 2036 deletions

View File

@@ -245,12 +245,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -276,13 +276,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -302,11 +302,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -25,8 +25,6 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -85,7 +83,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -128,7 +126,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -155,14 +153,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
} }

View File

@@ -249,12 +249,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -280,13 +280,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -306,11 +306,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -92,7 +85,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -135,7 +128,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -162,85 +155,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -249,12 +249,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -280,13 +280,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -306,11 +306,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -92,7 +85,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -135,7 +128,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -162,85 +155,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -249,12 +249,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -280,13 +280,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -306,11 +306,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -92,7 +85,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -135,7 +128,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -162,85 +155,10 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -34,9 +34,10 @@ import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.ListenersContainer;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author Sdw * @author Sdw, NasSeKa
*/ */
public abstract class AbstractDailyMissionHandler extends ListenersContainer public abstract class AbstractDailyMissionHandler extends ListenersContainer
{ {
@@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0; return entry != null ? entry.getProgress() : 0;
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted(); return (entry != null) && entry.getRecentlyCompleted();
@@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player); giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
if (!_holder.isOneTime())
{
int doneDailyMissions = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
player.getVariables().set(PlayerVariables.DAILY_MISSION_COUNT, doneDailyMissions + 1);
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
entry.setProgress(0);
}
else
{
entry.setStatus(DailyMissionStatus.COMPLETED); entry.setStatus(DailyMissionStatus.COMPLETED);
}
entry.setLastCompleted(Chronos.currentTimeMillis()); entry.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true); entry.setRecentlyCompleted(true);
storePlayerEntry(entry); storePlayerEntry(entry);

View File

@@ -27,8 +27,6 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@@ -80,6 +78,7 @@ public class DailyTaskManager
clanLeaderApply(); clanLeaderApply();
resetVitalityWeekly(); resetVitalityWeekly();
resetClanContribution(); resetClanContribution();
resetDailyMissionRewards();
} }
else else
{ {
@@ -90,7 +89,6 @@ public class DailyTaskManager
resetWorldChatPoints(); resetWorldChatPoints();
resetRecommends(); resetRecommends();
resetTrainingCamp(); resetTrainingCamp();
resetDailyMissionRewards();
resetAttendanceRewards(); resetAttendanceRewards();
} }
@@ -243,12 +241,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -274,13 +272,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -300,11 +298,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -312,7 +310,26 @@ public class DailyTaskManager
private void resetDailyMissionRewards() private void resetDailyMissionRewards()
{ {
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); // Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
{
ps.setString(1, PlayerVariables.DAILY_MISSION_COUNT);
ps.executeUpdate();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Could not reset Clan Mission Rewards: ", e);
}
// Update data for online players.
for (Player player : World.getInstance().getPlayers())
{
player.getVariables().remove(PlayerVariables.DAILY_MISSION_COUNT);
player.getVariables().storeMe();
}
LOGGER.info("Clan Mission Rewards has been resetted.");
} }
private void resetClanContribution() private void resetClanContribution()

View File

@@ -136,7 +136,7 @@ public class DailyMissionDataHolder
} }
// Show only if its repeatable, recently completed or incompleted that has met the checks above. // Show only if its repeatable, recently completed or incompleted that has met the checks above.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId())); return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
} }
public void requestReward(Player player) public void requestReward(Player player)
@@ -157,9 +157,9 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId(); return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
return (_handler != null) && _handler.getRecentlyCompleted(player); return (_handler != null) && _handler.isRecentlyCompleted(player);
} }
public boolean isLevelUpMission() public boolean isLevelUpMission()

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,7 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS"; public static final String DAILY_MISSION_COUNT = "DAILY_MISSION_COUNT";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -95,7 +89,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -138,7 +132,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -165,85 +159,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -65,7 +65,7 @@ public class ExPledgeMissionInfo implements IClientOutgoingPacket
} }
else else
{ {
status = reward.getRecentlyCompleted(_player) ? 0 : 3; status = reward.isRecentlyCompleted(_player) ? 0 : 3;
} }
} }
else if (status == 1) else if (status == 1)

View File

@@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2; package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/** /**
* @author Bonux (bonuxq@gmail.com) * @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019 * @date 29.09.2019
**/ **/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player) public ExPledgeMissionRewardCount(Player player)
{ {
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count(); _doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count(); _availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
} }
@Override @Override

View File

@@ -34,9 +34,10 @@ import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.ListenersContainer;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author Sdw * @author Sdw, NasSeKa
*/ */
public abstract class AbstractDailyMissionHandler extends ListenersContainer public abstract class AbstractDailyMissionHandler extends ListenersContainer
{ {
@@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0; return entry != null ? entry.getProgress() : 0;
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted(); return (entry != null) && entry.getRecentlyCompleted();
@@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player); giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
if (!_holder.isOneTime())
{
int doneDailyMissions = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
player.getVariables().set(PlayerVariables.DAILY_MISSION_COUNT, doneDailyMissions + 1);
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
entry.setProgress(0);
}
else
{
entry.setStatus(DailyMissionStatus.COMPLETED); entry.setStatus(DailyMissionStatus.COMPLETED);
}
entry.setLastCompleted(Chronos.currentTimeMillis()); entry.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true); entry.setRecentlyCompleted(true);
storePlayerEntry(entry); storePlayerEntry(entry);

View File

@@ -27,8 +27,6 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@@ -80,6 +78,7 @@ public class DailyTaskManager
clanLeaderApply(); clanLeaderApply();
resetVitalityWeekly(); resetVitalityWeekly();
resetClanContribution(); resetClanContribution();
resetDailyMissionRewards();
} }
else else
{ {
@@ -90,7 +89,6 @@ public class DailyTaskManager
resetWorldChatPoints(); resetWorldChatPoints();
resetRecommends(); resetRecommends();
resetTrainingCamp(); resetTrainingCamp();
resetDailyMissionRewards();
resetAttendanceRewards(); resetAttendanceRewards();
} }
@@ -243,12 +241,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -274,13 +272,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -300,11 +298,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -312,7 +310,26 @@ public class DailyTaskManager
private void resetDailyMissionRewards() private void resetDailyMissionRewards()
{ {
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); // Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
{
ps.setString(1, PlayerVariables.DAILY_MISSION_COUNT);
ps.executeUpdate();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Could not reset Clan Mission Rewards: ", e);
}
// Update data for online players.
for (Player player : World.getInstance().getPlayers())
{
player.getVariables().remove(PlayerVariables.DAILY_MISSION_COUNT);
player.getVariables().storeMe();
}
LOGGER.info("Clan Mission Rewards has been resetted.");
} }
private void resetClanContribution() private void resetClanContribution()

View File

@@ -136,7 +136,7 @@ public class DailyMissionDataHolder
} }
// Show only if its repeatable, recently completed or incompleted that has met the checks above. // Show only if its repeatable, recently completed or incompleted that has met the checks above.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId())); return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
} }
public void requestReward(Player player) public void requestReward(Player player)
@@ -157,9 +157,9 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId(); return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
return (_handler != null) && _handler.getRecentlyCompleted(player); return (_handler != null) && _handler.isRecentlyCompleted(player);
} }
public boolean isLevelUpMission() public boolean isLevelUpMission()

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,7 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS"; public static final String DAILY_MISSION_COUNT = "DAILY_MISSION_COUNT";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -95,7 +89,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -138,7 +132,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -165,85 +159,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -65,7 +65,7 @@ public class ExPledgeMissionInfo implements IClientOutgoingPacket
} }
else else
{ {
status = reward.getRecentlyCompleted(_player) ? 0 : 3; status = reward.isRecentlyCompleted(_player) ? 0 : 3;
} }
} }
else if (status == 1) else if (status == 1)

View File

@@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2; package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/** /**
* @author Bonux (bonuxq@gmail.com) * @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019 * @date 29.09.2019
**/ **/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player) public ExPledgeMissionRewardCount(Player player)
{ {
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count(); _doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count(); _availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
} }
@Override @Override

View File

@@ -34,9 +34,10 @@ import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.ListenersContainer;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author Sdw * @author Sdw, NasSeKa
*/ */
public abstract class AbstractDailyMissionHandler extends ListenersContainer public abstract class AbstractDailyMissionHandler extends ListenersContainer
{ {
@@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0; return entry != null ? entry.getProgress() : 0;
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted(); return (entry != null) && entry.getRecentlyCompleted();
@@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player); giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
if (!_holder.isOneTime())
{
int doneDailyMissions = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
player.getVariables().set(PlayerVariables.DAILY_MISSION_COUNT, doneDailyMissions + 1);
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
entry.setProgress(0);
}
else
{
entry.setStatus(DailyMissionStatus.COMPLETED); entry.setStatus(DailyMissionStatus.COMPLETED);
}
entry.setLastCompleted(Chronos.currentTimeMillis()); entry.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true); entry.setRecentlyCompleted(true);
storePlayerEntry(entry); storePlayerEntry(entry);

View File

@@ -27,8 +27,6 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@@ -80,6 +78,7 @@ public class DailyTaskManager
clanLeaderApply(); clanLeaderApply();
resetVitalityWeekly(); resetVitalityWeekly();
resetClanContribution(); resetClanContribution();
resetDailyMissionRewards();
} }
else else
{ {
@@ -90,7 +89,6 @@ public class DailyTaskManager
resetWorldChatPoints(); resetWorldChatPoints();
resetRecommends(); resetRecommends();
resetTrainingCamp(); resetTrainingCamp();
resetDailyMissionRewards();
resetAttendanceRewards(); resetAttendanceRewards();
} }
@@ -243,12 +241,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -274,13 +272,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -300,11 +298,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -312,7 +310,26 @@ public class DailyTaskManager
private void resetDailyMissionRewards() private void resetDailyMissionRewards()
{ {
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); // Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
{
ps.setString(1, PlayerVariables.DAILY_MISSION_COUNT);
ps.executeUpdate();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Could not reset Clan Mission Rewards: ", e);
}
// Update data for online players.
for (Player player : World.getInstance().getPlayers())
{
player.getVariables().remove(PlayerVariables.DAILY_MISSION_COUNT);
player.getVariables().storeMe();
}
LOGGER.info("Clan Mission Rewards has been resetted.");
} }
private void resetClanContribution() private void resetClanContribution()

View File

@@ -136,7 +136,7 @@ public class DailyMissionDataHolder
} }
// Show only if its repeatable, recently completed or incompleted that has met the checks above. // Show only if its repeatable, recently completed or incompleted that has met the checks above.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId())); return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
} }
public void requestReward(Player player) public void requestReward(Player player)
@@ -157,9 +157,9 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId(); return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
return (_handler != null) && _handler.getRecentlyCompleted(player); return (_handler != null) && _handler.isRecentlyCompleted(player);
} }
public boolean isLevelUpMission() public boolean isLevelUpMission()

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,7 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS"; public static final String DAILY_MISSION_COUNT = "DAILY_MISSION_COUNT";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -95,7 +89,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -138,7 +132,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -165,85 +159,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -65,7 +65,7 @@ public class ExPledgeMissionInfo implements IClientOutgoingPacket
} }
else else
{ {
status = reward.getRecentlyCompleted(_player) ? 0 : 3; status = reward.isRecentlyCompleted(_player) ? 0 : 3;
} }
} }
else if (status == 1) else if (status == 1)

View File

@@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2; package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/** /**
* @author Bonux (bonuxq@gmail.com) * @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019 * @date 29.09.2019
**/ **/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player) public ExPledgeMissionRewardCount(Player player)
{ {
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count(); _doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count(); _availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
} }
@Override @Override

View File

@@ -34,9 +34,10 @@ import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.ListenersContainer;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author Sdw * @author Sdw, NasSeKa
*/ */
public abstract class AbstractDailyMissionHandler extends ListenersContainer public abstract class AbstractDailyMissionHandler extends ListenersContainer
{ {
@@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0; return entry != null ? entry.getProgress() : 0;
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted(); return (entry != null) && entry.getRecentlyCompleted();
@@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player); giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
if (!_holder.isOneTime())
{
int doneDailyMissions = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
player.getVariables().set(PlayerVariables.DAILY_MISSION_COUNT, doneDailyMissions + 1);
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
entry.setProgress(0);
}
else
{
entry.setStatus(DailyMissionStatus.COMPLETED); entry.setStatus(DailyMissionStatus.COMPLETED);
}
entry.setLastCompleted(Chronos.currentTimeMillis()); entry.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true); entry.setRecentlyCompleted(true);
storePlayerEntry(entry); storePlayerEntry(entry);

View File

@@ -27,9 +27,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@@ -82,6 +80,7 @@ public class DailyTaskManager
clanLeaderApply(); clanLeaderApply();
resetVitalityWeekly(); resetVitalityWeekly();
resetClanContribution(); resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly(); resetTimedHuntingZonesWeekly();
} }
else else
@@ -94,7 +93,6 @@ public class DailyTaskManager
resetRecommends(); resetRecommends();
resetTrainingCamp(); resetTrainingCamp();
resetTimedHuntingZones(); resetTimedHuntingZones();
resetDailyMissionRewards();
resetAttendanceRewards(); resetAttendanceRewards();
} }
@@ -247,12 +245,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -278,13 +276,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -304,11 +302,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -316,7 +314,26 @@ public class DailyTaskManager
private void resetDailyMissionRewards() private void resetDailyMissionRewards()
{ {
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); // Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
{
ps.setString(1, PlayerVariables.DAILY_MISSION_COUNT);
ps.executeUpdate();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Could not reset Clan Mission Rewards: ", e);
}
// Update data for online players.
for (Player player : World.getInstance().getPlayers())
{
player.getVariables().remove(PlayerVariables.DAILY_MISSION_COUNT);
player.getVariables().storeMe();
}
LOGGER.info("Clan Mission Rewards has been resetted.");
} }
private void resetClanContribution() private void resetClanContribution()
@@ -377,12 +394,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -411,12 +428,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -136,7 +136,7 @@ public class DailyMissionDataHolder
} }
// Show only if its repeatable, recently completed or incompleted that has met the checks above. // Show only if its repeatable, recently completed or incompleted that has met the checks above.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId())); return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
} }
public void requestReward(Player player) public void requestReward(Player player)
@@ -157,9 +157,9 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId(); return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
return (_handler != null) && _handler.getRecentlyCompleted(player); return (_handler != null) && _handler.isRecentlyCompleted(player);
} }
public boolean isLevelUpMission() public boolean isLevelUpMission()

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,7 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS"; public static final String DAILY_MISSION_COUNT = "DAILY_MISSION_COUNT";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -99,7 +93,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -142,7 +136,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -169,85 +163,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -65,7 +65,7 @@ public class ExPledgeMissionInfo implements IClientOutgoingPacket
} }
else else
{ {
status = reward.getRecentlyCompleted(_player) ? 0 : 3; status = reward.isRecentlyCompleted(_player) ? 0 : 3;
} }
} }
else if (status == 1) else if (status == 1)

View File

@@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2; package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/** /**
* @author Bonux (bonuxq@gmail.com) * @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019 * @date 29.09.2019
**/ **/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player) public ExPledgeMissionRewardCount(Player player)
{ {
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count(); _doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count(); _availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
} }
@Override @Override

View File

@@ -34,9 +34,10 @@ import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.ListenersContainer;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author Sdw * @author Sdw, NasSeKa
*/ */
public abstract class AbstractDailyMissionHandler extends ListenersContainer public abstract class AbstractDailyMissionHandler extends ListenersContainer
{ {
@@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0; return entry != null ? entry.getProgress() : 0;
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted(); return (entry != null) && entry.getRecentlyCompleted();
@@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player); giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
if (!_holder.isOneTime())
{
int doneDailyMissions = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
player.getVariables().set(PlayerVariables.DAILY_MISSION_COUNT, doneDailyMissions + 1);
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
entry.setProgress(0);
}
else
{
entry.setStatus(DailyMissionStatus.COMPLETED); entry.setStatus(DailyMissionStatus.COMPLETED);
}
entry.setLastCompleted(Chronos.currentTimeMillis()); entry.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true); entry.setRecentlyCompleted(true);
storePlayerEntry(entry); storePlayerEntry(entry);

View File

@@ -29,9 +29,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@@ -84,6 +82,7 @@ public class DailyTaskManager
clanLeaderApply(); clanLeaderApply();
resetVitalityWeekly(); resetVitalityWeekly();
resetClanContribution(); resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly(); resetTimedHuntingZonesWeekly();
resetThroneOfHeroes(); resetThroneOfHeroes();
} }
@@ -97,7 +96,6 @@ public class DailyTaskManager
resetRecommends(); resetRecommends();
resetTrainingCamp(); resetTrainingCamp();
resetTimedHuntingZones(); resetTimedHuntingZones();
resetDailyMissionRewards();
resetHomunculusResetPoints(); resetHomunculusResetPoints();
resetAttendanceRewards(); resetAttendanceRewards();
} }
@@ -251,12 +249,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -282,13 +280,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -308,11 +306,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -320,7 +318,26 @@ public class DailyTaskManager
private void resetDailyMissionRewards() private void resetDailyMissionRewards()
{ {
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); // Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
{
ps.setString(1, PlayerVariables.DAILY_MISSION_COUNT);
ps.executeUpdate();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Could not reset Clan Mission Rewards: ", e);
}
// Update data for online players.
for (Player player : World.getInstance().getPlayers())
{
player.getVariables().remove(PlayerVariables.DAILY_MISSION_COUNT);
player.getVariables().storeMe();
}
LOGGER.info("Clan Mission Rewards has been resetted.");
} }
private void resetClanContribution() private void resetClanContribution()
@@ -416,12 +433,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -450,12 +467,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -136,7 +136,7 @@ public class DailyMissionDataHolder
} }
// Show only if its repeatable, recently completed or incompleted that has met the checks above. // Show only if its repeatable, recently completed or incompleted that has met the checks above.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId())); return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
} }
public void requestReward(Player player) public void requestReward(Player player)
@@ -157,9 +157,9 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId(); return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
return (_handler != null) && _handler.getRecentlyCompleted(player); return (_handler != null) && _handler.isRecentlyCompleted(player);
} }
public boolean isLevelUpMission() public boolean isLevelUpMission()

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,7 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS"; public static final String DAILY_MISSION_COUNT = "DAILY_MISSION_COUNT";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -111,7 +105,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -154,7 +148,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -181,85 +175,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -65,7 +65,7 @@ public class ExPledgeMissionInfo implements IClientOutgoingPacket
} }
else else
{ {
status = reward.getRecentlyCompleted(_player) ? 0 : 3; status = reward.isRecentlyCompleted(_player) ? 0 : 3;
} }
} }
else if (status == 1) else if (status == 1)

View File

@@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2; package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/** /**
* @author Bonux (bonuxq@gmail.com) * @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019 * @date 29.09.2019
**/ **/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player) public ExPledgeMissionRewardCount(Player player)
{ {
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count(); _doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count(); _availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
} }
@Override @Override

View File

@@ -34,9 +34,10 @@ import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.ListenersContainer;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author Sdw * @author Sdw, NasSeKa
*/ */
public abstract class AbstractDailyMissionHandler extends ListenersContainer public abstract class AbstractDailyMissionHandler extends ListenersContainer
{ {
@@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0; return entry != null ? entry.getProgress() : 0;
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted(); return (entry != null) && entry.getRecentlyCompleted();
@@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player); giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
if (!_holder.isOneTime())
{
int doneDailyMissions = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
player.getVariables().set(PlayerVariables.DAILY_MISSION_COUNT, doneDailyMissions + 1);
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
entry.setProgress(0);
}
else
{
entry.setStatus(DailyMissionStatus.COMPLETED); entry.setStatus(DailyMissionStatus.COMPLETED);
}
entry.setLastCompleted(Chronos.currentTimeMillis()); entry.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true); entry.setRecentlyCompleted(true);
storePlayerEntry(entry); storePlayerEntry(entry);

View File

@@ -29,9 +29,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@@ -84,6 +82,7 @@ public class DailyTaskManager
clanLeaderApply(); clanLeaderApply();
resetVitalityWeekly(); resetVitalityWeekly();
resetClanContribution(); resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly(); resetTimedHuntingZonesWeekly();
resetThroneOfHeroes(); resetThroneOfHeroes();
} }
@@ -97,7 +96,6 @@ public class DailyTaskManager
resetRecommends(); resetRecommends();
resetTrainingCamp(); resetTrainingCamp();
resetTimedHuntingZones(); resetTimedHuntingZones();
resetDailyMissionRewards();
resetHomunculusResetPoints(); resetHomunculusResetPoints();
resetAttendanceRewards(); resetAttendanceRewards();
} }
@@ -251,12 +249,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -282,13 +280,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -308,11 +306,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -320,7 +318,26 @@ public class DailyTaskManager
private void resetDailyMissionRewards() private void resetDailyMissionRewards()
{ {
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); // Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
{
ps.setString(1, PlayerVariables.DAILY_MISSION_COUNT);
ps.executeUpdate();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Could not reset Clan Mission Rewards: ", e);
}
// Update data for online players.
for (Player player : World.getInstance().getPlayers())
{
player.getVariables().remove(PlayerVariables.DAILY_MISSION_COUNT);
player.getVariables().storeMe();
}
LOGGER.info("Clan Mission Rewards has been resetted.");
} }
private void resetClanContribution() private void resetClanContribution()
@@ -416,12 +433,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -450,12 +467,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -136,7 +136,7 @@ public class DailyMissionDataHolder
} }
// Show only if its repeatable, recently completed or incompleted that has met the checks above. // Show only if its repeatable, recently completed or incompleted that has met the checks above.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId())); return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
} }
public void requestReward(Player player) public void requestReward(Player player)
@@ -157,9 +157,9 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId(); return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
return (_handler != null) && _handler.getRecentlyCompleted(player); return (_handler != null) && _handler.isRecentlyCompleted(player);
} }
public boolean isLevelUpMission() public boolean isLevelUpMission()

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,7 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS"; public static final String DAILY_MISSION_COUNT = "DAILY_MISSION_COUNT";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -111,7 +105,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -154,7 +148,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -181,85 +175,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -65,7 +65,7 @@ public class ExPledgeMissionInfo implements IClientOutgoingPacket
} }
else else
{ {
status = reward.getRecentlyCompleted(_player) ? 0 : 3; status = reward.isRecentlyCompleted(_player) ? 0 : 3;
} }
} }
else if (status == 1) else if (status == 1)

View File

@@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2; package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/** /**
* @author Bonux (bonuxq@gmail.com) * @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019 * @date 29.09.2019
**/ **/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player) public ExPledgeMissionRewardCount(Player player)
{ {
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count(); _doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count(); _availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
} }
@Override @Override

View File

@@ -34,9 +34,10 @@ import org.l2jmobius.gameserver.model.DailyMissionPlayerEntry;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.events.ListenersContainer; import org.l2jmobius.gameserver.model.events.ListenersContainer;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
* @author Sdw * @author Sdw, NasSeKa
*/ */
public abstract class AbstractDailyMissionHandler extends ListenersContainer public abstract class AbstractDailyMissionHandler extends ListenersContainer
{ {
@@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0; return entry != null ? entry.getProgress() : 0;
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted(); return (entry != null) && entry.getRecentlyCompleted();
@@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player); giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true); final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
if (!_holder.isOneTime())
{
int doneDailyMissions = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
player.getVariables().set(PlayerVariables.DAILY_MISSION_COUNT, doneDailyMissions + 1);
entry.setStatus(DailyMissionStatus.NOT_AVAILABLE);
entry.setProgress(0);
}
else
{
entry.setStatus(DailyMissionStatus.COMPLETED); entry.setStatus(DailyMissionStatus.COMPLETED);
}
entry.setLastCompleted(Chronos.currentTimeMillis()); entry.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true); entry.setRecentlyCompleted(true);
storePlayerEntry(entry); storePlayerEntry(entry);

View File

@@ -29,9 +29,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos; import org.l2jmobius.commons.util.Chronos;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData; import org.l2jmobius.gameserver.data.xml.TimedHuntingZoneData;
import org.l2jmobius.gameserver.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat; import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@@ -84,6 +82,7 @@ public class DailyTaskManager
clanLeaderApply(); clanLeaderApply();
resetVitalityWeekly(); resetVitalityWeekly();
resetClanContribution(); resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly(); resetTimedHuntingZonesWeekly();
resetThroneOfHeroes(); resetThroneOfHeroes();
} }
@@ -97,7 +96,6 @@ public class DailyTaskManager
resetRecommends(); resetRecommends();
resetTrainingCamp(); resetTrainingCamp();
resetTimedHuntingZones(); resetTimedHuntingZones();
resetDailyMissionRewards();
resetHomunculusResetPoints(); resetHomunculusResetPoints();
resetAttendanceRewards(); resetAttendanceRewards();
} }
@@ -251,12 +249,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -282,13 +280,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -308,11 +306,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -320,7 +318,26 @@ public class DailyTaskManager
private void resetDailyMissionRewards() private void resetDailyMissionRewards()
{ {
DailyMissionData.getInstance().getDailyMissionData().forEach(DailyMissionDataHolder::reset); // Update data for offline players.
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("DELETE FROM character_variables WHERE var=?"))
{
ps.setString(1, PlayerVariables.DAILY_MISSION_COUNT);
ps.executeUpdate();
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Could not reset Clan Mission Rewards: ", e);
}
// Update data for online players.
for (Player player : World.getInstance().getPlayers())
{
player.getVariables().remove(PlayerVariables.DAILY_MISSION_COUNT);
player.getVariables().storeMe();
}
LOGGER.info("Clan Mission Rewards has been resetted.");
} }
private void resetClanContribution() private void resetClanContribution()
@@ -416,12 +433,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -450,12 +467,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -136,7 +136,7 @@ public class DailyMissionDataHolder
} }
// Show only if its repeatable, recently completed or incompleted that has met the checks above. // Show only if its repeatable, recently completed or incompleted that has met the checks above.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId())); return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
} }
public void requestReward(Player player) public void requestReward(Player player)
@@ -157,9 +157,9 @@ public class DailyMissionDataHolder
return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId(); return _handler != null ? _handler.getProgress(player) : DailyMissionStatus.NOT_AVAILABLE.getClientId();
} }
public boolean getRecentlyCompleted(Player player) public boolean isRecentlyCompleted(Player player)
{ {
return (_handler != null) && _handler.getRecentlyCompleted(player); return (_handler != null) && _handler.isRecentlyCompleted(player);
} }
public boolean isLevelUpMission() public boolean isLevelUpMission()

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,7 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS"; public static final String DAILY_MISSION_COUNT = "DAILY_MISSION_COUNT";
public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE"; public static final String CEREMONY_OF_CHAOS_SCORE = "CEREMONY_OF_CHAOS_SCORE";
public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS"; public static final String CEREMONY_OF_CHAOS_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@@ -111,7 +105,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -154,7 +148,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -181,85 +175,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -65,7 +65,7 @@ public class ExPledgeMissionInfo implements IClientOutgoingPacket
} }
else else
{ {
status = reward.getRecentlyCompleted(_player) ? 0 : 3; status = reward.isRecentlyCompleted(_player) ? 0 : 3;
} }
} }
else if (status == 1) else if (status == 1)

View File

@@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2; package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.DailyMissionData;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets; import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/** /**
* @author Bonux (bonuxq@gmail.com) * @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019 * @date 29.09.2019
**/ **/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player) public ExPledgeMissionRewardCount(Player player)
{ {
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count(); _doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count(); _availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
} }
@Override @Override

View File

@@ -25,8 +25,6 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
} }

View File

@@ -25,8 +25,6 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
} }

View File

@@ -25,8 +25,6 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
} }

View File

@@ -25,8 +25,6 @@ import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
} }

View File

@@ -252,12 +252,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -283,13 +283,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -309,11 +309,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -252,12 +252,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -283,13 +283,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -309,11 +309,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -252,12 +252,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -283,13 +283,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -309,11 +309,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -252,12 +252,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -283,13 +283,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -309,11 +309,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -252,12 +252,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -283,13 +283,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -309,11 +309,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -256,12 +256,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -287,13 +287,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -313,11 +313,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -369,12 +369,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -403,12 +403,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -95,7 +88,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -138,7 +131,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -165,85 +158,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -249,12 +249,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -280,13 +280,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -306,11 +306,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -256,12 +256,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -287,13 +287,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -313,11 +313,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -369,12 +369,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -403,12 +403,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -110,7 +103,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -153,7 +146,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -180,85 +173,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -263,10 +263,10 @@ public class DailyTaskManager
ps.setInt(1, 4); ps.setInt(1, 4);
ps.execute(); ps.execute();
} }
World.getInstance().getPlayers().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setClanDonationPoints(3); player.setClanDonationPoints(3);
}); }
} }
catch (Exception e) catch (Exception e)
{ {
@@ -296,12 +296,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -327,13 +327,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -353,11 +353,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -409,12 +409,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -443,12 +443,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -111,7 +104,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -154,7 +147,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -181,85 +174,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }

View File

@@ -263,10 +263,10 @@ public class DailyTaskManager
ps.setInt(1, 4); ps.setInt(1, 4);
ps.execute(); ps.execute();
} }
World.getInstance().getPlayers().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setClanDonationPoints(3); player.setClanDonationPoints(3);
}); }
} }
catch (Exception e) catch (Exception e)
{ {
@@ -296,12 +296,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setWorldChatUsed(0); player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player)); player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
LOGGER.info("Daily world chat points has been resetted."); LOGGER.info("Daily world chat points has been resetted.");
} }
@@ -327,13 +327,13 @@ public class DailyTaskManager
LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e); LOGGER.log(Level.SEVERE, "Could not reset Recommendations System: ", e);
} }
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.setRecomLeft(0); player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20); player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player)); player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo(); player.broadcastUserInfo();
}); }
} }
private void resetTrainingCamp() private void resetTrainingCamp()
@@ -353,11 +353,11 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.resetTraingCampDuration(); player.resetTraingCampDuration();
player.getAccountVariables().storeMe(); player.getAccountVariables().storeMe();
}); }
LOGGER.info("Training Camp daily time has been resetted."); LOGGER.info("Training Camp daily time has been resetted.");
} }
@@ -409,12 +409,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Special Hunting Zones has been resetted."); LOGGER.info("Special Hunting Zones has been resetted.");
@@ -443,12 +443,12 @@ public class DailyTaskManager
} }
// Update data for online players. // Update data for online players.
World.getInstance().getPlayers().stream().forEach(player -> for (Player player : World.getInstance().getPlayers())
{ {
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_ENTRY + holder.getZoneId());
player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId()); player.getVariables().remove(PlayerVariables.HUNTING_ZONE_TIME + holder.getZoneId());
player.getVariables().storeMe(); player.getVariables().storeMe();
}); }
} }
LOGGER.info("Weekly Special Hunting Zones has been resetted."); LOGGER.info("Weekly Special Hunting Zones has been resetted.");

View File

@@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.util.Util;
/** /**
* @author UnAfraid * @author UnAfraid
@@ -51,7 +45,6 @@ public class PlayerVariables extends AbstractVariables
public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED"; public static final String VITALITY_ITEMS_USED_VARIABLE_NAME = "VITALITY_ITEMS_USED";
public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE"; public static final String ATTENDANCE_DATE = "ATTENDANCE_DATE";
public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX"; public static final String ATTENDANCE_INDEX = "ATTENDANCE_INDEX";
private static final String DAILY_MISSION_REWARDS = "DAILY_MISSION_REWARDS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS"; public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS"; public static final String ABILITY_POINTS_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED"; public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@@ -111,7 +104,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't restore variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -154,7 +147,7 @@ public class PlayerVariables extends AbstractVariables
} }
catch (SQLException e) catch (SQLException e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't update variables for: " + _objectId, e);
return false; return false;
} }
finally finally
@@ -181,85 +174,9 @@ public class PlayerVariables extends AbstractVariables
} }
catch (Exception e) catch (Exception e)
{ {
LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + getPlayer(), e); LOGGER.log(Level.WARNING, getClass().getSimpleName() + ": Couldn't delete variables for: " + _objectId, e);
return false; return false;
} }
return true; return true;
} }
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
public void addDailyMissionReward(int rewardId)
{
String result = getString(DAILY_MISSION_REWARDS, "");
if (result.isEmpty())
{
result = Integer.toString(rewardId);
}
else
{
result += "," + rewardId;
}
set(DAILY_MISSION_REWARDS, result);
}
public void removeDailyMissionReward(int rewardId)
{
String result = "";
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
continue;
}
if (result.isEmpty())
{
result = s;
}
else
{
result += "," + s;
}
}
set(DAILY_MISSION_REWARDS, result);
}
public boolean hasDailyMissionReward(int rewardId)
{
final String data = getString(DAILY_MISSION_REWARDS, "");
for (String s : data.split(","))
{
if (s.equals(Integer.toString(rewardId)))
{
return true;
}
}
return false;
}
public List<Integer> getDailyMissionRewards()
{
List<Integer> rewards = null;
final String data = getString(DAILY_MISSION_REWARDS, "");
if (!data.isEmpty())
{
for (String s : getString(DAILY_MISSION_REWARDS, "").split(","))
{
if (Util.isDigit(s))
{
final int rewardId = Integer.parseInt(s);
if (rewards == null)
{
rewards = new ArrayList<>();
}
rewards.add(rewardId);
}
}
}
return rewards != null ? rewards : Collections.emptyList();
}
} }