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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -302,11 +302,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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 org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/**
* @author UnAfraid
@ -85,7 +83,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -128,7 +126,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -155,14 +153,9 @@ public class PlayerVariables extends AbstractVariables
}
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 true;
}
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
}

View File

@ -249,12 +249,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -306,11 +306,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -92,7 +85,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -135,7 +128,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -162,85 +155,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -306,11 +306,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -92,7 +85,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -135,7 +128,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -162,85 +155,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -306,11 +306,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -92,7 +85,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -135,7 +128,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -162,85 +155,10 @@ public class PlayerVariables extends AbstractVariables
}
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 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.events.ListenersContainer;
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
{
@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(Player player)
public boolean isRecentlyCompleted(Player player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
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.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);

View File

@ -27,8 +27,6 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos;
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.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@ -80,6 +78,7 @@ public class DailyTaskManager
clanLeaderApply();
resetVitalityWeekly();
resetClanContribution();
resetDailyMissionRewards();
}
else
{
@ -90,7 +89,6 @@ public class DailyTaskManager
resetWorldChatPoints();
resetRecommends();
resetTrainingCamp();
resetDailyMissionRewards();
resetAttendanceRewards();
}
@ -243,12 +241,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -300,11 +298,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -312,7 +310,26 @@ public class DailyTaskManager
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()

View File

@ -136,7 +136,7 @@ public class DailyMissionDataHolder
}
// 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)
@ -157,9 +157,9 @@ public class DailyMissionDataHolder
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()

View File

@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -95,7 +89,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -138,7 +132,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -165,85 +159,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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
{
status = reward.getRecentlyCompleted(_player) ? 0 : 3;
status = reward.isRecentlyCompleted(_player) ? 0 : 3;
}
}
else if (status == 1)

View File

@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
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.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Bonux (bonuxq@gmail.com)
* @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019
**/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player)
{
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count();
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count();
_doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
}
@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.events.ListenersContainer;
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
{
@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(Player player)
public boolean isRecentlyCompleted(Player player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
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.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);

View File

@ -27,8 +27,6 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos;
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.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@ -80,6 +78,7 @@ public class DailyTaskManager
clanLeaderApply();
resetVitalityWeekly();
resetClanContribution();
resetDailyMissionRewards();
}
else
{
@ -90,7 +89,6 @@ public class DailyTaskManager
resetWorldChatPoints();
resetRecommends();
resetTrainingCamp();
resetDailyMissionRewards();
resetAttendanceRewards();
}
@ -243,12 +241,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -300,11 +298,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -312,7 +310,26 @@ public class DailyTaskManager
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()

View File

@ -136,7 +136,7 @@ public class DailyMissionDataHolder
}
// 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)
@ -157,9 +157,9 @@ public class DailyMissionDataHolder
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()

View File

@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -95,7 +89,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -138,7 +132,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -165,85 +159,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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
{
status = reward.getRecentlyCompleted(_player) ? 0 : 3;
status = reward.isRecentlyCompleted(_player) ? 0 : 3;
}
}
else if (status == 1)

View File

@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
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.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Bonux (bonuxq@gmail.com)
* @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019
**/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player)
{
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count();
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count();
_doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
}
@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.events.ListenersContainer;
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
{
@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(Player player)
public boolean isRecentlyCompleted(Player player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
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.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);

View File

@ -27,8 +27,6 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos;
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.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@ -80,6 +78,7 @@ public class DailyTaskManager
clanLeaderApply();
resetVitalityWeekly();
resetClanContribution();
resetDailyMissionRewards();
}
else
{
@ -90,7 +89,6 @@ public class DailyTaskManager
resetWorldChatPoints();
resetRecommends();
resetTrainingCamp();
resetDailyMissionRewards();
resetAttendanceRewards();
}
@ -243,12 +241,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -300,11 +298,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -312,7 +310,26 @@ public class DailyTaskManager
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()

View File

@ -136,7 +136,7 @@ public class DailyMissionDataHolder
}
// 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)
@ -157,9 +157,9 @@ public class DailyMissionDataHolder
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()

View File

@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -95,7 +89,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -138,7 +132,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -165,85 +159,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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
{
status = reward.getRecentlyCompleted(_player) ? 0 : 3;
status = reward.isRecentlyCompleted(_player) ? 0 : 3;
}
}
else if (status == 1)

View File

