FullSync every 1.5s and small changes

This commit is contained in:
EntenKoeniq
2021-08-15 11:33:52 +02:00
parent b9e40f8e36
commit 6566317617
5 changed files with 31 additions and 23 deletions

View File

@ -432,7 +432,7 @@ namespace CoopClient
{ {
MainVehicle.Velocity = VehicleVelocity + (VehiclePosition - MainVehicle.Position); MainVehicle.Velocity = VehicleVelocity + (VehiclePosition - MainVehicle.Position);
MainVehicle.Quaternion = Quaternion.Slerp(MainVehicle.Quaternion, VehicleRotation, Math.Min(1.0f, Latency < 0.5f ? 0.5f : Latency)); MainVehicle.Quaternion = Quaternion.Slerp(MainVehicle.Quaternion, VehicleRotation, Math.Min(1.5f, (Environment.TickCount - LastUpdateReceived) / (float)Latency));
VehicleStopTime = Environment.TickCount; VehicleStopTime = Environment.TickCount;
} }

View File

@ -225,7 +225,7 @@ namespace CoopClient
private int ArtificialLagCounter; private int ArtificialLagCounter;
public static EntitiesPlayer DebugSyncPed; public static EntitiesPlayer DebugSyncPed;
public static bool FullDebugSync = true; public static int LastFullDebugSync = 0;
public static bool UseDebug = false; public static bool UseDebug = false;
private void Debug() private void Debug()
@ -242,7 +242,9 @@ namespace CoopClient
return; return;
} }
if (FullDebugSync) bool fullSync = (Environment.TickCount - LastFullDebugSync) > 1500;
if (fullSync)
{ {
DebugSyncPed.ModelHash = player.Model.Hash; DebugSyncPed.ModelHash = player.Model.Hash;
DebugSyncPed.Props = Util.GetPedProps(player); DebugSyncPed.Props = Util.GetPedProps(player);
@ -254,7 +256,7 @@ namespace CoopClient
if (!player.IsInVehicle()) if (!player.IsInVehicle())
{ {
flags = Util.GetPedFlags(player, FullDebugSync, true); flags = Util.GetPedFlags(player, fullSync, true);
DebugSyncPed.Rotation = player.Rotation; DebugSyncPed.Rotation = player.Rotation;
DebugSyncPed.Velocity = player.Velocity; DebugSyncPed.Velocity = player.Velocity;
@ -281,7 +283,7 @@ namespace CoopClient
Vehicle veh = player.CurrentVehicle; Vehicle veh = player.CurrentVehicle;
veh.Opacity = 75; veh.Opacity = 75;
flags = Util.GetVehicleFlags(player, veh, FullDebugSync); flags = Util.GetVehicleFlags(player, veh, fullSync);
int secondaryColor; int secondaryColor;
int primaryColor; int primaryColor;
@ -317,11 +319,17 @@ namespace CoopClient
} }
} }
DebugSyncPed.LastUpdateReceived = Environment.TickCount; int currentTimestamp = Environment.TickCount;
DebugSyncPed.Latency = Environment.TickCount - ArtificialLagCounter;
FullDebugSync = !FullDebugSync; DebugSyncPed.LastUpdateReceived = currentTimestamp;
ArtificialLagCounter = Environment.TickCount; DebugSyncPed.Latency = currentTimestamp - ArtificialLagCounter;
ArtificialLagCounter = currentTimestamp;
if (fullSync)
{
LastFullDebugSync = currentTimestamp;
}
} }
} }
} }

View File

@ -61,7 +61,7 @@ namespace CoopClient.Menus.Sub
} }
Main.DebugSyncPed = null; Main.DebugSyncPed = null;
Main.FullDebugSync = true; Main.LastFullDebugSync = 0;
Main.Players.Remove("DebugKey"); Main.Players.Remove("DebugKey");
} }
} }

View File

@ -132,7 +132,7 @@ namespace CoopClient
GTA.UI.Notification.Show("~r~Disconnected: " + reason); GTA.UI.Notification.Show("~r~Disconnected: " + reason);
// Reset all values // Reset all values
FullPlayerSync = true; LastFullPlayerSync = 0;
Main.NpcsAllowed = false; Main.NpcsAllowed = false;
@ -502,14 +502,14 @@ namespace CoopClient
#endregion #endregion
#region -- SEND -- #region -- SEND --
private bool FullPlayerSync = true; private int LastFullPlayerSync = 0;
public void SendPlayerData() public void SendPlayerData()
{ {
Ped player = Game.Player.Character; Ped player = Game.Player.Character;
NetOutgoingMessage outgoingMessage = Client.CreateMessage(); NetOutgoingMessage outgoingMessage = Client.CreateMessage();
if (FullPlayerSync) if ((Environment.TickCount - LastFullPlayerSync) > 1500)
{ {
if (!player.IsInVehicle()) if (!player.IsInVehicle())
{ {
@ -557,6 +557,8 @@ namespace CoopClient
Flag = Util.GetVehicleFlags(player, player.CurrentVehicle, true) Flag = Util.GetVehicleFlags(player, player.CurrentVehicle, true)
}.PacketToNetOutGoingMessage(outgoingMessage); }.PacketToNetOutGoingMessage(outgoingMessage);
} }
LastFullPlayerSync = Environment.TickCount;
} }
else else
{ {
@ -594,10 +596,8 @@ namespace CoopClient
} }
} }
Client.SendMessage(outgoingMessage, NetDeliveryMethod.UnreliableSequenced); Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered);
Client.FlushSendQueue(); Client.FlushSendQueue();
FullPlayerSync = !FullPlayerSync;
} }
public void SendNpcData(Ped npc) public void SendNpcData(Ped npc)
@ -651,7 +651,7 @@ namespace CoopClient
}.PacketToNetOutGoingMessage(outgoingMessage); }.PacketToNetOutGoingMessage(outgoingMessage);
} }
Client.SendMessage(outgoingMessage, NetDeliveryMethod.Unreliable); Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered);
Client.FlushSendQueue(); Client.FlushSendQueue();
} }

View File

@ -560,7 +560,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableOrdered, 0); MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.UnreliableSequenced, 0);
} }
private static void FullSyncPlayerVeh(FullSyncPlayerVehPacket packet) private static void FullSyncPlayerVeh(FullSyncPlayerVehPacket packet)
@ -575,7 +575,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableOrdered, 0); MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.UnreliableSequenced, 0);
} }
private static void LightSyncPlayer(LightSyncPlayerPacket packet) private static void LightSyncPlayer(LightSyncPlayerPacket packet)
@ -590,7 +590,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableOrdered, 0); MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableSequenced, 0);
} }
private static void LightSyncPlayerVeh(LightSyncPlayerVehPacket packet) private static void LightSyncPlayerVeh(LightSyncPlayerVehPacket packet)
@ -605,7 +605,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableOrdered, 0); MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableSequenced, 0);
} }
// Send a message to targets or all players // Send a message to targets or all players
@ -637,7 +637,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableSequenced, 0); MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.UnreliableSequenced, 0);
} }
private static void FullSyncNpcVeh(NetConnection local, FullSyncNpcVehPacket packet) private static void FullSyncNpcVeh(NetConnection local, FullSyncNpcVehPacket packet)
@ -650,7 +650,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.ReliableSequenced, 0); MainNetServer.SendMessage(outgoingMessage, playerList, NetDeliveryMethod.UnreliableSequenced, 0);
} }
#endregion #endregion
} }