diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
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
new file mode 100644
index 0000000..9d37fbc
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ 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;
}