diff --git a/.idea/JadeSR-WithInventory.iml b/.idea/JadeSR-WithInventory.iml new file mode 100644 index 0000000..a586226 --- /dev/null +++ b/.idea/JadeSR-WithInventory.iml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 4589fe4..9d37fbc 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/gameserver/Cargo.toml b/gameserver/Cargo.toml index 18f5c4e..d74617b 100644 --- a/gameserver/Cargo.toml +++ b/gameserver/Cargo.toml @@ -6,6 +6,9 @@ version.workspace = true [dependencies] common.workspace = true +serde = "1.0" +serde_json = "1.0" + ansi_term.workspace = true anyhow.workspace = true atomic_refcell.workspace = true diff --git a/gameserver/src/net/handlers/battle.rs b/gameserver/src/net/handlers/battle.rs index c154ab2..36eb3c3 100644 --- a/gameserver/src/net/handlers/battle.rs +++ b/gameserver/src/net/handlers/battle.rs @@ -1,94 +1,76 @@ +use anyhow::Result; +use proto::*; use super::*; use crate::game::globals; +use serde_json::json; +use serde_json::Value; +use std::fs; -pub async fn on_start_cocoon_stage_cs_req( - session: &PlayerSession, - body: &StartCocoonStageCsReq, -) -> Result<()> { - let player_info = session.player_info(); +use crate::{net::PlayerSession, util}; - let rsp = StartCocoonStageScRsp { - retcode: 0, - prop_entity_id: body.prop_entity_id, - cocoon_id: body.cocoon_id, - wave: body.wave, - battle_info: Some(SceneBattleInfo { - stage_id: 201012311, - logic_random_seed: 4444, - battle_id: 1, - battle_avatar_list: player_info - .lineup - .avatar_list - .iter() - .map(|avatar| BattleAvatar { - index: avatar.slot, - id: if avatar.id == 8001 { - player_info.hero_basic_type as u32 - } else { - avatar.id - }, - level: 80, - promotion: 6, - rank: 6, - hp: 10000, - avatar_type: 3, - sp: Some(AmountInfo { - cur_amount: 10000, - max_amount: 10000, - }), - ..Default::default() - }) - .collect(), - monster_wave_list: globals - .monster_wave_list - .iter() - .map(|monster_list| SceneMonsterWave { - monster_list: monster_list - .iter() - .map(|id| SceneMonsterData { - monster_id: *id, - ..Default::default() - }) - .collect(), - ..Default::default() - }) - .collect(), - ..Default::default() - }), - }; +pub async fn on_get_bag_cs_req(session: &PlayerSession, _: &GetBagCsReq) -> Result<()> { + let json_data = fs::read_to_string("PATH HERE").expect("Failed to read inventory.json"); + let json_value: Value = serde_json::from_str(&json_data).expect("Failed to parse JSON data"); - session.send(CMD_START_COCOON_STAGE_SC_RSP, rsp).await -} - -pub async fn on_get_cur_battle_info_cs_req( - session: &PlayerSession, - _body: &GetCurBattleInfoCsReq, -) -> Result<()> { + // Extract ranks + let r1: u32 = json_value[0]["rank"].as_i64().expect("Failed to get rank for Equipment1") as u32; + let r2: u32 = json_value[1]["rank"].as_i64().expect("Failed to get rank for Equipment2") as u32; + let t1: u32 = json_value[0]["tid"].as_i64().expect("Failed") as u32; + let t2: u32 = json_value[1]["tid"].as_i64().expect("Failed") as u32; + let l1: u32 = json_value[0]["level"].as_i64().expect("Failed") as u32; + let l2: u32 = json_value[0]["level"].as_i64().expect("Failed") as u32; + //let e_rank3: u32 = json_value[2]["rank"].as_i64().expect("Failed to get rank for Equipment3") as u32; session .send( - CMD_GET_CUR_BATTLE_INFO_SC_RSP, - GetCurBattleInfoScRsp { - battle_info: Some(SceneBattleInfo::default()), - ffbpkghgmjm: Some(Fjojkdhlonn::default()), - ..Default::default() - }, - ) - .await -} - -pub async fn on_pve_battle_result_cs_req( - session: &PlayerSession, - body: &PveBattleResultCsReq, -) -> Result<()> { - session - .send( - CMD_P_V_E_BATTLE_RESULT_SC_RSP, - PveBattleResultScRsp { + CMD_GET_BAG_SC_RSP, + GetBagScRsp { + kkdobdmaipc: vec![], + fllcfpejibd: vec![], + lgjeabihdpn: vec![], retcode: 0, - end_status: body.end_status, - battle_id: body.battle_id, - ..Default::default() - }, + equipment_list: vec![ + Equipment {tid: t1, rank: r1, exp: 0, unique_id: 57, promotion: 6, level: l1, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: t2, rank: r2, exp: 0, unique_id: 58, promotion: 6, level: l2, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 59, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 60, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 61, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 62, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 63, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 64, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 65, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 5, exp: 0, unique_id: 66, promotion: 6, level: 80, base_avatar_id: 0, is_protected: true, ..Default::default()}, + Equipment {tid: 23024, rank: 1, exp: 0, unique_id: 67, promotion: 0, level: 1, base_avatar_id: 0, is_protected: true, ..Default::default()}, + //Equipment {tid: 1, rank: 1, exp: 0, unique_id: 59, promotion: 6, level: 1, base_avatar_id: 0, is_protected: true, ..Default::default()} + ], + mbedbdbmekj: 0, + relic_list: vec![ + Relic { + unique_id: 1488, + base_avatar_id: 1315, // avatar id + tid: 61202, + level: 15, is_protected: true, + main_affix_id: 1, + sub_affix_list: vec![ RelicAffix { affix_id: 7, cnt: 830, step: 20 }], ..Default::default() } + ], + odeefdlejgg: vec![], + niemagjlpdl: vec![], + gddpphikjae: vec![], + macfjibhfad: vec![], + clkjaanbfpp: vec![ 101 ], + // .iter() + // .map(|id| { + // // { + // // tid: *id, + // // num: 500 + // // } + // }) + // .collect(), + biahmcppikj: vec![], + } ) .await -} + + // let rsp = GetBagScRsp { + // + // } +} \ No newline at end of file diff --git a/gameserver/src/net/handlers/inventory.json b/gameserver/src/net/handlers/inventory.json new file mode 100644 index 0000000..1970d69 --- /dev/null +++ b/gameserver/src/net/handlers/inventory.json @@ -0,0 +1,4 @@ +[ + {"tid": 23002, "rank": 3, "exp": 0, "unique_id": 57, "promotion": 6, "level": 75, "base_avatar_id": 0, "is_protected": true}, + {"tid": 23015, "rank": 4, "exp": 0, "unique_id": 58, "promotion": 6, "level": 80, "base_avatar_id": 0, "is_protected": true} +] diff --git a/gameserver/src/net/handlers/mod.rs b/gameserver/src/net/handlers/mod.rs index 67f87cd..e5da9c0 100644 --- a/gameserver/src/net/handlers/mod.rs +++ b/gameserver/src/net/handlers/mod.rs @@ -105,7 +105,7 @@ dummy! { GetShareData, GetTreasureDungeonActivityData, PlayerReturnInfoQuery, - GetBag, + //GetBag, GetPlayerBoardData, GetActivityScheduleConfig, GetMissionData, diff --git a/gameserver/src/net/packet.rs b/gameserver/src/net/packet.rs index daaa542..1b88867 100644 --- a/gameserver/src/net/packet.rs +++ b/gameserver/src/net/packet.rs @@ -118,4 +118,5 @@ trait_handler! { GetTutorialGuideCsReq 1691; UnlockTutorialGuideCsReq 1630; GetTutorialCsReq 1661; + GetBagCsReq 561; }