mirror of
https://git.neonteam.dev/amizing/robinsr.git
synced 2025-03-12 03:28:30 -04:00
2.2.51
This commit is contained in:
parent
1e0cfa6f12
commit
5ae73b4d8c
28
README.md
28
README.md
@ -1,17 +1,19 @@
|
|||||||
# Supported Version: 2.1.51, 2.1.52, 2.1.53, 2.1.54, 2.1.55
|
# Supported Version: 2.2.51
|
||||||
Run the game by clicking run.bat file.
|
Run the game by clicking run.bat file.
|
||||||
|
|
||||||
Tool website: [https://freesr-tools.pages.dev](https://freesr-tools.pages.dev)
|
Tool website: [https://freesr-tools.pages.dev](https://freesr-tools.pages.dev)
|
||||||
|
|
||||||
Start battle by entering any calyx in the map, DON'T ATTACK THE ENEMIES, IT WON'T WORK (maybe)
|
Start battle by entering any calyx in the map, DON'T ATTACK THE ENEMIES, IT WON'T WORK (maybe)
|
||||||
|
|
||||||
Some scenes might not loaded properly. If you stuck at loading screen, remove persistent file.
|
Some scenes might not loaded properly. If you stuck at loading screen, remove `persistent` file.
|
||||||
|
|
||||||
# RobinSR
|
# RobinSR
|
||||||
Original: [https://git.xeondev.com/reversedrooms/RobinSR/](https://git.xeondev.com/reversedrooms/RobinSR/)
|
Original:
|
||||||
|
[https://git.xeondev.com/reversedrooms/RobinSR](https://git.xeondev.com/reversedrooms/RobinSR)
|
||||||
|
[https://git.xeondev.com/reversedrooms/JadeSR](https://git.xeondev.com/reversedrooms/JadeSR)
|
||||||
|
|
||||||
A Server emulator for the game [`Honkai: Star Rail`](https://hsr.hoyoverse.com/en-us/)
|
A Server emulator for the game [`Honkai: Star Rail`](https://hsr.hoyoverse.com/en-us/)
|
||||||

|

|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@ -65,19 +67,5 @@ run the following in a terminal:
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Connecting
|
## Connecting
|
||||||
[Get 2.2 beta client](https://bhrpg-prod.oss-accelerate.aliyuncs.com/client/beta/20240322124944_scfGE0xJXlWtoJ1r/StarRail_2.1.51.zip),
|
[Get 2.2 beta client](https://bhrpg-prod.oss-accelerate.aliyuncs.com/client/beta/20240322124944_scfGE0xJXlWtoJ1r/StarRail_2.1.51.zip)
|
||||||
replace [mhypbase.dll](https://git.xeondev.com/reversedrooms/RobinSR/raw/branch/master/mhypbase.dll) file in your game folder, it will redirect game traffic (and also disable in-game censorship)
|
Replace [mhypbase.dll](https://git.xeondev.com/reversedrooms/RobinSR/raw/branch/master/mhypbase.dll) file in your game folder, it will redirect game traffic (and also disable in-game censorship)
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
Pull requests are welcome. For major changes, please open an issue first to discuss
|
|
||||||
what you would like to change, and why.
|
|
||||||
|
|
||||||
## Bug Reports
|
|
||||||
|
|
||||||
If you find a bug, please open an issue with as much detail as possible. If you
|
|
||||||
can, please include steps to reproduce the bug.
|
|
||||||
|
|
||||||
Bad issues such as "This doesn't work" will be closed immediately, be _sure_ to
|
|
||||||
provide exact detailed steps to reproduce your bug. If it's hard to reproduce, try
|
|
||||||
to explain it and write a reproducer as best as you can.
|
|
||||||
9628
freesr-data.json
9628
freesr-data.json
File diff suppressed because it is too large
Load Diff
@ -2,11 +2,11 @@ use crate::net::tools::JsonData;
|
|||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
static UNLOCKED_AVATARS: [u32; 54] = [
|
static UNLOCKED_AVATARS: [u32; 56] = [
|
||||||
8001, 8002, 8003, 8004, 8005, 8006, 1001, 1002, 1003, 1004, 1005, 1006, 1008, 1009, 1013, 1101,
|
8001, 8002, 8003, 8004, 8005, 8006, 1001, 1002, 1003, 1004, 1005, 1006, 1008, 1009, 1013, 1101,
|
||||||
1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1201, 1202, 1203, 1204, 1205,
|
1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1201, 1202, 1203, 1204, 1205,
|
||||||
1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1217, 1301, 1302, 1303, 1304, 1305,
|
1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1217, 1301, 1302, 1303, 1304, 1305,
|
||||||
1306, 1307, 1308, 1309, 1312, 1315,
|
1306, 1307, 1308, 1309, 1312, 1315, 1310, 1314,
|
||||||
];
|
];
|
||||||
|
|
||||||
pub async fn on_get_avatar_data_cs_req(
|
pub async fn on_get_avatar_data_cs_req(
|
||||||
|
|||||||
@ -13,8 +13,9 @@ pub async fn on_start_cocoon_stage_cs_req(
|
|||||||
let mut battle_info = SceneBattleInfo {
|
let mut battle_info = SceneBattleInfo {
|
||||||
stage_id: player.battle_config.stage_id,
|
stage_id: player.battle_config.stage_id,
|
||||||
logic_random_seed: rand::thread_rng().gen::<u32>(),
|
logic_random_seed: rand::thread_rng().gen::<u32>(),
|
||||||
// battle_id: 1,
|
battle_id: 1,
|
||||||
kimmjioaodn: player.battle_config.cycle_count,
|
// cleheggdkal: player.battle_config.cycle_count, // wave
|
||||||
|
ohfkoaahoib: player.battle_config.cycle_count, // wave
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -91,21 +92,21 @@ pub async fn on_start_cocoon_stage_cs_req(
|
|||||||
|
|
||||||
// pf score object
|
// pf score object
|
||||||
if player.battle_config.battle_type == BattleType::PF {
|
if player.battle_config.battle_type == BattleType::PF {
|
||||||
let mut battle_target = Hbinjjdphdo::default();
|
let mut battle_target = Cnngaoldopi::default();
|
||||||
battle_target.bgnpebhgelb.push(BattleTarget {
|
battle_target.fdfcmhbhnmc.push(BattleTarget {
|
||||||
id: 10001,
|
id: 10001,
|
||||||
progress: 0,
|
progress: 0,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
|
|
||||||
battle_info.ichnbmifjdi.insert(1, battle_target);
|
battle_info.jelkfckaonl.insert(1, battle_target);
|
||||||
for i in 2..=4 {
|
for i in 2..=4 {
|
||||||
battle_info.ichnbmifjdi.insert(i, Hbinjjdphdo::default());
|
battle_info.jelkfckaonl.insert(i, Cnngaoldopi::default());
|
||||||
}
|
}
|
||||||
battle_info.ichnbmifjdi.insert(
|
battle_info.jelkfckaonl.insert(
|
||||||
5,
|
5,
|
||||||
Hbinjjdphdo {
|
Cnngaoldopi {
|
||||||
bgnpebhgelb: vec![
|
fdfcmhbhnmc: vec![
|
||||||
BattleTarget {
|
BattleTarget {
|
||||||
id: 2001,
|
id: 2001,
|
||||||
progress: 0,
|
progress: 0,
|
||||||
@ -121,11 +122,21 @@ pub async fn on_start_cocoon_stage_cs_req(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Apocalyptic Shadow
|
||||||
|
if player.battle_config.battle_type == BattleType::AS {
|
||||||
|
let mut battle_target = Cnngaoldopi::default();
|
||||||
|
battle_target.fdfcmhbhnmc.push(BattleTarget {
|
||||||
|
id: 10002,
|
||||||
|
progress: 0,
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// SU
|
// SU
|
||||||
if player.battle_config.battle_type == BattleType::SU {
|
if player.battle_config.battle_type == BattleType::SU {
|
||||||
battle_info.mpobegkcikn.push(Npjnkmmjfdf {
|
battle_info.ldkhpbclcbd.push(Mnnlfkgifmc {
|
||||||
chgdaadjepi: player.battle_config.path_resonance_id,
|
ejilnblflii: player.battle_config.path_resonance_id,
|
||||||
status: Some(Agpocmnmmdi {
|
status: Some(Fmaobdmmcjb {
|
||||||
sp: Some(AmountInfo {
|
sp: Some(AmountInfo {
|
||||||
cur_amount: 10_000,
|
cur_amount: 10_000,
|
||||||
max_amount: 10_000,
|
max_amount: 10_000,
|
||||||
@ -167,14 +178,18 @@ pub async fn on_pve_battle_result_cs_req(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// scene cast skill cs req
|
// scene cast skill cs req
|
||||||
pub async fn on_mpemgbdkigg(session: &mut PlayerSession, request: &Mpemgbdkigg) -> Result<()> {
|
pub async fn on_scene_cast_skill_cs_req(
|
||||||
|
session: &mut PlayerSession,
|
||||||
|
request: &SceneCastSkillCsReq,
|
||||||
|
) -> Result<()> {
|
||||||
let player = tools::JsonData::load().await;
|
let player = tools::JsonData::load().await;
|
||||||
|
|
||||||
let mut battle_info = SceneBattleInfo {
|
let mut battle_info = SceneBattleInfo {
|
||||||
stage_id: player.battle_config.stage_id,
|
stage_id: player.battle_config.stage_id,
|
||||||
logic_random_seed: rand::thread_rng().gen::<u32>(),
|
logic_random_seed: rand::thread_rng().gen::<u32>(),
|
||||||
// battle_id: 1,
|
battle_id: 1,
|
||||||
kimmjioaodn: player.battle_config.cycle_count,
|
// cleheggdkal: player.battle_config.cycle_count, // wave
|
||||||
|
ohfkoaahoib: player.battle_config.cycle_count, // wave
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -251,21 +266,21 @@ pub async fn on_mpemgbdkigg(session: &mut PlayerSession, request: &Mpemgbdkigg)
|
|||||||
|
|
||||||
// pf score object
|
// pf score object
|
||||||
if player.battle_config.battle_type == BattleType::PF {
|
if player.battle_config.battle_type == BattleType::PF {
|
||||||
let mut battle_target = Hbinjjdphdo::default();
|
let mut battle_target = Cnngaoldopi::default();
|
||||||
battle_target.bgnpebhgelb.push(BattleTarget {
|
battle_target.fdfcmhbhnmc.push(BattleTarget {
|
||||||
id: 10001,
|
id: 10001,
|
||||||
progress: 0,
|
progress: 0,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
|
|
||||||
battle_info.ichnbmifjdi.insert(1, battle_target);
|
battle_info.jelkfckaonl.insert(1, battle_target);
|
||||||
for i in 2..=4 {
|
for i in 2..=4 {
|
||||||
battle_info.ichnbmifjdi.insert(i, Hbinjjdphdo::default());
|
battle_info.jelkfckaonl.insert(i, Cnngaoldopi::default());
|
||||||
}
|
}
|
||||||
battle_info.ichnbmifjdi.insert(
|
battle_info.jelkfckaonl.insert(
|
||||||
5,
|
5,
|
||||||
Hbinjjdphdo {
|
Cnngaoldopi {
|
||||||
bgnpebhgelb: vec![
|
fdfcmhbhnmc: vec![
|
||||||
BattleTarget {
|
BattleTarget {
|
||||||
id: 2001,
|
id: 2001,
|
||||||
progress: 0,
|
progress: 0,
|
||||||
@ -281,11 +296,21 @@ pub async fn on_mpemgbdkigg(session: &mut PlayerSession, request: &Mpemgbdkigg)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Apocalyptic Shadow
|
||||||
|
if player.battle_config.battle_type == BattleType::AS {
|
||||||
|
let mut battle_target = Cnngaoldopi::default();
|
||||||
|
battle_target.fdfcmhbhnmc.push(BattleTarget {
|
||||||
|
id: 10002,
|
||||||
|
progress: 0,
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// SU
|
// SU
|
||||||
if player.battle_config.battle_type == BattleType::SU {
|
if player.battle_config.battle_type == BattleType::SU {
|
||||||
battle_info.mpobegkcikn.push(Npjnkmmjfdf {
|
battle_info.ldkhpbclcbd.push(Mnnlfkgifmc {
|
||||||
chgdaadjepi: player.battle_config.path_resonance_id,
|
ejilnblflii: player.battle_config.path_resonance_id,
|
||||||
status: Some(Agpocmnmmdi {
|
status: Some(Fmaobdmmcjb {
|
||||||
sp: Some(AmountInfo {
|
sp: Some(AmountInfo {
|
||||||
cur_amount: 10_000,
|
cur_amount: 10_000,
|
||||||
max_amount: 10_000,
|
max_amount: 10_000,
|
||||||
@ -298,15 +323,15 @@ pub async fn on_mpemgbdkigg(session: &mut PlayerSession, request: &Mpemgbdkigg)
|
|||||||
// monsters
|
// monsters
|
||||||
battle_info.monster_wave_list = Monster::to_scene_monster_waves(&player.battle_config.monsters);
|
battle_info.monster_wave_list = Monster::to_scene_monster_waves(&player.battle_config.monsters);
|
||||||
|
|
||||||
let mut resp = Ifiohnjlehh {
|
let mut resp = SceneCastSkillScRsp {
|
||||||
elgjckaejld: request.elgjckaejld,
|
jkdaceoekll: request.jkdaceoekll,
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
pbgpinglheg: vec![],
|
diehcelekfj: vec![],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let targets = request
|
let targets = request
|
||||||
.jpieajikioh
|
.igkjjpeealc
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|id| **id > 30_000 || **id < 1_000)
|
.filter(|id| **id > 30_000 || **id < 1_000)
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|||||||
@ -8,31 +8,31 @@ use crate::{
|
|||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
pub async fn on_nhfajfplkep(session: &mut PlayerSession, _: &Nhfajfplkep) -> Result<()> {
|
pub async fn on_jhfffmnkcbf(session: &mut PlayerSession, _: &Jhfffmnkcbf) -> Result<()> {
|
||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_GET_FRIEND_LIST_INFO_SC_RSP,
|
CMD_GET_FRIEND_LIST_INFO_SC_RSP,
|
||||||
Pbfkjlnnnim {
|
Fmonbbgkfpp {
|
||||||
amgpdgdnlgd: vec![Leldmbjfheh {
|
nffnphfnbph: vec![Pbbkojapeaj {
|
||||||
gpgdedmpjla: PlayingState::None.into(),
|
jkmlmffobmi: PlayingState::None.into(),
|
||||||
cfmiklhjmle: Some(Alcoeanikil::default()),
|
eejlmfccjnm: Some(Bhkoekppbaf::default()),
|
||||||
hiljemhhhnk: String::from("RobinSR"),
|
ddnklblgmaa: String::from("RobinSR"),
|
||||||
kmclngophda: Some(Hcdpijbnijp {
|
mkabddponma: Some(Mionicmdpaa {
|
||||||
uid: 727,
|
uid: 727,
|
||||||
mbdjcknimop: 3,
|
platform: 3,
|
||||||
igmaomgegaj: 1,
|
mjbmlkimpnn: 1,
|
||||||
gjlfhjlijon: 201008,
|
dgojjmfnomj: 201008,
|
||||||
jpajpffgnbi: 220005,
|
kpiphlhfiib: 220005,
|
||||||
level: 70,
|
level: 70,
|
||||||
nickname: String::from("Server"),
|
nickname: String::from("Server"),
|
||||||
plmbeaaegak: vec![AssistSimpleInfo {
|
oemkmkkhkde: vec![AssistSimpleInfo {
|
||||||
avatar_id: 1008,
|
avatar_id: 1008,
|
||||||
level: 70,
|
level: 70,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}],
|
}],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
gjdiplfecfa: true,
|
niekopdjolm: true,
|
||||||
}],
|
}],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
@ -40,20 +40,36 @@ pub async fn on_nhfajfplkep(session: &mut PlayerSession, _: &Nhfajfplkep) -> Res
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn on_komknbijgpi(session: &mut PlayerSession, _: &Komknbijgpi) -> Result<()> {
|
pub async fn on_pignjacjgdl(session: &mut PlayerSession, _: &Pignjacjgdl) -> Result<()> {
|
||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_GET_PRIVATE_CHAT_HISTORY_SC_RSP,
|
CMD_GET_PRIVATE_CHAT_HISTORY_SC_RSP,
|
||||||
Ooibcglpnac {
|
Hachagdjilp {
|
||||||
pgofeopnpbm: vec![Bpifmdladdn {
|
fepangjbmpa: vec![
|
||||||
bdjoneohhpj: MsgType::CustomText.into(),
|
Gnbekokccfc {
|
||||||
phhhfhobhmk: cur_timestamp_ms(),
|
mgmicgabebd: MsgType::CustomText.into(),
|
||||||
fbelgjfhbkh: ":motorized_wheelchair:".to_string(),
|
hkkkjdbgiao: cur_timestamp_ms(),
|
||||||
nokipdbhglc: 727,
|
anjfbjikchf: "'sync'".to_string(),
|
||||||
|
befmkobhohp: 727,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}],
|
},
|
||||||
fjbkleaflam: 727,
|
Gnbekokccfc {
|
||||||
oligkfnjkma: 1337,
|
mgmicgabebd: MsgType::CustomText.into(),
|
||||||
|
hkkkjdbgiao: cur_timestamp_ms(),
|
||||||
|
anjfbjikchf: "'mc {mc_id}' mc_id can be set from 8001 to 8006".to_string(),
|
||||||
|
befmkobhohp: 727,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
Gnbekokccfc {
|
||||||
|
mgmicgabebd: MsgType::CustomText.into(),
|
||||||
|
hkkkjdbgiao: cur_timestamp_ms(),
|
||||||
|
anjfbjikchf: "available command:".to_string(),
|
||||||
|
befmkobhohp: 727,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
],
|
||||||
|
cibgdjekbja: 727, // from
|
||||||
|
ienomggikon: 1337, // to
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@ -61,22 +77,24 @@ pub async fn on_komknbijgpi(session: &mut PlayerSession, _: &Komknbijgpi) -> Res
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RecvMsgCsReq
|
// RecvMsgCsReq
|
||||||
pub async fn on_bgfjcbbfiek(session: &mut PlayerSession, body: &Bgfjcbbfiek) -> Result<()> {
|
pub async fn on_dgaiigecbee(session: &mut PlayerSession, body: &Dgaiigecbee) -> Result<()> {
|
||||||
let mut json = JsonData::load().await;
|
let mut json = JsonData::load().await;
|
||||||
if let Some((cmd, args)) = parse_command(&body.moiplammfad) {
|
|
||||||
|
if let Some((cmd, args)) = parse_command(&body.ajlhdpcjand) {
|
||||||
match cmd {
|
match cmd {
|
||||||
"sync" => {
|
"sync" => {
|
||||||
sync_player(session, json).await?;
|
sync_player(session, json).await?;
|
||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_REVC_MSG_SC_NOTIFY,
|
CMD_REVC_MSG_SC_NOTIFY,
|
||||||
Kifdjbodlcc {
|
Klonpheafip {
|
||||||
pofomobijdg: body.pofomobijdg,
|
ggadmjhlomj: body.ggadmjhlomj.clone(),
|
||||||
kjdhmhgjdmc: body.kjdhmhgjdmc,
|
kokadficdfb: body.kokadficdfb,
|
||||||
moiplammfad: String::from("Inventory Synced"),
|
ajlhdpcjand: String::from("Inventory Synced"),
|
||||||
bdjoneohhpj: body.bdjoneohhpj,
|
mgmicgabebd: body.mgmicgabebd,
|
||||||
aljhmlmnmhp: 727,
|
ghojifhngmc: 727, // from
|
||||||
djefnoaonkc: 1337,
|
cmmildghfnl: 1337, // to
|
||||||
|
nmfepfoojic: body.nmfepfoojic,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
@ -113,13 +131,14 @@ pub async fn on_bgfjcbbfiek(session: &mut PlayerSession, body: &Bgfjcbbfiek) ->
|
|||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_REVC_MSG_SC_NOTIFY,
|
CMD_REVC_MSG_SC_NOTIFY,
|
||||||
Kifdjbodlcc {
|
Klonpheafip {
|
||||||
pofomobijdg: body.pofomobijdg,
|
ggadmjhlomj: body.ggadmjhlomj.clone(),
|
||||||
kjdhmhgjdmc: body.kjdhmhgjdmc,
|
kokadficdfb: body.kokadficdfb,
|
||||||
moiplammfad: format!("Set MC to: {mc:#?}"),
|
ajlhdpcjand: format!("Set MC to: {mc:#?}"),
|
||||||
bdjoneohhpj: body.bdjoneohhpj,
|
mgmicgabebd: body.mgmicgabebd,
|
||||||
aljhmlmnmhp: 727,
|
ghojifhngmc: 727,
|
||||||
djefnoaonkc: 1337,
|
cmmildghfnl: 1337,
|
||||||
|
nmfepfoojic: body.nmfepfoojic,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
@ -131,7 +150,7 @@ pub async fn on_bgfjcbbfiek(session: &mut PlayerSession, body: &Bgfjcbbfiek) ->
|
|||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_SEND_MSG_SC_RSP,
|
CMD_SEND_MSG_SC_RSP,
|
||||||
Jhickbdnnii {
|
Ckcjblcacof {
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
end_time: 0,
|
end_time: 0,
|
||||||
},
|
},
|
||||||
@ -153,9 +172,9 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
|
|||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_PLAYER_SYNC_SC_NOTIFY,
|
CMD_PLAYER_SYNC_SC_NOTIFY,
|
||||||
Eckkajafean {
|
Pkbehgpoein {
|
||||||
lminpcphbfp: (2000..3500).collect(),
|
ipnkigfoikl: (2000..3500).collect(),
|
||||||
oglioehgbal: (1..2000).collect(),
|
idgakomjiio: (1..2000).collect(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@ -164,8 +183,8 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
|
|||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_PLAYER_SYNC_SC_NOTIFY,
|
CMD_PLAYER_SYNC_SC_NOTIFY,
|
||||||
Eckkajafean {
|
Pkbehgpoein {
|
||||||
fihplpphfme: Some(Abcekhjbnmp {
|
enfnppagfpp: Some(Gkjoiapbbne {
|
||||||
avatar_list: json
|
avatar_list: json
|
||||||
.avatars
|
.avatars
|
||||||
.values()
|
.values()
|
||||||
@ -180,7 +199,7 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
|
|||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_PLAYER_SYNC_SC_NOTIFY,
|
CMD_PLAYER_SYNC_SC_NOTIFY,
|
||||||
Eckkajafean {
|
Pkbehgpoein {
|
||||||
relic_list: json.relics.iter().map(|v| v.to_relic_proto()).collect(),
|
relic_list: json.relics.iter().map(|v| v.to_relic_proto()).collect(),
|
||||||
equipment_list: json
|
equipment_list: json
|
||||||
.lightcones
|
.lightcones
|
||||||
@ -195,8 +214,8 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
|
|||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_PLAYER_SYNC_SC_NOTIFY,
|
CMD_PLAYER_SYNC_SC_NOTIFY,
|
||||||
Eckkajafean {
|
Pkbehgpoein {
|
||||||
fihplpphfme: Some(Abcekhjbnmp {
|
enfnppagfpp: Some(Gkjoiapbbne {
|
||||||
avatar_list: json
|
avatar_list: json
|
||||||
.avatars
|
.avatars
|
||||||
.values()
|
.values()
|
||||||
|
|||||||
@ -32,35 +32,41 @@ pub async fn on_get_archive_data_cs_req(
|
|||||||
.send(
|
.send(
|
||||||
CMD_GET_ARCHIVE_DATA_SC_RSP,
|
CMD_GET_ARCHIVE_DATA_SC_RSP,
|
||||||
GetArchiveDataScRsp {
|
GetArchiveDataScRsp {
|
||||||
archive_data: Some(ArchiveData::default()),
|
bkcflgbcjmi: Some(ArchiveData::default()),
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn on_oakankcfbec(session: &mut PlayerSession, _: &Oakankcfbec) -> Result<()> {
|
pub async fn on_gfmigicacfn(session: &mut PlayerSession, _: &Gfmigicacfn) -> Result<()> {
|
||||||
// ?
|
// ?
|
||||||
session
|
session
|
||||||
.send(CMD_DRESS_RELIC_AVATAR_SC_RSP, Dummy::default())
|
.send(CMD_DRESS_RELIC_AVATAR_SC_RSP, Dummy::default())
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn on_cnpajjnhfpa(session: &mut PlayerSession, _: &Cnpajjnhfpa) -> Result<()> {
|
pub async fn on_nbmofdgfejk(session: &mut PlayerSession, _: &Nbmofdgfejk) -> Result<()> {
|
||||||
// ?
|
// ?
|
||||||
session
|
session
|
||||||
.send(CMD_TAKE_OFF_RELIC_SC_RSP, Dummy::default())
|
.send(CMD_TAKE_OFF_RELIC_SC_RSP, Dummy::default())
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn on_copkgioejac(session: &mut PlayerSession, _: &Copkgioejac) -> Result<()> {
|
pub async fn on_dress_avatar_cs_req(
|
||||||
|
session: &mut PlayerSession,
|
||||||
|
_: &DressAvatarCsReq,
|
||||||
|
) -> Result<()> {
|
||||||
// ?
|
// ?
|
||||||
session
|
session
|
||||||
.send(CMD_DRESS_AVATAR_SC_RSP, Dummy::default())
|
.send(CMD_DRESS_AVATAR_SC_RSP, Dummy::default())
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn on_aafgmacgenl(session: &mut PlayerSession, _: &Aafgmacgenl) -> Result<()> {
|
pub async fn on_take_off_equipment_cs_req(
|
||||||
|
session: &mut PlayerSession,
|
||||||
|
_: &TakeOffEquipmentCsReq,
|
||||||
|
) -> Result<()> {
|
||||||
// ?
|
// ?
|
||||||
session
|
session
|
||||||
.send(CMD_TAKE_OFF_EQUIPMENT_SC_RSP, Dummy::default())
|
.send(CMD_TAKE_OFF_EQUIPMENT_SC_RSP, Dummy::default())
|
||||||
|
|||||||
@ -10,8 +10,8 @@ pub async fn on_get_all_lineup_data_cs_req(
|
|||||||
let lineup = LineupInfo {
|
let lineup = LineupInfo {
|
||||||
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
||||||
name: "Squad 1".to_string(),
|
name: "Squad 1".to_string(),
|
||||||
njjbfegnhjc: 5,
|
mp: 5,
|
||||||
bpkggopoppf: 5,
|
mp_max: 5,
|
||||||
avatar_list: AvatarJson::to_lineup_avatars(&player),
|
avatar_list: AvatarJson::to_lineup_avatars(&player),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
@ -35,8 +35,8 @@ pub async fn on_get_cur_lineup_data_cs_req(
|
|||||||
let mut lineup = LineupInfo {
|
let mut lineup = LineupInfo {
|
||||||
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
||||||
name: "Squad 1".to_string(),
|
name: "Squad 1".to_string(),
|
||||||
njjbfegnhjc: 5,
|
mp: 5,
|
||||||
bpkggopoppf: 5,
|
mp_max: 5,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ pub async fn on_replace_lineup_cs_req(
|
|||||||
|
|
||||||
let lineups = &mut player.lineups;
|
let lineups = &mut player.lineups;
|
||||||
for (slot, avatar_id) in &mut *lineups {
|
for (slot, avatar_id) in &mut *lineups {
|
||||||
if let Some(lineup) = req.jkifflmenfn.get(*slot as usize) {
|
if let Some(lineup) = req.replace_slot_list.get(*slot as usize) {
|
||||||
*avatar_id = if lineup.id > 8000 {
|
*avatar_id = if lineup.id > 8000 {
|
||||||
player.main_character as u32
|
player.main_character as u32
|
||||||
} else {
|
} else {
|
||||||
@ -150,25 +150,25 @@ async fn refresh_lineup(sess: &mut PlayerSession, player: &JsonData) -> Result<(
|
|||||||
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
||||||
name: "Squad 1".to_string(),
|
name: "Squad 1".to_string(),
|
||||||
avatar_list: AvatarJson::to_lineup_avatars(player),
|
avatar_list: AvatarJson::to_lineup_avatars(player),
|
||||||
njjbfegnhjc: 5,
|
mp_max: 5,
|
||||||
bpkggopoppf: 5,
|
mp: 5,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
sess.send(
|
sess.send(
|
||||||
CMD_SCENE_GROUP_REFRESH_SC_NOTIFY,
|
CMD_SCENE_GROUP_REFRESH_SC_NOTIFY,
|
||||||
Ljihfeagpcl {
|
Kecnjlcjefm {
|
||||||
kpfomkdmoce: vec![Jnofbbanolk {
|
kpjckjjpjhj: vec![Makfkmagkli {
|
||||||
group_id: 0,
|
group_id: 0,
|
||||||
state: 0,
|
state: 0,
|
||||||
kppckepfpce: 0,
|
kcbpdfengaa: 0,
|
||||||
fiiciciambe: player
|
hdaiklkffjh: player
|
||||||
.lineups
|
.lineups
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(idx, v)| Gffbkjofnad {
|
.map(|(idx, v)| Kbikoelgpde {
|
||||||
fimallpbobk: 0,
|
kjjeiknincl: 0,
|
||||||
mggfjbdchjh: 0,
|
cojmgafmcjm: 0,
|
||||||
glalelmdamm: Some(SceneEntityInfo {
|
gonncekbppg: Some(SceneEntityInfo {
|
||||||
actor: Some(SceneActorInfo {
|
actor: Some(SceneActorInfo {
|
||||||
avatar_type: AvatarType::AvatarFormalType.into(),
|
avatar_type: AvatarType::AvatarFormalType.into(),
|
||||||
base_avatar_id: *v,
|
base_avatar_id: *v,
|
||||||
|
|||||||
@ -141,20 +141,20 @@ pub async fn on_get_mission_status_cs_req(
|
|||||||
retcode: 0,
|
retcode: 0,
|
||||||
finished_main_mission_id_list: FINISHED_MAIN_MISSIONS.to_vec(),
|
finished_main_mission_id_list: FINISHED_MAIN_MISSIONS.to_vec(),
|
||||||
sub_mission_status_list: body
|
sub_mission_status_list: body
|
||||||
.main_mission_id_list
|
.sub_mission_id_list
|
||||||
.iter()
|
.iter()
|
||||||
.map(|id| Mission {
|
.map(|id| Mission {
|
||||||
id: *id,
|
id: *id,
|
||||||
progress: 0,
|
progress: 1,
|
||||||
status: MissionStatus::MissionFinish.into(),
|
status: MissionStatus::MissionFinish.into(),
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect(),
|
||||||
mission_event_status_list: body
|
mission_event_status_list: body
|
||||||
.mission_event_id_list
|
.main_mission_id_list
|
||||||
.iter()
|
.iter()
|
||||||
.map(|id| Mission {
|
.map(|id| Mission {
|
||||||
id: *id,
|
id: *id,
|
||||||
progress: 0,
|
progress: 1,
|
||||||
status: MissionStatus::MissionFinish.into(),
|
status: MissionStatus::MissionFinish.into(),
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect(),
|
||||||
|
|||||||
@ -28,15 +28,32 @@ pub use tutorial::*;
|
|||||||
pub use inventory::*;
|
pub use inventory::*;
|
||||||
pub use chat::*;
|
pub use chat::*;
|
||||||
|
|
||||||
|
#[allow(unused_imports)]
|
||||||
use proto::{
|
use proto::{
|
||||||
Aaihejacdpk::*, Achkcddkkkj::*, Bancodieeof::*, CmdActivityType::*, CmdBattleType::*,
|
CmdActivityType::*, CmdAdventureType::*, CmdAetherDivideType::*, CmdAlleyType::*,
|
||||||
CmdPlayerType::*, Cmpepmnekko::*, Cpbdjpocnai::*, Ddhbjcelmjp::*,
|
CmdArchiveType::*, CmdAvatarType::*, CmdBattleCollegeType::*, CmdBattlePassType::*,
|
||||||
Eegmjpcijbc::*, Emhbkpkpjpa::*, Fdkapmfjgjl::*, Gaifgoihffa::*, Galijhmhgcg::*, Gdjpnkniijf::*,
|
CmdBattleType::*, CmdBoxingClubType::*, CmdChallengeType::*, CmdChatType::*,
|
||||||
Hfjpennlffa::*, Hmnbojnkleh::*, Ieoildlcdkb::*, Kfmpmaojchm::*, Lopidcokdih::*, Lpegmiilfjm::*,
|
CmdChessRogueType::*, CmdClockParkType::*, CmdContentPackageType::*, CmdDailyActiveType::*,
|
||||||
Mbnnmfkffbo::*, Mkeclbphcol::*, Niinikapdpg::*, Pfokmnnfiap::*, Pjmghcfmmge::*, Pnjfenbhbhg::*,
|
CmdDrinkMakerType::*, CmdEvolveBuildType::*, CmdExpeditionType::*,
|
||||||
Pnnbhogkeeh::*,
|
CmdFantasticStoryActivityType::*, CmdFeverTimeActivityType::*, CmdFightActivityType::*,
|
||||||
|
CmdFightMathc3Type::*, 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::*,
|
||||||
|
CmdPlayerSync::*, CmdPlayerType::*, CmdPlotType::*, CmdPunkLordType::*, CmdQuestType::*,
|
||||||
|
CmdRaidCollectionType::*, CmdRaidType::*, CmdRedDotType::*, CmdReplayType::*,
|
||||||
|
CmdRndOptionType::*, CmdRogueCommonType::*, CmdRogueEndless::*, CmdRogueModifierType::*,
|
||||||
|
CmdRogueTournType::*, CmdRogueType::*, CmdRollShopType::*, CmdSceneType::*,
|
||||||
|
CmdServerPrefsType::*, CmdShopType::*, CmdSpaceZooType::*, CmdStarFightType::*,
|
||||||
|
CmdStoryLineType::*, CmdStrongChallengeActivityType::*, CmdTalkRewardType::*,
|
||||||
|
CmdTelevisionActivityType::*, CmdTextJoinType::*, CmdTrainVisitorType::*,
|
||||||
|
CmdTravelBrochureType::*, CmdTreasureDungeonType::*, CmdTutorialType::*, CmdWaypointType::*,
|
||||||
|
CmdWolfBroType::*,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
macro_rules! dummy {
|
macro_rules! dummy {
|
||||||
($($cmd:ident),* $(,)*) => {
|
($($cmd:ident),* $(,)*) => {
|
||||||
paste! {
|
paste! {
|
||||||
@ -102,7 +119,7 @@ dummy! {
|
|||||||
GetCurChallenge,
|
GetCurChallenge,
|
||||||
GetRogueInfo,
|
GetRogueInfo,
|
||||||
GetExpeditionData,
|
GetExpeditionData,
|
||||||
GetRogueDialogueEventData,
|
// GetRogueDialogueEventData,
|
||||||
GetJukeboxData,
|
GetJukeboxData,
|
||||||
SyncClientResVersion,
|
SyncClientResVersion,
|
||||||
DailyFirstMeetPam,
|
DailyFirstMeetPam,
|
||||||
|
|||||||
@ -58,7 +58,10 @@ pub async fn on_get_cur_scene_info_cs_req(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// enterscene
|
// enterscene
|
||||||
pub async fn on_lckgkdehclb(session: &mut PlayerSession, request: &Lckgkdehclb) -> Result<()> {
|
pub async fn on_enter_scene_cs_req(
|
||||||
|
session: &mut PlayerSession,
|
||||||
|
request: &EnterSceneCsReq,
|
||||||
|
) -> Result<()> {
|
||||||
let mut player = JsonData::load().await;
|
let mut player = JsonData::load().await;
|
||||||
|
|
||||||
// send packet first
|
// send packet first
|
||||||
@ -71,7 +74,7 @@ pub async fn on_lckgkdehclb(session: &mut PlayerSession, request: &Lckgkdehclb)
|
|||||||
&mut player,
|
&mut player,
|
||||||
request.entry_id,
|
request.entry_id,
|
||||||
true,
|
true,
|
||||||
Some(request.maplanefddc),
|
Some(request.dehbihbbbgo),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
@ -79,23 +82,26 @@ pub async fn on_lckgkdehclb(session: &mut PlayerSession, request: &Lckgkdehclb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// getscenemapinfocsreq
|
// getscenemapinfocsreq
|
||||||
pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe) -> Result<()> {
|
pub async fn on_get_scene_map_info_cs_req(
|
||||||
let mut map_infos = Vec::<Fjniajephmj>::new();
|
sesison: &mut PlayerSession,
|
||||||
|
request: &GetSceneMapInfoCsReq,
|
||||||
|
) -> Result<()> {
|
||||||
|
let mut map_infos = Vec::<SceneMapInfo>::new();
|
||||||
|
|
||||||
for entry_id in &request.dmkkkfnkofh {
|
for entry_id in &request.entry_id_list {
|
||||||
let mut map_info = Fjniajephmj {
|
let mut map_info = SceneMapInfo {
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
dcbdhkkkpgd: vec![
|
chest_info_list: vec![
|
||||||
Gbiimoglajl {
|
ChestInfo {
|
||||||
gommoeicmjg: Kihbdaniehp::MapInfoChestTypeNormal.into(),
|
fmangokfagc: MapInfoChestType::Normal.into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
Gbiimoglajl {
|
ChestInfo {
|
||||||
gommoeicmjg: Kihbdaniehp::MapInfoChestTypePuzzle.into(),
|
fmangokfagc: MapInfoChestType::Puzzle.into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
Gbiimoglajl {
|
ChestInfo {
|
||||||
gommoeicmjg: Kihbdaniehp::MapInfoChestTypeChallenge.into(),
|
fmangokfagc: MapInfoChestType::Challenge.into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -104,7 +110,7 @@ pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe)
|
|||||||
};
|
};
|
||||||
|
|
||||||
for i in 0..100 {
|
for i in 0..100 {
|
||||||
map_info.phicefeaigb.push(i)
|
map_info.lighten_section_list.push(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
let group_config = GAME_RESOURCES.map_entrance.get(entry_id).and_then(|v| {
|
let group_config = GAME_RESOURCES.map_entrance.get(entry_id).and_then(|v| {
|
||||||
@ -115,47 +121,43 @@ pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe)
|
|||||||
if let Some(level) = group_config {
|
if let Some(level) = group_config {
|
||||||
// add teleports
|
// add teleports
|
||||||
for teleport in &level.teleports {
|
for teleport in &level.teleports {
|
||||||
map_info.ojlnmnehgai.push(*teleport.0)
|
map_info.unlock_teleport_list.push(*teleport.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (group_id, group) in &level.group_items {
|
for (group_id, group) in &level.group_items {
|
||||||
map_info.pmolfbcbfpe.push(Gecjjlmabhp {
|
map_info.maze_group_list.push(MazeGroup {
|
||||||
group_id: *group_id,
|
group_id: *group_id,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
|
|
||||||
// prop
|
// prop
|
||||||
for prop in &group.props {
|
for prop in &group.props {
|
||||||
map_info.cgkfbhoadpc.push(Kangcibfhee {
|
map_info.maze_prop_list.push(MazePropState {
|
||||||
group_id: prop.group_id,
|
group_id: prop.group_id,
|
||||||
state: if prop.prop_state_list.contains(&PropState::CheckPointEnable) {
|
state: if prop.prop_state_list.contains(&PropState::CheckPointEnable) {
|
||||||
PropState::CheckPointEnable as u32
|
PropState::CheckPointEnable as u32
|
||||||
} else {
|
} else {
|
||||||
prop.state.clone() as u32
|
prop.state.clone() as u32
|
||||||
},
|
},
|
||||||
ifjocipnpgd: prop.id,
|
config_id: prop.id,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debug
|
|
||||||
// tokio::fs::write(format!("./text-{}.txt", entry_id), format!("{:#?}", map_info)).await?;
|
|
||||||
map_infos.push(map_info)
|
map_infos.push(map_info)
|
||||||
}
|
}
|
||||||
|
|
||||||
sesison
|
sesison
|
||||||
.send(
|
.send(
|
||||||
CMD_GET_SCENE_MAP_INFO_SC_RSP,
|
CMD_GET_SCENE_MAP_INFO_SC_RSP,
|
||||||
Cegeebldbke {
|
GetSceneMapInfoScRsp {
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
mhefdgcamjl: map_infos,
|
map_info_list: map_infos,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
@ -186,13 +188,13 @@ pub async fn on_scene_entity_move_cs_req(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let Some(motion) = &entity.motion {
|
if let Some(motion) = &entity.motion {
|
||||||
if let Some(pos) = &motion.aomilajjmii {
|
if let Some(pos) = &motion.pos {
|
||||||
player.position.x = pos.baimdminomk;
|
player.position.x = pos.x;
|
||||||
player.position.y = pos.bemlopmcgch;
|
player.position.y = pos.y;
|
||||||
player.position.z = pos.bagloppgnpb;
|
player.position.z = pos.z;
|
||||||
}
|
}
|
||||||
if let Some(rot) = &motion.eiaoiankefd {
|
if let Some(rot) = &motion.rot {
|
||||||
player.position.rot_y = rot.bemlopmcgch;
|
player.position.rot_y = rot.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -214,7 +216,7 @@ pub async fn on_get_entered_scene_cs_req(
|
|||||||
.filter(|(_, v)| {
|
.filter(|(_, v)| {
|
||||||
!v.finish_main_mission_list.is_empty() || !v.finish_sub_mission_list.is_empty()
|
!v.finish_main_mission_list.is_empty() || !v.finish_sub_mission_list.is_empty()
|
||||||
})
|
})
|
||||||
.map(|(_, v)| Lpllljogfeh {
|
.map(|(_, v)| Hhglkmjngeg {
|
||||||
floor_id: v.floor_id,
|
floor_id: v.floor_id,
|
||||||
plane_id: v.plane_id,
|
plane_id: v.plane_id,
|
||||||
})
|
})
|
||||||
@ -223,19 +225,14 @@ pub async fn on_get_entered_scene_cs_req(
|
|||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_GET_ENTERED_SCENE_SC_RSP,
|
CMD_GET_ENTERED_SCENE_SC_RSP,
|
||||||
Mkgidalegbd {
|
Fchnfpafjce {
|
||||||
lejonbbgdnn: scenes,
|
npbjclegekf: scenes,
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
// getunlockteleportcsreq
|
|
||||||
pub async fn on_kkbapmgmmcb(_session: &mut PlayerSession, _request: &Kkbapmgmmcb) -> Result<()> {
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn load_scene(
|
async fn load_scene(
|
||||||
session: &mut PlayerSession,
|
session: &mut PlayerSession,
|
||||||
json: &mut JsonData,
|
json: &mut JsonData,
|
||||||
@ -278,24 +275,26 @@ async fn load_scene(
|
|||||||
floor_id: enterance.floor_id,
|
floor_id: enterance.floor_id,
|
||||||
plane_id: enterance.plane_id,
|
plane_id: enterance.plane_id,
|
||||||
entry_id,
|
entry_id,
|
||||||
game_mode_type: plane.plane_type as u32,
|
pjbjelcgkof: plane.plane_type as u32,
|
||||||
pbfgagecpcd: plane.world_id,
|
nnfgkelcban: 1,
|
||||||
|
lgflfajffjl: 1,
|
||||||
|
game_mode_type: 1,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let lineup_info = AvatarJson::to_lineup_info(&json.lineups);
|
let lineup_info = AvatarJson::to_lineup_info(&json.lineups);
|
||||||
let player_pos = MotionInfo {
|
let player_pos = MotionInfo {
|
||||||
// rot
|
// rot
|
||||||
eiaoiankefd: Some(Vector {
|
rot: Some(Vector {
|
||||||
baimdminomk: 0,
|
x: 0,
|
||||||
bemlopmcgch: position.rot_y,
|
y: position.rot_y,
|
||||||
bagloppgnpb: 0,
|
z: 0,
|
||||||
}),
|
}),
|
||||||
// pos
|
// pos
|
||||||
aomilajjmii: Some(Vector {
|
pos: Some(Vector {
|
||||||
baimdminomk: position.x,
|
x: position.x,
|
||||||
bemlopmcgch: position.y,
|
y: position.y,
|
||||||
bagloppgnpb: position.z,
|
z: position.z,
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -305,7 +304,7 @@ async fn load_scene(
|
|||||||
let mut monster_entity_id = 30_000;
|
let mut monster_entity_id = 30_000;
|
||||||
|
|
||||||
for (group_id, group) in &group_config.group_items {
|
for (group_id, group) in &group_config.group_items {
|
||||||
let mut group_info = Dhkacjhaoid {
|
let mut group_info = SceneGroupInfo {
|
||||||
state: 0,
|
state: 0,
|
||||||
group_id: *group_id,
|
group_id: *group_id,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
@ -365,7 +364,7 @@ async fn load_scene(
|
|||||||
entity_id: npc_entity_id,
|
entity_id: npc_entity_id,
|
||||||
motion: Some(npc_position.to_motion()),
|
motion: Some(npc_position.to_motion()),
|
||||||
npc: Some(SceneNpcInfo {
|
npc: Some(SceneNpcInfo {
|
||||||
egeneneoadj: npc.npcid,
|
npc_id: npc.npcid,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
@ -403,11 +402,11 @@ async fn load_scene(
|
|||||||
group_info.entity_list.push(info);
|
group_info.entity_list.push(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
scene_info.chhmmbdhjpg.push(group_info);
|
scene_info.scene_group_list.push(group_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
// load player entity
|
// load player entity
|
||||||
let mut player_group = Dhkacjhaoid {
|
let mut player_group = SceneGroupInfo {
|
||||||
state: 0,
|
state: 0,
|
||||||
group_id: 0,
|
group_id: 0,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
@ -418,16 +417,16 @@ async fn load_scene(
|
|||||||
entity_id: (*slot) + 1,
|
entity_id: (*slot) + 1,
|
||||||
motion: Some(MotionInfo {
|
motion: Some(MotionInfo {
|
||||||
// pos
|
// pos
|
||||||
aomilajjmii: Some(Vector {
|
pos: Some(Vector {
|
||||||
baimdminomk: json.position.x,
|
x: json.position.x,
|
||||||
bemlopmcgch: json.position.y,
|
y: json.position.y,
|
||||||
bagloppgnpb: json.position.z,
|
z: json.position.z,
|
||||||
}),
|
}),
|
||||||
// rot
|
// rot
|
||||||
eiaoiankefd: Some(Vector {
|
rot: Some(Vector {
|
||||||
baimdminomk: 0,
|
x: 0,
|
||||||
bemlopmcgch: json.position.rot_y,
|
y: json.position.rot_y,
|
||||||
bagloppgnpb: 0,
|
z: 0,
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
actor: Some(SceneActorInfo {
|
actor: Some(SceneActorInfo {
|
||||||
@ -439,13 +438,13 @@ async fn load_scene(
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
scene_info.chhmmbdhjpg.push(player_group);
|
scene_info.scene_group_list.push(player_group);
|
||||||
|
|
||||||
if _save {
|
if _save {
|
||||||
session
|
session
|
||||||
.send(
|
.send(
|
||||||
CMD_ENTER_SCENE_BY_SERVER_SC_NOTIFY,
|
CMD_ENTER_SCENE_BY_SERVER_SC_NOTIFY,
|
||||||
Jdokmmikidp {
|
EnterSceneByServerScNotify {
|
||||||
scene: Some(scene_info.clone()),
|
scene: Some(scene_info.clone()),
|
||||||
lineup: Some(lineup_info),
|
lineup: Some(lineup_info),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -51,8 +51,8 @@ impl AvatarJson {
|
|||||||
} else {
|
} else {
|
||||||
0
|
0
|
||||||
},
|
},
|
||||||
ojneijnggfo: 1712924677,
|
first_met_timestamp: 1712924677,
|
||||||
amafpakcckf: relics
|
equip_relic_list: relics
|
||||||
.iter()
|
.iter()
|
||||||
.map(|v| v.to_equipment_relic_proto())
|
.map(|v| v.to_equipment_relic_proto())
|
||||||
.collect::<Vec<_>>(),
|
.collect::<Vec<_>>(),
|
||||||
@ -153,8 +153,8 @@ impl AvatarJson {
|
|||||||
let mut lineup_info = LineupInfo {
|
let mut lineup_info = LineupInfo {
|
||||||
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
extra_lineup_type: ExtraLineupType::LineupNone.into(),
|
||||||
name: "Squad 1".to_string(),
|
name: "Squad 1".to_string(),
|
||||||
njjbfegnhjc: 5,
|
mp: 5,
|
||||||
bpkggopoppf: 5,
|
mp_max: 5,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -197,7 +197,7 @@ impl Lightcone {
|
|||||||
pub fn to_equipment_proto(&self) -> Equipment {
|
pub fn to_equipment_proto(&self) -> Equipment {
|
||||||
Equipment {
|
Equipment {
|
||||||
base_avatar_id: self.equip_avatar,
|
base_avatar_id: self.equip_avatar,
|
||||||
imhlbinfhlh: self.equip_avatar,
|
cmmegdchmlb: self.equip_avatar,
|
||||||
exp: 0,
|
exp: 0,
|
||||||
is_protected: false,
|
is_protected: false,
|
||||||
level: self.level,
|
level: self.level,
|
||||||
@ -249,7 +249,7 @@ impl Relic {
|
|||||||
pub fn to_relic_proto(&self) -> proto::Relic {
|
pub fn to_relic_proto(&self) -> proto::Relic {
|
||||||
proto::Relic {
|
proto::Relic {
|
||||||
base_avatar_id: self.equip_avatar,
|
base_avatar_id: self.equip_avatar,
|
||||||
imhlbinfhlh: self.equip_avatar,
|
cmmegdchmlb: self.equip_avatar,
|
||||||
exp: 0,
|
exp: 0,
|
||||||
is_protected: false,
|
is_protected: false,
|
||||||
level: self.level,
|
level: self.level,
|
||||||
@ -291,9 +291,9 @@ impl Relic {
|
|||||||
|
|
||||||
pub fn to_equipment_relic_proto(&self) -> EquipRelic {
|
pub fn to_equipment_relic_proto(&self) -> EquipRelic {
|
||||||
EquipRelic {
|
EquipRelic {
|
||||||
ipnhjoomhdm: self.relic_id % 10,
|
iaglgkpdloe: self.relic_id % 10,
|
||||||
// ?
|
// ?
|
||||||
llepdadmfdo: 1 + self.internal_uid,
|
ekjochfepap: 1 + self.internal_uid,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -309,11 +309,11 @@ pub struct Monster {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Monster {
|
impl Monster {
|
||||||
fn to_scene_monster_info(&self) -> SceneMonsterParam {
|
fn to_scene_monster_info(&self) -> SceneMonsterData {
|
||||||
SceneMonsterParam {
|
SceneMonsterData {
|
||||||
monster_id: self.monster_id,
|
monster_id: self.monster_id,
|
||||||
max_hp: self.max_hp,
|
max_hp: self.max_hp,
|
||||||
aiapcboelmg: self.max_hp,
|
jjhfeikbakk: self.max_hp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,9 +324,9 @@ impl Monster {
|
|||||||
}
|
}
|
||||||
|
|
||||||
SceneMonsterWave {
|
SceneMonsterWave {
|
||||||
iilhbcalikm: wave_index, // wave indexx??
|
imapolkmefn: wave_index, // wave indexx??
|
||||||
|
|
||||||
ejahmdkklbn: Some(Holldlkceof {
|
acpannfhach: Some(Kjfnknacfin {
|
||||||
// monster param
|
// monster param
|
||||||
level: monsters.iter().map(|v| v.level).max().unwrap_or(95),
|
level: monsters.iter().map(|v| v.level).max().unwrap_or(95),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
@ -387,6 +387,7 @@ pub enum BattleType {
|
|||||||
Moc = 1,
|
Moc = 1,
|
||||||
PF = 2,
|
PF = 2,
|
||||||
SU = 3,
|
SU = 3,
|
||||||
|
AS = 4,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for BattleType {
|
impl Default for BattleType {
|
||||||
@ -462,16 +463,16 @@ impl Position {
|
|||||||
pub fn to_motion(&self) -> MotionInfo {
|
pub fn to_motion(&self) -> MotionInfo {
|
||||||
MotionInfo {
|
MotionInfo {
|
||||||
// rot
|
// rot
|
||||||
eiaoiankefd: Some(Vector {
|
rot: Some(Vector {
|
||||||
baimdminomk: 0,
|
x: 0,
|
||||||
bemlopmcgch: self.rot_y,
|
y: self.rot_y,
|
||||||
bagloppgnpb: 0,
|
z: 0,
|
||||||
}),
|
}),
|
||||||
// pos
|
// pos
|
||||||
aomilajjmii: Some(Vector {
|
pos: Some(Vector {
|
||||||
baimdminomk: self.x,
|
x: self.x,
|
||||||
bemlopmcgch: self.y,
|
y: self.y,
|
||||||
bagloppgnpb: self.z,
|
z: self.z,
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
mhypbase.dll
BIN
mhypbase.dll
Binary file not shown.
22
persistent
22
persistent
@ -1,20 +1,20 @@
|
|||||||
{
|
{
|
||||||
"lineups": {
|
"lineups": {
|
||||||
"0": 1315,
|
"0": 1310,
|
||||||
"1": 1309,
|
"1": 1308,
|
||||||
"2": 1303,
|
"2": 1314,
|
||||||
"3": 1217
|
"3": 1308
|
||||||
},
|
},
|
||||||
"position": {
|
"position": {
|
||||||
"x": 34639,
|
"x": -3588,
|
||||||
"y": 192819,
|
"y": 56256,
|
||||||
"z": 435863,
|
"z": -87629,
|
||||||
"rot_y": 26508
|
"rot_y": 318488
|
||||||
},
|
},
|
||||||
"scene": {
|
"scene": {
|
||||||
"plane_id": 20313,
|
"plane_id": 20321,
|
||||||
"floor_id": 20313001,
|
"floor_id": 20321001,
|
||||||
"entry_id": 2031301
|
"entry_id": 2032101
|
||||||
},
|
},
|
||||||
"main_character": "FemaleHarmony"
|
"main_character": "FemaleHarmony"
|
||||||
}
|
}
|
||||||
48492
proto/out/_.rs
48492
proto/out/_.rs
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
use crate::config::versions;
|
use crate::config::versions;
|
||||||
use axum::extract::Query;
|
use axum::extract::Query;
|
||||||
use prost::Message;
|
use prost::Message;
|
||||||
use proto::{Dispatch, Gateserver, RegionInfo};
|
use proto::{Gateserver, GlobalDispatchData, ServerData};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
pub const QUERY_DISPATCH_ENDPOINT: &str = "/query_dispatch";
|
pub const QUERY_DISPATCH_ENDPOINT: &str = "/query_dispatch";
|
||||||
@ -9,12 +9,12 @@ pub const QUERY_GATEWAY_ENDPOINT: &str = "/query_gateway";
|
|||||||
|
|
||||||
#[tracing::instrument]
|
#[tracing::instrument]
|
||||||
pub async fn query_dispatch() -> String {
|
pub async fn query_dispatch() -> String {
|
||||||
let rsp = Dispatch {
|
let rsp = GlobalDispatchData {
|
||||||
retcode: 0,
|
retcode: 0,
|
||||||
region_list: vec![RegionInfo {
|
server_list: vec![ServerData {
|
||||||
name: String::from("RobinSR"),
|
name: String::from("RobinSR"),
|
||||||
title: String::from("RobinSR"),
|
title: String::from("RobinSR"),
|
||||||
env_type: String::from("9"),
|
env_type: String::from("11"),
|
||||||
dispatch_url: String::from("http://127.0.0.1:21000/query_gateway"),
|
dispatch_url: String::from("http://127.0.0.1:21000/query_gateway"),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}],
|
}],
|
||||||
@ -44,20 +44,13 @@ pub async fn query_gateway(parameters: Query<QueryGatewayParameters>) -> String
|
|||||||
lua_url: config.lua_url.clone(),
|
lua_url: config.lua_url.clone(),
|
||||||
lua_version: config.lua_version.clone(),
|
lua_version: config.lua_version.clone(),
|
||||||
ifix_version: String::from("0"),
|
ifix_version: String::from("0"),
|
||||||
jblkncaoiao: true,
|
pdpbjhfgnjk: true,
|
||||||
hjdjakjkdbi: true,
|
bipcmeeljhj: true,
|
||||||
ldknmcpffim: true,
|
hecpclndaac: true,
|
||||||
feehapamfci: true,
|
nlfkefmfige: true,
|
||||||
eebfeohfpph: true,
|
oigmgpfnloj: true,
|
||||||
dfmjjcfhfea: true,
|
pnnionnkbnn: true,
|
||||||
najikcgjgan: true,
|
|
||||||
giddjofkndm: true,
|
|
||||||
fbnbbembcgn: false,
|
|
||||||
dedgfjhbnok: false,
|
|
||||||
use_tcp: true,
|
use_tcp: true,
|
||||||
linlaijbboh: false,
|
|
||||||
ahmbfbkhmgh: false,
|
|
||||||
nmdccehcdcc: false,
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1,65 +1,14 @@
|
|||||||
{
|
{
|
||||||
"OSBETAWin2.1.51": {
|
"CNBETAWin2.2.51": {
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6744505_89b2f5dc973e",
|
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_7037158_b67f5a6a68fb",
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6759713_b4e0e740f0da",
|
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_7033392_aaca9c1b456b",
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6755976_3c46d7c46e2c",
|
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_7050564_f05a0f949b10",
|
||||||
"lua_version": "6755976"
|
"lua_version": "7050564"
|
||||||
},
|
},
|
||||||
"CNBETAWin2.1.51": {
|
"OSBETAWin2.2.51": {
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6744505_89b2f5dc973e",
|
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_7037158_b67f5a6a68fb",
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6759713_b4e0e740f0da",
|
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_7033392_aaca9c1b456b",
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6755976_3c46d7c46e2c",
|
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_7050564_f05a0f949b10",
|
||||||
"lua_version": "6755976"
|
"lua_version": "7050564"
|
||||||
},
|
|
||||||
|
|
||||||
"OSBETAWin2.1.52": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6785106_15237df2ef89",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6787319_5f3f1dae4769",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6785460_26c4b6c61a8b",
|
|
||||||
"lua_version": "6785460"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.52": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6785106_15237df2ef89",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6787319_5f3f1dae4769",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6785460_26c4b6c61a8b",
|
|
||||||
"lua_version": "6785460"
|
|
||||||
},
|
|
||||||
|
|
||||||
"OSBETAWin2.1.53": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6828321_72f2df86102b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6834225_44836493b261",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6828764_f749b48347fd",
|
|
||||||
"lua_version": "6828764"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.53": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6828321_72f2df86102b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6834225_44836493b261",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6828764_f749b48347fd",
|
|
||||||
"lua_version": "6828764"
|
|
||||||
},
|
|
||||||
|
|
||||||
"OSBETAWin2.1.54": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6875067_4783dbc33bcd",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6894513_13602cb3df26",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6875272_2cb77cca61ea",
|
|
||||||
"lua_version": "6875272"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.54": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6875067_4783dbc33bcd",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6894513_13602cb3df26",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6875272_2cb77cca61ea",
|
|
||||||
"lua_version": "6875272"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.55": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6918564_f65307ddaa2b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6928643_3ce1c3e895fa",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6931760_dcbf48d15383",
|
|
||||||
"lua_version": "6931760"
|
|
||||||
},
|
|
||||||
"OSBETAWin2.1.55": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6918564_f65307ddaa2b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6928643_3ce1c3e895fa",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6931760_dcbf48d15383",
|
|
||||||
"lua_version": "6931760"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,65 +1,14 @@
|
|||||||
{
|
{
|
||||||
"OSBETAWin2.1.51": {
|
"CNBETAWin2.2.51": {
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6744505_89b2f5dc973e",
|
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_7037158_b67f5a6a68fb",
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6759713_b4e0e740f0da",
|
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_7033392_aaca9c1b456b",
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6755976_3c46d7c46e2c",
|
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_7050564_f05a0f949b10",
|
||||||
"lua_version": "6755976"
|
"lua_version": "7050564"
|
||||||
},
|
},
|
||||||
"CNBETAWin2.1.51": {
|
"OSBETAWin2.2.51": {
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6744505_89b2f5dc973e",
|
"asset_bundle_url": "https://autopatchos.starrails.com/asb/BetaLive/output_7037158_b67f5a6a68fb",
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6759713_b4e0e740f0da",
|
"ex_resource_url": "https://autopatchos.starrails.com/design_data/BetaLive/output_7033392_aaca9c1b456b",
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6755976_3c46d7c46e2c",
|
"lua_url": "https://autopatchos.starrails.com/lua/BetaLive/output_7050564_f05a0f949b10",
|
||||||
"lua_version": "6755976"
|
"lua_version": "7050564"
|
||||||
},
|
|
||||||
|
|
||||||
"OSBETAWin2.1.52": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6785106_15237df2ef89",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6787319_5f3f1dae4769",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6785460_26c4b6c61a8b",
|
|
||||||
"lua_version": "6785460"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.52": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6785106_15237df2ef89",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6787319_5f3f1dae4769",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6785460_26c4b6c61a8b",
|
|
||||||
"lua_version": "6785460"
|
|
||||||
},
|
|
||||||
|
|
||||||
"OSBETAWin2.1.53": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6828321_72f2df86102b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6834225_44836493b261",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6828764_f749b48347fd",
|
|
||||||
"lua_version": "6828764"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.53": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6828321_72f2df86102b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6834225_44836493b261",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6828764_f749b48347fd",
|
|
||||||
"lua_version": "6828764"
|
|
||||||
},
|
|
||||||
|
|
||||||
"OSBETAWin2.1.54": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6875067_4783dbc33bcd",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6894513_13602cb3df26",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6875272_2cb77cca61ea",
|
|
||||||
"lua_version": "6875272"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.54": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6875067_4783dbc33bcd",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6894513_13602cb3df26",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6875272_2cb77cca61ea",
|
|
||||||
"lua_version": "6875272"
|
|
||||||
},
|
|
||||||
"CNBETAWin2.1.55": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6918564_f65307ddaa2b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6928643_3ce1c3e895fa",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6931760_dcbf48d15383",
|
|
||||||
"lua_version": "6931760"
|
|
||||||
},
|
|
||||||
"OSBETAWin2.1.55": {
|
|
||||||
"asset_bundle_url": "https://autopatchcn.bhsr.com/asb/BetaLive/output_6918564_f65307ddaa2b",
|
|
||||||
"ex_resource_url": "https://autopatchcn.bhsr.com/design_data/BetaLive/output_6928643_3ce1c3e895fa",
|
|
||||||
"lua_url": "https://autopatchcn.bhsr.com/lua/BetaLive/output_6931760_dcbf48d15383",
|
|
||||||
"lua_version": "6931760"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user