mirror of
https://github.com/BeamMP/BeamMP-Server.git
synced 2025-07-03 16:25:35 +00:00
working vehicle sync
This commit is contained in:
parent
60c38ccd1a
commit
ce7abdc960
@ -15,7 +15,7 @@ void Respond(const std::string& MSG, ENetPeer*peer){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SendToAll(ENetHost *server, ENetPeer*peer,const std::string& Data, bool All, bool Reliable){
|
void SendToAll(ENetHost *server, ENetPeer*peer,const std::string& Data, bool All, bool Reliable){
|
||||||
std::cout << "Sending to all with the self switch : " << All << std::endl;
|
std::cout << "Sending Code " << Data.at(0) << " length:" << Data.length() << " to all with the self switch : " << All << std::endl;
|
||||||
for (int i = 0; i < server->connectedPeers; i++) {
|
for (int i = 0; i < server->connectedPeers; i++) {
|
||||||
if (All || &server->peers[i] != peer) {
|
if (All || &server->peers[i] != peer) {
|
||||||
//reliable is 1 unreliable is 8
|
//reliable is 1 unreliable is 8
|
||||||
@ -30,5 +30,5 @@ void OnConnect(ENetHost *server,ENetPeer*peer){
|
|||||||
peer->serverVehicleID[0] = FindID(server,peer); ///TODO: WHAT IF IT IS THE SECOND VEHICLE?
|
peer->serverVehicleID[0] = FindID(server,peer); ///TODO: WHAT IF IT IS THE SECOND VEHICLE?
|
||||||
std::string ID = "P" + std::to_string(peer->serverVehicleID[0]);
|
std::string ID = "P" + std::to_string(peer->serverVehicleID[0]);
|
||||||
enet_peer_send(peer, 0, enet_packet_create (ID.c_str(), ID.length()+1, ENET_PACKET_FLAG_RELIABLE));
|
enet_peer_send(peer, 0, enet_packet_create (ID.c_str(), ID.length()+1, ENET_PACKET_FLAG_RELIABLE));
|
||||||
if(Debug)debug("ID : " + std::to_string(peer->serverVehicleID[0]));
|
if(Debug)debug(peer->Name + " ID : " + std::to_string(peer->serverVehicleID[0]));
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ void VehicleParser(std::string Packet,ENetPeer*peer,ENetHost*server){
|
|||||||
case 's':
|
case 's':
|
||||||
if(Data.at(0) == '0'){
|
if(Data.at(0) == '0'){
|
||||||
Packet = "Os:"+peer->Name+":"+std::to_string(peer->serverVehicleID[0])+Packet.substr(4);
|
Packet = "Os:"+peer->Name+":"+std::to_string(peer->serverVehicleID[0])+Packet.substr(4);
|
||||||
|
peer->VehicleData = Packet;
|
||||||
}
|
}
|
||||||
SendToAll(server,peer,Packet,true,true);
|
SendToAll(server,peer,Packet,true,true);
|
||||||
break;
|
break;
|
||||||
@ -28,13 +29,26 @@ void VehicleParser(std::string Packet,ENetPeer*peer,ENetHost*server){
|
|||||||
case 'm':
|
case 'm':
|
||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
SendToAll(server,peer,Packet,true,true);
|
SendToAll(server,peer,Packet,false,true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void SyncVehicles(ENetHost*server,ENetPeer*peer){
|
||||||
|
ENetPeer*ENetClient;
|
||||||
|
for (int i = 0; i < server->connectedPeers; i++) {
|
||||||
|
ENetClient = &server->peers[i];
|
||||||
|
if (ENetClient != peer) {
|
||||||
|
if(!ENetClient->VehicleData.empty()){
|
||||||
|
enet_peer_send(peer, 0, enet_packet_create(ENetClient->VehicleData.c_str(),ENetClient->VehicleData.length()+1,1));
|
||||||
|
enet_host_flush(server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ParseData(ENetPacket*packet, ENetPeer*peer, ENetHost*server){
|
void ParseData(ENetPacket*packet, ENetPeer*peer, ENetHost*server){
|
||||||
std::string Packet = (char*)packet->data;
|
std::string Packet = (char*)packet->data;
|
||||||
|
if(Packet == "TEST")SyncVehicles(server,peer);
|
||||||
char Code = Packet.at(0),SubCode = 0;
|
char Code = Packet.at(0),SubCode = 0;
|
||||||
if(Packet.length() > 1)SubCode = Packet.at(1);
|
if(Packet.length() > 1)SubCode = Packet.at(1);
|
||||||
switch (Code) {
|
switch (Code) {
|
||||||
|
@ -61,11 +61,13 @@ void host_server(ENetHost *server) {
|
|||||||
std::cout << event.peer->Name << " disconnected." << std::endl;
|
std::cout << event.peer->Name << " disconnected." << std::endl;
|
||||||
// Reset the peer's client information.
|
// Reset the peer's client information.
|
||||||
event.peer->Name.clear();
|
event.peer->Name.clear();
|
||||||
|
event.peer->VehicleData.clear();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
|
case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT:
|
||||||
std::cout << event.peer->Name << " timed out." << std::endl;
|
std::cout << event.peer->Name << " timed out." << std::endl;
|
||||||
event.peer->Name.clear();
|
event.peer->Name.clear();
|
||||||
|
event.peer->VehicleData.clear();
|
||||||
break;
|
break;
|
||||||
case ENET_EVENT_TYPE_NONE: break;
|
case ENET_EVENT_TYPE_NONE: break;
|
||||||
}
|
}
|
||||||
|
@ -637,6 +637,7 @@ typedef struct _ENetPeer {
|
|||||||
enet_uint8 incomingSessionID;
|
enet_uint8 incomingSessionID;
|
||||||
ENetAddress address; /**< Internet address of the peer */
|
ENetAddress address; /**< Internet address of the peer */
|
||||||
std::string Name; /**< Application private data, may be freely modified */
|
std::string Name; /**< Application private data, may be freely modified */
|
||||||
|
std::string VehicleData;
|
||||||
int gameVehicleID[10] = {0}; //added By Anonymous275
|
int gameVehicleID[10] = {0}; //added By Anonymous275
|
||||||
int serverVehicleID[10] = {0}; //added By Anonymous275
|
int serverVehicleID[10] = {0}; //added By Anonymous275
|
||||||
ENetPeerState state;
|
ENetPeerState state;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user