L2JMobius

Classic Interlude [Fix] Daily Mission

ren · 10 · 5910

Offline ren

  • Vassal
  • *
    • Posts: 7
hi, this is a fix so that the daily missions show the correct number of rewards and not only show "9+".



Now it shows correctly correct number and updates when you have completed a mission or if claimed any reward.






Code: [Select]
### Eclipse Workspace Patch 1.0
#P L2J_Mobius_Classic_Interlude
diff --git dist/game/data/scripts/handlers/dailymissionhandlers/LevelDailyMissionHandler.java dist/game/data/scripts/handlers/dailymissionhandlers/LevelDailyMissionHandler.java
index 530f00e..ba6e086 100644
--- dist/game/data/scripts/handlers/dailymissionhandlers/LevelDailyMissionHandler.java
+++ dist/game/data/scripts/handlers/dailymissionhandlers/LevelDailyMissionHandler.java
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.events.EventType;
 import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLevelChanged;
 import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener;
+import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward;
 
 /**
  * @author Sdw
@@ -95,6 +96,8 @@
  {
  entry.setStatus(DailyMissionStatus.AVAILABLE);
  storePlayerEntry(entry);
+ player.sendPacket(new ExConnectedTimeAndGettableReward(player));
+
  }
  }
  }
diff --git java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java
index 8fa74b1..0040817 100644
--- java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java
+++ java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java
@@ -75,8 +75,8 @@
  }
  }
 
- player.sendPacket(new ExConnectedTimeAndGettableReward(player));
  player.sendPacket(new ExOneDayReceiveRewardList(player, true));
+ player.sendPacket(new ExConnectedTimeAndGettableReward(player));
 
  ThreadPool.schedule(() ->
  {
diff --git java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java
index a86a499..70e9af8 100644
--- java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java
+++ java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java
@@ -23,7 +23,7 @@
 import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
 
 /**
- * @author Sdw
+ * @author Sdw, Ren
  */
 public class ExConnectedTimeAndGettableReward implements IClientOutgoingPacket
 {
@@ -31,7 +31,7 @@
 
  public ExConnectedTimeAndGettableReward(PlayerInstance player)
  {
- _oneDayRewardAvailableCount = DailyMissionData.getInstance().getDailyMissionData(player).size();
+ _oneDayRewardAvailableCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(o -> o.getStatus(player) == 1).count();
  }
 
  @Override
@@ -43,6 +43,7 @@
  }
 
  OutgoingPackets.EX_CONNECTED_TIME_AND_GETTABLE_REWARD.writeId(packet);
+
  packet.writeD(0x00);
  packet.writeD(_oneDayRewardAvailableCount);
  packet.writeD(0x00);



Online Mobius

  • Distinguished King
  • *****
    • Posts: 16127
Nice, I will probably have to check on what other branches it must be adjusted as well.


Online Mobius

  • Distinguished King
  • *****
    • Posts: 16127
Can you try move ExConnectedTimeAndGettableReward instead of LevelDailyMissionHandler?
One packet send should be enough.

Code: [Select]
Index: java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java (revision 8157)
+++ java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java (working copy)
@@ -44,6 +44,7 @@
 import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
 import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
 import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
+import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward;
 import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayReceiveRewardList;
 import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
 import org.l2jmobius.gameserver.util.Util;
@@ -251,6 +252,9 @@
  // Notify to scripts
  EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar());
 
+ // Update daily mission count.
+ getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar()));
+
  // Give AutoGet skills and all normal skills if Auto-Learn is activated.
  getActiveChar().rewardSkills();
 
Index: java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java
===================================================================
--- java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java (revision 7753)
+++ java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java (working copy)
@@ -75,8 +75,8 @@
  }
  }
 
+ player.sendPacket(new ExOneDayReceiveRewardList(player, true));
  player.sendPacket(new ExConnectedTimeAndGettableReward(player));
