move global buff toggle logic in commands, add compile flags for playerheartbeat data

This commit is contained in:
yuvlian
2026-05-04 20:10:01 +07:00
committed by amizing25
parent 6aa7670ca8
commit 701a78e9dc
4 changed files with 57 additions and 21 deletions
+16 -16
View File
@@ -110,24 +110,24 @@ impl FreesrData {
Ok(())
}
pub async fn refresh_persistent(&mut self) -> anyhow::Result<()> {
let persistent: Persistent = serde_json::from_str(
&tokio::fs::read_to_string("persistent")
.await
.unwrap_or_default(),
)
.unwrap_or_default();
// pub async fn refresh_persistent(&mut self) -> anyhow::Result<()> {
// let persistent: Persistent = serde_json::from_str(
// &tokio::fs::read_to_string("persistent")
// .await
// .unwrap_or_default(),
// )
// .unwrap_or_default();
self.lineups = persistent.lineups;
self.position = persistent.position;
self.scene = persistent.scene;
self.main_character = persistent.main_character;
self.march_type = persistent.march_type;
self.enable_sw_global = persistent.enable_sw_global;
self.enable_castorice_global = persistent.enable_castorice_global;
// self.lineups = persistent.lineups;
// self.position = persistent.position;
// self.scene = persistent.scene;
// self.main_character = persistent.main_character;
// self.march_type = persistent.march_type;
// self.enable_sw_global = persistent.enable_sw_global;
// self.enable_castorice_global = persistent.enable_castorice_global;
Ok(())
}
// Ok(())
// }
async fn verify_lineup(&mut self) {
if self.lineups.is_empty() {
+3 -3
View File
@@ -84,9 +84,9 @@ async fn create_battle_info(
caster_id: u32,
skill_index: u32,
) -> SceneBattleInfo {
if let Some(player) = session.json_data.get_mut() {
let _ = player.refresh_persistent().await;
}
// if let Some(player) = session.json_data.get_mut() {
// let _ = player.refresh_persistent().await;
// }
let Some(player) = session.json_data.get() else {
tracing::error!("data is not set!");
+37 -1
View File
@@ -13,8 +13,10 @@ use super::*;
const SERVER_UID: u32 = 727;
const SERVER_HEAD_ICON: u32 = 201402;
const SERVER_CHAT_BUBBLE_ID: u32 = 220005;
const SERVER_CHAT_HISTORY: [&str; 6] = [
const SERVER_CHAT_HISTORY: &[&str] = &[
"'lua {path_to_lua_script}' execute lua script",
"'sw {on/off}' enable/disable silver wolf global buff",
"'castorice {on/off}' enable/disable castorice global buff",
"'sync' to synchronize stats between json and in-game view",
"'mc {mc_id}' mc_id can be set from 8001 to 8008",
"'march {march_id}' march_id can be set 1001 or 1224",
@@ -125,6 +127,40 @@ pub async fn on_send_msg_cs_req(
.await
.unwrap();
}
"sw" | "castorice" => {
let status = args.first().unwrap_or(&"on").to_lowercase();
let enabled = match status.as_str() {
"on" | "1" | "true" => true,
"off" | "0" | "false" => false,
_ => true,
};
if cmd == "sw" {
json.enable_sw_global = Some(enabled);
} else {
json.enable_castorice_global = Some(enabled);
}
json.save_persistent().await;
session
.send(create_send_message(
25,
SERVER_UID,
body.message_datas
.as_ref()
.map(|v| v.message_type)
.unwrap_or_default(),
body.chat_type,
format!(
"{} Global Buff: {}",
if cmd == "sw" { "SW" } else { "Castorice" },
if enabled { "Enabled" } else { "Disabled" }
),
))
.await
.unwrap();
}
"mc" => {
let mc = MultiPathAvatar::from(
args.first()
+1 -1
View File
@@ -20,7 +20,7 @@ pub async fn on_player_heart_beat_cs_req(
res.download_data = Some(ClientDownloadData {
version: 51,
time: res.server_time_ms as i64,
data: rbase64::decode("bG9jYWwgTUFYX0ZQUyA9IDM2MApsb2NhbCBCRVRBX1dNID0gIiIKCmxvY2FsIGZ1bmN0aW9uIGxvZyhtc2cpCmVuZAoKbG9jYWwgZnVuY3Rpb24gcGF0Y2hGcHMoKQogICAgQ1MuVW5pdHlFbmdpbmUuQXBwbGljYXRpb24udGFyZ2V0RnJhbWVSYXRlID0gTUFYX0ZQUwogICAgQ1MuVW5pdHlFbmdpbmUuUXVhbGl0eVNldHRpbmdzLnZTeW5jQ291bnQgPSAwCmVuZAoKbG9jYWwgZnVuY3Rpb24gcGF0Y2hCZXRhV20oKQogICAgLS0gQmV0YSBXYXRlcm1hcmsKICAgIENTLlVuaXR5RW5naW5lLkdhbWVPYmplY3QuRmluZCgiVUlSb290L0Fib3ZlRGlhbG9nL0JldGFIaW50RGlhbG9nKENsb25lKSIpOkdldENvbXBvbmVudEluQ2hpbGRyZW4odHlwZW9mKENTLlJQRy5DbGllbnQuTG9jYWxpemVkVGV4dCkpLnRleHQgPSBCRVRBX1dNCgogICAgLS0gVUlEIFdhdGVybWFyawogICAgQ1MuVW5pdHlFbmdpbmUuR2FtZU9iamVjdC5GaW5kKCJWZXJzaW9uVGV4dCIpOkdldENvbXBvbmVudEluQ2hpbGRyZW4odHlwZW9mKENTLlJQRy5DbGllbnQuTG9jYWxpemVkVGV4dCkpLnRleHQgPQogICAgICAgICI8Y29sb3I9IzAwZTFmZj5Sb2JpblNSISB8IDwvY29sb3I+IiAuLgogICAgICAgICI8Y29sb3I9IzAwZTFmZj4iIC4uCiAgICAgICAgQ1MuUlBHLkNsaWVudC5HbG9iYWxWYXJzLnNfVmVyc2lvbkRhdGE6R2V0U2VydmVyUGFrVHlwZVZlcnNpb24oKSAuLgogICAgICAgICI8L2NvbG9yPiIKZW5kCgoKbG9jYWwgZnVuY3Rpb24gbWFpbigpCiAgICBwYXRjaEJldGFXbSgpCmVuZAoKeHBjYWxsKG1haW4sIGxvZyk=").unwrap(),
data: rbase64::decode("BAEcA2xvZwJDUwtVbml0eUVuZ2luZQtBcHBsaWNhdGlvbg90YXJnZXRGcmFtZVJhdGUPUXVhbGl0eVNldHRpbmdzCnZTeW5jQ291bnQIcGF0Y2hGcHMKR2FtZU9iamVjdARGaW5kKFVJUm9vdC9BYm92ZURpYWxvZy9CZXRhSGludERpYWxvZyhDbG9uZSkDUlBHBkNsaWVudA1Mb2NhbGl6ZWRUZXh0BnR5cGVvZhZHZXRDb21wb25lbnRJbkNoaWxkcmVuJjxjb2xvcj0jMDBlMWZmPnQubWUvbmVvbnRlYW0yNTwvY29sb3I+BHRleHQLVmVyc2lvblRleHQiPGNvbG9yPSMwMGUxZmY+Um9iaW5TUiEgfCA8L2NvbG9yPg88Y29sb3I9IzAwZTFmZj4KR2xvYmFsVmFycw1zX1ZlcnNpb25EYXRhF0dldFNlcnZlclBha1R5cGVWZXJzaW9uCDwvY29sb3I+C3BhdGNoQmV0YVdtBG1haW4GeHBjYWxsBQEBAAAAAAEWAAEAAAAEAQEYAAUAAAAAAgAAAAAACwwAAwACBADABAFoARABAAMEAAAADAAGAAUEAMAEAQAAEAEA0AcAAAAWAAEACAMCAwMDBAQCBADAAwUDBgQFBADAAwcABwgBGAAAAAAAAQAAAAABCAAAAAAJAAAAAAA2DAEDAAIEAMAPAAF2BAAAAAUBBQAVAAICDAQIAAcYAMAPAwQUCQAAAE0sAwIMAgsAAACgQBUCAgAUAACxDAAAABUAAAIFAQ0AEAEA1Q4AAAAMAQMAAgQAwA8AAXYEAAAABQEPABUAAgIMBAgABxgAwA8DBBQJAAAATSwDAgwCCwAAAKBAFQICABQAALEMAAAAFQAAAgUCEAAFAxEADAgIAAcYAMAPBwisEgAAAA8GByMTAAAAFAYGkRQAAAAVBgICBgQGAAUFFQA1AQIFEAEA1Q4AAAAWAAEAFgMCAwMDCQQCBADAAwoDCwMMAw0EBxgAwAMOAw8EAACgQAMQAxEDEgMTAxQDFQMWAxcDGAMZAAwaARgAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAQD8AAUOAAAAAAEAAQAAAAMJAAAAFQABARYAAQAAABkbARgAAAEaAAAAAAcAAAEAAAxFAAAARAAAAEQBAQBEAgIARAMDAEoAAgAMBAUAAABAQAYFAwAGBgAAFQQDARYAAQAGBgAGAQYCBgMDHAQAAEBABAABAgMBAAEYAAMDBQ0ABAAAAAAAAQAAAAAE").unwrap(),
..Default::default()
});
}