mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-27 03:59:16 +00:00
Allow the player to finish dungeons
This commit is contained in:
parent
069ae5fbb8
commit
c3c170def9
@ -17,4 +17,6 @@ message DungeonChallengeFinishNotify {
|
|||||||
uint32 challenge_record_type = 4;
|
uint32 challenge_record_type = 4;
|
||||||
uint32 current_value = 5;
|
uint32 current_value = 5;
|
||||||
map<uint32, StrengthenPointData> strengthen_point_data_map = 6;
|
map<uint32, StrengthenPointData> strengthen_point_data_map = 6;
|
||||||
|
uint32 unk1 = 7;
|
||||||
|
uint32 unk2 = 8;
|
||||||
}
|
}
|
||||||
|
16
proto/DungeonSettleNotify.proto
Normal file
16
proto/DungeonSettleNotify.proto
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
import "ParamList.proto";
|
||||||
|
import "StrengthenPointData.proto";
|
||||||
|
|
||||||
|
message DungeonSettleNotify {
|
||||||
|
uint32 dungeon_id = 1;
|
||||||
|
bool is_success = 2;
|
||||||
|
repeated uint32 fail_cond_list = 3;
|
||||||
|
map<uint32, ParamList> settle_show = 4;
|
||||||
|
uint32 close_time = 5;
|
||||||
|
map<uint32, StrengthenPointData> strengthen_point_data_map = 6;
|
||||||
|
uint32 result = 7;
|
||||||
|
}
|
7
proto/ParamList.proto
Normal file
7
proto/ParamList.proto
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option java_package = "emu.grasscutter.net.proto";
|
||||||
|
|
||||||
|
message ParamList {
|
||||||
|
repeated uint32 param_list_ = 1;
|
||||||
|
}
|
@ -12,6 +12,7 @@ import emu.grasscutter.net.proto.VisionTypeOuterClass.VisionType;
|
|||||||
import emu.grasscutter.scripts.constants.EventType;
|
import emu.grasscutter.scripts.constants.EventType;
|
||||||
import emu.grasscutter.scripts.data.SceneGroup;
|
import emu.grasscutter.scripts.data.SceneGroup;
|
||||||
import emu.grasscutter.scripts.data.SceneMonster;
|
import emu.grasscutter.scripts.data.SceneMonster;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketChallengeDataNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketDungeonChallengeBeginNotify;
|
import emu.grasscutter.server.packet.send.PacketDungeonChallengeBeginNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketDungeonChallengeFinishNotify;
|
import emu.grasscutter.server.packet.send.PacketDungeonChallengeFinishNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketSceneEntityAppearNotify;
|
import emu.grasscutter.server.packet.send.PacketSceneEntityAppearNotify;
|
||||||
@ -66,6 +67,10 @@ public class DungeonChallenge {
|
|||||||
this.isSuccess = isSuccess;
|
this.isSuccess = isSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getScore() {
|
||||||
|
return score;
|
||||||
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
getScene().broadcastPacket(new PacketDungeonChallengeBeginNotify(this));
|
getScene().broadcastPacket(new PacketDungeonChallengeBeginNotify(this));
|
||||||
}
|
}
|
||||||
@ -81,9 +86,11 @@ public class DungeonChallenge {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onMonsterDie(EntityMonster entity) {
|
public void onMonsterDie(EntityMonster entity) {
|
||||||
score++;
|
score = getScore() + 1;
|
||||||
|
|
||||||
if (score >= objective) {
|
getScene().broadcastPacket(new PacketChallengeDataNotify(this, 1, getScore()));
|
||||||
|
|
||||||
|
if (getScore() >= objective) {
|
||||||
this.setSuccess(true);
|
this.setSuccess(true);
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,8 @@ public class DungeonManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Grasscutter.getLogger().info(player.getNickname() + " is trying to enter dungeon " + dungeonId);
|
||||||
|
|
||||||
int sceneId = data.getSceneId();
|
int sceneId = data.getSceneId();
|
||||||
player.getScene().setPrevScene(sceneId);
|
player.getScene().setPrevScene(sceneId);
|
||||||
|
|
||||||
|
@ -139,6 +139,10 @@ public class ScriptLib {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int AddExtraGroupSuite(int groupId, int param2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
public int ActiveChallenge(int challengeId, int challengeIndex, int param3, int groupId, int param4, int param5) {
|
public int ActiveChallenge(int challengeId, int challengeIndex, int param3, int groupId, int param4, int param5) {
|
||||||
SceneGroup group = getSceneScriptManager().getGroupById(groupId);
|
SceneGroup group = getSceneScriptManager().getGroupById(groupId);
|
||||||
|
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
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.ChallengeDataNotifyOuterClass.ChallengeDataNotify;
|
||||||
|
|
||||||
|
public class PacketChallengeDataNotify extends BasePacket {
|
||||||
|
|
||||||
|
public PacketChallengeDataNotify(DungeonChallenge challenge, int index, int value) {
|
||||||
|
super(PacketOpcodes.ChallengeDataNotify);
|
||||||
|
|
||||||
|
ChallengeDataNotify proto = ChallengeDataNotify.newBuilder()
|
||||||
|
.setChallengeIndex(challenge.getChallengeIndex())
|
||||||
|
.setParamIndex(index)
|
||||||
|
.setValue(value)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
this.setData(proto);
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,7 @@ public class PacketDungeonChallengeBeginNotify extends BasePacket {
|
|||||||
DungeonChallengeBeginNotify proto = DungeonChallengeBeginNotify.newBuilder()
|
DungeonChallengeBeginNotify proto = DungeonChallengeBeginNotify.newBuilder()
|
||||||
.setChallengeId(challenge.getChallengeId())
|
.setChallengeId(challenge.getChallengeId())
|
||||||
.setChallengeIndex(challenge.getChallengeIndex())
|
.setChallengeIndex(challenge.getChallengeIndex())
|
||||||
|
.setGroupId(challenge.getGroup().id)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
this.setData(proto);
|
this.setData(proto);
|
||||||
|
@ -11,8 +11,10 @@ public class PacketDungeonChallengeFinishNotify extends BasePacket {
|
|||||||
super(PacketOpcodes.DungeonChallengeFinishNotify);
|
super(PacketOpcodes.DungeonChallengeFinishNotify);
|
||||||
|
|
||||||
DungeonChallengeFinishNotify proto = DungeonChallengeFinishNotify.newBuilder()
|
DungeonChallengeFinishNotify proto = DungeonChallengeFinishNotify.newBuilder()
|
||||||
.setChallengeIndex(challenge.getChallengeId())
|
.setChallengeIndex(challenge.getChallengeIndex())
|
||||||
.setIsSuccess(challenge.isSuccess())
|
.setIsSuccess(challenge.isSuccess())
|
||||||
|
.setUnk1(challenge.getChallengeId())
|
||||||
|
.setUnk2(30)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
this.setData(proto);
|
this.setData(proto);
|
||||||
|
Loading…
Reference in New Issue
Block a user