Added vehicle roof sync
This commit is contained in:
@ -70,7 +70,7 @@ namespace CoopClient.Entities
|
|||||||
internal bool VehAreLightsOn { get; set; }
|
internal bool VehAreLightsOn { get; set; }
|
||||||
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 VehIsSireneActive { get; set; }
|
internal bool VehIsSireneActive { get; set; }
|
||||||
private VehicleDoors[] LastVehDoors;
|
private VehicleDoors[] LastVehDoors;
|
||||||
internal VehicleDoors[] VehDoors { get; set; }
|
internal VehicleDoors[] VehDoors { get; set; }
|
||||||
@ -273,6 +273,15 @@ namespace CoopClient.Entities
|
|||||||
MainVehicle.SoundHorn(1);
|
MainVehicle.SoundHorn(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MainVehicle.HasRoof)
|
||||||
|
{
|
||||||
|
bool roofOpened = MainVehicle.RoofState == VehicleRoofState.Opened || MainVehicle.RoofState == VehicleRoofState.Opening;
|
||||||
|
if (roofOpened != VehRoofOpened)
|
||||||
|
{
|
||||||
|
MainVehicle.RoofState = VehRoofOpened ? VehicleRoofState.Opening : VehicleRoofState.Closing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle, CurrentVehicleSpeed > 0.2f && LastVehicleSpeed > CurrentVehicleSpeed);
|
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle, CurrentVehicleSpeed > 0.2f && LastVehicleSpeed > CurrentVehicleSpeed);
|
||||||
|
|
||||||
if (LastSyncWasFull)
|
if (LastSyncWasFull)
|
||||||
|
@ -251,11 +251,11 @@ namespace CoopClient
|
|||||||
}
|
}
|
||||||
Players.Clear();
|
Players.Clear();
|
||||||
|
|
||||||
foreach (KeyValuePair<long, EntitiesPed> Npc in NPCs)
|
foreach (KeyValuePair<long, EntitiesPed> npc in NPCs)
|
||||||
{
|
{
|
||||||
Npc.Value.Character?.CurrentVehicle?.Delete();
|
npc.Value.Character?.CurrentVehicle?.Delete();
|
||||||
Npc.Value.Character?.Kill();
|
npc.Value.Character?.Kill();
|
||||||
Npc.Value.Character?.Delete();
|
npc.Value.Character?.Delete();
|
||||||
}
|
}
|
||||||
NPCs.Clear();
|
NPCs.Clear();
|
||||||
|
|
||||||
@ -332,6 +332,7 @@ namespace CoopClient
|
|||||||
DebugSyncPed.VehicleDead = (flags.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
DebugSyncPed.VehicleDead = (flags.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
||||||
DebugSyncPed.IsHornActive = (flags.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
DebugSyncPed.IsHornActive = (flags.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
||||||
DebugSyncPed.Transformed = (flags.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
DebugSyncPed.Transformed = (flags.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
||||||
|
DebugSyncPed.VehRoofOpened = (flags.Value & (byte)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())
|
||||||
|
@ -340,6 +340,7 @@ namespace CoopClient
|
|||||||
player.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
player.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
||||||
player.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
player.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
||||||
player.Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
player.Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
||||||
|
player.VehRoofOpened = (packet.Flag.Value & (byte)VehicleDataFlags.RoofOpened) > 0;
|
||||||
player.IsInVehicle = true;
|
player.IsInVehicle = true;
|
||||||
player.LastSyncWasFull = true;
|
player.LastSyncWasFull = true;
|
||||||
|
|
||||||
@ -397,6 +398,7 @@ namespace CoopClient
|
|||||||
player.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
player.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
||||||
player.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
player.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
||||||
player.Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
player.Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
||||||
|
player.VehRoofOpened = (packet.Flag.Value & (byte)VehicleDataFlags.RoofOpened) > 0;
|
||||||
player.IsInVehicle = true;
|
player.IsInVehicle = true;
|
||||||
player.LastSyncWasFull = false;
|
player.LastSyncWasFull = false;
|
||||||
|
|
||||||
@ -639,6 +641,7 @@ namespace CoopClient
|
|||||||
npc.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
npc.VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0;
|
||||||
npc.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
npc.IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0;
|
||||||
npc.Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
npc.Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0;
|
||||||
|
npc.VehRoofOpened = (packet.Flag.Value & (byte)VehicleDataFlags.RoofOpened) > 0;
|
||||||
npc.IsInVehicle = true;
|
npc.IsInVehicle = true;
|
||||||
npc.LastSyncWasFull = true;
|
npc.LastSyncWasFull = true;
|
||||||
|
|
||||||
@ -674,6 +677,7 @@ namespace CoopClient
|
|||||||
VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0,
|
VehicleDead = (packet.Flag.Value & (byte)VehicleDataFlags.IsDead) > 0,
|
||||||
IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0,
|
IsHornActive = (packet.Flag.Value & (byte)VehicleDataFlags.IsHornActive) > 0,
|
||||||
Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0,
|
Transformed = (packet.Flag.Value & (byte)VehicleDataFlags.IsTransformed) > 0,
|
||||||
|
VehRoofOpened = (packet.Flag.Value & (byte)VehicleDataFlags.RoofOpened) > 0,
|
||||||
IsInVehicle = true,
|
IsInVehicle = true,
|
||||||
LastSyncWasFull = true,
|
LastSyncWasFull = true,
|
||||||
|
|
||||||
|
@ -164,7 +164,8 @@ namespace CoopClient
|
|||||||
IsSirenActive = 1 << 3,
|
IsSirenActive = 1 << 3,
|
||||||
IsDead = 1 << 4,
|
IsDead = 1 << 4,
|
||||||
IsHornActive = 1 << 5,
|
IsHornActive = 1 << 5,
|
||||||
IsTransformed = 1 << 6
|
IsTransformed = 1 << 6,
|
||||||
|
RoofOpened = 1 << 7
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -207,6 +207,11 @@ namespace CoopClient
|
|||||||
flags |= (byte)VehicleDataFlags.IsTransformed;
|
flags |= (byte)VehicleDataFlags.IsTransformed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (veh.HasRoof && (veh.RoofState == VehicleRoofState.Opened || veh.RoofState == VehicleRoofState.Opening))
|
||||||
|
{
|
||||||
|
flags |= (byte)VehicleDataFlags.RoofOpened;
|
||||||
|
}
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +107,8 @@ namespace CoopServer
|
|||||||
IsSirenActive = 1 << 3,
|
IsSirenActive = 1 << 3,
|
||||||
IsDead = 1 << 4,
|
IsDead = 1 << 4,
|
||||||
IsHornActive = 1 << 5,
|
IsHornActive = 1 << 5,
|
||||||
IsTransformed = 1 << 6
|
IsTransformed = 1 << 6,
|
||||||
|
RoofOpened = 1 << 7
|
||||||
}
|
}
|
||||||
|
|
||||||
[ProtoContract]
|
[ProtoContract]
|
||||||
|
Reference in New Issue
Block a user