@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
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.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Bonux (bonuxq@gmail.com)
* @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019
**/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player)
{
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count();
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count();
_doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
}
@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.events.ListenersContainer;
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
{
@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(Player player)
public boolean isRecentlyCompleted(Player player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
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.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);

View File

@ -27,9 +27,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos;
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.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@ -82,6 +80,7 @@ public class DailyTaskManager
clanLeaderApply();
resetVitalityWeekly();
resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly();
}
else
@ -94,7 +93,6 @@ public class DailyTaskManager
resetRecommends();
resetTrainingCamp();
resetTimedHuntingZones();
resetDailyMissionRewards();
resetAttendanceRewards();
}
@ -247,12 +245,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -304,11 +302,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -316,7 +314,26 @@ public class DailyTaskManager
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()
@ -377,12 +394,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -411,12 +428,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
}
public void requestReward(Player player)
@ -157,9 +157,9 @@ public class DailyMissionDataHolder
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()

View File

@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -99,7 +93,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -142,7 +136,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -169,85 +163,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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
{
status = reward.getRecentlyCompleted(_player) ? 0 : 3;
status = reward.isRecentlyCompleted(_player) ? 0 : 3;
}
}
else if (status == 1)

View File

@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
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.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Bonux (bonuxq@gmail.com)
* @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019
**/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player)
{
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count();
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count();
_doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
}
@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.events.ListenersContainer;
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
{
@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(Player player)
public boolean isRecentlyCompleted(Player player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
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.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);

View File

@ -29,9 +29,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos;
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.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@ -84,6 +82,7 @@ public class DailyTaskManager
clanLeaderApply();
resetVitalityWeekly();
resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly();
resetThroneOfHeroes();
}
@ -97,7 +96,6 @@ public class DailyTaskManager
resetRecommends();
resetTrainingCamp();
resetTimedHuntingZones();
resetDailyMissionRewards();
resetHomunculusResetPoints();
resetAttendanceRewards();
}
@ -251,12 +249,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -308,11 +306,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -320,7 +318,26 @@ public class DailyTaskManager
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()
@ -416,12 +433,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -450,12 +467,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
}
public void requestReward(Player player)
@ -157,9 +157,9 @@ public class DailyMissionDataHolder
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()

View File

@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -111,7 +105,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -154,7 +148,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -181,85 +175,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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
{
status = reward.getRecentlyCompleted(_player) ? 0 : 3;
status = reward.isRecentlyCompleted(_player) ? 0 : 3;
}
}
else if (status == 1)

View File

@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
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.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Bonux (bonuxq@gmail.com)
* @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019
**/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player)
{
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count();
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count();
_doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
}
@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.events.ListenersContainer;
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
{
@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(Player player)
public boolean isRecentlyCompleted(Player player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
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.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);

View File

@ -29,9 +29,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos;
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.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@ -84,6 +82,7 @@ public class DailyTaskManager
clanLeaderApply();
resetVitalityWeekly();
resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly();
resetThroneOfHeroes();
}
@ -97,7 +96,6 @@ public class DailyTaskManager
resetRecommends();
resetTrainingCamp();
resetTimedHuntingZones();
resetDailyMissionRewards();
resetHomunculusResetPoints();
resetAttendanceRewards();
}
@ -251,12 +249,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -308,11 +306,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -320,7 +318,26 @@ public class DailyTaskManager
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()
@ -416,12 +433,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -450,12 +467,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
}
public void requestReward(Player player)
@ -157,9 +157,9 @@ public class DailyMissionDataHolder
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()

View File

@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -111,7 +105,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -154,7 +148,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -181,85 +175,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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
{
status = reward.getRecentlyCompleted(_player) ? 0 : 3;
status = reward.isRecentlyCompleted(_player) ? 0 : 3;
}
}
else if (status == 1)

View File

@ -17,13 +17,13 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV2;
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.variables.PlayerVariables;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* @author Bonux (bonuxq@gmail.com)
* @author Bonux (bonuxq@gmail.com), NasSeKa
* @date 29.09.2019
**/
public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
@ -33,8 +33,8 @@ public class ExPledgeMissionRewardCount implements IClientOutgoingPacket
public ExPledgeMissionRewardCount(Player player)
{
_doneMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getRecentlyCompleted(player)).count();
_availableMissionsCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(d -> d.getStatus(player) == 1).count();
_doneMissionsCount = player.getVariables().getInt(PlayerVariables.DAILY_MISSION_COUNT, 0);
_availableMissionsCount = player.getNobleLevel() == 1 ? 18 : player.getNobleLevel() >= 2 ? 20 : 16;
}
@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.events.ListenersContainer;
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
{
@ -77,7 +78,7 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
return entry != null ? entry.getProgress() : 0;
}
public boolean getRecentlyCompleted(Player player)
public boolean isRecentlyCompleted(Player player)
{
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), false);
return (entry != null) && entry.getRecentlyCompleted();
@ -114,7 +115,17 @@ public abstract class AbstractDailyMissionHandler extends ListenersContainer
giveRewards(player);
final DailyMissionPlayerEntry entry = getPlayerEntry(player.getObjectId(), true);
entry.setStatus(DailyMissionStatus.COMPLETED);
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.setLastCompleted(Chronos.currentTimeMillis());
entry.setRecentlyCompleted(true);
storePlayerEntry(entry);

