mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2025-07-04 00:36:14 +00:00
adding vid to the vehicle spawn data
This commit is contained in:
parent
6a1baa249a
commit
3df71e96c5
@ -18,7 +18,7 @@ pub struct Car {
|
|||||||
impl Car {
|
impl Car {
|
||||||
pub fn new(car_json: String) -> Self {
|
pub fn new(car_json: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
car_json: car_json,
|
car_json,
|
||||||
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
|
@ -964,10 +964,9 @@ impl Server {
|
|||||||
let code = packet.data[1] as char;
|
let code = packet.data[1] as char;
|
||||||
match code {
|
match code {
|
||||||
's' => {
|
's' => {
|
||||||
let client = &mut self.clients[client_idx];
|
|
||||||
let mut allowed = true;
|
let mut allowed = true;
|
||||||
if let Some(max_cars) = self.config.general.max_cars {
|
if let Some(max_cars) = self.config.general.max_cars {
|
||||||
if client.cars.len() >= max_cars as usize { allowed = false; }
|
if self.clients[client_idx].cars.len() >= max_cars as usize { allowed = false; }
|
||||||
}
|
}
|
||||||
// trace!("Packet string: `{}`", packet.data_as_string());
|
// trace!("Packet string: `{}`", packet.data_as_string());
|
||||||
let split_data = packet
|
let split_data = packet
|
||||||
@ -975,15 +974,21 @@ impl Server {
|
|||||||
.splitn(3, ':')
|
.splitn(3, ':')
|
||||||
.map(|s| s.to_string())
|
.map(|s| s.to_string())
|
||||||
.collect::<Vec<String>>();
|
.collect::<Vec<String>>();
|
||||||
let car_json_str = &split_data.get(2).ok_or(std::fmt::Error)?;
|
let mut car_json_str = (&split_data.get(2).ok_or(std::fmt::Error)?).to_string();
|
||||||
// let car_json: serde_json::Value = serde_json::from_str(&car_json_str)?;
|
let car_id = self.clients[client_idx].register_car(Car::new(car_json_str.clone()));
|
||||||
let car_id = client.register_car(Car::new(car_json_str.to_string()));
|
let client_id = self.clients[client_idx].get_id();
|
||||||
let client_id = client.get_id();
|
if let Ok(mut car_json) = serde_json::from_str::<serde_json::Value>(&car_json_str) {
|
||||||
|
if let Some(map) = car_json.as_object_mut() {
|
||||||
if allowed {
|
if allowed {
|
||||||
|
map.insert("vid".to_string(), serde_json::Value::Number(serde_json::value::Number::from_f64(car_id as f64).unwrap()));
|
||||||
|
car_json_str = serde_json::to_string(&car_json).unwrap();
|
||||||
|
if let Some(car) = self.clients[client_idx].get_car_mut(car_id) {
|
||||||
|
car.car_json = car_json_str.clone();
|
||||||
|
}
|
||||||
let packet_data = format!(
|
let packet_data = format!(
|
||||||
"Os:{}:{}:{}-{}:{}",
|
"Os:{}:{}:{}-{}:{}",
|
||||||
client.get_roles(),
|
self.clients[client_idx].get_roles(),
|
||||||
client.get_name(),
|
self.clients[client_idx].get_name(),
|
||||||
client_id,
|
client_id,
|
||||||
car_id,
|
car_id,
|
||||||
car_json_str
|
car_json_str
|
||||||
@ -991,25 +996,33 @@ impl Server {
|
|||||||
let response = RawPacket::from_str(&packet_data);
|
let response = RawPacket::from_str(&packet_data);
|
||||||
self.broadcast(Packet::Raw(response), None).await;
|
self.broadcast(Packet::Raw(response), None).await;
|
||||||
info!("Spawned car for client #{}!", client_id);
|
info!("Spawned car for client #{}!", client_id);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
allowed = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
allowed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if !allowed {
|
||||||
let packet_data = format!(
|
let packet_data = format!(
|
||||||
"Os:{}:{}:{}-{}:{}",
|
"Os:{}:{}:{}-{}:{}",
|
||||||
client.get_roles(),
|
self.clients[client_idx].get_roles(),
|
||||||
client.get_name(),
|
self.clients[client_idx].get_name(),
|
||||||
client_id,
|
client_id,
|
||||||
car_id,
|
car_id,
|
||||||
car_json_str
|
car_json_str
|
||||||
);
|
);
|
||||||
let response = RawPacket::from_str(&packet_data);
|
let response = RawPacket::from_str(&packet_data);
|
||||||
client.write_packet(Packet::Raw(response)).await;
|
self.clients[client_idx].write_packet(Packet::Raw(response)).await;
|
||||||
let packet_data = format!(
|
let packet_data = format!(
|
||||||
"Od:{}-{}",
|
"Od:{}-{}",
|
||||||
client_id,
|
client_id,
|
||||||
car_id,
|
car_id,
|
||||||
);
|
);
|
||||||
let response = RawPacket::from_str(&packet_data);
|
let response = RawPacket::from_str(&packet_data);
|
||||||
client.write_packet(Packet::Raw(response)).await;
|
self.clients[client_idx].write_packet(Packet::Raw(response)).await;
|
||||||
client.unregister_car(car_id);
|
self.clients[client_idx].unregister_car(car_id);
|
||||||
info!("Blocked spawn for client #{}!", client_id);
|
info!("Blocked spawn for client #{}!", client_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user