mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-18 18:05:05 +01:00
Implement script support needed for dungeons
Only a few are supported right now You will need certain script files in ./resources/Scripts
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SelectWorktopOptionReqOuterClass.SelectWorktopOptionReq;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketSelectWorktopOptionRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.SelectWorktopOptionReq)
|
||||
public class HandlerSelectWorktopOptionReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
SelectWorktopOptionReq req = SelectWorktopOptionReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getScene().getScriptManager().onOptionSelect(req.getGadgetEntityId(), req.getOptionId());
|
||||
|
||||
session.send(new PacketSelectWorktopOptionRsp(req.getGadgetEntityId(), req.getOptionId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.dungeons.DungeonChallenge;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.DungeonChallengeBeginNotifyOuterClass.DungeonChallengeBeginNotify;
|
||||
|
||||
public class PacketDungeonChallengeBeginNotify extends BasePacket {
|
||||
|
||||
public PacketDungeonChallengeBeginNotify(DungeonChallenge challenge) {
|
||||
super(PacketOpcodes.DungeonChallengeBeginNotify);
|
||||
|
||||
DungeonChallengeBeginNotify proto = DungeonChallengeBeginNotify.newBuilder()
|
||||
.setChallengeId(challenge.getChallengeId())
|
||||
.setChallengeIndex(challenge.getChallengeIndex())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.dungeons.DungeonChallenge;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.DungeonChallengeFinishNotifyOuterClass.DungeonChallengeFinishNotify;
|
||||
|
||||
public class PacketDungeonChallengeFinishNotify extends BasePacket {
|
||||
|
||||
public PacketDungeonChallengeFinishNotify(DungeonChallenge challenge) {
|
||||
super(PacketOpcodes.DungeonChallengeFinishNotify);
|
||||
|
||||
DungeonChallengeFinishNotify proto = DungeonChallengeFinishNotify.newBuilder()
|
||||
.setChallengeIndex(challenge.getChallengeId())
|
||||
.setIsSuccess(challenge.isSuccess())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityGadget;
|
||||
import emu.grasscutter.game.entity.EntityBaseGadget;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GadgetInteractRspOuterClass.GadgetInteractRsp;
|
||||
@@ -8,7 +8,7 @@ import emu.grasscutter.net.proto.InteractTypeOuterClass.InteractType;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketGadgetInteractRsp extends BasePacket {
|
||||
public PacketGadgetInteractRsp(EntityGadget gadget, InteractType interact) {
|
||||
public PacketGadgetInteractRsp(EntityBaseGadget gadget, InteractType interact) {
|
||||
super(PacketOpcodes.GadgetInteractRsp);
|
||||
|
||||
GadgetInteractRsp proto = GadgetInteractRsp.newBuilder()
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityGadget;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GadgetStateNotifyOuterClass.GadgetStateNotify;
|
||||
|
||||
public class PacketGadgetStateNotify extends BasePacket {
|
||||
|
||||
public PacketGadgetStateNotify(EntityGadget gadget, int newState) {
|
||||
super(PacketOpcodes.GadgetStateNotify);
|
||||
|
||||
GadgetStateNotify proto = GadgetStateNotify.newBuilder()
|
||||
.setGadgetEntityId(gadget.getId())
|
||||
.setGadgetState(newState)
|
||||
.setIsEnableInteract(true)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SelectWorktopOptionRspOuterClass.SelectWorktopOptionRsp;
|
||||
|
||||
public class PacketSelectWorktopOptionRsp extends BasePacket {
|
||||
|
||||
public PacketSelectWorktopOptionRsp(int entityId, int optionId) {
|
||||
super(PacketOpcodes.SelectWorktopOptionRsp);
|
||||
|
||||
SelectWorktopOptionRsp proto = SelectWorktopOptionRsp.newBuilder()
|
||||
.setGadgetEntityId(entityId)
|
||||
.setOptionId(optionId)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityGadget;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.WorktopOptionNotifyOuterClass.WorktopOptionNotify;
|
||||
|
||||
public class PacketWorktopOptionNotify extends BasePacket {
|
||||
|
||||
public PacketWorktopOptionNotify(EntityGadget gadget) {
|
||||
super(PacketOpcodes.WorktopOptionNotify);
|
||||
|
||||
WorktopOptionNotify.Builder proto = WorktopOptionNotify.newBuilder()
|
||||
.setGadgetEntityId(gadget.getId());
|
||||
|
||||
if (gadget.getWorktopOptions() != null) {
|
||||
proto.addAllOptionList(gadget.getWorktopOptions());
|
||||
}
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user