feat: Add support for 4.4.5x

This commit is contained in:
amizing25
2026-07-17 06:03:18 +07:00
parent 99e1e09707
commit 592ad690d9
15 changed files with 40091 additions and 160368 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
# Supported Version: 3.3.5x
# Supported Version: 4.4.5x
Run the game by clicking run.bat file.
+26574 -25631
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,6 +1,6 @@
use super::*;
pub static BASE_AVATAR_IDS: [u32; 85] = [
pub static BASE_AVATAR_IDS: [u32; 87] = [
8001, 1001, //
//
1002, 1003, 1004, 1005, 1006, 1008, 1009, 1013, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,
@@ -8,7 +8,7 @@ pub static BASE_AVATAR_IDS: [u32; 85] = [
1213, 1214, 1215, 1217, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1312, 1315, 1310,
1314, 1218, 1221, 1220, 1222, 1223, 1317, 1313, 1225, 1402, 1401, 1404, 1403, 1405, 1407, 1406,
1409, 1014, 1015, 1408, 1410, 1412, 1413, 1414, 1415, 1321, 1501, 1502, 1504, 1505, 1506, 1507,
1508, 1509, 1510
1508, 1509, 1510, 1512, 1513,
];
pub async fn on_get_avatar_data_cs_req(
+2 -2
View File
@@ -105,7 +105,7 @@ pub async fn on_send_msg_cs_req(
.and_then(|x| x.extend_type.as_ref())
.and_then(|x| match x {
ExtendType::MessageText(s) => Some(s.as_str()),
_ => None,
_ => Option::<&str>::None,
})
.unwrap_or("");
@@ -325,7 +325,7 @@ fn create_send_message(
) -> RevcMsgScNotify {
RevcMsgScNotify {
chat_type,
dkdlooaaake: to,
pffpfkoglpo: to,
recv_message_data: Some(ChatMessageData {
create_time: cur_timestamp_ms(),
ckhpffenobe: Some(Eknabklpeel {
+3 -3
View File
@@ -135,10 +135,10 @@ pub async fn on_get_big_data_all_recommend_cs_req(
}
}
pub async fn on_active_eidolon_cs_req(
pub async fn on_rank_up_avatar_cs_req(
session: &mut PlayerSession,
req: &ActiveEidolonCsReq,
_: &mut ActiveEidolonScRsp,
req: &RankUpAvatarCsReq,
_: &mut RankUpAvatarScRsp,
) -> Option<()> {
let player = session.json_data.get_mut()?;
let avatar = player.avatars.get_mut(&req.avatar_id)?;
+2 -2
View File
@@ -5,9 +5,9 @@ pub async fn on_get_mission_status_cs_req(
body: &GetMissionStatusCsReq,
res: &mut GetMissionStatusScRsp,
) {
res.finished_main_mission_id_list = body.main_mission_id_list.clone();
res.finished_main_mission_id_list = body.sub_mission_id_list.clone();
res.sub_mission_status_list = body
.sub_mission_id_list
.main_mission_id_list
.iter()
.map(|id| Mission {
id: *id,
+6 -27
View File
@@ -29,30 +29,6 @@ pub use mission::*;
pub use player::*;
pub use scene::*;
#[allow(unused_imports)]
use proto::{
CmdActivityType::*, CmdAdventureType::*, CmdAetherDivideType::*, CmdAlleyType::*,
CmdArchiveType::*, CmdAvatarType::*, CmdBattleCollegeType::*, CmdBattlePassType::*,
CmdBattleType::*, CmdBoxingClubType::*, CmdChallengeType::*, CmdChatType::*,
CmdChessRogueType::*, CmdClockParkType::*, CmdContentPackageType::*, CmdDailyActiveType::*,
CmdDrinkMakerType::*, CmdExpeditionType::*, CmdFantasticStoryActivityType::*,
CmdFeverTimeActivityType::*, CmdFightActivityType::*, CmdFightMatch3Type::*, CmdFightType::*,
CmdFriendType::*, CmdGachaType::*, CmdHeartdialType::*, CmdHeliobusType::*, CmdItemType::*,
CmdJukeboxType::*, CmdLineupType::*, CmdLobbyType::*, CmdMailType::*, CmdMapRotationType::*,
CmdMatchThreeModuleType::*, CmdMatchType::*, CmdMessageType::*, CmdMiscModuleType::*,
CmdMissionType::*, CmdMonopolyType::*, CmdMultiplayerType::*, CmdMultipleDropType::*,
CmdMuseumType::*, CmdOfferingType::*, CmdPamMissionType::*, CmdPhoneType::*,
CmdPlayerBoardType::*, CmdPlayerReturnType::*, CmdPlayerSyncType::*, CmdPlayerType::*,
CmdPunkLordType::*, CmdQuestType::*, CmdRaidCollectionType::*, CmdRaidType::*,
CmdRechargeGiftType::*, CmdRecommendType::*, CmdRedDotType::*, CmdReplayType::*,
CmdRndOptionType::*, CmdRogueCommonType::*, CmdRogueEndlessType::*, CmdRogueModifierType::*,
CmdRogueTournType::*, CmdRogueType::*, CmdRollShopType::*, CmdSceneType::*,
CmdServerPrefsType::*, CmdShopType::*, CmdSpaceZooType::*, CmdStarFightType::*,
CmdStoryLineType::*, CmdStrongChallengeActivityType::*, CmdTalkEventType::*,
CmdTelevisionActivityType::*, CmdTextJoinType::*, CmdTrainVisitorType::*,
CmdTreasureDungeonType::*, CmdTutorialType::*, CmdWaypointType::*, CmdWolfBroType::*,
};
macro_rules! dummy {
($($cmd:ident),* $(,)*) => {
paste! {
@@ -60,7 +36,7 @@ macro_rules! dummy {
pub const fn should_send_dummy_rsp(cmd_id: u16) -> bool {
match cmd_id {
$(
x if x == [<Cmd $cmd CsReq>] as u16 => true,
x if x == <proto::[<$cmd CsReq>] as proto::CmdID>::CMD_ID => true,
)*
_ => false,
}
@@ -69,7 +45,9 @@ macro_rules! dummy {
pub async fn send_dummy_response(&mut self, req_id: u16) -> Result<()> {
let cmd_type = match req_id {
$(
x if x == [<Cmd $cmd CsReq>] as u16 => [<Cmd $cmd ScRsp>] as u16,
x if x == <proto::[<$cmd CsReq>] as proto::CmdID>::CMD_ID => {
<proto::[<$cmd ScRsp>] as proto::CmdID>::CMD_ID
},
)*
_ => return Err(anyhow::anyhow!("Invalid request id {req_id:?}")),
};
@@ -140,5 +118,6 @@ dummy! {
GetPreAvatarActivityList,
// GetUnreleasedBlockInfo,
GetFriendAssistList,
GetAssistList
GetAssistList,
B51RacingGetData
}
+5 -3
View File
@@ -34,9 +34,11 @@ pub async fn on_player_login_finish_cs_req(
.send(ContentPackageSyncDataScNotify {
data: Some(ContentPackageData {
content_package_list: [
200001, 200002, 200003, 200004, 200005, 200006, 200007, 200008, 150017, 150015,
150021, 150018, 130011, 130012, 130013, 150025, 140006, 150026, 130014, 150034,
150029, 150035, 150041, 150039, 150045,
200001, 200002, 200003, 200004, 200005, 200006, 200007, 200008, 200009, 200010,
200011, 200012, 150017, 150015, 150021, 150018, 130011, 130012, 130013, 150025,
140006, 150026, 130014, 150034, 150029, 150035, 150041, 150039, 150045, 150057,
150042, 150067, 150064, 150063, 150024, 171002, 150068, 150070, 150071, 150073,
150074, 150075, 150076, 150077, 150078, 150079,
]
.into_iter()
.map(|v| ContentPackageInfo {
+9 -5
View File
@@ -72,6 +72,10 @@ pub async fn on_get_scene_map_info_cs_req(
},
],
floor_id: floor_id,
scene_identifier: Some(SceneIdentifier {
floor_id,
..Default::default()
}),
..Default::default()
};
@@ -87,7 +91,7 @@ pub async fn on_get_scene_map_info_cs_req(
if let Some((_, floor_config)) = floor_configs {
for (group_id, group) in floor_config.scenes.iter() {
map_info.maze_group_list.push(MazeGroup {
map_info.group_list.push(MapInfoGroup {
group_id: *group_id,
..Default::default()
});
@@ -97,11 +101,11 @@ pub async fn on_get_scene_map_info_cs_req(
}
for prop in &group.props {
map_info.maze_prop_list.push(MazePropState {
map_info.map_info_prop_list.push(MazePropState {
group_id: prop.group_id,
state: prop.prop_state,
config_id: prop.inst_id,
extra_info: None,
extra_info: Option::<PropExtraInfo>::None,
});
// map_info.maze_group_list.push(MazeGroup {
// group_id: prop.group_id,
@@ -113,7 +117,7 @@ pub async fn on_get_scene_map_info_cs_req(
}
map_info.lighten_section_list = floor_config.sections.clone();
map_info.floor_saved_data = floor_config.saved_values.clone();
map_info.floor_saved_value_map = floor_config.saved_values.clone();
// #TODO!
// map_info
// .chest_unlock_progress_list
@@ -124,7 +128,7 @@ pub async fn on_get_scene_map_info_cs_req(
// });
}
res.scene_map_info.push(map_info)
res.scene_map_info_list.push(map_info)
}
}
+8 -31
View File
@@ -3,29 +3,6 @@ use paste::paste;
use tracing::Instrument;
use proto::*;
#[allow(unused_imports)]
use proto::{
CmdActivityType::*, CmdAdventureType::*, CmdAetherDivideType::*, CmdAlleyType::*,
CmdArchiveType::*, CmdAvatarType::*, CmdBattleCollegeType::*, CmdBattlePassType::*,
CmdBattleType::*, CmdBoxingClubType::*, CmdChallengeType::*, CmdChatType::*,
CmdChessRogueType::*, CmdClockParkType::*, CmdContentPackageType::*, CmdDailyActiveType::*,
CmdDrinkMakerType::*, CmdExpeditionType::*, CmdFantasticStoryActivityType::*,
CmdFeverTimeActivityType::*, CmdFightActivityType::*, CmdFightMatch3Type::*, CmdFightType::*,
CmdFriendType::*, CmdGachaType::*, CmdHeartdialType::*, CmdHeliobusType::*, CmdItemType::*,
CmdJukeboxType::*, CmdLineupType::*, CmdLobbyType::*, CmdMailType::*, CmdMapRotationType::*,
CmdMatchThreeModuleType::*, CmdMatchType::*, CmdMessageType::*, CmdMiscModuleType::*,
CmdMissionType::*, CmdMonopolyType::*, CmdMultiplayerType::*, CmdMultipleDropType::*,
CmdMuseumType::*, CmdOfferingType::*, CmdPamMissionType::*, CmdPhoneType::*,
CmdPlayerBoardType::*, CmdPlayerReturnType::*, CmdPlayerSyncType::*, CmdPlayerType::*,
CmdPunkLordType::*, CmdQuestType::*, CmdRaidCollectionType::*, CmdRaidType::*,
CmdRecommendType::*, CmdRedDotType::*, CmdReplayType::*, CmdRndOptionType::*,
CmdRogueCommonType::*, CmdRogueEndlessType::*, CmdRogueModifierType::*, CmdRogueTournType::*,
CmdRogueType::*, CmdRollShopType::*, CmdSceneType::*, CmdServerPrefsType::*, CmdShopType::*,
CmdSpaceZooType::*, CmdStarFightType::*, CmdStoryLineType::*,
CmdStrongChallengeActivityType::*, CmdTalkEventType::*, CmdTelevisionActivityType::*,
CmdTextJoinType::*, CmdTrainVisitorType::*, CmdTreasureDungeonType::*, CmdTutorialType::*,
CmdWaypointType::*, CmdWolfBroType::*,
};
use super::PlayerSession;
use super::handlers::*;
@@ -138,27 +115,27 @@ macro_rules! trait_handler {
}
)*
async fn on_message(session: &mut PlayerSession, cmd_type: u16, payload: Vec<u8>) -> Result<()> {
async fn on_message(session: &mut PlayerSession, cmd_id: u16, payload: Vec<u8>) -> Result<()> {
use ::prost::Message;
if PlayerSession::should_send_dummy_rsp(cmd_type) {
session.send_dummy_response(cmd_type).await?;
if PlayerSession::should_send_dummy_rsp(cmd_id) {
session.send_dummy_response(cmd_id).await?;
return Ok(());
}
match cmd_type {
match cmd_id {
$(
cmd_type if cmd_type == paste! { [<Cmd$name CsReq>] as u16 } => {
cmd_id if cmd_id == paste! { <proto::[<$name CsReq>] as proto::CmdID>::CMD_ID } => {
let body = paste! { proto::[<$name CsReq>]::decode(&mut &payload[..])? };
paste! {
Self::[<on_$name:snake _cs_req>](session, &body)
.instrument(tracing::info_span!(stringify!([<on_$name:snake>]), cmd_type = cmd_type))
.instrument(tracing::info_span!(stringify!([<on_$name:snake>]), cmd_id = cmd_id))
.await
}
}
)*
_ => {
tracing::warn!("Unknown command type: {cmd_type}");
tracing::warn!("Unknown command ID: {cmd_id}");
Ok(())
},
}
@@ -190,7 +167,7 @@ trait_handler! {
TakeOffEquipment;
DressRelicAvatar;
TakeOffRelic;
ActiveEidolon;
RankUpAvatar;
// Chat (dummy!)
SendMsg;
+8 -8
View File
@@ -1,20 +1,20 @@
{
"lineups": {
"0": 1507,
"0": 1513,
"1": 1308,
"2": 1403,
"3": 1409
},
"position": {
"x": -26968,
"y": 78953,
"z": 14457,
"rot_y": 11858
"x": 674182,
"y": 75562,
"z": -16482,
"rot_y": 204639
},
"scene": {
"plane_id": 20411,
"floor_id": 20411001,
"entry_id": 2041101
"plane_id": 20511,
"floor_id": 20511001,
"entry_id": 2051101
},
"main_character": "FemaleElation",
"march_type": "MarchHunt",
+4067 -38003
View File
File diff suppressed because it is too large Load Diff
+9373 -96601
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
File diff suppressed because one or more lines are too long
+29 -47
View File
@@ -1,59 +1,35 @@
{
"CNBETAWin3.6.52X": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"CNBETAWin4.2.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14851990_9aa8ee8de0fa_ec7d1e42f851f1",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14890490_fcc969a5461f_1f9258ee9068a5",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14852119_8789f55c1c30_0c0cf5d3c9089b",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14887825_65010135064b_71536d98b8abbf"
},
"OSPRODWin3.6.0": {
"asset_bundle_url": "",
"ex_resource_url": "",
"lua_url": "",
"ifix_url": ""
},
"OSBETAWin3.8.51X": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_13490885_bf25e1553b38_e9adc23a6b6710",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_13532881_eb1de9bedabd_c74ab2513059ad",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_13493894_ec7d6d879305_8b2cfd39d6e545",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_13491130_ecfa51828143_4bd221b76c0d9a"
},
"CNBETAWin3.5.55": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_11797411_74704086c081_d40a71b41ba492",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_11823033_c9e8c870bcc7_b78f37c36487d0",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_11798340_8c6543a1d6c5_2d60cd9b1584b8",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"CNBETAWin3.7.51X": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"OSBETAWin3.8.51": {
"asset_bundle_url": "",
"ex_resource_url": "",
"lua_url": "",
"ifix_url": ""
},
"CNBETAWin3.6.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12066992_f083970b907e_999074cab6dce6",
"ex_resource_url": "https://autopatchcn-bhsr.neonteam.dev/design_data/BetaLive/output_12114942_e99cbde25134_e63a6b835f17f9",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12103115_ee78155e9867_3626f0948d93e2",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12118783_55113408814f_c874267d04c04a"
},
"OSBETAWin4.0.51": {
"asset_bundle_url": "",
"ex_resource_url": "",
"lua_url": "",
"ifix_url": ""
"CNBETAWin3.6.52": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12150127_00d6d096d968_cd76a04beb7ba6",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12178965_e246796e0bb6_05bcce36cd648b",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12150614_5279f6d8029a_bdecff99d2d817",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_12164593_8e3fba5163df_b2b6fc46de4c06"
},
"OSBETAWin4.0.51X": {
"CNBETAWin3.7.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_12579793_48327ff319b5_1b794dd1071e3a",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_12611332_5f583f2f54ae_c04979f13c950d",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_12579929_9566349ee5fb_c6341faaf9b027",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_0_40d2ce0253_c61ba99f70b885"
},
"OSBETAWin3.8.51": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_13490885_bf25e1553b38_e9adc23a6b6710",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_13532881_eb1de9bedabd_c74ab2513059ad",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_13493894_ec7d6d879305_8b2cfd39d6e545",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_13491130_ecfa51828143_4bd221b76c0d9a"
},
"OSBETAWin4.0.51": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_14026982_55a517a26691_89300298bf2b2e",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_14036546_28a134460a9a_5805431f75f0ff",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_14028456_7088b08fd431_59194837d90977",
@@ -65,10 +41,16 @@
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14358961_e055a63b3c34_b199a0234548b5",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14374543_04d971175704_ab00cb3f54bb00"
},
"CNBETAWin3.7.51": {
"asset_bundle_url": "",
"ex_resource_url": "",
"lua_url": "",
"ifix_url": ""
"CNBETAWin4.2.51": {
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_14851990_9aa8ee8de0fa_ec7d1e42f851f1",
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_14890490_fcc969a5461f_1f9258ee9068a5",
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_14852119_8789f55c1c30_0c0cf5d3c9089b",
"ifix_url": "https://autopatchcn.bhsr.com/ifix/BetaLive/output_14887825_65010135064b_71536d98b8abbf"
},
"OSBETAWin4.4.51": {
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_15711835_1986f76c287e_9c3d058458edf0",
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_15753142_3bb8238470fc_a7cec92c089da7",
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_15712109_65eeab393c89_0c116c2699518d",
"ifix_url": "https://autopatchos.starrails.com/ifix/BetaLive/output_0_40d2ce0253_6d871f8bca6eb4"
}
}