Better brake lights
This commit is contained in:
@ -45,6 +45,7 @@ namespace CoopClient.Entities.NPC
|
|||||||
private bool LastHornActive = false;
|
private bool LastHornActive = false;
|
||||||
internal bool IsHornActive { get; set; }
|
internal bool IsHornActive { get; set; }
|
||||||
internal bool VehAreLightsOn { get; set; }
|
internal bool VehAreLightsOn { get; set; }
|
||||||
|
internal bool VehAreBrakeLightsOn = false;
|
||||||
internal bool VehAreHighBeamsOn { get; set; }
|
internal bool VehAreHighBeamsOn { get; set; }
|
||||||
internal byte VehLandingGear { get; set; }
|
internal byte VehLandingGear { get; set; }
|
||||||
internal bool VehRoofOpened { get; set; }
|
internal bool VehRoofOpened { get; set; }
|
||||||
@ -236,7 +237,7 @@ namespace CoopClient.Entities.NPC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle, CurrentVehicleSpeed > 0.2f && LastVehicleSpeed > CurrentVehicleSpeed);
|
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle.Handle, VehAreBrakeLightsOn);
|
||||||
|
|
||||||
if (LastSyncWasFull)
|
if (LastSyncWasFull)
|
||||||
{
|
{
|
||||||
|
@ -362,26 +362,32 @@ namespace CoopClient.Entities.Player
|
|||||||
UpdateOnFootPosition();
|
UpdateOnFootPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte LastStuckCount = 0;
|
private bool StuckDetection = false;
|
||||||
private ulong LastStuckTime;
|
private ulong LastStuckTime;
|
||||||
private void UpdateOnFootPosition(bool updatePosition = true, bool updateRotation = true, bool updateVelocity = true)
|
private void UpdateOnFootPosition(bool updatePosition = true, bool updateRotation = true, bool updateVelocity = true)
|
||||||
{
|
{
|
||||||
if (Character.Position.DistanceTo(Position) > 5f)
|
ulong time = Util.GetTickCount64();
|
||||||
|
|
||||||
|
if (StuckDetection)
|
||||||
{
|
{
|
||||||
if (Util.GetTickCount64() - LastStuckTime < 1000)
|
if (time - LastStuckTime >= 500)
|
||||||
{
|
{
|
||||||
LastStuckCount = 0;
|
StuckDetection = false;
|
||||||
|
|
||||||
|
if (Character.Position.DistanceTo(Position) > 5f)
|
||||||
|
{
|
||||||
|
Character.PositionNoOffset = Position;
|
||||||
|
Character.Rotation = Rotation;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
++LastStuckCount;
|
else if (time - LastStuckTime >= 500)
|
||||||
|
{
|
||||||
if (LastStuckCount >= 5)
|
if (Character.Position.DistanceTo(Position) > 5f)
|
||||||
{
|
{
|
||||||
Character.Position = Position;
|
StuckDetection = true;
|
||||||
LastStuckCount = 0;
|
LastStuckTime = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
LastStuckTime = Util.GetTickCount64();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (updatePosition)
|
if (updatePosition)
|
||||||
|
@ -63,6 +63,7 @@ namespace CoopClient.Entities.Player
|
|||||||
private bool LastHornActive = false;
|
private bool LastHornActive = false;
|
||||||
internal bool IsHornActive { get; set; }
|
internal bool IsHornActive { get; set; }
|
||||||
internal bool VehAreLightsOn { get; set; }
|
internal bool VehAreLightsOn { get; set; }
|
||||||
|
internal bool VehAreBrakeLightsOn = false;
|
||||||
internal bool VehAreHighBeamsOn { get; set; }
|
internal bool VehAreHighBeamsOn { get; set; }
|
||||||
internal byte VehLandingGear { get; set; }
|
internal byte VehLandingGear { get; set; }
|
||||||
internal bool VehRoofOpened { get; set; }
|
internal bool VehRoofOpened { get; set; }
|
||||||
@ -259,7 +260,7 @@ namespace CoopClient.Entities.Player
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle, CurrentVehicleSpeed > 0.2f && LastVehicleSpeed > CurrentVehicleSpeed);
|
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle.Handle, VehAreBrakeLightsOn);
|
||||||
|
|
||||||
if (LastSyncWasFull)
|
if (LastSyncWasFull)
|
||||||
{
|
{
|
||||||
|
@ -385,6 +385,7 @@ namespace CoopClient
|
|||||||
DebugSyncPed.IsInVehicle = true;
|
DebugSyncPed.IsInVehicle = true;
|
||||||
DebugSyncPed.VehIsEngineRunning = (flags.Value & (ushort)VehicleDataFlags.IsEngineRunning) > 0;
|
DebugSyncPed.VehIsEngineRunning = (flags.Value & (ushort)VehicleDataFlags.IsEngineRunning) > 0;
|
||||||
DebugSyncPed.VehAreLightsOn = (flags.Value & (ushort)VehicleDataFlags.AreLightsOn) > 0;
|
DebugSyncPed.VehAreLightsOn = (flags.Value & (ushort)VehicleDataFlags.AreLightsOn) > 0;
|
||||||
|
DebugSyncPed.VehAreBrakeLightsOn = (flags.Value & (ushort)VehicleDataFlags.AreBrakeLightsOn) > 0;
|
||||||
DebugSyncPed.VehAreHighBeamsOn = (flags.Value & (ushort)VehicleDataFlags.AreHighBeamsOn) > 0;
|
DebugSyncPed.VehAreHighBeamsOn = (flags.Value & (ushort)VehicleDataFlags.AreHighBeamsOn) > 0;
|
||||||
DebugSyncPed.VehIsSireneActive = (flags.Value & (ushort)VehicleDataFlags.IsSirenActive) > 0;
|
DebugSyncPed.VehIsSireneActive = (flags.Value & (ushort)VehicleDataFlags.IsSirenActive) > 0;
|
||||||
DebugSyncPed.VehicleDead = (flags.Value & (ushort)VehicleDataFlags.IsDead) > 0;
|
DebugSyncPed.VehicleDead = (flags.Value & (ushort)VehicleDataFlags.IsDead) > 0;
|
||||||
@ -392,7 +393,7 @@ namespace CoopClient
|
|||||||
DebugSyncPed.Transformed = (flags.Value & (ushort)VehicleDataFlags.IsTransformed) > 0;
|
DebugSyncPed.Transformed = (flags.Value & (ushort)VehicleDataFlags.IsTransformed) > 0;
|
||||||
DebugSyncPed.VehRoofOpened = (flags.Value & (ushort)VehicleDataFlags.RoofOpened) > 0;
|
DebugSyncPed.VehRoofOpened = (flags.Value & (ushort)VehicleDataFlags.RoofOpened) > 0;
|
||||||
DebugSyncPed.VehLandingGear = veh.IsPlane ? (byte)veh.LandingGearState : (byte)0;
|
DebugSyncPed.VehLandingGear = veh.IsPlane ? (byte)veh.LandingGearState : (byte)0;
|
||||||
|
|
||||||
if (DebugSyncPed.MainVehicle != null && DebugSyncPed.MainVehicle.Exists() && player.IsInVehicle())
|
if (DebugSyncPed.MainVehicle != null && DebugSyncPed.MainVehicle.Exists() && player.IsInVehicle())
|
||||||
{
|
{
|
||||||
Function.Call(Hash.SET_ENTITY_NO_COLLISION_ENTITY, DebugSyncPed.MainVehicle.Handle, veh.Handle, false);
|
Function.Call(Hash.SET_ENTITY_NO_COLLISION_ENTITY, DebugSyncPed.MainVehicle.Handle, veh.Handle, false);
|
||||||
|
@ -149,14 +149,15 @@ namespace CoopClient
|
|||||||
{
|
{
|
||||||
IsEngineRunning = 1 << 0,
|
IsEngineRunning = 1 << 0,
|
||||||
AreLightsOn = 1 << 1,
|
AreLightsOn = 1 << 1,
|
||||||
AreHighBeamsOn = 1 << 2,
|
AreBrakeLightsOn = 1 << 2,
|
||||||
IsSirenActive = 1 << 3,
|
AreHighBeamsOn = 1 << 3,
|
||||||
IsDead = 1 << 4,
|
IsSirenActive = 1 << 4,
|
||||||
IsHornActive = 1 << 5,
|
IsDead = 1 << 5,
|
||||||
IsTransformed = 1 << 6,
|
IsHornActive = 1 << 6,
|
||||||
RoofOpened = 1 << 7,
|
IsTransformed = 1 << 7,
|
||||||
OnTurretSeat = 1 << 8,
|
RoofOpened = 1 << 8,
|
||||||
IsPlane = 1 << 9
|
OnTurretSeat = 1 << 9,
|
||||||
|
IsPlane = 1 << 10
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -187,6 +187,11 @@ namespace CoopClient
|
|||||||
flags |= (ushort)VehicleDataFlags.AreLightsOn;
|
flags |= (ushort)VehicleDataFlags.AreLightsOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (veh.BrakePower >= 0.01f)
|
||||||
|
{
|
||||||
|
flags |= (ushort)VehicleDataFlags.AreBrakeLightsOn;
|
||||||
|
}
|
||||||
|
|
||||||
if (veh.AreHighBeamsOn)
|
if (veh.AreHighBeamsOn)
|
||||||
{
|
{
|
||||||
flags |= (ushort)VehicleDataFlags.AreHighBeamsOn;
|
flags |= (ushort)VehicleDataFlags.AreHighBeamsOn;
|
||||||
|
@ -135,14 +135,15 @@ namespace CoopServer
|
|||||||
{
|
{
|
||||||
IsEngineRunning = 1 << 0,
|
IsEngineRunning = 1 << 0,
|
||||||
AreLightsOn = 1 << 1,
|
AreLightsOn = 1 << 1,
|
||||||
AreHighBeamsOn = 1 << 2,
|
AreBrakeLightsOn = 1 << 2,
|
||||||
IsSirenActive = 1 << 3,
|
AreHighBeamsOn = 1 << 3,
|
||||||
IsDead = 1 << 4,
|
IsSirenActive = 1 << 4,
|
||||||
IsHornActive = 1 << 5,
|
IsDead = 1 << 5,
|
||||||
IsTransformed = 1 << 6,
|
IsHornActive = 1 << 6,
|
||||||
RoofOpened = 1 << 7,
|
IsTransformed = 1 << 7,
|
||||||
OnTurretSeat = 1 << 8,
|
RoofOpened = 1 << 8,
|
||||||
IsPlane = 1 << 9
|
OnTurretSeat = 1 << 9,
|
||||||
|
IsPlane = 1 << 10
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VehicleDamageModel
|
struct VehicleDamageModel
|
||||||
|
Reference in New Issue
Block a user