我也不知道这次提交是做什么的
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,3 +2,4 @@
|
|||||||
/.idea
|
/.idea
|
||||||
/我是崩服小能手
|
/我是崩服小能手
|
||||||
/config.json
|
/config.json
|
||||||
|
/release
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
// bot的实现
|
// bot的实现
|
||||||
|
|
||||||
use std::{io::{Error, Read, Write}, net::TcpStream, sync::Arc, thread::{self, sleep}, time::{self, Duration}};
|
use std::{io::{Error, Read, Write}, net::TcpStream, str::FromStr, sync::Arc, thread::{self, sleep}, time::{self, Duration}};
|
||||||
|
|
||||||
use log::{info, warn};
|
use log::{info, warn};
|
||||||
use rust_mc_proto::{DataBufferReader, DataBufferWriter, MinecraftConnection, Packet, ProtocolError};
|
use rust_mc_proto::{DataBufferReader, DataBufferWriter, MinecraftConnection, Packet, ProtocolError};
|
||||||
@@ -11,7 +11,7 @@ use crate::{configuration::Configuration, utils};
|
|||||||
// 让所有bot能够共享变量
|
// 让所有bot能够共享变量
|
||||||
pub struct BotVariable {
|
pub struct BotVariable {
|
||||||
pub spam_file: Arc<Mutex<Option<tokio::fs::File>>>,
|
pub spam_file: Arc<Mutex<Option<tokio::fs::File>>>,
|
||||||
pub spam_cursor: Arc<Mutex<u64>>
|
pub spam_cursor: Arc<Mutex<u64>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bot主线程和worker线程间的通信
|
// Bot主线程和worker线程间的通信
|
||||||
@@ -211,14 +211,24 @@ impl<T: StreamType> Bot<T> {
|
|||||||
state: 0,
|
state: 0,
|
||||||
last_keepalive_sec: 0
|
last_keepalive_sec: 0
|
||||||
};
|
};
|
||||||
|
let mut uuid_self = uuid::Uuid::from_str("550e8400-e29b-41d4-a716-446655440000").unwrap(); // 这个纯随机
|
||||||
|
let mut ent_self = 0;
|
||||||
match packet.id() {
|
match packet.id() {
|
||||||
0x02 => { // 成功登录
|
0x01 => { // spawn entity
|
||||||
|
let id = packet.read_i32_varint()?;
|
||||||
|
let uid = packet.read_uuid()?;
|
||||||
|
if uid.eq(&uuid_self) {
|
||||||
|
ent_self = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
0x02 => { // 成功登录(Login Success)
|
||||||
// login success
|
// login success
|
||||||
info!("[{}] Successfully logged in!",self.username);
|
info!("[{}] Successfully logged in!",self.username);
|
||||||
self.status = 1;
|
self.status = 1;
|
||||||
message.state = 1;
|
message.state = 1;
|
||||||
message.last_keepalive_sec = time::SystemTime::now().duration_since(time::SystemTime::UNIX_EPOCH).unwrap().as_secs();
|
message.last_keepalive_sec = time::SystemTime::now().duration_since(time::SystemTime::UNIX_EPOCH).unwrap().as_secs();
|
||||||
status_tx.send(message).unwrap();
|
status_tx.send(message).unwrap_or(());
|
||||||
|
uuid_self = packet.read_uuid()?;
|
||||||
}
|
}
|
||||||
0x03 => {// 设置压缩CompressionThreshold
|
0x03 => {// 设置压缩CompressionThreshold
|
||||||
// set compression
|
// set compression
|
||||||
@@ -231,14 +241,14 @@ impl<T: StreamType> Bot<T> {
|
|||||||
0x23 => { // KeepAlive包
|
0x23 => { // KeepAlive包
|
||||||
self.handle_keepalive(&mut packet).await?;
|
self.handle_keepalive(&mut packet).await?;
|
||||||
message.last_keepalive_sec = time::SystemTime::now().duration_since(time::SystemTime::UNIX_EPOCH).unwrap().as_secs();
|
message.last_keepalive_sec = time::SystemTime::now().duration_since(time::SystemTime::UNIX_EPOCH).unwrap().as_secs();
|
||||||
status_tx.send(message).unwrap();
|
status_tx.send(message).unwrap_or(());
|
||||||
// println!("{}",self.status);
|
// println!("{}",self.status);
|
||||||
}
|
}
|
||||||
0x1A => {// 断连包
|
0x1A => {// 断连包
|
||||||
// disconnect
|
// disconnect
|
||||||
self.handle_disconnect(&mut packet).await?;
|
self.handle_disconnect(&mut packet).await?;
|
||||||
message.state = 2;
|
message.state = 2;
|
||||||
status_tx.send(message).unwrap();
|
status_tx.send(message).unwrap_or(());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
0x00 => {// 版本不匹配啥的就会走这
|
0x00 => {// 版本不匹配啥的就会走这
|
||||||
@@ -246,7 +256,7 @@ impl<T: StreamType> Bot<T> {
|
|||||||
let text = packet.read_string()?;
|
let text = packet.read_string()?;
|
||||||
warn!("[{}] Failed to login: {}", self.username, utils::parse_json_component(text.as_str()));
|
warn!("[{}] Failed to login: {}", self.username, utils::parse_json_component(text.as_str()));
|
||||||
message.state = 2;
|
message.state = 2;
|
||||||
status_tx.send(message).unwrap();
|
status_tx.send(message).unwrap_or(());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -329,6 +339,7 @@ impl<T: StreamType> Bot<T> {
|
|||||||
warn!("[{}/WORKER] Bot timed out", self.username);
|
warn!("[{}/WORKER] Bot timed out", self.username);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
iter += 1;
|
iter += 1;
|
||||||
}
|
}
|
||||||
sleep(Duration::from_millis(1));
|
sleep(Duration::from_millis(1));
|
||||||
|
|||||||
Reference in New Issue
Block a user