Skip to content

Commit 2bb44e3

Browse files
committed
Func: anti nickname censorship
1 parent 00161bf commit 2bb44e3

File tree

5 files changed

+69
-56
lines changed

5 files changed

+69
-56
lines changed

Cargo.lock

+31-31
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "majsoul_max_rs"
3-
version = "0.4.1"
3+
version = "0.4.2"
44
edition = "2021"
55

66
[lib]

liqi_config/settings.mod.json

+1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@
119119
],
120120
"presetIndex": 0,
121121
"showServer": 1,
122+
"antiNicknameCensorship": 1,
122123
"autoUpdate": 1,
123124
"version": "v0.11.43.w",
124125
"verified": 2

src/modder.rs

+28-3
Original file line numberDiff line numberDiff line change
@@ -351,12 +351,24 @@ impl Modder {
351351
}
352352
modified_data = Some(msg.encode_to_vec());
353353
}
354+
".lq.Lobby.fetchServerSettings" => {
355+
let mut msg = lq::ResServerSettings::decode(msg_block.data.as_ref())?;
356+
if MOD_SETTINGS.read().await.anti_nickname_censorship() {
357+
if let Some(ref mut settings) = msg.settings {
358+
if let Some(ref mut nick_setting) = settings.nickname_setting {
359+
nick_setting.enable = 0;
360+
nick_setting.nicknames.clear();
361+
modified_data = Some(msg.encode_to_vec());
362+
}
363+
}
364+
}
365+
}
354366
_ => {}
355367
}
356368
if let Some(data) = modified_data {
357369
info!("Respond method: {}", method_name);
358370
msg_block.data = data;
359-
let mut buf = vec![buf[0], buf[1], buf[2]];
371+
let mut buf = buf[..3].to_vec();
360372
buf.extend(msg_block.encode_to_vec());
361373
Ok(ModifyResult {
362374
msg: Some(buf),
@@ -575,7 +587,7 @@ impl Modder {
575587
};
576588
msg_block.method_name = ".lq.Lobby.loginBeat".to_string();
577589
msg_block.data = data.encode_to_vec();
578-
let mut buf = vec![buf[0], buf[1], buf[2]];
590+
let mut buf = buf[..3].to_vec();
579591
buf.extend(msg_block.encode_to_vec());
580592
Ok(ModifyResult {
581593
msg: Some(buf),
@@ -645,6 +657,18 @@ impl Modder {
645657
}
646658
modified_data = Some(msg.encode_to_vec());
647659
}
660+
".lq.NotifyCustomContestSystemMsg" => {
661+
if MOD_SETTINGS.read().await.show_server() {
662+
let mut msg =
663+
lq::NotifyCustomContestSystemMsg::decode(msg_block.data.as_ref())?;
664+
if let Some(ref mut game) = msg.game_start {
665+
game.players.iter_mut().for_each(|p| {
666+
p.nickname = add_zone_id(p.account_id, &p.nickname);
667+
});
668+
modified_data = Some(msg.encode_to_vec());
669+
}
670+
}
671+
}
648672
_ => {}
649673
}
650674
if let Some(data) = modified_data {
@@ -667,9 +691,10 @@ impl Modder {
667691
}
668692

669693
fn add_zone_id(id: u32, name: &str) -> String {
694+
const CN: &str = "[C\u{feff}N]";
670695
let zone_code = id >> 23;
671696
let zone = match zone_code {
672-
code if code <= 6 => "[CN]",
697+
code if code <= 6 => CN,
673698
code if (7..=12).contains(&code) => "[JP]",
674699
code if (13..=15).contains(&code) => "[EN]",
675700
_ => "[??]",

src/settings.rs

+8-21
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,15 @@ use std::{
1212
use tracing::info;
1313

1414
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
15+
#[serde(rename_all = "camelCase")]
1516
pub struct Settings {
16-
#[serde(rename = "sendMethod")]
1717
pub send_method: Vec<String>,
18-
#[serde(rename = "sendAction")]
1918
pub send_action: Vec<String>,
20-
#[serde(rename = "proxyAddr")]
2119
pub proxy_addr: String,
22-
#[serde(rename = "apiUrl")]
2320
pub api_url: String,
24-
#[serde(rename = "helperSwitch")]
2521
helper_switch: i32,
26-
#[serde(rename = "modSwitch")]
2722
mod_switch: i32,
28-
#[serde(rename = "autoUpdate")]
2923
auto_update: i32,
30-
#[serde(rename = "liqiVersion")]
3124
liqi_version: String,
3225
#[serde(skip)]
3326
methods_set: HashSet<String>,
@@ -235,32 +228,21 @@ pub async fn get_lqbin_prefix(version: &str) -> Result<String> {
235228
}
236229

237230
#[derive(Serialize, Deserialize, Debug, Clone)]
231+
#[serde(rename_all = "camelCase")]
238232
pub struct ModSettings {
239-
#[serde(rename = "mainChar")]
240233
pub main_char: u32,
241-
#[serde(rename = "charSkin")]
242234
pub char_skin: HashMap<u32, u32>,
243-
#[serde(default)]
244235
pub nickname: String,
245-
#[serde(rename = "starCharacter")]
246236
pub star_character: Vec<u32>,
247-
#[serde(rename = "hintSwitch")]
248237
hint_switch: i32,
249-
#[serde(default)]
250238
pub title: u32,
251-
#[serde(rename = "loadingBg")]
252239
pub loading_bg: Vec<u32>,
253-
#[serde(rename = "emojiSwitch")]
254240
emoji_switch: i32,
255-
#[serde(rename = "viewsPresets")]
256241
pub views_presets: [Vec<ViewSlot>; 10],
257-
#[serde(rename = "presetIndex")]
258242
pub preset_index: u32,
259-
#[serde(rename = "showServer")]
260243
show_server: i32,
261-
#[serde(rename = "autoUpdate")]
244+
anti_nickname_censorship: i32,
262245
auto_update: i32,
263-
#[serde(default)]
264246
version: String,
265247
pub verified: u32,
266248
#[serde(skip)]
@@ -281,6 +263,7 @@ impl Default for ModSettings {
281263
views_presets: Default::default(),
282264
preset_index: 0,
283265
show_server: 1,
266+
anti_nickname_censorship: 1,
284267
auto_update: 1,
285268
verified: 0,
286269
version: String::new(),
@@ -327,6 +310,10 @@ impl ModSettings {
327310
self.auto_update != 0
328311
}
329312

313+
pub fn anti_nickname_censorship(&self) -> bool {
314+
self.anti_nickname_censorship != 0
315+
}
316+
330317
pub async fn get_lqc(&mut self) -> Result<bool> {
331318
// get lqc.lqbin prefix from https://game.maj-soul.com/1/{prefix}/res/config/lqc.lqbin
332319
let version = get_version().await?;

0 commit comments

Comments
 (0)