diff --git a/packet-service/src/enums.rs b/packet-service/src/enums.rs index 899f8f8..cc1310d 100644 --- a/packet-service/src/enums.rs +++ b/packet-service/src/enums.rs @@ -22,7 +22,7 @@ pub(crate) enum RidingItem { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub(crate) enum ItemSubType { Rring = 171, - Nnecklace, + Necklace, Earring, OneHSword = 211, OneHBlunt, diff --git a/packet-service/src/handlers/character.rs b/packet-service/src/handlers/character.rs index 90fe177..14d9a6c 100644 --- a/packet-service/src/handlers/character.rs +++ b/packet-service/src/handlers/character.rs @@ -53,17 +53,17 @@ pub(crate) fn convert_slot_to_body_part(slot: i32) -> usize { } } -pub(crate) fn convert_type_to_body_part(slot: i32) -> ItemType { - match enums::EquippedPosition::from_i32(slot) { - Some(enums::EquippedPosition::Goggles) => ItemType::ItemGoggles, - Some(enums::EquippedPosition::Helmet) => ItemType::ItemHelmet, - Some(enums::EquippedPosition::Armor) => ItemType::ItemArmor, - Some(enums::EquippedPosition::Backpack) => ItemType::ItemBackpack, - Some(enums::EquippedPosition::Gauntlet) => ItemType::ItemGauntlet, - Some(enums::EquippedPosition::Boots) => ItemType::ItemBoots, - Some(enums::EquippedPosition::WeaponR) => ItemType::ItemWeaponR, - Some(enums::EquippedPosition::WeaponL) => ItemType::ItemWeaponL, - _ => ItemType::None, +pub(crate) fn convert_type_to_body_part(slot: i32) -> usize { + match enums::ItemType::from_i32(slot) { + Some(enums::ItemType::ItemGoggles) => 6, + Some(enums::ItemType::ItemHelmet) => 2, + Some(enums::ItemType::ItemArmor) => 3, + Some(enums::ItemType::ItemBackpack) => 7, + Some(enums::ItemType::ItemGauntlet) => 4, + Some(enums::ItemType::ItemBoots) => 5, + Some(enums::ItemType::ItemWeaponR) => 8, + Some(enums::ItemType::ItemWeaponL) => 9, + _ => 0, } } @@ -122,6 +122,7 @@ pub(crate) async fn handle_char_list_req( character_id_list.push(character.character_id.parse().unwrap()); characters.push(character_info); } + debug!("Character list: {:?}", characters); if let Some(mut state) = connection_service.get_connection_mut(&connection_id) { state.character_list = Some(character_id_list); // Save the real character id's for later as the client sends what is selected from 0 index. It does not use the real character idss @@ -303,7 +304,7 @@ pub(crate) async fn handle_select_char_req( // Build the character inventory list for item in items { if item.slot < MAX_VISIBLE_ITEMS as i32 { - let slot = convert_type_to_body_part(item.slot) as isize - 2; + let slot = convert_type_to_body_part(item.item_type) as isize - 2; if slot >= 0 { equipped_item_list[slot as usize] = EquippedItem { id: item.item_id as u16, @@ -381,6 +382,7 @@ pub(crate) async fn handle_select_char_req( tag: string_to_u32(&user_id), name, }; + debug!("SrvSelectCharReply: {:?}", data); let response_packet = Packet::new(PacketType::PakwcSelectCharReply, &data)?; if let Some(mut state) = connection_service.get_connection_mut(&connection_id) { let writer_clone = state.writer.clone().unwrap();