View File

@ -29,9 +29,7 @@ import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.Chronos;
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.model.DailyMissionDataHolder;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.stat.PlayerStat;
@ -84,6 +82,7 @@ public class DailyTaskManager
clanLeaderApply();
resetVitalityWeekly();
resetClanContribution();
resetDailyMissionRewards();
resetTimedHuntingZonesWeekly();
resetThroneOfHeroes();
}
@ -97,7 +96,6 @@ public class DailyTaskManager
resetRecommends();
resetTrainingCamp();
resetTimedHuntingZones();
resetDailyMissionRewards();
resetHomunculusResetPoints();
resetAttendanceRewards();
}
@ -251,12 +249,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -308,11 +306,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -320,7 +318,26 @@ public class DailyTaskManager
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()
@ -416,12 +433,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -450,12 +467,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.
return (!_isOneTime || getRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
return (!_isOneTime || isRecentlyCompleted(player) || (status != DailyMissionStatus.COMPLETED.getClientId()));
}
public void requestReward(Player player)
@ -157,9 +157,9 @@ public class DailyMissionDataHolder
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()

View File

@ -20,17 +20,11 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_MARKS = "CEREMONY_OF_CHAOS_MARKS";
public static final String ABILITY_POINTS_MAIN_CLASS = "ABILITY_POINTS";
@ -111,7 +105,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -154,7 +148,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -181,85 +175,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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
{
status = reward.getRecentlyCompleted(_player) ? 0 : 3;
status = reward.isRecentlyCompleted(_player) ? 0 : 3;
}
}
else if (status == 1)

View File

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

View File

@ -25,8 +25,6 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/**
* @author UnAfraid
@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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 org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/**
* @author UnAfraid
@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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 org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/**
* @author UnAfraid
@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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 org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.Player;
/**
* @author UnAfraid
@ -66,7 +64,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -109,7 +107,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -136,14 +134,9 @@ public class PlayerVariables extends AbstractVariables
}
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 true;
}
public Player getPlayer()
{
return World.getInstance().getPlayer(_objectId);
}
}

View File

@ -252,12 +252,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -309,11 +309,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -309,11 +309,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -309,11 +309,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -309,11 +309,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -309,11 +309,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -313,11 +313,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -369,12 +369,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -403,12 +403,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -95,7 +88,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -138,7 +131,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -165,85 +158,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -306,11 +306,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -91,7 +84,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -134,7 +127,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -161,85 +154,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -313,11 +313,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -369,12 +369,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -403,12 +403,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -110,7 +103,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -153,7 +146,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -180,85 +173,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.execute();
}
World.getInstance().getPlayers().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setClanDonationPoints(3);
});
}
}
catch (Exception e)
{
@ -296,12 +296,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -353,11 +353,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -409,12 +409,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -443,12 +443,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -111,7 +104,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -154,7 +147,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -181,85 +174,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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.execute();
}
World.getInstance().getPlayers().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setClanDonationPoints(3);
});
}
}
catch (Exception e)
{
@ -296,12 +296,12 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setWorldChatUsed(0);
player.sendPacket(new ExWorldChatCnt(player));
player.getVariables().storeMe();
});
}
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);
}
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.setRecomLeft(0);
player.setRecomHave(player.getRecomHave() - 20);
player.sendPacket(new ExVoteSystemInfo(player));
player.broadcastUserInfo();
});
}
}
private void resetTrainingCamp()
@ -353,11 +353,11 @@ public class DailyTaskManager
}
// Update data for online players.
World.getInstance().getPlayers().stream().forEach(player ->
for (Player player : World.getInstance().getPlayers())
{
player.resetTraingCampDuration();
player.getAccountVariables().storeMe();
});
}
LOGGER.info("Training Camp daily time has been resetted.");
}
@ -409,12 +409,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
LOGGER.info("Special Hunting Zones has been resetted.");
@ -443,12 +443,12 @@ public class DailyTaskManager
}
// 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_TIME + holder.getZoneId());
player.getVariables().storeMe();
});
}
}
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.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
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
@ -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 ATTENDANCE_DATE = "ATTENDANCE_DATE";
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_DUAL_CLASS = "ABILITY_POINTS_DUAL_CLASS";
public static final String ABILITY_POINTS_USED_MAIN_CLASS = "ABILITY_POINTS_USED";
@ -111,7 +104,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -154,7 +147,7 @@ public class PlayerVariables extends AbstractVariables
}
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;
}
finally
@ -181,85 +174,9 @@ public class PlayerVariables extends AbstractVariables
}
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 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();
}
}