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 40130 additions and 160407 deletions

View File

@@ -1,4 +1,4 @@
# Supported Version: 3.3.5x
# Supported Version: 4.4.5x
Run the game by clicking run.bat file.

File diff suppressed because it is too large Load Diff

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(

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 {

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)?;

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,

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
}

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 {

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)
}
}

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;

View File

@@ -1,23 +1,23 @@
{
"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",
"enable_sw_global": true,
"enable_castorice_global": true
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

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"
}
}