mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-20 10:55:08 +01:00
Implement Avatar Expedition System
Co-Authored-By: ShigemoriHakura <62388797+ShigemoriHakura@users.noreply.github.com> Co-Authored-By: KanyeWestc <104547412+KanyeWestc@users.noreply.github.com> Co-Authored-By: QAQ 天小络 <72185326+XTL676@users.noreply.github.com> Co-Authored-By: nkxingxh <25559053+nkxingxh@users.noreply.github.com> Co-Authored-By: Yazawazi <47273265+Yazawazi@users.noreply.github.com> Co-Authored-By: wuwuwu223 <81224214+wuwuwu223@users.noreply.github.com> Co-Authored-By: omg-xtao <100690902+omg-xtao@users.noreply.github.com> Co-Authored-By: Sakura <104815797+Sakura@users.noreply.github.com> Co-Authored-By: NewNeko-2022 <104819344+NewNeko-2022@users.noreply.github.com> Co-Authored-By: JimWails <30657653+JimWails@users.noreply.github.com> Co-Authored-By: buttercookies <19878609+ButterCookies@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionAllDataRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionAllDataReq)
|
||||
public class HandlerAvatarExpeditionAllDataReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketAvatarExpeditionAllDataRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarExpeditionCallBackReqOuterClass.AvatarExpeditionCallBackReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionCallBackRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionStartRsp;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionCallBackReq)
|
||||
public class HandlerAvatarExpeditionCallBackReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarExpeditionCallBackReq req = AvatarExpeditionCallBackReq.parseFrom(payload);
|
||||
|
||||
for (int i = 0; i < req.getAvatarGuidCount(); i++) {
|
||||
session.getPlayer().removeExpeditionInfo(req.getAvatarGuid(i));
|
||||
}
|
||||
|
||||
session.getPlayer().save();
|
||||
session.send(new PacketAvatarExpeditionCallBackRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.drop.DropData;
|
||||
import emu.grasscutter.game.expedition.ExpeditionInfo;
|
||||
import emu.grasscutter.game.expedition.ExpeditionRewardData;
|
||||
import emu.grasscutter.game.expedition.ExpeditionRewardDataList;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarExpeditionGetRewardReqOuterClass.AvatarExpeditionGetRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionCallBackRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionGetRewardRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionGetRewardReq)
|
||||
public class HandlerAvatarExpeditionGetRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarExpeditionGetRewardReq req = AvatarExpeditionGetRewardReq.parseFrom(payload);
|
||||
|
||||
ExpeditionInfo expInfo = session.getPlayer().getExpeditionInfo(req.getAvatarGuid());
|
||||
|
||||
List<GameItem> items = new LinkedList<>();
|
||||
|
||||
if (session.getServer().getExpeditionManager().getExpeditionRewardDataList().containsKey(expInfo.getExpId())) {
|
||||
for (ExpeditionRewardDataList RewardDataList : session.getServer().getExpeditionManager().getExpeditionRewardDataList().get(expInfo.getExpId())) {
|
||||
if(RewardDataList.getHourTime() == expInfo.getHourTime()){
|
||||
if(!RewardDataList.getExpeditionRewardData().isEmpty()){
|
||||
for (ExpeditionRewardData RewardData :RewardDataList.getExpeditionRewardData()) {
|
||||
int num = RewardData.getMinCount();
|
||||
if(RewardData.getMinCount() != RewardData.getMaxCount()){
|
||||
num = Utils.randomRange(RewardData.getMinCount(), RewardData.getMaxCount());
|
||||
}
|
||||
items.add(new GameItem(RewardData.getItemId(), num));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
session.getPlayer().getInventory().addItems(items);
|
||||
session.getPlayer().sendPacket(new PacketItemAddHintNotify(items, ActionReason.ExpeditionReward));
|
||||
|
||||
session.getPlayer().removeExpeditionInfo(req.getAvatarGuid());
|
||||
session.getPlayer().save();
|
||||
session.send(new PacketAvatarExpeditionGetRewardRsp(session.getPlayer(), items));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarExpeditionStartReqOuterClass.AvatarExpeditionStartReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionStartRsp;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionStartReq)
|
||||
public class HandlerAvatarExpeditionStartReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarExpeditionStartReq req = AvatarExpeditionStartReq.parseFrom(payload);
|
||||
|
||||
int startTime = Utils.getCurrentSeconds();
|
||||
session.getPlayer().addExpeditionInfo(req.getAvatarGuid(), req.getExpId(), req.getHourTime(), startTime);
|
||||
session.getPlayer().save();
|
||||
session.send(new PacketAvatarExpeditionStartRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user