This commit is contained in:
amizing25
2024-05-10 22:15:58 +07:00
parent 1e0cfa6f12
commit 5ae73b4d8c
19 changed files with 36919 additions and 26049 deletions
+2 -2
View File
@@ -2,11 +2,11 @@ use crate::net::tools::JsonData;
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,
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,
1306, 1307, 1308, 1309, 1312, 1315,
1306, 1307, 1308, 1309, 1312, 1315, 1310, 1314,
];
pub async fn on_get_avatar_data_cs_req(
+54 -29
View File
@@ -13,8 +13,9 @@ pub async fn on_start_cocoon_stage_cs_req(
let mut battle_info = SceneBattleInfo {
stage_id: player.battle_config.stage_id,
logic_random_seed: rand::thread_rng().gen::<u32>(),
// battle_id: 1,
kimmjioaodn: player.battle_config.cycle_count,
battle_id: 1,
// cleheggdkal: player.battle_config.cycle_count, // wave
ohfkoaahoib: player.battle_config.cycle_count, // wave
..Default::default()
};
@@ -91,21 +92,21 @@ pub async fn on_start_cocoon_stage_cs_req(
// pf score object
if player.battle_config.battle_type == BattleType::PF {
let mut battle_target = Hbinjjdphdo::default();
battle_target.bgnpebhgelb.push(BattleTarget {
let mut battle_target = Cnngaoldopi::default();
battle_target.fdfcmhbhnmc.push(BattleTarget {
id: 10001,
progress: 0,
..Default::default()
});
battle_info.ichnbmifjdi.insert(1, battle_target);
battle_info.jelkfckaonl.insert(1, battle_target);
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,
Hbinjjdphdo {
bgnpebhgelb: vec![
Cnngaoldopi {
fdfcmhbhnmc: vec![
BattleTarget {
id: 2001,
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
if player.battle_config.battle_type == BattleType::SU {
battle_info.mpobegkcikn.push(Npjnkmmjfdf {
chgdaadjepi: player.battle_config.path_resonance_id,
status: Some(Agpocmnmmdi {
battle_info.ldkhpbclcbd.push(Mnnlfkgifmc {
ejilnblflii: player.battle_config.path_resonance_id,
status: Some(Fmaobdmmcjb {
sp: Some(AmountInfo {
cur_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
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 mut battle_info = SceneBattleInfo {
stage_id: player.battle_config.stage_id,
logic_random_seed: rand::thread_rng().gen::<u32>(),
// battle_id: 1,
kimmjioaodn: player.battle_config.cycle_count,
battle_id: 1,
// cleheggdkal: player.battle_config.cycle_count, // wave
ohfkoaahoib: player.battle_config.cycle_count, // wave
..Default::default()
};
@@ -251,21 +266,21 @@ pub async fn on_mpemgbdkigg(session: &mut PlayerSession, request: &Mpemgbdkigg)
// pf score object
if player.battle_config.battle_type == BattleType::PF {
let mut battle_target = Hbinjjdphdo::default();
battle_target.bgnpebhgelb.push(BattleTarget {
let mut battle_target = Cnngaoldopi::default();
battle_target.fdfcmhbhnmc.push(BattleTarget {
id: 10001,
progress: 0,
..Default::default()
});
battle_info.ichnbmifjdi.insert(1, battle_target);
battle_info.jelkfckaonl.insert(1, battle_target);
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,
Hbinjjdphdo {
bgnpebhgelb: vec![
Cnngaoldopi {
fdfcmhbhnmc: vec![
BattleTarget {
id: 2001,
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
if player.battle_config.battle_type == BattleType::SU {
battle_info.mpobegkcikn.push(Npjnkmmjfdf {
chgdaadjepi: player.battle_config.path_resonance_id,
status: Some(Agpocmnmmdi {
battle_info.ldkhpbclcbd.push(Mnnlfkgifmc {
ejilnblflii: player.battle_config.path_resonance_id,
status: Some(Fmaobdmmcjb {
sp: Some(AmountInfo {
cur_amount: 10_000,
max_amount: 10_000,
@@ -298,15 +323,15 @@ pub async fn on_mpemgbdkigg(session: &mut PlayerSession, request: &Mpemgbdkigg)
// monsters
battle_info.monster_wave_list = Monster::to_scene_monster_waves(&player.battle_config.monsters);
let mut resp = Ifiohnjlehh {
elgjckaejld: request.elgjckaejld,
let mut resp = SceneCastSkillScRsp {
jkdaceoekll: request.jkdaceoekll,
retcode: 0,
pbgpinglheg: vec![],
diehcelekfj: vec![],
..Default::default()
};
let targets = request
.jpieajikioh
.igkjjpeealc
.iter()
.filter(|id| **id > 30_000 || **id < 1_000)
.collect::<Vec<_>>();
+68 -49
View File
@@ -8,31 +8,31 @@ use crate::{
use super::*;
pub async fn on_nhfajfplkep(session: &mut PlayerSession, _: &Nhfajfplkep) -> Result<()> {
pub async fn on_jhfffmnkcbf(session: &mut PlayerSession, _: &Jhfffmnkcbf) -> Result<()> {
session
.send(
CMD_GET_FRIEND_LIST_INFO_SC_RSP,
Pbfkjlnnnim {
amgpdgdnlgd: vec![Leldmbjfheh {
gpgdedmpjla: PlayingState::None.into(),
cfmiklhjmle: Some(Alcoeanikil::default()),
hiljemhhhnk: String::from("RobinSR"),
kmclngophda: Some(Hcdpijbnijp {
Fmonbbgkfpp {
nffnphfnbph: vec![Pbbkojapeaj {
jkmlmffobmi: PlayingState::None.into(),
eejlmfccjnm: Some(Bhkoekppbaf::default()),
ddnklblgmaa: String::from("RobinSR"),
mkabddponma: Some(Mionicmdpaa {
uid: 727,
mbdjcknimop: 3,
igmaomgegaj: 1,
gjlfhjlijon: 201008,
jpajpffgnbi: 220005,
platform: 3,
mjbmlkimpnn: 1,
dgojjmfnomj: 201008,
kpiphlhfiib: 220005,
level: 70,
nickname: String::from("Server"),
plmbeaaegak: vec![AssistSimpleInfo {
oemkmkkhkde: vec![AssistSimpleInfo {
avatar_id: 1008,
level: 70,
..Default::default()
}],
..Default::default()
}),
gjdiplfecfa: true,
niekopdjolm: true,
}],
..Default::default()
},
@@ -40,20 +40,36 @@ pub async fn on_nhfajfplkep(session: &mut PlayerSession, _: &Nhfajfplkep) -> Res
.await
}
pub async fn on_komknbijgpi(session: &mut PlayerSession, _: &Komknbijgpi) -> Result<()> {
pub async fn on_pignjacjgdl(session: &mut PlayerSession, _: &Pignjacjgdl) -> Result<()> {
session
.send(
CMD_GET_PRIVATE_CHAT_HISTORY_SC_RSP,
Ooibcglpnac {
pgofeopnpbm: vec![Bpifmdladdn {
bdjoneohhpj: MsgType::CustomText.into(),
phhhfhobhmk: cur_timestamp_ms(),
fbelgjfhbkh: ":motorized_wheelchair:".to_string(),
nokipdbhglc: 727,
..Default::default()
}],
fjbkleaflam: 727,
oligkfnjkma: 1337,
Hachagdjilp {
fepangjbmpa: vec![
Gnbekokccfc {
mgmicgabebd: MsgType::CustomText.into(),
hkkkjdbgiao: cur_timestamp_ms(),
anjfbjikchf: "'sync'".to_string(),
befmkobhohp: 727,
..Default::default()
},
Gnbekokccfc {
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()
},
)
@@ -61,22 +77,24 @@ pub async fn on_komknbijgpi(session: &mut PlayerSession, _: &Komknbijgpi) -> Res
}
// 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;
if let Some((cmd, args)) = parse_command(&body.moiplammfad) {
if let Some((cmd, args)) = parse_command(&body.ajlhdpcjand) {
match cmd {
"sync" => {
sync_player(session, json).await?;
session
.send(
CMD_REVC_MSG_SC_NOTIFY,
Kifdjbodlcc {
pofomobijdg: body.pofomobijdg,
kjdhmhgjdmc: body.kjdhmhgjdmc,
moiplammfad: String::from("Inventory Synced"),
bdjoneohhpj: body.bdjoneohhpj,
aljhmlmnmhp: 727,
djefnoaonkc: 1337,
Klonpheafip {
ggadmjhlomj: body.ggadmjhlomj.clone(),
kokadficdfb: body.kokadficdfb,
ajlhdpcjand: String::from("Inventory Synced"),
mgmicgabebd: body.mgmicgabebd,
ghojifhngmc: 727, // from
cmmildghfnl: 1337, // to
nmfepfoojic: body.nmfepfoojic,
},
)
.await?;
@@ -113,13 +131,14 @@ pub async fn on_bgfjcbbfiek(session: &mut PlayerSession, body: &Bgfjcbbfiek) ->
session
.send(
CMD_REVC_MSG_SC_NOTIFY,
Kifdjbodlcc {
pofomobijdg: body.pofomobijdg,
kjdhmhgjdmc: body.kjdhmhgjdmc,
moiplammfad: format!("Set MC to: {mc:#?}"),
bdjoneohhpj: body.bdjoneohhpj,
aljhmlmnmhp: 727,
djefnoaonkc: 1337,
Klonpheafip {
ggadmjhlomj: body.ggadmjhlomj.clone(),
kokadficdfb: body.kokadficdfb,
ajlhdpcjand: format!("Set MC to: {mc:#?}"),
mgmicgabebd: body.mgmicgabebd,
ghojifhngmc: 727,
cmmildghfnl: 1337,
nmfepfoojic: body.nmfepfoojic,
},
)
.await?;
@@ -131,7 +150,7 @@ pub async fn on_bgfjcbbfiek(session: &mut PlayerSession, body: &Bgfjcbbfiek) ->
session
.send(
CMD_SEND_MSG_SC_RSP,
Jhickbdnnii {
Ckcjblcacof {
retcode: 0,
end_time: 0,
},
@@ -153,9 +172,9 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
session
.send(
CMD_PLAYER_SYNC_SC_NOTIFY,
Eckkajafean {
lminpcphbfp: (2000..3500).collect(),
oglioehgbal: (1..2000).collect(),
Pkbehgpoein {
ipnkigfoikl: (2000..3500).collect(),
idgakomjiio: (1..2000).collect(),
..Default::default()
},
)
@@ -164,8 +183,8 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
session
.send(
CMD_PLAYER_SYNC_SC_NOTIFY,
Eckkajafean {
fihplpphfme: Some(Abcekhjbnmp {
Pkbehgpoein {
enfnppagfpp: Some(Gkjoiapbbne {
avatar_list: json
.avatars
.values()
@@ -180,7 +199,7 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
session
.send(
CMD_PLAYER_SYNC_SC_NOTIFY,
Eckkajafean {
Pkbehgpoein {
relic_list: json.relics.iter().map(|v| v.to_relic_proto()).collect(),
equipment_list: json
.lightcones
@@ -195,8 +214,8 @@ async fn sync_player(session: &mut PlayerSession, json: JsonData) -> Result<()>
session
.send(
CMD_PLAYER_SYNC_SC_NOTIFY,
Eckkajafean {
fihplpphfme: Some(Abcekhjbnmp {
Pkbehgpoein {
enfnppagfpp: Some(Gkjoiapbbne {
avatar_list: json
.avatars
.values()
+11 -5
View File
@@ -32,35 +32,41 @@ pub async fn on_get_archive_data_cs_req(
.send(
CMD_GET_ARCHIVE_DATA_SC_RSP,
GetArchiveDataScRsp {
archive_data: Some(ArchiveData::default()),
bkcflgbcjmi: Some(ArchiveData::default()),
retcode: 0,
},
)
.await
}
pub async fn on_oakankcfbec(session: &mut PlayerSession, _: &Oakankcfbec) -> Result<()> {
pub async fn on_gfmigicacfn(session: &mut PlayerSession, _: &Gfmigicacfn) -> Result<()> {
// ?
session
.send(CMD_DRESS_RELIC_AVATAR_SC_RSP, Dummy::default())
.await
}
pub async fn on_cnpajjnhfpa(session: &mut PlayerSession, _: &Cnpajjnhfpa) -> Result<()> {
pub async fn on_nbmofdgfejk(session: &mut PlayerSession, _: &Nbmofdgfejk) -> Result<()> {
// ?
session
.send(CMD_TAKE_OFF_RELIC_SC_RSP, Dummy::default())
.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
.send(CMD_DRESS_AVATAR_SC_RSP, Dummy::default())
.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
.send(CMD_TAKE_OFF_EQUIPMENT_SC_RSP, Dummy::default())
+15 -15
View File
@@ -10,8 +10,8 @@ pub async fn on_get_all_lineup_data_cs_req(
let lineup = LineupInfo {
extra_lineup_type: ExtraLineupType::LineupNone.into(),
name: "Squad 1".to_string(),
njjbfegnhjc: 5,
bpkggopoppf: 5,
mp: 5,
mp_max: 5,
avatar_list: AvatarJson::to_lineup_avatars(&player),
..Default::default()
};
@@ -35,8 +35,8 @@ pub async fn on_get_cur_lineup_data_cs_req(
let mut lineup = LineupInfo {
extra_lineup_type: ExtraLineupType::LineupNone.into(),
name: "Squad 1".to_string(),
njjbfegnhjc: 5,
bpkggopoppf: 5,
mp: 5,
mp_max: 5,
..Default::default()
};
@@ -112,7 +112,7 @@ pub async fn on_replace_lineup_cs_req(
let lineups = &mut player.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 {
player.main_character as u32
} else {
@@ -150,25 +150,25 @@ async fn refresh_lineup(sess: &mut PlayerSession, player: &JsonData) -> Result<(
extra_lineup_type: ExtraLineupType::LineupNone.into(),
name: "Squad 1".to_string(),
avatar_list: AvatarJson::to_lineup_avatars(player),
njjbfegnhjc: 5,
bpkggopoppf: 5,
mp_max: 5,
mp: 5,
..Default::default()
};
sess.send(
CMD_SCENE_GROUP_REFRESH_SC_NOTIFY,
Ljihfeagpcl {
kpfomkdmoce: vec![Jnofbbanolk {
Kecnjlcjefm {
kpjckjjpjhj: vec![Makfkmagkli {
group_id: 0,
state: 0,
kppckepfpce: 0,
fiiciciambe: player
kcbpdfengaa: 0,
hdaiklkffjh: player
.lineups
.iter()
.map(|(idx, v)| Gffbkjofnad {
fimallpbobk: 0,
mggfjbdchjh: 0,
glalelmdamm: Some(SceneEntityInfo {
.map(|(idx, v)| Kbikoelgpde {
kjjeiknincl: 0,
cojmgafmcjm: 0,
gonncekbppg: Some(SceneEntityInfo {
actor: Some(SceneActorInfo {
avatar_type: AvatarType::AvatarFormalType.into(),
base_avatar_id: *v,
+4 -4
View File
@@ -141,20 +141,20 @@ pub async fn on_get_mission_status_cs_req(
retcode: 0,
finished_main_mission_id_list: FINISHED_MAIN_MISSIONS.to_vec(),
sub_mission_status_list: body
.main_mission_id_list
.sub_mission_id_list
.iter()
.map(|id| Mission {
id: *id,
progress: 0,
progress: 1,
status: MissionStatus::MissionFinish.into(),
})
.collect(),
mission_event_status_list: body
.mission_event_id_list
.main_mission_id_list
.iter()
.map(|id| Mission {
id: *id,
progress: 0,
progress: 1,
status: MissionStatus::MissionFinish.into(),
})
.collect(),
+24 -7
View File
@@ -28,15 +28,32 @@ pub use tutorial::*;
pub use inventory::*;
pub use chat::*;
#[allow(unused_imports)]
use proto::{
Aaihejacdpk::*, Achkcddkkkj::*, Bancodieeof::*, CmdActivityType::*, CmdBattleType::*,
CmdPlayerType::*, Cmpepmnekko::*, Cpbdjpocnai::*, Ddhbjcelmjp::*,
Eegmjpcijbc::*, Emhbkpkpjpa::*, Fdkapmfjgjl::*, Gaifgoihffa::*, Galijhmhgcg::*, Gdjpnkniijf::*,
Hfjpennlffa::*, Hmnbojnkleh::*, Ieoildlcdkb::*, Kfmpmaojchm::*, Lopidcokdih::*, Lpegmiilfjm::*,
Mbnnmfkffbo::*, Mkeclbphcol::*, Niinikapdpg::*, Pfokmnnfiap::*, Pjmghcfmmge::*, Pnjfenbhbhg::*,
Pnnbhogkeeh::*,
CmdActivityType::*, CmdAdventureType::*, CmdAetherDivideType::*, CmdAlleyType::*,
CmdArchiveType::*, CmdAvatarType::*, CmdBattleCollegeType::*, CmdBattlePassType::*,
CmdBattleType::*, CmdBoxingClubType::*, CmdChallengeType::*, CmdChatType::*,
CmdChessRogueType::*, CmdClockParkType::*, CmdContentPackageType::*, CmdDailyActiveType::*,
CmdDrinkMakerType::*, CmdEvolveBuildType::*, CmdExpeditionType::*,
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 {
($($cmd:ident),* $(,)*) => {
paste! {
@@ -102,7 +119,7 @@ dummy! {
GetCurChallenge,
GetRogueInfo,
GetExpeditionData,
GetRogueDialogueEventData,
// GetRogueDialogueEventData,
GetJukeboxData,
SyncClientResVersion,
DailyFirstMeetPam,
+62 -63
View File
@@ -58,7 +58,10 @@ pub async fn on_get_cur_scene_info_cs_req(
}
// 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;
// send packet first
@@ -71,7 +74,7 @@ pub async fn on_lckgkdehclb(session: &mut PlayerSession, request: &Lckgkdehclb)
&mut player,
request.entry_id,
true,
Some(request.maplanefddc),
Some(request.dehbihbbbgo),
)
.await?;
@@ -79,23 +82,26 @@ pub async fn on_lckgkdehclb(session: &mut PlayerSession, request: &Lckgkdehclb)
}
// getscenemapinfocsreq
pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe) -> Result<()> {
let mut map_infos = Vec::<Fjniajephmj>::new();
pub async fn on_get_scene_map_info_cs_req(
sesison: &mut PlayerSession,
request: &GetSceneMapInfoCsReq,
) -> Result<()> {
let mut map_infos = Vec::<SceneMapInfo>::new();
for entry_id in &request.dmkkkfnkofh {
let mut map_info = Fjniajephmj {
for entry_id in &request.entry_id_list {
let mut map_info = SceneMapInfo {
retcode: 0,
dcbdhkkkpgd: vec![
Gbiimoglajl {
gommoeicmjg: Kihbdaniehp::MapInfoChestTypeNormal.into(),
chest_info_list: vec![
ChestInfo {
fmangokfagc: MapInfoChestType::Normal.into(),
..Default::default()
},
Gbiimoglajl {
gommoeicmjg: Kihbdaniehp::MapInfoChestTypePuzzle.into(),
ChestInfo {
fmangokfagc: MapInfoChestType::Puzzle.into(),
..Default::default()
},
Gbiimoglajl {
gommoeicmjg: Kihbdaniehp::MapInfoChestTypeChallenge.into(),
ChestInfo {
fmangokfagc: MapInfoChestType::Challenge.into(),
..Default::default()
},
],
@@ -104,7 +110,7 @@ pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe)
};
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| {
@@ -115,47 +121,43 @@ pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe)
if let Some(level) = group_config {
// add 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 {
map_info.pmolfbcbfpe.push(Gecjjlmabhp {
map_info.maze_group_list.push(MazeGroup {
group_id: *group_id,
..Default::default()
});
// prop
for prop in &group.props {
map_info.cgkfbhoadpc.push(Kangcibfhee {
map_info.maze_prop_list.push(MazePropState {
group_id: prop.group_id,
state: if prop.prop_state_list.contains(&PropState::CheckPointEnable) {
PropState::CheckPointEnable as u32
} else {
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)
}
sesison
.send(
CMD_GET_SCENE_MAP_INFO_SC_RSP,
Cegeebldbke {
GetSceneMapInfoScRsp {
retcode: 0,
mhefdgcamjl: map_infos,
map_info_list: map_infos,
..Default::default()
},
)
.await?;
Ok(())
.await
}
lazy_static! {
@@ -186,13 +188,13 @@ pub async fn on_scene_entity_move_cs_req(
}
if let Some(motion) = &entity.motion {
if let Some(pos) = &motion.aomilajjmii {
player.position.x = pos.baimdminomk;
player.position.y = pos.bemlopmcgch;
player.position.z = pos.bagloppgnpb;
if let Some(pos) = &motion.pos {
player.position.x = pos.x;
player.position.y = pos.y;
player.position.z = pos.z;
}
if let Some(rot) = &motion.eiaoiankefd {
player.position.rot_y = rot.bemlopmcgch;
if let Some(rot) = &motion.rot {
player.position.rot_y = rot.y;
}
}
}
@@ -214,7 +216,7 @@ pub async fn on_get_entered_scene_cs_req(
.filter(|(_, v)| {
!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,
plane_id: v.plane_id,
})
@@ -223,19 +225,14 @@ pub async fn on_get_entered_scene_cs_req(
session
.send(
CMD_GET_ENTERED_SCENE_SC_RSP,
Mkgidalegbd {
lejonbbgdnn: scenes,
Fchnfpafjce {
npbjclegekf: scenes,
retcode: 0,
},
)
.await
}
// getunlockteleportcsreq
pub async fn on_kkbapmgmmcb(_session: &mut PlayerSession, _request: &Kkbapmgmmcb) -> Result<()> {
Ok(())
}
async fn load_scene(
session: &mut PlayerSession,
json: &mut JsonData,
@@ -278,24 +275,26 @@ async fn load_scene(
floor_id: enterance.floor_id,
plane_id: enterance.plane_id,
entry_id,
game_mode_type: plane.plane_type as u32,
pbfgagecpcd: plane.world_id,
pjbjelcgkof: plane.plane_type as u32,
nnfgkelcban: 1,
lgflfajffjl: 1,
game_mode_type: 1,
..Default::default()
};
let lineup_info = AvatarJson::to_lineup_info(&json.lineups);
let player_pos = MotionInfo {
// rot
eiaoiankefd: Some(Vector {
baimdminomk: 0,
bemlopmcgch: position.rot_y,
bagloppgnpb: 0,
rot: Some(Vector {
x: 0,
y: position.rot_y,
z: 0,
}),
// pos
aomilajjmii: Some(Vector {
baimdminomk: position.x,
bemlopmcgch: position.y,
bagloppgnpb: position.z,
pos: Some(Vector {
x: position.x,
y: position.y,
z: position.z,
}),
};
@@ -305,7 +304,7 @@ async fn load_scene(
let mut monster_entity_id = 30_000;
for (group_id, group) in &group_config.group_items {
let mut group_info = Dhkacjhaoid {
let mut group_info = SceneGroupInfo {
state: 0,
group_id: *group_id,
..Default::default()
@@ -365,7 +364,7 @@ async fn load_scene(
entity_id: npc_entity_id,
motion: Some(npc_position.to_motion()),
npc: Some(SceneNpcInfo {
egeneneoadj: npc.npcid,
npc_id: npc.npcid,
..Default::default()
}),
..Default::default()
@@ -403,11 +402,11 @@ async fn load_scene(
group_info.entity_list.push(info);
}
scene_info.chhmmbdhjpg.push(group_info);
scene_info.scene_group_list.push(group_info);
}
// load player entity
let mut player_group = Dhkacjhaoid {
let mut player_group = SceneGroupInfo {
state: 0,
group_id: 0,
..Default::default()
@@ -418,16 +417,16 @@ async fn load_scene(
entity_id: (*slot) + 1,
motion: Some(MotionInfo {
// pos
aomilajjmii: Some(Vector {
baimdminomk: json.position.x,
bemlopmcgch: json.position.y,
bagloppgnpb: json.position.z,
pos: Some(Vector {
x: json.position.x,
y: json.position.y,
z: json.position.z,
}),
// rot
eiaoiankefd: Some(Vector {
baimdminomk: 0,
bemlopmcgch: json.position.rot_y,
bagloppgnpb: 0,
rot: Some(Vector {
x: 0,
y: json.position.rot_y,
z: 0,
}),
}),
actor: Some(SceneActorInfo {
@@ -439,13 +438,13 @@ async fn load_scene(
..Default::default()
})
}
scene_info.chhmmbdhjpg.push(player_group);
scene_info.scene_group_list.push(player_group);
if _save {
session
.send(
CMD_ENTER_SCENE_BY_SERVER_SC_NOTIFY,
Jdokmmikidp {
EnterSceneByServerScNotify {
scene: Some(scene_info.clone()),
lineup: Some(lineup_info),
..Default::default()
File diff suppressed because it is too large Load Diff
+22 -21
View File
@@ -51,8 +51,8 @@ impl AvatarJson {
} else {
0
},
ojneijnggfo: 1712924677,
amafpakcckf: relics
first_met_timestamp: 1712924677,
equip_relic_list: relics
.iter()
.map(|v| v.to_equipment_relic_proto())
.collect::<Vec<_>>(),
@@ -153,8 +153,8 @@ impl AvatarJson {
let mut lineup_info = LineupInfo {
extra_lineup_type: ExtraLineupType::LineupNone.into(),
name: "Squad 1".to_string(),
njjbfegnhjc: 5,
bpkggopoppf: 5,
mp: 5,
mp_max: 5,
..Default::default()
};
@@ -197,7 +197,7 @@ impl Lightcone {
pub fn to_equipment_proto(&self) -> Equipment {
Equipment {
base_avatar_id: self.equip_avatar,
imhlbinfhlh: self.equip_avatar,
cmmegdchmlb: self.equip_avatar,
exp: 0,
is_protected: false,
level: self.level,
@@ -249,7 +249,7 @@ impl Relic {
pub fn to_relic_proto(&self) -> proto::Relic {
proto::Relic {
base_avatar_id: self.equip_avatar,
imhlbinfhlh: self.equip_avatar,
cmmegdchmlb: self.equip_avatar,
exp: 0,
is_protected: false,
level: self.level,
@@ -291,9 +291,9 @@ impl Relic {
pub fn to_equipment_relic_proto(&self) -> 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 {
fn to_scene_monster_info(&self) -> SceneMonsterParam {
SceneMonsterParam {
fn to_scene_monster_info(&self) -> SceneMonsterData {
SceneMonsterData {
monster_id: self.monster_id,
max_hp: self.max_hp,
aiapcboelmg: self.max_hp,
jjhfeikbakk: self.max_hp,
}
}
@@ -324,9 +324,9 @@ impl Monster {
}
SceneMonsterWave {
iilhbcalikm: wave_index, // wave indexx??
imapolkmefn: wave_index, // wave indexx??
ejahmdkklbn: Some(Holldlkceof {
acpannfhach: Some(Kjfnknacfin {
// monster param
level: monsters.iter().map(|v| v.level).max().unwrap_or(95),
..Default::default()
@@ -387,6 +387,7 @@ pub enum BattleType {
Moc = 1,
PF = 2,
SU = 3,
AS = 4,
}
impl Default for BattleType {
@@ -462,16 +463,16 @@ impl Position {
pub fn to_motion(&self) -> MotionInfo {
MotionInfo {
// rot
eiaoiankefd: Some(Vector {
baimdminomk: 0,
bemlopmcgch: self.rot_y,
bagloppgnpb: 0,
rot: Some(Vector {
x: 0,
y: self.rot_y,
z: 0,
}),
// pos
aomilajjmii: Some(Vector {
baimdminomk: self.x,
bemlopmcgch: self.y,
bagloppgnpb: self.z,
pos: Some(Vector {
x: self.x,
y: self.y,
z: self.z,
}),
}
}