New vehicle synchronization added. Some changes

This commit is contained in:
EntenKoeniq
2021-11-19 08:40:40 +01:00
parent 13cd3527e0
commit 5c14d2300b
6 changed files with 140 additions and 88 deletions

View File

@ -599,28 +599,38 @@ namespace CoopClient
Position = player.Position.ToLVector()
},
ModelHash = player.Model.Hash,
Props = Util.GetPedProps(player),
Props = player.GetPedProps(),
Rotation = player.Rotation.ToLVector(),
Velocity = player.Velocity.ToLVector(),
Speed = Util.GetPedSpeed(player),
AimCoords = Util.GetPedAimCoords(player, false).ToLVector(),
Speed = player.GetPedSpeed(),
AimCoords = player.GetPedAimCoords(false).ToLVector(),
CurrentWeaponHash = (int)player.Weapons.Current.Hash,
Flag = Util.GetPedFlags(player, true, true)
Flag = player.GetPedFlags(true, true)
}.PacketToNetOutGoingMessage(outgoingMessage);
}
else
{
bool isDriver = Util.GetResponsiblePedHandle(player.CurrentVehicle) == player.Handle;
bool isDriver = player.CurrentVehicle.GetResponsiblePedHandle() == player.Handle;
int secondaryColor = 0;
int primaryColor = 0;
int tyreFlag = 0;
if (isDriver)
{
unsafe
{
Function.Call<int>(Hash.GET_VEHICLE_COLOURS, player.CurrentVehicle, &primaryColor, &secondaryColor);
}
foreach (var wheel in player.CurrentVehicle.Wheels.GetAllWheels())
{
if (wheel.IsBursted)
{
tyreFlag |= (1 << (int)wheel.BoneId);
}
}
}
new FullSyncPlayerVehPacket()
@ -632,19 +642,21 @@ namespace CoopClient
Position = player.Position.ToLVector()
},
ModelHash = player.Model.Hash,
Props = Util.GetPedProps(player),
Props = player.GetPedProps(),
VehModelHash = player.CurrentVehicle.Model.Hash,
VehSeatIndex = (int)player.SeatIndex,
VehPosition = isDriver ? player.CurrentVehicle.Position.ToLVector() : new LVector3(),
VehRotation = isDriver ? player.CurrentVehicle.Quaternion.ToLQuaternion() : new LQuaternion(),
VehEngineHealth = isDriver ? player.CurrentVehicle.EngineHealth : 0f,
VehRPM = isDriver ? player.CurrentVehicle.CurrentRPM : 0f,
VehVelocity = isDriver ? player.CurrentVehicle.Velocity.ToLVector() : new LVector3(),
VehSpeed = isDriver ? player.CurrentVehicle.Speed : 0f,
VehSteeringAngle = isDriver ? player.CurrentVehicle.SteeringAngle : 0f,
VehColors = isDriver ? new int[] { primaryColor, secondaryColor } : new int[0],
VehMods = isDriver ? Util.GetVehicleMods(player.CurrentVehicle) : null,
VehDoors = isDriver ? Util.GetVehicleDoors(player.CurrentVehicle.Doors) : null,
Flag = Util.GetVehicleFlags(player, player.CurrentVehicle, true)
VehMods = isDriver ? player.CurrentVehicle.Mods.GetVehicleMods() : null,
VehDoors = isDriver ? player.CurrentVehicle.Doors.GetVehicleDoors() : null,
VehTires = isDriver ? tyreFlag : 0,
Flag = player.CurrentVehicle.GetVehicleFlags(true)
}.PacketToNetOutGoingMessage(outgoingMessage);
}
@ -666,15 +678,15 @@ namespace CoopClient
},
Rotation = player.Rotation.ToLVector(),
Velocity = player.Velocity.ToLVector(),
Speed = Util.GetPedSpeed(player),
AimCoords = Util.GetPedAimCoords(player, false).ToLVector(),
Speed = player.GetPedSpeed(),
AimCoords = player.GetPedAimCoords(false).ToLVector(),
CurrentWeaponHash = (int)player.Weapons.Current.Hash,
Flag = Util.GetPedFlags(player, false, true)
Flag = player.GetPedFlags(false, true)
}.PacketToNetOutGoingMessage(outgoingMessage);
}
else
{
bool isDriver = Util.GetResponsiblePedHandle(player.CurrentVehicle) == player.Handle;
bool isDriver = player.CurrentVehicle.GetResponsiblePedHandle() == player.Handle;
new LightSyncPlayerVehPacket()
{
@ -691,7 +703,7 @@ namespace CoopClient
VehVelocity = isDriver ? player.CurrentVehicle.Velocity.ToLVector() : new LVector3(),
VehSpeed = isDriver ? player.CurrentVehicle.Speed : 0f,
VehSteeringAngle = isDriver ? player.CurrentVehicle.SteeringAngle : 0f,
Flag = Util.GetVehicleFlags(player, player.CurrentVehicle, false)
Flag = player.CurrentVehicle.GetVehicleFlags(false)
}.PacketToNetOutGoingMessage(outgoingMessage);
}
}
@ -717,20 +729,20 @@ namespace CoopClient
{
ID = Main.LocalClientID + npc.Handle,
ModelHash = npc.Model.Hash,
Props = Util.GetPedProps(npc),
Props = npc.GetPedProps(),
Health = npc.Health,
Position = npc.Position.ToLVector(),
Rotation = npc.Rotation.ToLVector(),
Velocity = npc.Velocity.ToLVector(),
Speed = Util.GetPedSpeed(npc),
AimCoords = Util.GetPedAimCoords(npc, true).ToLVector(),
Speed = npc.GetPedSpeed(),
AimCoords = npc.GetPedAimCoords(true).ToLVector(),
CurrentWeaponHash = (int)npc.Weapons.Current.Hash,
Flag = Util.GetPedFlags(npc, true)
Flag = npc.GetPedFlags(true)
}.PacketToNetOutGoingMessage(outgoingMessage);
}
else
{
bool isDriver = Util.GetResponsiblePedHandle(npc.CurrentVehicle) == npc.Handle;
bool isDriver = npc.CurrentVehicle.GetResponsiblePedHandle() == npc.Handle;
int secondaryColor = 0;
int primaryColor = 0;
@ -747,7 +759,7 @@ namespace CoopClient
{
ID = Main.LocalClientID + npc.Handle,
ModelHash = npc.Model.Hash,
Props = Util.GetPedProps(npc),
Props = npc.GetPedProps(),
Health = npc.Health,
Position = npc.Position.ToLVector(),
VehModelHash = npc.CurrentVehicle.Model.Hash,
@ -755,13 +767,15 @@ namespace CoopClient
VehPosition = isDriver ? npc.CurrentVehicle.Position.ToLVector() : new LVector3(),
VehRotation = isDriver ? npc.CurrentVehicle.Quaternion.ToLQuaternion() : new LQuaternion(),
VehEngineHealth = isDriver ? npc.CurrentVehicle.EngineHealth : 0f,
VehRPM = isDriver ? npc.CurrentVehicle.CurrentRPM : 0f,
VehVelocity = isDriver ? npc.CurrentVehicle.Velocity.ToLVector() : new LVector3(),
VehSpeed = isDriver ? npc.CurrentVehicle.Speed : 0f,
VehSteeringAngle = isDriver ? npc.CurrentVehicle.SteeringAngle : 0f,
VehColors = isDriver ? new int[] { primaryColor, secondaryColor } : new int[0],
VehMods = isDriver ? Util.GetVehicleMods(npc.CurrentVehicle) : null,
VehDoors = isDriver ? Util.GetVehicleDoors(npc.CurrentVehicle.Doors) : null,
Flag = Util.GetVehicleFlags(npc, npc.CurrentVehicle, true)
VehMods = isDriver ? npc.CurrentVehicle.Mods.GetVehicleMods() : null,
VehDoors = isDriver ? npc.CurrentVehicle.Doors.GetVehicleDoors() : null,
VehTires = npc.CurrentVehicle.Wheels.GetBrokenTires(),
Flag = npc.CurrentVehicle.GetVehicleFlags(true)
}.PacketToNetOutGoingMessage(outgoingMessage);
}