mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-13 13:24:34 +01:00
feat: Add Memorial Arena
This commit is contained in:
14
Battle.json
Normal file
14
Battle.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"endless":
|
||||
{
|
||||
"area1":791005,
|
||||
"grouplevel":8,
|
||||
"dynamic":510,
|
||||
"cupnum":1800
|
||||
},
|
||||
"memo":
|
||||
{
|
||||
"boss_ids": [51021,15026,18225]
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"area1":791005,
|
||||
"grouplevel":8,
|
||||
"dynamic":510,
|
||||
"cupnum":1600
|
||||
}
|
||||
12
README.md
12
README.md
@@ -12,6 +12,7 @@ A Server emulator for version 7.9 of a certain adventure anime game
|
||||
- Universial Mirage
|
||||
- Story Chapter 1 - 42
|
||||
- Character Tutorial
|
||||
- Memorial Arena
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -55,10 +56,15 @@ To run the project use cmd or vscode and run
|
||||
```python
|
||||
py hi3
|
||||
```
|
||||
## Changing Stage in Abyss/Memorial Using JSON
|
||||
|
||||
## Change Stage Superstring Dimension (Abyss)
|
||||
- **Superstring Dimension (Abyss)**
|
||||
|
||||
edit `Endless.json` and set area1 to desire `SiteID` from `UltraEndlessSite.json`
|
||||
Open the `Battle.json` file and update `area1` to the preferred `SiteID` from `UltraEndlessSite.json`.
|
||||
|
||||
- **Memorial Arena**
|
||||
|
||||
Open the `Battle.json` file and update the `boss_ids` as needed. You can find `boss_id` values in the `BossIdList` within `ExBossMonsterSchedule.json`.
|
||||
|
||||
## Use Local Patch Assets
|
||||
|
||||
@@ -72,7 +78,7 @@ Join [Discord](https://discord.gg/MdHC4AJvec) for support
|
||||
|
||||
- Commands
|
||||
|
||||
- Memorial Arena
|
||||
- ~~Memorial Arena~~
|
||||
|
||||
- Elysian Realm
|
||||
|
||||
|
||||
11
game_server/packet/handlers/ExBossStageBeginReq.py
Normal file
11
game_server/packet/handlers/ExBossStageBeginReq.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import betterproto
|
||||
from game_server.net.session import Session
|
||||
from lib.proto import (
|
||||
ExBossStageBeginReq,
|
||||
ExBossStageBeginRsp
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: ExBossStageBeginReq) -> betterproto.Message:
|
||||
return ExBossStageBeginRsp(
|
||||
retcode=0
|
||||
)
|
||||
13
game_server/packet/handlers/ExBossStageEndReq.py
Normal file
13
game_server/packet/handlers/ExBossStageEndReq.py
Normal file
@@ -0,0 +1,13 @@
|
||||
import betterproto
|
||||
from game_server.net.session import Session
|
||||
from lib.proto import (
|
||||
ExBossStageEndReq,
|
||||
ExBossStageEndRsp
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: ExBossStageEndReq) -> betterproto.Message:
|
||||
return ExBossStageEndRsp(
|
||||
retcode=0,
|
||||
boss_id=msg.boss_id,
|
||||
end_status=msg.end_status
|
||||
)
|
||||
@@ -1,4 +1,5 @@
|
||||
import betterproto
|
||||
import json
|
||||
from game_server.net.session import Session
|
||||
from lib.proto import (
|
||||
GetExBossInfoReq,
|
||||
@@ -8,22 +9,20 @@ from lib.proto import (
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: GetExBossInfoReq) -> betterproto.Message:
|
||||
with open("Battle.json", "r") as file:
|
||||
data = json.load(file)
|
||||
return GetExBossInfoRsp(
|
||||
retcode=0,
|
||||
boss_info=ExBossInfo(
|
||||
boss_id_list=[
|
||||
ExBossIdInfo(
|
||||
boss_id=48016
|
||||
),
|
||||
ExBossIdInfo(
|
||||
boss_id=41021
|
||||
),
|
||||
ExBossIdInfo(
|
||||
boss_id=13021
|
||||
boss_id=id
|
||||
)
|
||||
for id in data.get("memo", {}).get("boss_ids", [])
|
||||
],
|
||||
cur_max_enter_times=714,
|
||||
cur_max_enter_times=18,
|
||||
rank_id=104,
|
||||
schedule_id=10359
|
||||
schedule_id=10377,
|
||||
now_schedule_id=10377
|
||||
)
|
||||
)
|
||||
|
||||
32
game_server/packet/handlers/GetExBossRankReq.py
Normal file
32
game_server/packet/handlers/GetExBossRankReq.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import betterproto
|
||||
from game_server.net.session import Session
|
||||
from lib.proto import (
|
||||
GetExBossRankReq,
|
||||
GetExBossRankRsp,
|
||||
RankShowData,
|
||||
UserRankData
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: GetExBossRankReq) -> betterproto.Message:
|
||||
return GetExBossRankRsp(
|
||||
retcode=0,
|
||||
rank_id=104,
|
||||
rank_data=RankShowData(
|
||||
my_rank=104,
|
||||
my_rank_type=2,
|
||||
my_score=116330,
|
||||
rank_list=[
|
||||
UserRankData(
|
||||
avatar_id=3101,
|
||||
custom_head_id=161099,
|
||||
dress_id=50217,
|
||||
frame_id=200080,
|
||||
nick_name="Miku",
|
||||
rank=1,
|
||||
score=119727,
|
||||
uid=1337
|
||||
)
|
||||
]
|
||||
),
|
||||
boss_id=51016
|
||||
)
|
||||
@@ -3,4 +3,11 @@ from game_server.net.session import Session
|
||||
from lib.proto import GetExBossScheduleReq, GetExBossScheduleRsp
|
||||
|
||||
async def handle(session: Session, msg: GetExBossScheduleReq) -> betterproto.Message:
|
||||
return GetExBossScheduleRsp(retcode=0)
|
||||
return GetExBossScheduleRsp(
|
||||
retcode=0,
|
||||
begin_time=1730750400,
|
||||
end_time=1931268799,
|
||||
min_level=38,
|
||||
rank_id=104,
|
||||
schedule_id=10377
|
||||
)
|
||||
|
||||
10
game_server/packet/handlers/GetGodWarLobbyReq.py
Normal file
10
game_server/packet/handlers/GetGodWarLobbyReq.py
Normal file
@@ -0,0 +1,10 @@
|
||||
import betterproto
|
||||
from game_server.net.session import Session
|
||||
from lib.proto import GetGodWarLobbyReq,GetGodWarLobbyRsp
|
||||
|
||||
async def handle(session: Session, msg: GetGodWarLobbyReq) -> betterproto.Message:
|
||||
return GetGodWarLobbyRsp(
|
||||
retcode=0,
|
||||
god_war_id=1,
|
||||
lobby_id=2
|
||||
)
|
||||
66
game_server/packet/handlers/GodWarEventNotify.py
Normal file
66
game_server/packet/handlers/GodWarEventNotify.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import betterproto
|
||||
import random
|
||||
from game_server.net.session import Session
|
||||
from lib.proto import (
|
||||
GodWarEventNotify,
|
||||
GodWarEventInfo
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: GodWarEventNotify) -> betterproto.Message:
|
||||
return GodWarEventNotify(
|
||||
god_war_id=1,
|
||||
tale_id=30,
|
||||
event_list=[
|
||||
GodWarEventInfo(
|
||||
event_id=570018,
|
||||
event_param_list=[
|
||||
418,
|
||||
0
|
||||
],
|
||||
event_type=33,
|
||||
source_event_id=57000,
|
||||
source_type=1
|
||||
),
|
||||
GodWarEventInfo(
|
||||
event_id=3000045,
|
||||
event_type=10,
|
||||
source_event_id=5910000,
|
||||
source_type=1
|
||||
),
|
||||
GodWarEventInfo(
|
||||
event_id=5910000,
|
||||
event_type=99,
|
||||
source_event_id=57000,
|
||||
source_type=1
|
||||
),
|
||||
GodWarEventInfo(
|
||||
event_id=3000045,
|
||||
event_type=10,
|
||||
source_event_id=570000,
|
||||
source_type=1
|
||||
),
|
||||
GodWarEventInfo(
|
||||
event_id=5600145,
|
||||
event_param_list=[
|
||||
10,
|
||||
718,
|
||||
1
|
||||
],
|
||||
event_type=49,
|
||||
source_event_id=570000,
|
||||
source_type=1
|
||||
),
|
||||
GodWarEventInfo(
|
||||
event_id=570000,
|
||||
event_type=99,
|
||||
source_event_id=57000,
|
||||
source_type=1
|
||||
),
|
||||
GodWarEventInfo(
|
||||
event_id=57000,
|
||||
event_type=99,
|
||||
source_event_id=57000,
|
||||
source_type=1
|
||||
)
|
||||
]
|
||||
)
|
||||
17
game_server/packet/handlers/TriggerGodWarEventReq.py
Normal file
17
game_server/packet/handlers/TriggerGodWarEventReq.py
Normal file
@@ -0,0 +1,17 @@
|
||||
import betterproto
|
||||
import random
|
||||
from game_server.net.session import Session
|
||||
from lib.proto import (
|
||||
TriggerGodWarEventReq,
|
||||
TriggerGodWarEventRsp,
|
||||
GodWarEventNotify,
|
||||
GodWarEventInfo
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: TriggerGodWarEventReq) -> betterproto.Message:
|
||||
return TriggerGodWarEventRsp(
|
||||
retcode=0,
|
||||
event_id_list=msg.event_id_list,
|
||||
god_war_id=1,
|
||||
tale_id=30
|
||||
)
|
||||
@@ -13,13 +13,14 @@ from lib.proto import (
|
||||
)
|
||||
|
||||
async def handle(session: Session, msg: UltraEndlessGetMainDataReq) -> betterproto.Message:
|
||||
with open("Endless.json", "r") as file:
|
||||
with open("Battle.json", "r") as file:
|
||||
data = json.load(file)
|
||||
|
||||
site = data.get("area1",781009)
|
||||
group = data.get("grouplevel",9)
|
||||
dynamic = data.get("dynamic",500)
|
||||
cupnum = data.get("cupnum",1600)
|
||||
endless_data = data.get("endless", {})
|
||||
site = endless_data.get("area1", 781009)
|
||||
group = endless_data.get("grouplevel", 9)
|
||||
dynamic = endless_data.get("dynamic", 500)
|
||||
cupnum = endless_data.get("cupnum", 1600)
|
||||
return UltraEndlessGetMainDataRsp(
|
||||
retcode=0,
|
||||
dynamic_hard_level=dynamic,
|
||||
|
||||
Reference in New Issue
Block a user