diff --git a/README.md b/README.md
index 91093e10..83531695 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,5 @@
-# Anime Game Protos 3.7 (For Grasscutters)
+# Anime Game Protos 4.0 (For Grasscutters)
This repository contains the [ProtoBuf](https://github.com/google/protobuf) `.proto` files for Anime Game API.
-## Note
-it should work fine now, if still not working stuck white screen, you also need a fix on the gc side.
-
## Credits
- - [Beach Simulator](https://github.com/SlushinPS/beach-simulator) for 3.7 public
\ No newline at end of file
+ - [Beach Simulator](https://github.com/SlushinPS/beach-simulator) for 4.0 public
\ No newline at end of file
diff --git a/proto/AllWidgetDataNotify.proto b/proto/AllWidgetDataNotify.proto
index eab01d1a..bfc435f7 100644
--- a/proto/AllWidgetDataNotify.proto
+++ b/proto/AllWidgetDataNotify.proto
@@ -32,10 +32,10 @@ message AllWidgetDataNotify {
repeated OneoffGatherPointDetectorData oneoff_gather_point_detector_data_list = 4;
repeated ClientCollectorData client_collector_data_list = 9;
uint32 CMFPEOMAJLM = 10;
- repeated WidgetCoolDownData PEOHMDJKMKO = 8;
+ repeated WidgetCoolDownData normalCoolDownDataList = 8;
repeated AnchorPointData anchor_point_list = 15;
LunchBoxData lunch_box_data = 11;
- repeated WidgetCoolDownData MCMDFPAFOIG = 14;
+ repeated WidgetCoolDownData coolDownGroupDataList = 14;
LANPHFCMEBN ELIOJBDGIMJ = 12;
SkyCrystalDetectorData sky_crystal_detector_data = 1;
repeated uint32 EMPBLGKLCOA = 1790;
diff --git a/proto/BargainOfferPriceReq.proto b/proto/BargainOfferPriceReq.proto
new file mode 100644
index 00000000..74ab2adc
--- /dev/null
+++ b/proto/BargainOfferPriceReq.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 23582
+// Obf: PGAGMMAEAJK
+message BargainOfferPriceReq {
+ uint32 bargain_id = 3;
+ uint32 price = 15;
+}
diff --git a/proto/BargainOfferPriceRsp.proto b/proto/BargainOfferPriceRsp.proto
new file mode 100644
index 00000000..5e744cf7
--- /dev/null
+++ b/proto/BargainOfferPriceRsp.proto
@@ -0,0 +1,27 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "BargainResultType.proto";
+// CmdId: 28942
+// Obf: IKJLNCGMPFH
+message BargainOfferPriceRsp {
+ int32 cur_mood = 10;
+ uint32 result_param = 8;
+ BargainResultType bargain_result = 12;
+ int32 retcode = 11;
+}
diff --git a/proto/BargainResultType.proto b/proto/BargainResultType.proto
new file mode 100644
index 00000000..44fd43cd
--- /dev/null
+++ b/proto/BargainResultType.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// Obf: AGEMDFOGNBD
+enum BargainResultType {
+ BARGAIN_COMPLETE_SUCC = 0;
+ BARGAIN_SINGLE_FAIL = 1;
+ BARGAIN_COMPLETE_FAIL = 2;
+}
diff --git a/proto/BargainSnapshot.proto b/proto/BargainSnapshot.proto
new file mode 100644
index 00000000..77c5bdaa
--- /dev/null
+++ b/proto/BargainSnapshot.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// Obf: KIOJOGPNAKF
+message BargainSnapshot {
+ uint32 IOCNPJJNHLD = 12;
+ uint32 BALOPACHCDB = 2;
+ int32 cur_mood = 9;
+ uint32 bargain_id = 15;
+}
diff --git a/proto/BargainStartNotify.proto b/proto/BargainStartNotify.proto
new file mode 100644
index 00000000..49f5fa1d
--- /dev/null
+++ b/proto/BargainStartNotify.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "BargainSnapshot.proto";
+// CmdId: 9154
+// Obf: EGAHBLOCEPK
+message BargainStartNotify {
+ BargainSnapshot snapshot = 4;
+ uint32 bargain_id = 15;
+}
diff --git a/proto/BargainTerminateNotify.proto b/proto/BargainTerminateNotify.proto
new file mode 100644
index 00000000..4054a401
--- /dev/null
+++ b/proto/BargainTerminateNotify.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 28886
+// Obf: IKMJMAHLHBE
+message BargainTerminateNotify {
+ uint32 bargain_id = 1;
+}
diff --git a/proto/GetAllActivatedBargainDataReq.proto b/proto/GetAllActivatedBargainDataReq.proto
new file mode 100644
index 00000000..bbe50037
--- /dev/null
+++ b/proto/GetAllActivatedBargainDataReq.proto
@@ -0,0 +1,22 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 22200
+// Obf: KGMCPOKKAIL
+message GetAllActivatedBargainDataReq {
+}
diff --git a/proto/GetAllActivatedBargainDataRsp.proto b/proto/GetAllActivatedBargainDataRsp.proto
new file mode 100644
index 00000000..00b00012
--- /dev/null
+++ b/proto/GetAllActivatedBargainDataRsp.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "BargainSnapshot.proto";
+// CmdId: 3517
+// Obf: JMGOGNLGAAH
+message GetAllActivatedBargainDataRsp {
+ repeated BargainSnapshot snapshot_list = 6;
+ int32 retcode = 2;
+}
diff --git a/proto/GetBargainDataReq.proto b/proto/GetBargainDataReq.proto
new file mode 100644
index 00000000..2fdb5c40
--- /dev/null
+++ b/proto/GetBargainDataReq.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 7358
+// Obf: FPNNGBLHLDM
+message GetBargainDataReq {
+ uint32 bargain_id = 13;
+}
diff --git a/proto/GetBargainDataRsp.proto b/proto/GetBargainDataRsp.proto
new file mode 100644
index 00000000..1ce7f3e3
--- /dev/null
+++ b/proto/GetBargainDataRsp.proto
@@ -0,0 +1,26 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "BargainSnapshot.proto";
+// CmdId: 8330
+// Obf: ALABLOCEOIH
+message GetBargainDataRsp {
+ BargainSnapshot snapshot = 5;
+ int32 retcode = 1;
+ uint32 bargain_id = 9;
+}
diff --git a/proto/GetScenePointRsp.proto b/proto/GetScenePointRsp.proto
index 17077b90..75eef818 100644
--- a/proto/GetScenePointRsp.proto
+++ b/proto/GetScenePointRsp.proto
@@ -29,7 +29,7 @@ message GetScenePointRsp {
repeated uint32 EBIFELCKPEA = 7;
repeated uint32 JJOHJDFINFN = 4;
uint32 belong_uid = 14;
- repeated uint32 JCLHNODLPOH = 13;
+ repeated uint32 unlockAreaList = 13;
uint32 scene_id = 2;
- repeated uint32 KOPAHGHMECF = 3;
+ repeated uint32 unhide_point_list = 3;
}
diff --git a/proto/GivingRecord.proto b/proto/GivingRecord.proto
new file mode 100644
index 00000000..33fa374d
--- /dev/null
+++ b/proto/GivingRecord.proto
@@ -0,0 +1,28 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// Obf: JNJOKGNEKIK
+message GivingRecord {
+ uint32 config_id = 2;
+ bool is_gadget_giving = 15;
+ uint32 last_group_id = 14;
+ uint32 giving_id = 3;
+ bool is_finished = 6;
+ map material_cnt_map = 4;
+ uint32 group_id = 5;
+}
diff --git a/proto/GivingRecordChangeNotify.proto b/proto/GivingRecordChangeNotify.proto
new file mode 100644
index 00000000..aed447da
--- /dev/null
+++ b/proto/GivingRecordChangeNotify.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "GivingRecord.proto";
+// CmdId: 20863
+// Obf: EFABNIELGHL
+message GivingRecordChangeNotify {
+ GivingRecord giving_record = 9;
+ bool is_deactive = 6;
+}
diff --git a/proto/GivingRecordNotify.proto b/proto/GivingRecordNotify.proto
new file mode 100644
index 00000000..7957652b
--- /dev/null
+++ b/proto/GivingRecordNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy 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 .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "GivingRecord.proto";
+// CmdId: 7258
+// Obf: DPEHMENOLIB
+message GivingRecordNotify {
+ repeated GivingRecord giving_record_list = 4;
+}
diff --git a/proto/PlayerLoginRsp.proto b/proto/PlayerLoginRsp.proto
index f9302cab..fa82c733 100644
--- a/proto/PlayerLoginRsp.proto
+++ b/proto/PlayerLoginRsp.proto
@@ -33,7 +33,7 @@ message PlayerLoginRsp {
int32 ability_hash_code = 5;
repeated ShortAbilityHashPair short_ability_hash_map = 1373;
bool FBFJPEPMAOF = 15;
- bool DHMNOPIMOOE = 14;
+ bool is_use_ability_hash = 14;
bool is_audit = 335;
string client_silence_md5 = 784;
string msg = 43;
diff --git a/proto/SceneGadgetInfo.proto b/proto/SceneGadgetInfo.proto
index f3b76d67..0f50114c 100644
--- a/proto/SceneGadgetInfo.proto
+++ b/proto/SceneGadgetInfo.proto
@@ -81,7 +81,8 @@ message SceneGadgetInfo {
NightCrowGadgetInfo night_crow_gadget_info = 62;
DeshretObeliskGadgetInfo deshret_obelisk_gadget_info = 63;
CoinCollectOperatorInfo coin_collect_operator_info = 64;
- Item trifle_item = 67;
+ //Item trifle_item = 67;
+ TrifleGadget trifle_gadget = 67;
}
uint32 mark_flag = 21;
uint32 prop_owner_entity_id = 22;
diff --git a/proto/ShopGoods.proto b/proto/ShopGoods.proto
index 2e20a05a..0879a92c 100644
--- a/proto/ShopGoods.proto
+++ b/proto/ShopGoods.proto
@@ -19,19 +19,19 @@ option java_package = "emu.grasscutter.net.proto";
import "ItemParam.proto";
// Obf: OBABFCEJLGK
message ShopGoods {
- uint32 NPBGGAMEDJG = 4;
+ uint32 mcoin = 4;
uint32 FEMEEIEHBBL = 11;
- uint32 JOMBNPMFHGG = 8;
+ uint32 max_level = 8;
repeated ItemParam cost_item_list = 3;
- uint32 AAINEEHFPBJ = 1690;
+ uint32 min_level = 1690;
uint32 bought_num = 14;
uint32 DIHOGOJNKHB = 923;
uint32 begin_time = 13;
uint32 BNEKKILPEKF = 1950;
repeated uint32 preGoodsIdList = 5;
- uint32 KANFIKNKONL = 10;
+ uint32 buy_limit = 10;
ItemParam goods_item = 1;
- uint32 NODBIKCALJI = 12;
+ uint32 scoin = 12;
uint32 EKGBDJFIDJO = 2;
uint32 KKKOCADJCHM = 898;
uint32 OENMLOAFHMJ = 1946;