Added horn sync and LastSyncWasFull flag removed

This commit is contained in:
EntenKoeniq
2021-12-13 23:18:15 +01:00
parent b5d0aecc59
commit af2267f346
6 changed files with 75 additions and 61 deletions

View File

@ -204,6 +204,11 @@ namespace CoopClient.Entities
/// ?
/// </summary>
public float VehRPM { get; set; }
private bool LastHornActive = false;
/// <summary>
/// ?
/// </summary>
public bool IsHornActive { get; set; }
/// <summary>
/// ?
/// </summary>
@ -550,6 +555,17 @@ namespace CoopClient.Entities
MainVehicle.IsSirenActive = VehIsSireneActive;
}
if (IsHornActive && !LastHornActive)
{
LastHornActive = true;
MainVehicle.SoundHorn(99999);
}
else if (!IsHornActive && LastHornActive)
{
LastHornActive = false;
MainVehicle.SoundHorn(1);
}
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle, CurrentVehicleSpeed > 0.2f && LastVehicleSpeed > CurrentVehicleSpeed);
if (LastSyncWasFull)

View File

@ -263,7 +263,7 @@ namespace CoopClient
Vehicle veh = player.CurrentVehicle;
veh.Opacity = 75;
flags = veh.GetVehicleFlags(fullSync);
flags = veh.GetVehicleFlags();
int secondaryColor;
int primaryColor;
@ -286,13 +286,14 @@ namespace CoopClient
DebugSyncPed.VehicleMods = veh.Mods.GetVehicleMods();
DebugSyncPed.VehDoors = veh.Doors.GetVehicleDoors();
DebugSyncPed.VehTires = veh.Wheels.GetBrokenTires();
DebugSyncPed.LastSyncWasFull = (flags.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0;
DebugSyncPed.LastSyncWasFull = true;
DebugSyncPed.IsInVehicle = true;
DebugSyncPed.VehIsEngineRunning = (flags.Value & (byte)VehicleDataFlags.IsEngineRunning) > 0;
DebugSyncPed.VehAreLightsOn = (flags.Value & (byte)VehicleDataFlags.AreLightsOn) > 0;
DebugSyncPed.VehAreHighBeamsOn = (flags.Value & (byte)VehicleDataFlags.AreHighBeamsOn) > 0;
DebugSyncPed.VehIsSireneActive = (flags.Value & (byte)VehicleDataFlags.IsSirenActive) > 0;
DebugSyncPed.VehicleDead = (flags.Value & (byte)VehicleDataFlags.IsDead) > 0;
DebugSyncPed.IsHornActive = (flags.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
if (DebugSyncPed.MainVehicle != null && DebugSyncPed.MainVehicle.Exists() && player.IsInVehicle())
{
@ -302,14 +303,14 @@ namespace CoopClient
}
else
{
flags = player.GetPedFlags(fullSync, true);
flags = player.GetPedFlags(true);
DebugSyncPed.Rotation = player.Rotation;
DebugSyncPed.Velocity = player.Velocity;
DebugSyncPed.Speed = player.GetPedSpeed();
DebugSyncPed.AimCoords = player.GetPedAimCoords(false);
DebugSyncPed.CurrentWeaponHash = (int)player.Weapons.Current.Hash;
DebugSyncPed.LastSyncWasFull = (flags.Value & (byte)PedDataFlags.LastSyncWasFull) > 0;
DebugSyncPed.LastSyncWasFull = true;
DebugSyncPed.IsAiming = (flags.Value & (byte)PedDataFlags.IsAiming) > 0;
DebugSyncPed.IsShooting = (flags.Value & (byte)PedDataFlags.IsShooting) > 0;
DebugSyncPed.IsReloading = (flags.Value & (byte)PedDataFlags.IsReloading) > 0;

View File

@ -310,7 +310,6 @@ namespace CoopClient
player.Speed = packet.Speed;
player.CurrentWeaponHash = packet.CurrentWeaponHash;
player.AimCoords = packet.AimCoords.ToVector();
player.LastSyncWasFull = (packet.Flag.Value & (byte)PedDataFlags.LastSyncWasFull) > 0;
player.IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0;
player.IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0;
player.IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0;
@ -318,6 +317,7 @@ namespace CoopClient
player.IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0;
player.IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0;
player.IsInVehicle = false;
player.LastSyncWasFull = false;
player.Latency = packet.Extra.Latency;
player.LastUpdateReceived = Util.GetTickCount64();
@ -348,13 +348,14 @@ namespace CoopClient
player.VehicleMods = packet.VehMods;
player.VehDoors = packet.VehDoors;
player.VehTires = packet.VehTires;
player.LastSyncWasFull = (packet.Flag.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0;
player.IsInVehicle = true;
player.VehIsEngineRunning = (packet.Flag.Value & (byte)VehicleDataFlags.IsEngineRunning) > 0;
player.VehAreLightsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreLightsOn) > 0;
player.VehAreHighBeamsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreHighBeamsOn) > 0;
player.VehIsSireneActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsSirenActive) > 0;
player.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
player.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
player.IsInVehicle = true;
player.LastSyncWasFull = false;
player.Latency = packet.Extra.Latency;
player.LastUpdateReceived = Util.GetTickCount64();
@ -374,7 +375,6 @@ namespace CoopClient
player.Speed = packet.Speed;
player.CurrentWeaponHash = packet.CurrentWeaponHash;
player.AimCoords = packet.AimCoords.ToVector();
player.LastSyncWasFull = (packet.Flag.Value & (byte)PedDataFlags.LastSyncWasFull) > 0;
player.IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0;
player.IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0;
player.IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0;
@ -382,6 +382,7 @@ namespace CoopClient
player.IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0;
player.IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0;
player.IsInVehicle = false;
player.LastSyncWasFull = false;
player.Latency = packet.Extra.Latency;
player.LastUpdateReceived = Util.GetTickCount64();
@ -403,13 +404,14 @@ namespace CoopClient
player.VehicleVelocity = packet.VehVelocity.ToVector();
player.VehicleSpeed = packet.VehSpeed;
player.VehicleSteeringAngle = packet.VehSteeringAngle;
player.LastSyncWasFull = (packet.Flag.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0;
player.IsInVehicle = true;
player.VehIsEngineRunning = (packet.Flag.Value & (byte)VehicleDataFlags.IsEngineRunning) > 0;
player.VehAreLightsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreLightsOn) > 0;
player.VehAreHighBeamsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreHighBeamsOn) > 0;
player.VehIsSireneActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsSirenActive) > 0;
player.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
player.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
player.IsInVehicle = true;
player.LastSyncWasFull = false;
player.Latency = packet.Extra.Latency;
player.LastUpdateReceived = Util.GetTickCount64();
@ -576,7 +578,6 @@ namespace CoopClient
npc.Speed = packet.Speed;
npc.CurrentWeaponHash = packet.CurrentWeaponHash;
npc.AimCoords = packet.AimCoords.ToVector();
npc.LastSyncWasFull = (packet.Flag.Value & (byte)PedDataFlags.LastSyncWasFull) > 0;
npc.IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0;
npc.IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0;
npc.IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0;
@ -584,6 +585,7 @@ namespace CoopClient
npc.IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0;
npc.IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0;
npc.IsInVehicle = false;
npc.LastSyncWasFull = true;
}
else
{
@ -600,14 +602,14 @@ namespace CoopClient
Speed = packet.Speed,
CurrentWeaponHash = packet.CurrentWeaponHash,
AimCoords = packet.AimCoords.ToVector(),
LastSyncWasFull = (packet.Flag.Value & (byte)PedDataFlags.LastSyncWasFull) > 0,
IsAiming = (packet.Flag.Value & (byte)PedDataFlags.IsAiming) > 0,
IsShooting = (packet.Flag.Value & (byte)PedDataFlags.IsShooting) > 0,
IsReloading = (packet.Flag.Value & (byte)PedDataFlags.IsReloading) > 0,
IsJumping = (packet.Flag.Value & (byte)PedDataFlags.IsJumping) > 0,
IsRagdoll = (packet.Flag.Value & (byte)PedDataFlags.IsRagdoll) > 0,
IsOnFire = (packet.Flag.Value & (byte)PedDataFlags.IsOnFire) > 0,
IsInVehicle = false
IsInVehicle = false,
LastSyncWasFull = true
});
}
}
@ -639,13 +641,14 @@ namespace CoopClient
npc.VehicleColors = packet.VehColors;
npc.VehDoors = packet.VehDoors;
npc.VehTires = packet.VehTires;
npc.LastSyncWasFull = (packet.Flag.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0;
npc.IsInVehicle = true;
npc.VehIsEngineRunning = (packet.Flag.Value & (byte)VehicleDataFlags.IsEngineRunning) > 0;
npc.VehAreLightsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreLightsOn) > 0;
npc.VehAreHighBeamsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreHighBeamsOn) > 0;
npc.VehIsSireneActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsSirenActive) > 0;
npc.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
npc.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
npc.IsInVehicle = true;
npc.LastSyncWasFull = true;
}
else
{
@ -669,13 +672,14 @@ namespace CoopClient
VehicleColors = packet.VehColors,
VehDoors = packet.VehDoors,
VehTires = packet.VehTires,
LastSyncWasFull = (packet.Flag.Value & (byte)VehicleDataFlags.LastSyncWasFull) > 0,
IsInVehicle = true,
VehIsEngineRunning = (packet.Flag.Value & (byte)VehicleDataFlags.IsEngineRunning) > 0,
VehAreLightsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreLightsOn) > 0,
VehAreHighBeamsOn = (packet.Flag.Value & (byte)VehicleDataFlags.AreHighBeamsOn) > 0,
VehIsSireneActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsSirenActive) > 0,
VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0
VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0,
IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0,
IsInVehicle = true,
LastSyncWasFull = true
});
}
}
@ -732,7 +736,7 @@ namespace CoopClient
VehMods = veh.Mods.GetVehicleMods(),
VehDoors = veh.Doors.GetVehicleDoors(),
VehTires = veh.Wheels.GetBrokenTires(),
Flag = veh.GetVehicleFlags(true)
Flag = veh.GetVehicleFlags()
}.PacketToNetOutGoingMessage(outgoingMessage);
}
else
@ -752,7 +756,7 @@ namespace CoopClient
Speed = player.GetPedSpeed(),
AimCoords = player.GetPedAimCoords(false).ToLVector(),
CurrentWeaponHash = (int)player.Weapons.Current.Hash,
Flag = player.GetPedFlags(true, true)
Flag = player.GetPedFlags(true)
}.PacketToNetOutGoingMessage(outgoingMessage);
}
@ -781,7 +785,7 @@ namespace CoopClient
VehVelocity = veh.Velocity.ToLVector(),
VehSpeed = veh.Speed,
VehSteeringAngle = veh.SteeringAngle,
Flag = veh.GetVehicleFlags(false)
Flag = veh.GetVehicleFlags()
}.PacketToNetOutGoingMessage(outgoingMessage);
}
else
@ -799,7 +803,7 @@ namespace CoopClient
Speed = player.GetPedSpeed(),
AimCoords = player.GetPedAimCoords(false).ToLVector(),
CurrentWeaponHash = (int)player.Weapons.Current.Hash,
Flag = player.GetPedFlags(false, true)
Flag = player.GetPedFlags(true)
}.PacketToNetOutGoingMessage(outgoingMessage);
}
}
@ -851,7 +855,7 @@ namespace CoopClient
VehMods = veh.Mods.GetVehicleMods(),
VehDoors = veh.Doors.GetVehicleDoors(),
VehTires = veh.Wheels.GetBrokenTires(),
Flag = veh.GetVehicleFlags(true)
Flag = veh.GetVehicleFlags()
}.PacketToNetOutGoingMessage(outgoingMessage);
}
else

