GCG初步 但会卡进度条 用命令/gcg进入

This commit is contained in:
UnKownOwO
2023-01-04 21:59:25 +08:00
parent 2bc157dd2d
commit f991480192
203 changed files with 5104 additions and 2790 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -248,6 +248,29 @@ func (c *CmdProtoMap) registerAllMessage() {
c.registerMessage(VehicleInteractRsp, &proto.VehicleInteractRsp{}) // 载具交互响应
c.registerMessage(VehicleStaminaNotify, &proto.VehicleStaminaNotify{}) // 载具耐力消耗通知
// 七圣召唤
c.registerMessage(GCGBasicDataNotify, &proto.GCGBasicDataNotify{}) // GCG基本数据通知
c.registerMessage(GCGLevelChallengeNotify, &proto.GCGLevelChallengeNotify{}) // GCG等级挑战通知
c.registerMessage(GCGDSBanCardNotify, &proto.GCGDSBanCardNotify{}) // GCG禁止的卡牌通知
c.registerMessage(GCGDSDataNotify, &proto.GCGDSDataNotify{}) // GCG数据通知 (解锁的内容)
c.registerMessage(GCGTCTavernChallengeDataNotify, &proto.GCGTCTavernChallengeDataNotify{}) // GCG酒馆挑战数据通知
c.registerMessage(GCGTCTavernInfoNotify, &proto.GCGTCTavernInfoNotify{}) // GCG酒馆信息通知
c.registerMessage(GCGTavernNpcInfoNotify, &proto.GCGTavernNpcInfoNotify{}) // GCG酒馆NPC信息通知
c.registerMessage(GCGGameBriefDataNotify, &proto.GCGGameBriefDataNotify{}) // GCG游戏简要数据通知
c.registerMessage(GCGAskDuelReq, &proto.GCGAskDuelReq{}) // GCG决斗请求
c.registerMessage(GCGAskDuelRsp, &proto.GCGAskDuelRsp{}) // GCG决斗响应
c.registerMessage(GCGInitFinishReq, &proto.GCGInitFinishReq{}) // GCG初始化完成请求
c.registerMessage(GCGInitFinishRsp, &proto.GCGInitFinishRsp{}) // GCG初始化完成响应
c.registerMessage(Unk3300_DGBNCDEIIFC, &proto.Unk3300_DGBNCDEIIFC{}) // GCG
c.registerMessage(DungeonWayPointNotify, &proto.DungeonWayPointNotify{}) // GCG
c.registerMessage(DungeonDataNotify, &proto.DungeonDataNotify{}) // GCG
//// TODO 客户端开始GCG游戏
//c.registerMessage(GCGStartChallengeByCheckRewardReq, &proto.GCGStartChallengeByCheckRewardReq{}) // GCG开始挑战来自检测奖励请求
//c.registerMessage(GCGStartChallengeByCheckRewardRsp, &proto.GCGStartChallengeByCheckRewardRsp{}) // GCG开始挑战来自检测奖励响应
//c.registerMessage(GCGStartChallengeReq, &proto.GCGStartChallengeReq{}) // GCG开始挑战请求
//c.registerMessage(GCGStartChallengeRsp, &proto.GCGStartChallengeRsp{}) // GCG开始挑战响应
// 乱七八糟
c.registerMessage(MarkMapReq, &proto.MarkMapReq{}) // 标记地图请求
c.registerMessage(TowerAllDataReq, &proto.TowerAllDataReq{}) // 深渊数据请求

View File

@@ -0,0 +1,48 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
enum GCGActionType {
GCG_ACTION_TYPE_NONE = 0;
GCG_ACTION_TYPE_SPECIAL_PHASE = 1;
GCG_ACTION_TYPE_NEXT_PHASE = 2;
GCG_ACTION_TYPE_DRAW = 3;
GCG_ACTION_TYPE_REDRAW = 4;
GCG_ACTION_TYPE_SELECT_ONSTAGE = 5;
GCG_ACTION_TYPE_ROLL = 6;
GCG_ACTION_TYPE_REROLL = 7;
GCG_ACTION_TYPE_ATTACK = 8;
GCG_ACTION_TYPE_PLAY_CARD = 9;
GCG_ACTION_TYPE_PASS = 10;
GCG_ACTION_TYPE_REBOOT = 11;
GCG_ACTION_TYPE_GAME_OVER = 12;
GCG_ACTION_TYPE_TRIGGER = 13;
GCG_ACTION_TYPE_PHASE_EXIT = 14;
GCG_ACTION_TYPE_CUSTOM = 15;
GCG_ACTION_TYPE_NOTIFY_COST = 16;
GCG_ACTION_TYPE_AFTER_OPERATION = 17;
GCG_ACTION_TYPE_USE_SKILL = 18;
GCG_ACTION_TYPE_NOTIFY_SKILL_PREVIEW = 19;
GCG_ACTION_TYPE_PREVIEW_ATTACK = 20;
GCG_ACTION_TYPE_PREVIEW_AFTER_ATTACK = 21;
GCG_ACTION_TYPE_SEND_MESSAGE = 22;
GCG_ACTION_TYPE_WAITING_CHARACTER = 23;
GCG_ACTION_TYPE_TRIGGER_SKILL = 24;
GCG_ACTION_TYPE_BEFORE_NEXT_OPERATION = 25;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7820
// EnetChannelId: 0
// EnetIsReliable: true
message GCGApplyInviteBattleNotify {
bool is_agree = 14;
int32 retcode = 6;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7984;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
bool is_agree = 4;
int32 retcode = 14;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7730
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGApplyInviteBattleReq {
bool is_agree = 9;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7032;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
bool is_agree = 12;
}

View File

@@ -16,12 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7304
// EnetChannelId: 0
// EnetIsReliable: true
message GCGApplyInviteBattleRsp {
int32 retcode = 5;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7754;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 punish_end_time = 6;
int32 retcode = 8;
}

View File

@@ -16,11 +16,15 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7237
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGAskDuelReq {}
message GCGAskDuelReq {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7034;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
}

View File

@@ -18,13 +18,17 @@ syntax = "proto3";
import "GCGDuel.proto";
package proto;
option go_package = "./;proto";
// CmdId: 7869
// EnetChannelId: 0
// EnetIsReliable: true
message GCGAskDuelRsp {
int32 retcode = 3;
GCGDuel duel = 13;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7564;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
GCGDuel duel = 9;
int32 retcode = 2;
}

View File

@@ -16,10 +16,11 @@
syntax = "proto3";
package proto;
import "Uint32Pair.proto";
option go_package = "./;proto";
message GCGAttackCostInfo {
uint32 skill_id = 8;
map<uint32, uint32> cost_map = 3;
repeated Uint32Pair cost_map = 1;
uint32 skill_id = 7;
}

View File

@@ -0,0 +1,32 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGBackToDuelReq {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7015;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
bool is_back = 10;
}

View File

@@ -0,0 +1,31 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGBackToDuelRsp {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7039;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
int32 retcode = 14;
}

View File

@@ -16,14 +16,18 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7319
// EnetChannelId: 0
// EnetIsReliable: true
message GCGBasicDataNotify {
uint32 level = 9;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7739;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 level = 6;
uint32 exp = 4;
repeated uint32 level_reward_taken_list = 12;
repeated uint32 level_reward_taken_list = 14;
}

View File

@@ -16,10 +16,9 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGBossChallengeData {
uint32 id = 9;
repeated uint32 unlock_level_id_list = 14;
repeated uint32 unlock_level_id_list = 3;
uint32 id = 10;
}

View File

@@ -18,12 +18,16 @@ syntax = "proto3";
import "GCGBossChallengeData.proto";
package proto;
option go_package = "./;proto";
// CmdId: 7073
// EnetChannelId: 0
// EnetIsReliable: true
message GCGBossChallengeUpdateNotify {
GCGBossChallengeData boss_challenge = 11;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7852;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
GCGBossChallengeData boss_challenge = 7;
}

View File

@@ -16,17 +16,19 @@
syntax = "proto3";
import "GCGSkillLimitsInfo.proto";
import "GCGToken.proto";
package proto;
option go_package = "./;proto";
message GCGCard {
uint32 guid = 15;
repeated GCGToken token_list = 2;
bool is_show = 14;
uint32 controller_id = 7;
repeated uint32 tag_list = 7;
uint32 guid = 11;
bool is_show = 15;
repeated GCGToken token_list = 8;
uint32 face_type = 2;
repeated uint32 skill_id_list = 13;
repeated GCGSkillLimitsInfo skill_limits_list = 3;
uint32 id = 6;
repeated uint32 tag_list = 3;
uint32 face_type = 5;
uint32 controller_id = 5;
}

View File

@@ -0,0 +1,25 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
import "GCGSkillLimitsInfo.proto";
option go_package = "./;proto";
message GCGCardSkillLimitsInfo {
repeated GCGSkillLimitsInfo skill_limits_list = 1;
}

View File

@@ -16,7 +16,6 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGChallengeData {

View File

@@ -18,14 +18,17 @@ syntax = "proto3";
import "GCGDuelChallenge.proto";
package proto;
option go_package = "./;proto";
// CmdId: 7268
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGChallengeUpdateNotify {
uint32 server_seq = 12;
GCGDuelChallenge challenge = 13;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7270;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 server_seq = 15;
GCGDuelChallenge challenge = 1;
}

View File

@@ -0,0 +1,27 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
import "GCGSkillPreviewInfo.proto";
option go_package = "./;proto";
message GCGChangeOnstageInfo {
bool is_quick = 11;
uint32 card_guid = 6;
GCGSkillPreviewInfo change_onstage_preview_info = 5;
}

View File

@@ -16,10 +16,11 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
enum GCGClientPerformType {
GCG_CLIENT_PERFORM_TYPE_INVALID = 0;
GCG_CLIENT_PERFORM_TYPE_CARD_EXCHANGE = 1;
GCG_CLIENT_PERFORM_TYPE_FIRST_HAND = 2;
GCG_CLIENT_PERFORM_TYPE_REROLL = 3;
}

View File

@@ -16,11 +16,15 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7506
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGClientSettleReq {}
message GCGClientSettleReq {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7035;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7105
// EnetChannelId: 0
// EnetIsReliable: true
message GCGClientSettleRsp {
uint32 close_time = 4;
int32 retcode = 1;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7532;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 close_time = 5;
int32 retcode = 9;
}

View File

@@ -18,11 +18,12 @@ syntax = "proto3";
import "ProfilePicture.proto";
package proto;
option go_package = "./;proto";
message GCGControllerShowInfo {
ProfilePicture profile_picture = 11;
string nick_name = 14;
uint32 controller_id = 9;
string psn_id = 12;
string nick_name = 10;
string online_id = 15;
ProfilePicture profile_picture = 3;
uint32 controller_id = 11;
}

View File

@@ -20,13 +20,12 @@ import "GCGAttackCostInfo.proto";
import "GCGPlayCardCostInfo.proto";
import "GCGSelectOnStageCostInfo.proto";
package proto;
option go_package = "./;proto";
message GCGCostReviseInfo {
bool is_can_attack = 4;
repeated uint32 can_use_hand_card_id_list = 11;
repeated uint32 can_use_hand_card_id_list = 15;
repeated GCGSelectOnStageCostInfo select_on_stage_cost_list = 13;
repeated GCGPlayCardCostInfo play_card_cost_list = 5;
repeated GCGSelectOnStageCostInfo select_on_stage_cost_list = 10;
repeated GCGAttackCostInfo attack_cost_list = 2;
repeated GCGAttackCostInfo attack_cost_list = 12;
bool is_can_attack = 14;
}

View File

@@ -0,0 +1,31 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGDSBanCardNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7135;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
repeated uint32 card_list = 10;
}

View File

@@ -16,12 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7265
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSCardBackUnlockNotify {
uint32 card_back_id = 6;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7078;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 card_back_id = 13;
}

View File

@@ -16,13 +16,13 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGDSCardData {
uint32 card_id = 14;
repeated uint32 unlock_face_type_list = 9;
uint32 num = 12;
uint32 proficiency = 8;
uint32 face_type = 6;
uint32 num = 11;
uint32 face_type = 5;
uint32 card_id = 4;
repeated uint32 proficiency_reward_taken_idx_list = 14;
repeated uint32 unlock_face_type_list = 6;
uint32 proficiency = 10;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7049
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSCardFaceUnlockNotify {
uint32 card_id = 13;
uint32 face_type = 1;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7767;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 face_type = 13;
uint32 card_id = 8;
}

View File

@@ -0,0 +1,32 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGDSCardFaceUpdateNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7066;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 card_id = 9;
uint32 face_type = 1;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7358
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSCardNumChangeNotify {
uint32 card_id = 4;
uint32 num = 10;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7244;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 num = 1;
uint32 card_id = 15;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7680
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSCardProficiencyNotify {
uint32 proficiency = 2;
uint32 card_id = 12;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7969;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 proficiency = 10;
uint32 card_id = 13;
}

View File

@@ -16,14 +16,18 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7292
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGDSChangeCardBackReq {
uint32 deck_id = 10;
uint32 card_back_id = 12;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7680;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 card_back_id = 15;
uint32 deck_id = 13;
}

View File

@@ -16,14 +16,18 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7044
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSChangeCardBackRsp {
int32 retcode = 15;
uint32 card_back_id = 6;
uint32 deck_id = 5;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7011;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
int32 retcode = 13;
uint32 card_back_id = 5;
uint32 deck_id = 9;
}

View File

@@ -16,14 +16,18 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7169
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGDSChangeCardFaceReq {
uint32 face_type = 6;
uint32 card_id = 3;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7010;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 card_id = 9;
uint32 face_type = 14;
}

View File

@@ -16,14 +16,18 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7331
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSChangeCardFaceRsp {
uint32 face_type = 8;
uint32 card_id = 4;
int32 retcode = 9;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7549;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 face_type = 9;
int32 retcode = 5;
uint32 card_id = 8;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7131
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGDSChangeCurDeckReq {
uint32 deck_id = 3;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7257;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 deck_id = 13;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7301
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSChangeCurDeckRsp {
int32 retcode = 8;
uint32 deck_id = 14;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7908;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
int32 retcode = 6;
uint32 deck_id = 3;
}

View File

@@ -16,14 +16,19 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7432
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGDSChangeDeckNameReq {
uint32 deck_id = 13;
string name = 7;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7463;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
bool Unk3300_OIPMFIIBPHB = 11;
uint32 deck_id = 2;
string name = 1;
}

View File

@@ -16,14 +16,19 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7916
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSChangeDeckNameRsp {
uint32 deck_id = 13;
int32 retcode = 14;
string name = 1;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7617;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
bool Unk3300_OIPMFIIBPHB = 5;
int32 retcode = 15;
uint32 deck_id = 10;
string name = 7;
}

View File

@@ -16,14 +16,18 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7541
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGDSChangeFieldReq {
uint32 field_id = 6;
uint32 deck_id = 11;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7788;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 field_id = 3;
uint32 deck_id = 13;
}

View File

@@ -16,14 +16,18 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7444
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSChangeFieldRsp {
int32 retcode = 1;
uint32 field_id = 3;
uint32 deck_id = 2;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7036;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
int32 retcode = 14;
uint32 deck_id = 6;
uint32 field_id = 1;
}

View File

@@ -16,12 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7796
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSCurDeckChangeNotify {
uint32 deck_id = 6;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7769;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 deck_id = 3;
}

View File

@@ -19,17 +19,21 @@ syntax = "proto3";
import "GCGDSCardData.proto";
import "GCGDSDeckData.proto";
package proto;
option go_package = "./;proto";
// CmdId: 7122
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSDataNotify {
repeated GCGDSDeckData deck_list = 4;
repeated uint32 unlock_card_back_id_list = 5;
repeated uint32 unlock_field_id_list = 6;
uint32 cur_deck_id = 10;
repeated GCGDSCardData card_list = 3;
repeated uint32 unlock_deck_id_list = 1;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7850;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 cur_deck_id = 8;
repeated GCGDSDeckData deck_list = 3;
repeated uint32 unlock_card_back_id_list = 10;
repeated GCGDSCardData card_list = 9;
repeated uint32 unlock_field_id_list = 5;
repeated uint32 unlock_deck_id_list = 6;
}

View File

@@ -16,16 +16,15 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGDSDeckData {
fixed32 create_time = 5;
uint32 field_id = 13;
uint32 card_back_id = 9;
repeated uint32 card_list = 1;
uint32 card_back_id = 15;
repeated uint32 character_card_list = 10;
string name = 5;
uint32 id = 3;
fixed32 create_time = 13;
bool is_valid = 4;
uint32 field_id = 7;
repeated uint32 character_card_list = 7;
uint32 id = 12;
string name = 10;
bool is_valid = 15;
}

View File

@@ -16,16 +16,20 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7104
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGDSDeckSaveReq {
uint32 deck_id = 1;
repeated uint32 card_list = 4;
repeated uint32 character_card_list = 9;
string name = 14;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7713;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 deck_id = 4;
repeated uint32 card_list = 11;
repeated uint32 character_card_list = 6;
string name = 5;
}

View File

@@ -16,15 +16,19 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7269
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSDeckSaveRsp {
fixed32 create_time = 14;
uint32 deck_id = 11;
int32 retcode = 8;
bool is_valid = 4;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7459;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
int32 retcode = 9;
bool is_valid = 5;
uint32 deck_id = 15;
fixed32 create_time = 7;
}

View File

@@ -16,12 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7732
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSDeckUnlockNotify {
uint32 deck_id = 15;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7427;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 deck_id = 14;
}

View File

@@ -0,0 +1,32 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGDSDeckUpdateNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7751;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
bool is_valid = 2;
uint32 deck_id = 15;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7988
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGDSDeleteDeckReq {
uint32 deck_id = 15;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7821;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 deck_id = 1;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7524
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSDeleteDeckRsp {
int32 retcode = 14;
uint32 deck_id = 7;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7067;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 deck_id = 14;
int32 retcode = 13;
}

View File

@@ -16,12 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7333
// EnetChannelId: 0
// EnetIsReliable: true
message GCGDSFieldUnlockNotify {
uint32 field_id = 1;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7860;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 field_id = 12;
}

View File

@@ -0,0 +1,33 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGDSTakeCardProficiencyRewardReq {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7001;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 reward_index = 15;
uint32 card_id = 3;
}

View File

@@ -0,0 +1,33 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGDSTakeCardProficiencyRewardRsp {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7718;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 card_id = 6;
int32 retcode = 1;
uint32 reward_index = 15;
}

View File

@@ -16,10 +16,9 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGDamageDetail {
uint32 skill_id = 10;
uint32 card_guid = 7;
uint32 card_guid = 4;
uint32 skill_id = 12;
}

View File

@@ -0,0 +1,31 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGDebugReplayNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7071;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
string json_str = 15;
}

View File

@@ -16,7 +16,6 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
enum GCGDiceSideType {

View File

@@ -21,27 +21,33 @@ import "GCGControllerShowInfo.proto";
import "GCGCostReviseInfo.proto";
import "GCGDuelChallenge.proto";
import "GCGGameBusinessType.proto";
import "GCGMessagePack.proto";
import "GCGPVEIntention.proto";
import "GCGPhase.proto";
import "GCGPlayerField.proto";
import "Unk3300_ADHENCIFKNI.proto";
package proto;
option go_package = "./;proto";
message GCGDuel {
uint32 server_seq = 3;
repeated GCGPlayerField field_list = 7;
GCGGameBusinessType business_type = 14;
repeated GCGDuelChallenge challenge_list = 5;
uint32 game_id = 11;
uint32 controller_id = 13;
uint32 round = 15;
uint32 cur_controller_id = 12;
repeated GCGPVEIntention intention_list = 1;
GCGCostReviseInfo cost_revise = 10;
repeated uint32 card_id_list = 4;
repeated GCGCard card_list = 9;
repeated GCGControllerShowInfo show_info_list = 6;
uint32 game_type = 2;
GCGPhase phase = 8;
repeated GCGControllerShowInfo show_info_list = 7;
repeated uint32 forbid_finish_challenge_list = 192;
repeated GCGCard card_list = 1;
uint32 Unk3300_BIANMOPDEHO = 9;
GCGCostReviseInfo cost_revise = 8;
uint32 game_id = 4;
repeated GCGPlayerField field_list = 5;
repeated Unk3300_ADHENCIFKNI Unk3300_CDCMBOKBLAK = 1987;
GCGGameBusinessType business_type = 13;
repeated GCGPVEIntention intention_list = 2;
repeated GCGDuelChallenge challenge_list = 1617;
repeated GCGCard history_card_list = 1872;
uint32 round = 11;
uint32 controller_id = 12;
repeated GCGMessagePack history_msg_pack_list = 797;
uint32 Unk3300_JHDDNKFPINA = 10;
repeated uint32 card_id_list = 6;
uint32 Unk3300_JBBMBKGOONO = 15;
GCGPhase phase = 14;
}

View File

@@ -16,11 +16,10 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGDuelChallenge {
uint32 total_progress = 7;
uint32 challenge_id = 10;
uint32 cur_progress = 12;
uint32 challenge_id = 12;
uint32 cur_progress = 2;
uint32 total_progress = 4;
}

View File

@@ -17,8 +17,8 @@
syntax = "proto3";
import "GCGChallengeData.proto";
import "PlatformType.proto";
package proto;
option go_package = "./;proto";
message GCGDuelExtra {
@@ -28,4 +28,11 @@ message GCGDuelExtra {
map<uint32, uint32> card_face_map = 4;
repeated GCGChallengeData challenge_list = 5;
uint32 score = 6;
bool is_match_ai = 7;
uint32 ai_deck_id = 8;
bool is_internal = 9;
repeated uint32 forbid_finish_challenge_list = 10;
uint32 level = 11;
uint32 client_version = 12;
PlatformType platform_type = 13;
}

View File

@@ -16,7 +16,6 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
enum GCGEndReason {
@@ -25,4 +24,10 @@ enum GCGEndReason {
GCG_END_REASON_SURRENDER = 2;
GCG_END_REASON_DISCONNECTED = 3;
GCG_END_REASON_ROUND_LIMIT = 4;
GCG_END_REASON_GM = 5;
GCG_END_REASON_NO_PLAYER = 6;
GCG_END_REASON_GIVE_UP = 7;
GCG_END_REASON_INIT_TIMEOUT = 8;
GCG_END_REASON_EFFECT = 9;
GCG_END_REASON_Unk3300_INAPHKAKKHF = 10;
}

View File

@@ -19,13 +19,13 @@ syntax = "proto3";
import "GCGGameBusinessType.proto";
import "GCGPlayerBriefData.proto";
package proto;
option go_package = "./;proto";
message GCGGameBriefData {
uint32 game_id = 14;
uint32 game_uid = 9;
GCGGameBusinessType business_type = 13;
uint32 verify_code = 5;
repeated GCGPlayerBriefData player_brief_list = 12;
uint32 Unk3300_NCLDOGNCHGF = 13;
GCGGameBusinessType business_type = 8;
uint32 Unk3300_FJJDMIBIBJN = 14;
uint32 platform_type = 6;
uint32 game_id = 12;
repeated GCGPlayerBriefData player_brief_list = 5;
}

View File

@@ -18,12 +18,17 @@ syntax = "proto3";
import "GCGGameBriefData.proto";
package proto;
option go_package = "./;proto";
// CmdId: 7539
// EnetChannelId: 0
// EnetIsReliable: true
message GCGGameBriefDataNotify {
GCGGameBriefData gcg_brief_data = 10;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7824;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
GCGGameBriefData gcg_brief_data = 3;
bool is_new_game = 4;
}

View File

@@ -16,7 +16,6 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
enum GCGGameBusinessType {
@@ -29,4 +28,7 @@ enum GCGGameBusinessType {
GCG_GAME_BUSINESS_TYPE_WORLD_CHALLENGE = 6;
GCG_GAME_BUSINESS_TYPE_BOSS_CHALLENGE = 7;
GCG_GAME_BUSINESS_TYPE_WEEK_CHALLENGE = 8;
GCG_GAME_BUSINESS_TYPE_BREAK_CHALLENGE = 9;
GCG_GAME_BUSINESS_TYPE_QUEST = 10;
GCG_GAME_BUSINESS_TYPE_GUIDE_GROUP = 11;
}

View File

@@ -0,0 +1,40 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGGameCreateFailReasonNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7658;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
enum GCGGameCreateReason {
GCG_GAME_CREATE_REASON_NONE = 0;
GCG_GAME_CREATE_REASON_GAME_MAX = 1;
GCG_GAME_CREATE_REASON_CLIENT_VERSION_NOT_LATEST = 2;
GCG_GAME_CREATE_REASON_RESOURCE_NOT_COMPLETE = 3;
GCG_GAME_CREATE_REASON_TIMEOUT = 4;
GCG_GAME_CREATE_REASON_Unk3300_EMCDFGGFFAH = 5;
}
GCGGameCreateReason reason = 7;
}

View File

@@ -0,0 +1,29 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGGameMaxNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7226;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7736
// EnetChannelId: 0
// EnetIsReliable: true
message GCGGrowthLevelNotify {
uint32 exp = 7;
uint32 level = 11;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7343;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 level = 10;
uint32 exp = 2;
}

View File

@@ -16,12 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7477
// EnetChannelId: 0
// EnetIsReliable: true
message GCGGrowthLevelRewardNotify {
repeated uint32 level_reward_taken_list = 8;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7934;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
repeated uint32 level_reward_taken_list = 2;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7051
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGGrowthLevelTakeRewardReq {
uint32 level = 4;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7486;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 level = 12;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7670
// EnetChannelId: 0
// EnetIsReliable: true
message GCGGrowthLevelTakeRewardRsp {
uint32 level = 1;
int32 retcode = 13;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7602;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
int32 retcode = 4;
uint32 level = 11;
}

View File

@@ -16,12 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7224
// EnetChannelId: 0
// EnetIsReliable: true
message GCGHeartBeatNotify {
uint32 server_seq = 6;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7576;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 server_seq = 12;
}

View File

@@ -16,11 +16,15 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7684
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGInitFinishReq {}
message GCGInitFinishReq {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7348;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
}

View File

@@ -16,12 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7433
// EnetChannelId: 0
// EnetIsReliable: true
message GCGInitFinishRsp {
int32 retcode = 2;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7369;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
int32 retcode = 4;
}

View File

@@ -0,0 +1,24 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
enum GCGIntentionChangeType {
GCG_INTENTION_CHANGE_TYPE_NONE = 0;
GCG_INTENTION_CHANGE_TYPE_RM = 1;
}

View File

@@ -16,10 +16,16 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7692
// EnetChannelId: 0
// EnetIsReliable: true
message GCGInviteBattleNotify {}
message GCGInviteBattleNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7448;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 confirm_end_time = 1;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7783
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGInviteGuestBattleReq {
uint32 uid = 11;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7202;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// IS_ALLOW_CLIENT = 1;
// }
uint32 uid = 8;
}

View File

@@ -16,13 +16,19 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7251
// EnetChannelId: 0
// EnetIsReliable: true
message GCGInviteGuestBattleRsp {
int32 retcode = 3;
uint32 uid = 11;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7997;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 uid = 12;
int32 retcode = 13;
uint32 punish_end_time = 3;
uint32 confirm_end_time = 7;
}

View File

@@ -0,0 +1,31 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGLevelChallengeDeleteNotify {
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7993;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
repeated uint32 level_id_list = 6;
}

View File

@@ -16,13 +16,17 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
// CmdId: 7629
// EnetChannelId: 0
// EnetIsReliable: true
message GCGLevelChallengeFinishNotify {
repeated uint32 finished_challenge_id_list = 10;
uint32 level_id = 15;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7004;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 level_id = 14;
repeated uint32 finished_challenge_id_list = 3;
}

View File

@@ -19,14 +19,18 @@ syntax = "proto3";
import "GCGBossChallengeData.proto";
import "GCGLevelData.proto";
package proto;
option go_package = "./;proto";
// CmdId: 7055
// EnetChannelId: 0
// EnetIsReliable: true
message GCGLevelChallengeNotify {
repeated GCGBossChallengeData unlock_boss_challenge_list = 3;
repeated uint32 unlock_world_challenge_list = 8;
repeated GCGLevelData level_list = 10;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7183;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
repeated GCGBossChallengeData unlock_boss_challenge_list = 11;
repeated uint32 unlock_world_challenge_list = 3;
repeated GCGLevelData level_list = 4;
}

View File

@@ -16,10 +16,9 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGLevelData {
repeated uint32 finished_challenge_id_list = 10;
uint32 level_id = 9;
repeated uint32 finished_challenge_id_list = 13;
uint32 level_id = 7;
}

View File

@@ -16,7 +16,6 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
enum GCGLevelType {
@@ -26,4 +25,7 @@ enum GCGLevelType {
GCG_LEVEL_TYPE_WORLD = 3;
GCG_LEVEL_TYPE_BOSS = 4;
GCG_LEVEL_TYPE_CHARACTER = 5;
GCG_LEVEL_TYPE_BREAK = 6;
GCG_LEVEL_TYPE_QUEST = 7;
GCG_LEVEL_TYPE_GUIDE_GROUP = 8;
}

View File

@@ -0,0 +1,24 @@
// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
// Copyright (C) 2022 Sorapointa Team
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
syntax = "proto3";
option go_package = "./;proto";
message GCGLimitsInfo {
uint32 Unk3300_MNCNOLHHGPA = 7;
uint32 Unk3300_PHKPKFBDGJF = 13;
}

View File

@@ -18,9 +18,8 @@ syntax = "proto3";
import "MatchPlayerInfo.proto";
package proto;
option go_package = "./;proto";
message GCGMatchInfo {
repeated MatchPlayerInfo player_list = 13;
repeated MatchPlayerInfo player_list = 15;
}

View File

@@ -31,14 +31,19 @@ import "GCGMsgModifyAdd.proto";
import "GCGMsgModifyRemove.proto";
import "GCGMsgMoveCard.proto";
import "GCGMsgNewCard.proto";
import "GCGMsgNoDamageSkillResult.proto";
import "GCGMsgOpTimer.proto";
import "GCGMsgPVEDoOp.proto";
import "GCGMsgPVEGenCardOp.proto";
import "GCGMsgPVEIntentionChange.proto";
import "GCGMsgPVEIntentionInfo.proto";
import "GCGMsgPass.proto";
import "GCGMsgPhaseChange.proto";
import "GCGMsgPhaseContinue.proto";
import "GCGMsgReactionBegin.proto";
import "GCGMsgReactionEnd.proto";
import "GCGMsgRemoveCards.proto";
import "GCGMsgSelectOnStage.proto";
import "GCGMsgSelectOnStageByEffect.proto";
import "GCGMsgSkillLimitsChange.proto";
import "GCGMsgSkillResult.proto";
import "GCGMsgTokenChange.proto";
import "GCGMsgUpdateController.proto";
@@ -46,39 +51,43 @@ import "GCGMsgUseSkill.proto";
import "GCGMsgUseSkillEnd.proto";
import "GCGMsgWaitingListChange.proto";
package proto;
option go_package = "./;proto";
message GCGMessage {
oneof message {
GCGMsgTokenChange token_change = 12;
GCGMsgPhaseChange phase_change = 13;
GCGMsgAddCards add_cards = 10;
GCGMsgRemoveCards remove_cards = 14;
GCGMsgTokenChange token_change = 2;
GCGMsgPhaseChange phase_change = 10;
GCGMsgAddCards add_cards = 5;
GCGMsgRemoveCards remove_cards = 12;
GCGMsgSelectOnStage select_on_stage = 6;
GCGMsgDiceRoll dice_roll = 9;
GCGMsgDiceReroll dice_reroll = 11;
GCGMsgPass pass = 5;
GCGMsgCharDie char_die = 2;
GCGMsgSkillResult skill_result = 1;
GCGMsgCostDice cost_dice = 7;
GCGMsgAddDice add_dice = 3;
GCGMsgMoveCard move_card = 15;
GCGMsgUseSkill use_skill = 4;
GCGMsgNewCard new_card = 1848;
GCGMsgUpdateController update_controller = 429;
GCGMsgModifyAdd modify_add = 1851;
GCGMsgModifyRemove modify_remove = 471;
GCGMsgUseSkillEnd use_skill_end = 1411;
GCGMsgPVEGenCardOp pve_gen_card_op = 1741;
GCGMsgPVEDoOp pve_do_op = 614;
GCGMsgDuelDataChange duel_data_change = 1008;
GCGMsgClientPerform client_perform = 1035;
GCGMsgGameOver game_over = 714;
GCGMsgOpTimer op_timer = 1862;
GCGMsgWaitingListChange waiting_list_change = 1678;
GCGMsgCardUpdate card_update = 1879;
GCGMsgSelectOnStageByEffect select_on_stage_by_effect = 2042;
GCGMsgCostRevise cost_revise = 1350;
GCGMsgDiceRoll dice_roll = 14;
GCGMsgDiceReroll dice_reroll = 15;
GCGMsgPass pass = 8;
GCGMsgCharDie char_die = 4;
GCGMsgSkillResult skill_result = 3;
GCGMsgCostDice cost_dice = 13;
GCGMsgAddDice add_dice = 7;
GCGMsgMoveCard move_card = 11;
GCGMsgUseSkill use_skill = 1;
GCGMsgNewCard new_card = 296;
GCGMsgUpdateController update_controller = 1111;
GCGMsgModifyAdd modify_add = 1733;
GCGMsgModifyRemove modify_remove = 2014;
GCGMsgUseSkillEnd use_skill_end = 1368;
GCGMsgDuelDataChange duel_data_change = 1791;
GCGMsgClientPerform client_perform = 1677;
GCGMsgGameOver game_over = 632;
GCGMsgOpTimer op_timer = 154;
GCGMsgWaitingListChange waiting_list_change = 1991;
GCGMsgCardUpdate card_update = 1702;
GCGMsgSelectOnStageByEffect select_on_stage_by_effect = 1737;
GCGMsgCostRevise cost_revise = 468;
GCGMsgPhaseContinue phase_continue = 1157;
GCGMsgPVEIntentionInfo pve_intention_info = 850;
GCGMsgPVEIntentionChange pve_intention_change = 1268;
GCGMsgSkillLimitsChange skill_limits_change = 710;
GCGMsgNoDamageSkillResult no_damage_skill_result = 773;
GCGMsgReactionBegin reaction_begin = 243;
GCGMsgReactionEnd reaction_end = 1172;
}
}

View File

@@ -16,12 +16,13 @@
syntax = "proto3";
import "GCGActionType.proto";
import "GCGMessage.proto";
package proto;
option go_package = "./;proto";
message GCGMessagePack {
uint32 msg_seq = 10;
repeated GCGMessage msg_list = 13;
GCGActionType action_type = 9;
repeated GCGMessage msg_list = 5;
uint32 controller_id = 7;
}

View File

@@ -18,14 +18,17 @@ syntax = "proto3";
import "GCGMessagePack.proto";
package proto;
option go_package = "./;proto";
// CmdId: 7516
// EnetChannelId: 0
// EnetIsReliable: true
// IsAllowClient: true
message GCGMessagePackNotify {
uint32 server_seq = 5;
GCGMessagePack message_pack = 8;
// enum CmdId {
// option allow_alias = true;
// NONE = 0;
// CMD_ID = 7299;
// ENET_CHANNEL_ID = 0;
// ENET_IS_RELIABLE = 1;
// }
uint32 server_seq = 2;
repeated GCGMessagePack msg_pack_list = 12;
}

View File

@@ -19,13 +19,12 @@ syntax = "proto3";
import "GCGReason.proto";
import "GCGZoneType.proto";
package proto;
option go_package = "./;proto";
message GCGMsgAddCards {
uint32 pos = 11;
GCGZoneType zone = 2;
GCGReason reason = 15;
uint32 controller_id = 13;
repeated uint32 card_guid_list = 14;
GCGZoneType zone = 5;
GCGReason reason = 7;
repeated uint32 card_guid_list = 4;
uint32 controller_id = 9;
uint32 pos = 14;
}

View File

@@ -19,12 +19,12 @@ syntax = "proto3";
import "GCGDiceSideType.proto";
import "GCGReason.proto";
package proto;
option go_package = "./;proto";
message GCGMsgAddDice {
GCGReason reason = 4;
uint32 controller_id = 10;
int32 change_count = 1;
map<uint32, GCGDiceSideType> dice_map = 8;
map<uint32, GCGDiceSideType> Unk3300_KFKOGOKPIFN = 13;
GCGReason reason = 10;
int32 change_count = 6;
map<uint32, GCGDiceSideType> Unk3300_PCMPCCLFEIM = 11;
uint32 controller_id = 5;
}

View File

@@ -18,9 +18,8 @@ syntax = "proto3";
import "GCGCard.proto";
package proto;
option go_package = "./;proto";
message GCGMsgCardUpdate {
GCGCard card = 7;
GCGCard card = 14;
}

View File

@@ -16,10 +16,9 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGMsgCharDie {
uint32 controller_id = 5;
uint32 card_guid = 11;
uint32 controller_id = 13;
uint32 card_guid = 7;
}

View File

@@ -18,10 +18,9 @@ syntax = "proto3";
import "GCGClientPerformType.proto";
package proto;
option go_package = "./;proto";
message GCGMsgClientPerform {
repeated uint32 param_list = 2;
GCGClientPerformType perform_type = 5;
repeated uint32 param_list = 4;
GCGClientPerformType perform_type = 1;
}

View File

@@ -18,11 +18,10 @@ syntax = "proto3";
import "GCGReason.proto";
package proto;
option go_package = "./;proto";
message GCGMsgCostDice {
uint32 controller_id = 6;
repeated uint32 select_dice_index_list = 13;
GCGReason reason = 9;
GCGReason reason = 1;
repeated uint32 select_dice_index_list = 12;
uint32 controller_id = 7;
}

View File

@@ -18,10 +18,9 @@ syntax = "proto3";
import "GCGCostReviseInfo.proto";
package proto;
option go_package = "./;proto";
message GCGMsgCostRevise {
uint32 controller_id = 5;
GCGCostReviseInfo cost_revise = 13;
GCGCostReviseInfo cost_revise = 3;
uint32 controller_id = 1;
}

View File

@@ -18,11 +18,10 @@ syntax = "proto3";
import "GCGDiceSideType.proto";
package proto;
option go_package = "./;proto";
message GCGMsgDiceReroll {
uint32 controller_id = 2;
repeated uint32 select_dice_index_list = 1;
repeated GCGDiceSideType dice_side_list = 6;
uint32 controller_id = 1;
repeated GCGDiceSideType dice_side_list = 8;
repeated uint32 select_dice_index_list = 12;
}

View File

@@ -18,11 +18,10 @@ syntax = "proto3";
import "GCGDiceSideType.proto";
package proto;
option go_package = "./;proto";
message GCGMsgDiceRoll {
repeated GCGDiceSideType dice_side_list = 10;
uint32 dice_num = 15;
uint32 controller_id = 5;
uint32 controller_id = 9;
uint32 dice_num = 3;
repeated GCGDiceSideType dice_side_list = 14;
}

View File

@@ -16,9 +16,8 @@
syntax = "proto3";
package proto;
option go_package = "./;proto";
message GCGMsgDuelDataChange {
uint32 round = 14;
uint32 round = 6;
}

View File

@@ -18,10 +18,9 @@ syntax = "proto3";
import "GCGEndReason.proto";
package proto;
option go_package = "./;proto";
message GCGMsgGameOver {
GCGEndReason end_reason = 13;
uint32 win_controller_id = 6;
GCGEndReason end_reason = 6;
uint32 win_controller_id = 3;
}

View File

@@ -18,13 +18,12 @@ syntax = "proto3";
import "GCGReason.proto";
package proto;
option go_package = "./;proto";
message GCGMsgModifyAdd {
uint32 owner_card_guid = 11;
uint32 pos = 9;
uint32 owner_card_guid = 10;
repeated uint32 card_guid_list = 15;
uint32 controller_id = 14;
GCGReason reason = 11;
repeated uint32 card_guid_list = 3;
uint32 controller_id = 12;
GCGReason reason = 15;
}

View File

@@ -18,12 +18,11 @@ syntax = "proto3";
import "GCGReason.proto";
package proto;
option go_package = "./;proto";
message GCGMsgModifyRemove {
uint32 owner_card_guid = 7;
GCGReason reason = 3;
uint32 controller_id = 14;
GCGReason reason = 12;
uint32 owner_card_guid = 5;
repeated uint32 card_guid_list = 4;
repeated uint32 card_guid_list = 13;
}

View File

@@ -19,14 +19,13 @@ syntax = "proto3";
import "GCGReason.proto";
import "GCGZoneType.proto";
package proto;
option go_package = "./;proto";
message GCGMsgMoveCard {
uint32 controller_id = 14;
GCGZoneType to = 5;
GCGZoneType from = 12;
bool is_fail = 10;
uint32 card_guid = 7;
GCGReason reason = 6;
GCGZoneType to = 9;
repeated uint32 fail_guid_list = 2;
GCGZoneType from = 14;
uint32 controller_id = 4;
GCGReason reason = 13;
repeated uint32 card_guid_list = 5;
}

Some files were not shown because too many files have changed in this diff Show More