- player.sendPacket(new ExOneDayReceiveRewardList(player, true));
 
  ThreadPool.schedule(() ->
  {
Index: java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java
===================================================================
--- java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java (revision 7753)
+++ java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java (working copy)
@@ -23,7 +23,7 @@
 import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
 
 /**
- * @author Sdw
+ * @author Sdw, Ren
  */
 public class ExConnectedTimeAndGettableReward implements IClientOutgoingPacket
 {
@@ -31,7 +31,7 @@
 
  public ExConnectedTimeAndGettableReward(PlayerInstance player)
  {
- _oneDayRewardAvailableCount = DailyMissionData.getInstance().getDailyMissionData(player).size();
+ _oneDayRewardAvailableCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(o -> o.getStatus(player) == 1).count();
  }
 
  @Override


Offline AnsS

  • Heir
  • **
    • Posts: 37
I think we should call update in every mission handler if reward is available, so the player get the notification of mission completion.
Anyway, thanks for the share! :)


Offline Trance

  • Elder
  • ****
    • Posts: 126
Hi Ren,

Did you manage to open OneDayReward_Classic-eu.dat?
If so, can you please share what have you used.


Offline ren

  • Vassal
  • *
    • Posts: 7
Can you try move ExConnectedTimeAndGettableReward instead of LevelDailyMissionHandler?
One packet send should be enough.

Code: [Select]
Index: java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java (revision 8157)
+++ java/org/l2jmobius/gameserver/model/actor/stat/PlayerStat.java (working copy)
@@ -44,6 +44,7 @@
 import org.l2jmobius.gameserver.network.serverpackets.SocialAction;
 import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
 import org.l2jmobius.gameserver.network.serverpackets.UserInfo;
+import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExConnectedTimeAndGettableReward;
 import org.l2jmobius.gameserver.network.serverpackets.dailymission.ExOneDayReceiveRewardList;
 import org.l2jmobius.gameserver.network.serverpackets.friend.FriendStatus;
 import org.l2jmobius.gameserver.util.Util;
@@ -251,6 +252,9 @@
  // Notify to scripts
  EventDispatcher.getInstance().notifyEventAsync(new OnPlayerLevelChanged(getActiveChar(), getLevel() - value, getLevel()), getActiveChar());
 
+ // Update daily mission count.
+ getActiveChar().sendPacket(new ExConnectedTimeAndGettableReward(getActiveChar()));
+
  // Give AutoGet skills and all normal skills if Auto-Learn is activated.
  getActiveChar().rewardSkills();
 
Index: java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java
===================================================================
--- java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java (revision 7753)
+++ java/org/l2jmobius/gameserver/network/clientpackets/dailymission/RequestOneDayRewardReceive.java (working copy)
@@ -75,8 +75,8 @@
  }
  }
 
+ player.sendPacket(new ExOneDayReceiveRewardList(player, true));
  player.sendPacket(new ExConnectedTimeAndGettableReward(player));
- player.sendPacket(new ExOneDayReceiveRewardList(player, true));
 
  ThreadPool.schedule(() ->
  {
Index: java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java
===================================================================
--- java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java (revision 7753)
+++ java/org/l2jmobius/gameserver/network/serverpackets/dailymission/ExConnectedTimeAndGettableReward.java (working copy)
@@ -23,7 +23,7 @@
 import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
 
 /**
- * @author Sdw
+ * @author Sdw, Ren
  */
 public class ExConnectedTimeAndGettableReward implements IClientOutgoingPacket
 {
@@ -31,7 +31,7 @@
 
  public ExConnectedTimeAndGettableReward(PlayerInstance player)
  {
- _oneDayRewardAvailableCount = DailyMissionData.getInstance().getDailyMissionData(player).size();
+ _oneDayRewardAvailableCount = (int) DailyMissionData.getInstance().getDailyMissionData(player).stream().filter(o -> o.getStatus(player) == 1).count();
  }
 
  @Override
I put ExConnectedTimeAndGettableReward in LevelDailyMissionHandler because my idea is that it only updates when the mission reward changes state (AVAILABLE) and not every time it levels up.


Offline ren

  • Vassal
  • *
    • Posts: 7
Hi Ren,

Did you manage to open OneDayReward_Classic-eu.dat?
If so, can you please share what have you used.
Yep, i can open and edit the file  "OneDayReward_Classic-eu.dat" ^^. It took me a long time to figure out how to do it, I can't give it, but if you want I can sell you the edited file as you want.



Offline Trance

  • Elder
  • ****
    • Posts: 126
Hi Ren,

Did you manage to open OneDayReward_Classic-eu.dat?
If so, can you please share what have you used.
Yep, i can open and edit the file  "OneDayReward_Classic-eu.dat" ^^. It took me a long time to figure out how to do it, I can't give it, but if you want I can sell you the edited file as you want.



Lol! This is so disrespectful to the community. Took you long time to do what, open a hex editor? You simply have to look into the container and add the kor_grand_crusade_p3 to the editor with the right data. So you won't share a simple thing while you build your own project (server and client) on other people's shared files? My contributions to this project included, which you are using by the way.


Offline Trance

  • Elder
  • ****
    • Posts: 126
Here's 15 minutes of work with an hex editor to get the structure. You'll ask us more for sure and we'll ask you to pay.