View File

@ -146,25 +146,24 @@ namespace CoopClient
[Flags]
enum PedDataFlags
{
LastSyncWasFull = 1 << 0,
IsAiming = 1 << 1,
IsShooting = 1 << 2,
IsReloading = 1 << 3,
IsJumping = 1 << 4,
IsRagdoll = 1 << 5,
IsOnFire = 1 << 6
IsAiming = 1 << 0,
IsShooting = 1 << 1,
IsReloading = 1 << 2,
IsJumping = 1 << 3,
IsRagdoll = 1 << 4,
IsOnFire = 1 << 5
}
#region ===== VEHICLE DATA =====
[Flags]
enum VehicleDataFlags
{
LastSyncWasFull = 1 << 0,
IsEngineRunning = 1 << 1,
AreLightsOn = 1 << 2,
AreHighBeamsOn = 1 << 3,
IsSirenActive = 1 << 4,
IsDead = 1 << 5
IsEngineRunning = 1 << 0,
AreLightsOn = 1 << 1,
AreHighBeamsOn = 1 << 2,
IsSirenActive = 1 << 3,
IsDead = 1 << 4,
IsHornActive = 1 << 5,
}
/// <summary>

View File

@ -146,15 +146,10 @@ namespace CoopClient
return RaycastEverything(new Vector2(0, 0));
}
public static byte? GetVehicleFlags(this Vehicle veh, bool fullSync)
public static byte? GetVehicleFlags(this Vehicle veh)
{
byte? flags = 0;
if (fullSync)
{
flags |= (byte)VehicleDataFlags.LastSyncWasFull;
}
if (veh.IsEngineRunning)
{
flags |= (byte)VehicleDataFlags.IsEngineRunning;
@ -180,18 +175,18 @@ namespace CoopClient
flags |= (byte)VehicleDataFlags.IsDead;
}
if (Function.Call<bool>(Hash.IS_HORN_ACTIVE, veh.Handle))
{
flags |= (byte)VehicleDataFlags.IsHornActive;
}
return flags;
}
public static byte? GetPedFlags(this Ped ped, bool fullSync, bool isPlayer = false)
public static byte? GetPedFlags(this Ped ped, bool isPlayer = false)
{
byte? flags = 0;
if (fullSync)
{
flags |= (byte)PedDataFlags.LastSyncWasFull;
}
if (ped.IsAiming)
{
flags |= (byte)PedDataFlags.IsAiming;

View File

@ -89,25 +89,24 @@ namespace CoopServer
[Flags]
enum PedDataFlags
{
LastSyncWasFull = 1 << 0,
IsAiming = 1 << 1,
IsShooting = 1 << 2,
IsReloading = 1 << 3,
IsJumping = 1 << 4,
IsRagdoll = 1 << 5,
IsOnFire = 1 << 6
IsAiming = 1 << 0,
IsShooting = 1 << 1,
IsReloading = 1 << 2,
IsJumping = 1 << 3,
IsRagdoll = 1 << 4,
IsOnFire = 1 << 5
}
#region ===== VEHICLE DATA =====
[Flags]
enum VehicleDataFlags
{
LastSyncWasFull = 1 << 0,
IsEngineRunning = 1 << 1,
AreLightsOn = 1 << 2,
AreHighBeamsOn = 1 << 3,
IsSirenActive = 1 << 4,
IsDead = 1 << 5
IsEngineRunning = 1 << 0,
AreLightsOn = 1 << 1,
AreHighBeamsOn = 1 << 2,
IsSirenActive = 1 << 3,
IsDead = 1 << 4,
IsHornActive = 1 << 5,
}
[ProtoContract]