diff --git a/README.md b/README.md index 7d66d22..3218881 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # MikuBH3 A Server emulator for version 7.9 of a certain adventure anime game + ![screenshot](https://github.com/MikuLeaks/MikuBH3-PS/raw/main/screenshot.png) ## Features @@ -10,6 +11,7 @@ A Server emulator for version 7.9 of a certain adventure anime game - Superstring Dimension (Abyss) - Universial Mirage - Story Chapter 1 - 42 +- Character Tutorial ## Requirements @@ -93,7 +95,7 @@ Join [Discord](https://discord.gg/MdHC4AJvec) for support - Part 2 Story & Open world -- Character Tutorial +- ~~Character Tutorial~~ # Credits diff --git a/game_server/packet/handlers/GeneralActivityGetMainInfoReq.py b/game_server/packet/handlers/GeneralActivityGetMainInfoReq.py index c840246..be519ac 100644 --- a/game_server/packet/handlers/GeneralActivityGetMainInfoReq.py +++ b/game_server/packet/handlers/GeneralActivityGetMainInfoReq.py @@ -1,22 +1,44 @@ import betterproto from game_server.net.session import Session +from utils.time import get_unix_in_seconds +from game_server.resource import ResourceManager +from game_server.resource.configdb.general_activity_stage_group import GeneralActivityStageGroupData +from game_server.resource.configdb.general_activity import GeneralActivityData from lib.proto import ( GeneralActivityGetMainInfoReq, GeneralActivityGetMainInfoRsp, GeneralActivity, - GeneralActivityBasicInfo + GeneralActivityBasicInfo, + GeneralActivityStage, + GeneralActivityStageGroupScheduleInfo ) async def handle(session: Session, msg: GeneralActivityGetMainInfoReq) -> betterproto.Message: + + activity_list = [] + for activity_id in msg.activity_id_list: + series = ResourceManager.instance().find_by_index(GeneralActivityData, activity_id) + activity = GeneralActivity( + general_basic_info=GeneralActivityBasicInfo( + activity_id=activity_id, + schedule_id=series.Series if series else 0, + series_activity_id=[activity_id] + ) + ) + activity_stage = ResourceManager.instance().find_by_index(GeneralActivityStageGroupData, activity_id) + if activity_stage: + activity.activity_stage=GeneralActivityStage( + stage_group_schedule_list=[ + GeneralActivityStageGroupScheduleInfo( + begin_time=1593223200, + end_time=1913140799, + stage_group_id=activity_stage.StageGroupID + ) + ] + ) + activity_list.append(activity) + return GeneralActivityGetMainInfoRsp( retcode=0, - activity_list=[ - GeneralActivity( - general_basic_info=GeneralActivityBasicInfo( - activity_id=50000001, - schedule_id=412, - series_activity_id=[50000001] - ) - ) - ] + activity_list=activity_list ) diff --git a/game_server/resource/configdb/general_activity.py b/game_server/resource/configdb/general_activity.py new file mode 100644 index 0000000..5f668e6 --- /dev/null +++ b/game_server/resource/configdb/general_activity.py @@ -0,0 +1,12 @@ +from dataclasses import dataclass +from game_server.resource.base_resource import BaseResource +from game_server.resource.decorators import GameResource + +@dataclass +@GameResource("resources/ExcelOutputAsset/GeneralActivity.json") +class GeneralActivityData(BaseResource): + AcitivityID: int + Series: int + + def get_index(self) -> str: + return str(self.AcitivityID) diff --git a/game_server/resource/configdb/general_activity_stage_group.py b/game_server/resource/configdb/general_activity_stage_group.py new file mode 100644 index 0000000..10fe426 --- /dev/null +++ b/game_server/resource/configdb/general_activity_stage_group.py @@ -0,0 +1,12 @@ +from dataclasses import dataclass +from game_server.resource.base_resource import BaseResource +from game_server.resource.decorators import GameResource + +@dataclass +@GameResource("resources/ExcelOutputAsset/GeneralActivityStageGroup.json") +class GeneralActivityStageGroupData(BaseResource): + AcitivityID: int + StageGroupID: int + + def get_index(self) -> str: + return str(self.AcitivityID)