Skip to content

Commit 2afc62a

Browse files
update
1 parent b57c106 commit 2afc62a

File tree

2 files changed

+41
-8
lines changed

2 files changed

+41
-8
lines changed

src/primary/server/player/player_spawn.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,10 @@ impl PacketHandler for Handler {
175175
map.insert(UnitField::Flags2, FieldValue::Integer(2048));
176176
map.insert(UnitField::Health, FieldValue::Integer(82));
177177
map.insert(UnitField::HoverHeight, FieldValue::Float(1.0));
178-
map.insert(UnitField::Level, FieldValue::Integer(3));
178+
map.insert(
179+
UnitField::Level,
180+
FieldValue::Integer(CurrentPlayer::LEVEL as i32),
181+
);
179182
map.insert(UnitField::MaxDamage, FieldValue::Float(4.971429));
180183
map.insert(UnitField::MaxHealth, FieldValue::Integer(82));
181184
map.insert(UnitField::MaxOffhandDamage, FieldValue::Float(2.4857144));
@@ -234,17 +237,17 @@ impl PacketHandler for Handler {
234237
map.insert(
235238
PlayerField::SkillInfo,
236239
TwoShortsArray(vec![
237-
(1400, 0),
240+
(1400, 300),
238241
(6, 0),
239242
(0, 0),
240243
(15, 15),
241244
(8, 0),
242245
(0, 0),
243246
(15, 15),
244247
(95, 0),
245-
(0, 0),
248+
(109, 300),
246249
(15, 15),
247-
(98, 0),
250+
(98, 300),
248251
(0, 0),
249252
(300, 300),
250253
(136, 0),

src/primary/server/relay_server.rs

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ use std::sync::Arc;
33

44
use async_trait::async_trait;
55
use byteorder::{BigEndian, LittleEndian, ReadBytesExt};
6+
use serde::Serialize;
7+
use tentacli_packet::WorldPacket;
8+
use tentacli_traits::types::chat::{Language, MessageType};
69
use tentacli_traits::types::movement::ObjectUpdateFlags;
710
use tentacli_traits::types::opcodes::Opcode;
811
use tokio::io::{AsyncReadExt, BufReader};
@@ -64,11 +67,7 @@ const WHITELISTED_OPCODES: &[u16] = &[
6467
// FOR TESTING
6568
Opcode::SMSG_POWER_UPDATE,
6669
Opcode::SMSG_SPELLLOGEXECUTE,
67-
Opcode::SMSG_INITIAL_SPELLS,
68-
Opcode::SMSG_INITIALIZE_FACTIONS,
69-
Opcode::SMSG_ACTION_BUTTONS,
7070
Opcode::SMSG_INIT_WORLD_STATES,
71-
Opcode::SMSG_LOAD_EQUIPMENT_SET,
7271
Opcode::SMSG_LEARNED_DANCE_MOVES,
7372
Opcode::SMSG_CHANNEL_NOTIFY,
7473
Opcode::SMSG_ATTACKSTART,
@@ -112,6 +111,37 @@ impl RelayServer {
112111
}
113112
.to_binary_with_server_opcode(Opcode::SMSG_UPDATE_OBJECT)?)
114113
}
114+
Opcode::SMSG_MESSAGECHAT => {
115+
// overriding chat messages to understand each language
116+
#[derive(WorldPacket, Serialize, Debug)]
117+
struct Incoming {
118+
message_type: u8,
119+
language: u32,
120+
sender_guid: u64,
121+
skip: u32,
122+
#[conditional]
123+
channel_name: String,
124+
target_guid: u64,
125+
message_length: u32,
126+
#[depends_on(message_length)]
127+
message: String,
128+
unknown: u16,
129+
}
130+
131+
impl Incoming {
132+
fn channel_name(instance: &mut Self) -> bool {
133+
instance.message_type == MessageType::CHANNEL
134+
}
135+
}
136+
137+
let (fields, _) = Incoming::from_binary(&packet[4..])?;
138+
139+
Ok(Incoming {
140+
language: Language::UNIVERSAL,
141+
..fields
142+
}
143+
.to_binary_with_server_opcode(Opcode::SMSG_MESSAGECHAT)?)
144+
}
115145
_ => Ok(packet.to_vec()),
116146
}
117147
}

0 commit comments

Comments
 (0)