Vehicle flag fix
This commit is contained in:
@ -283,7 +283,7 @@ namespace RageCoop.Client
|
|||||||
// Main.Logger.Debug($"Creating character for incoming sync:{packet.ID}");
|
// Main.Logger.Debug($"Creating character for incoming sync:{packet.ID}");
|
||||||
EntityPool.ThreadSafe.Add(c=new SyncedPed(packet.ID));
|
EntityPool.ThreadSafe.Add(c=new SyncedPed(packet.ID));
|
||||||
}
|
}
|
||||||
PedDataFlags flags = packet.Flag;
|
PedDataFlags flags = packet.Flags;
|
||||||
c.ID=packet.ID;
|
c.ID=packet.ID;
|
||||||
c.OwnerID=packet.OwnerID;
|
c.OwnerID=packet.OwnerID;
|
||||||
c.Health = packet.Health;
|
c.Health = packet.Health;
|
||||||
@ -309,7 +309,7 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
c.AimCoords = packet.AimCoords;
|
c.AimCoords = packet.AimCoords;
|
||||||
}
|
}
|
||||||
if (packet.Flag.HasPedFlag(PedDataFlags.IsFullSync))
|
if (packet.Flags.HasPedFlag(PedDataFlags.IsFullSync))
|
||||||
{
|
{
|
||||||
c.Clothes=packet.Clothes;
|
c.Clothes=packet.Clothes;
|
||||||
c.WeaponComponents=packet.WeaponComponents;
|
c.WeaponComponents=packet.WeaponComponents;
|
||||||
@ -332,7 +332,7 @@ namespace RageCoop.Client
|
|||||||
if (v.IsLocal) { return; }
|
if (v.IsLocal) { return; }
|
||||||
v.ID= packet.ID;
|
v.ID= packet.ID;
|
||||||
v.OwnerID= packet.OwnerID;
|
v.OwnerID= packet.OwnerID;
|
||||||
v.Flags=packet.Flag;
|
v.Flags=packet.Flags;
|
||||||
v.Position=packet.Position;
|
v.Position=packet.Position;
|
||||||
v.Quaternion=packet.Quaternion;
|
v.Quaternion=packet.Quaternion;
|
||||||
v.SteeringAngle=packet.SteeringAngle;
|
v.SteeringAngle=packet.SteeringAngle;
|
||||||
@ -342,7 +342,7 @@ namespace RageCoop.Client
|
|||||||
v.RotationVelocity=packet.RotationVelocity;
|
v.RotationVelocity=packet.RotationVelocity;
|
||||||
v.DeluxoWingRatio=packet.DeluxoWingRatio;
|
v.DeluxoWingRatio=packet.DeluxoWingRatio;
|
||||||
v.LastSynced=Main.Ticked;
|
v.LastSynced=Main.Ticked;
|
||||||
if (packet.Flag.HasVehFlag(VehicleDataFlags.IsFullSync))
|
if (packet.Flags.HasVehFlag(VehicleDataFlags.IsFullSync))
|
||||||
{
|
{
|
||||||
v.DamageModel=packet.DamageModel;
|
v.DamageModel=packet.DamageModel;
|
||||||
v.EngineHealth=packet.EngineHealth;
|
v.EngineHealth=packet.EngineHealth;
|
||||||
@ -351,14 +351,6 @@ namespace RageCoop.Client
|
|||||||
v.Colors=packet.Colors;
|
v.Colors=packet.Colors;
|
||||||
v.LandingGear=packet.LandingGear;
|
v.LandingGear=packet.LandingGear;
|
||||||
v.RoofState=(VehicleRoofState)packet.RoofState;
|
v.RoofState=(VehicleRoofState)packet.RoofState;
|
||||||
v.EngineRunning = packet.Flag.HasVehFlag(VehicleDataFlags.IsEngineRunning);
|
|
||||||
v.LightsOn = packet.Flag.HasVehFlag(VehicleDataFlags.AreLightsOn);
|
|
||||||
v.BrakeLightsOn = packet.Flag.HasVehFlag(VehicleDataFlags.AreBrakeLightsOn);
|
|
||||||
v.HighBeamsOn = packet.Flag.HasVehFlag(VehicleDataFlags.AreHighBeamsOn);
|
|
||||||
v.SireneActive = packet.Flag.HasVehFlag(VehicleDataFlags.IsSirenActive);
|
|
||||||
v.IsDead = packet.Flag.HasVehFlag(VehicleDataFlags.IsDead);
|
|
||||||
v.HornActive = packet.Flag.HasVehFlag(VehicleDataFlags.IsHornActive);
|
|
||||||
v.Transformed = packet.Flag.HasVehFlag(VehicleDataFlags.IsTransformed);
|
|
||||||
v.Passengers=new Dictionary<VehicleSeat, SyncedPed>();
|
v.Passengers=new Dictionary<VehicleSeat, SyncedPed>();
|
||||||
v.LockStatus=packet.LockStatus;
|
v.LockStatus=packet.LockStatus;
|
||||||
v.RadioStation=packet.RadioStation;
|
v.RadioStation=packet.RadioStation;
|
||||||
|
@ -37,16 +37,16 @@ namespace RageCoop.Client
|
|||||||
Velocity = p.Velocity,
|
Velocity = p.Velocity,
|
||||||
Speed = p.GetPedSpeed(),
|
Speed = p.GetPedSpeed(),
|
||||||
CurrentWeaponHash = (uint)p.Weapons.Current.Hash,
|
CurrentWeaponHash = (uint)p.Weapons.Current.Hash,
|
||||||
Flag = p.GetPedFlags(),
|
Flags = p.GetPedFlags(),
|
||||||
Heading=p.Heading,
|
Heading=p.Heading,
|
||||||
};
|
};
|
||||||
if (packet.Flag.HasPedFlag(PedDataFlags.IsAiming))
|
if (packet.Flags.HasPedFlag(PedDataFlags.IsAiming))
|
||||||
{
|
{
|
||||||
packet.AimCoords = p.GetAimCoord();
|
packet.AimCoords = p.GetAimCoord();
|
||||||
}
|
}
|
||||||
if (full)
|
if (full)
|
||||||
{
|
{
|
||||||
packet.Flag |= PedDataFlags.IsFullSync;
|
packet.Flags |= PedDataFlags.IsFullSync;
|
||||||
packet.Clothes=p.GetPedClothes();
|
packet.Clothes=p.GetPedClothes();
|
||||||
packet.ModelHash=p.Model.Hash;
|
packet.ModelHash=p.Model.Hash;
|
||||||
packet.WeaponComponents=p.Weapons.Current.GetWeaponComponents();
|
packet.WeaponComponents=p.Weapons.Current.GetWeaponComponents();
|
||||||
@ -79,7 +79,7 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
ID =v.ID,
|
ID =v.ID,
|
||||||
OwnerID=v.OwnerID,
|
OwnerID=v.OwnerID,
|
||||||
Flag = veh.GetVehicleFlags(),
|
Flags = veh.GetVehicleFlags(),
|
||||||
SteeringAngle = veh.SteeringAngle,
|
SteeringAngle = veh.SteeringAngle,
|
||||||
Position = veh.PredictPosition(),
|
Position = veh.PredictPosition(),
|
||||||
Quaternion=veh.Quaternion,
|
Quaternion=veh.Quaternion,
|
||||||
@ -88,7 +88,7 @@ namespace RageCoop.Client
|
|||||||
ThrottlePower = veh.ThrottlePower,
|
ThrottlePower = veh.ThrottlePower,
|
||||||
BrakePower = veh.BrakePower,
|
BrakePower = veh.BrakePower,
|
||||||
};
|
};
|
||||||
if (packet.Flag.HasVehFlag(VehicleDataFlags.IsDeluxoHovering)) { packet.DeluxoWingRatio=v.MainVehicle.GetDeluxoWingRatio(); }
|
if (packet.Flags.HasVehFlag(VehicleDataFlags.IsDeluxoHovering)) { packet.DeluxoWingRatio=v.MainVehicle.GetDeluxoWingRatio(); }
|
||||||
if (full)
|
if (full)
|
||||||
{
|
{
|
||||||
byte primaryColor = 0;
|
byte primaryColor = 0;
|
||||||
@ -97,7 +97,7 @@ namespace RageCoop.Client
|
|||||||
{
|
{
|
||||||
Function.Call<byte>(Hash.GET_VEHICLE_COLOURS, veh, &primaryColor, &secondaryColor);
|
Function.Call<byte>(Hash.GET_VEHICLE_COLOURS, veh, &primaryColor, &secondaryColor);
|
||||||
}
|
}
|
||||||
packet.Flag |= VehicleDataFlags.IsFullSync;
|
packet.Flags |= VehicleDataFlags.IsFullSync;
|
||||||
packet.Colors = new byte[] { primaryColor, secondaryColor };
|
packet.Colors = new byte[] { primaryColor, secondaryColor };
|
||||||
packet.DamageModel=veh.GetVehicleDamageModel();
|
packet.DamageModel=veh.GetVehicleDamageModel();
|
||||||
packet.LandingGear = veh.IsAircraft ? (byte)veh.LandingGearState : (byte)0;
|
packet.LandingGear = veh.IsAircraft ? (byte)veh.LandingGearState : (byte)0;
|
||||||
|
@ -74,24 +74,28 @@ namespace RageCoop.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
#region FLAGS
|
||||||
|
internal bool EngineRunning { get { return Flags.HasVehFlag(VehicleDataFlags.IsEngineRunning); } }
|
||||||
|
private bool _lastTransformed = false;
|
||||||
|
internal bool Transformed { get { return Flags.HasVehFlag(VehicleDataFlags.IsTransformed); } }
|
||||||
|
private bool _lastHornActive = false;
|
||||||
|
internal bool HornActive { get { return Flags.HasVehFlag(VehicleDataFlags.IsHornActive); } }
|
||||||
|
internal bool LightsOn { get { return Flags.HasVehFlag(VehicleDataFlags.AreLightsOn); } }
|
||||||
|
internal bool BrakeLightsOn { get { return Flags.HasVehFlag(VehicleDataFlags.AreBrakeLightsOn); } }
|
||||||
|
internal bool HighBeamsOn { get { return Flags.HasVehFlag(VehicleDataFlags.AreHighBeamsOn); } }
|
||||||
|
internal bool SireneActive { get { return Flags.HasVehFlag(VehicleDataFlags.IsSirenActive); } }
|
||||||
|
internal bool IsDead { get { return Flags.HasVehFlag(VehicleDataFlags.IsDead); } }
|
||||||
|
internal bool IsDeluxoHovering { get { return Flags.HasVehFlag(VehicleDataFlags.IsDeluxoHovering); } }
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region -- VEHICLE STATE --
|
#region -- VEHICLE STATE --
|
||||||
internal VehicleDataFlags Flags { get; set; }
|
internal VehicleDataFlags Flags { get; set; }
|
||||||
internal bool EngineRunning { get; set; }
|
|
||||||
private bool _lastTransformed = false;
|
|
||||||
internal bool Transformed { get; set; }
|
|
||||||
private bool _lastHornActive = false;
|
|
||||||
internal bool HornActive { get; set; }
|
|
||||||
internal bool LightsOn { get; set; }
|
|
||||||
internal bool BrakeLightsOn { get; set; } = false;
|
|
||||||
internal bool HighBeamsOn { get; set; }
|
|
||||||
internal byte LandingGear { get; set; }
|
internal byte LandingGear { get; set; }
|
||||||
internal VehicleRoofState RoofState { get; set; }
|
internal VehicleRoofState RoofState { get; set; }
|
||||||
internal bool SireneActive { get; set; }
|
|
||||||
internal VehicleDamageModel DamageModel { get; set; }
|
internal VehicleDamageModel DamageModel { get; set; }
|
||||||
internal byte[] Colors { get; set; }
|
internal byte[] Colors { get; set; }
|
||||||
internal Dictionary<int, int> Mods { get; set; }
|
internal Dictionary<int, int> Mods { get; set; }
|
||||||
internal bool IsDead { get; set; }
|
|
||||||
internal float EngineHealth { get; set; }
|
internal float EngineHealth { get; set; }
|
||||||
internal VehicleLockStatus LockStatus{get;set;}
|
internal VehicleLockStatus LockStatus{get;set;}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -160,72 +164,7 @@ namespace RageCoop.Client
|
|||||||
MainVehicle.Velocity=Velocity;
|
MainVehicle.Velocity=Velocity;
|
||||||
MainVehicle.Quaternion=Quaternion;
|
MainVehicle.Quaternion=Quaternion;
|
||||||
}
|
}
|
||||||
if (DeluxoWingRatio!=-1)
|
#region FLAGS
|
||||||
{
|
|
||||||
MainVehicle.SetDeluxoWingRatio(DeluxoWingRatio);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
if (LastFullSynced>LastUpdated)
|
|
||||||
{
|
|
||||||
#region -- SYNC STATE --
|
|
||||||
#region -- PASSENGER SYNC --
|
|
||||||
|
|
||||||
// check passengers (and driver).
|
|
||||||
if (_checkSeat)
|
|
||||||
{
|
|
||||||
|
|
||||||
var currentPassengers = MainVehicle.GetPassengers();
|
|
||||||
|
|
||||||
lock (Passengers)
|
|
||||||
{
|
|
||||||
for (int i = -1; i<MainVehicle.PassengerCapacity; i++)
|
|
||||||
{
|
|
||||||
VehicleSeat seat = (VehicleSeat)i;
|
|
||||||
if (Passengers.ContainsKey(seat))
|
|
||||||
{
|
|
||||||
|
|
||||||
SyncedPed c = Passengers[seat];
|
|
||||||
if (c?.ID==Main.LocalPlayerID && (RadioStation!=Function.Call<int>(Hash.GET_PLAYER_RADIO_STATION_INDEX)))
|
|
||||||
{
|
|
||||||
Util.SetPlayerRadioIndex(RadioStation);
|
|
||||||
}
|
|
||||||
if (c?.MainPed!=null&&(!currentPassengers.ContainsKey(i))&&(!c.MainPed.IsBeingJacked)&&(!c.MainPed.IsTaskActive(TaskType.CTaskExitVehicleSeat)))
|
|
||||||
{
|
|
||||||
Passengers[seat].MainPed.SetIntoVehicle(MainVehicle, seat);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!MainVehicle.IsSeatFree(seat))
|
|
||||||
{
|
|
||||||
var p = MainVehicle.Occupants.Where(x => x.SeatIndex==seat).FirstOrDefault();
|
|
||||||
if ((p!=null)&& !p.IsTaskActive(TaskType.CTaskLeaveAnyCar))
|
|
||||||
{
|
|
||||||
p.Task.WarpOutOfVehicle(MainVehicle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
if (Colors != null && Colors != _lastVehicleColors)
|
|
||||||
{
|
|
||||||
Function.Call(Hash.SET_VEHICLE_COLOURS, MainVehicle, Colors[0], Colors[1]);
|
|
||||||
|
|
||||||
_lastVehicleColors = Colors;
|
|
||||||
}
|
|
||||||
MainVehicle.EngineHealth=EngineHealth;
|
|
||||||
if (Mods != null && !Mods.Compare(_lastVehicleMods))
|
|
||||||
{
|
|
||||||
Function.Call(Hash.SET_VEHICLE_MOD_KIT, MainVehicle, 0);
|
|
||||||
|
|
||||||
foreach (KeyValuePair<int, int> mod in Mods)
|
|
||||||
{
|
|
||||||
MainVehicle.Mods[(VehicleModType)mod.Key].Index = mod.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
_lastVehicleMods = Mods;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (IsDead)
|
if (IsDead)
|
||||||
{
|
{
|
||||||
if (MainVehicle.IsDead)
|
if (MainVehicle.IsDead)
|
||||||
@ -315,20 +254,86 @@ namespace RageCoop.Client
|
|||||||
|
|
||||||
}
|
}
|
||||||
MainVehicle.LockStatus=LockStatus;
|
MainVehicle.LockStatus=LockStatus;
|
||||||
if (Flags.HasVehFlag(VehicleDataFlags.IsDeluxoHovering))
|
if (IsDeluxoHovering)
|
||||||
{
|
{
|
||||||
if (!MainVehicle.IsDeluxoHovering())
|
if (!MainVehicle.IsDeluxoHovering())
|
||||||
{
|
{
|
||||||
MainVehicle.SetDeluxoHoverState(true);
|
MainVehicle.SetDeluxoHoverState(true);
|
||||||
}
|
}
|
||||||
|
MainVehicle.SetDeluxoWingRatio(DeluxoWingRatio);
|
||||||
}
|
}
|
||||||
else if(Model==1483171323)
|
else if (Model==1483171323)
|
||||||
{
|
{
|
||||||
if (MainVehicle.IsDeluxoHovering())
|
if (MainVehicle.IsDeluxoHovering())
|
||||||
{
|
{
|
||||||
MainVehicle.SetDeluxoHoverState(false);
|
MainVehicle.SetDeluxoHoverState(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
if (LastFullSynced>=LastUpdated)
|
||||||
|
{
|
||||||
|
#region -- SYNC STATE --
|
||||||
|
#region -- PASSENGER SYNC --
|
||||||
|
|
||||||
|
// check passengers (and driver).
|
||||||
|
if (_checkSeat)
|
||||||
|
{
|
||||||
|
|
||||||
|
var currentPassengers = MainVehicle.GetPassengers();
|
||||||
|
|
||||||
|
lock (Passengers)
|
||||||
|
{
|
||||||
|
for (int i = -1; i<MainVehicle.PassengerCapacity; i++)
|
||||||
|
{
|
||||||
|
VehicleSeat seat = (VehicleSeat)i;
|
||||||
|
if (Passengers.ContainsKey(seat))
|
||||||
|
{
|
||||||
|
|
||||||
|
SyncedPed c = Passengers[seat];
|
||||||
|
if (c?.ID==Main.LocalPlayerID && (RadioStation!=Function.Call<int>(Hash.GET_PLAYER_RADIO_STATION_INDEX)))
|
||||||
|
{
|
||||||
|
Util.SetPlayerRadioIndex(RadioStation);
|
||||||
|
}
|
||||||
|
if (c?.MainPed!=null&&(!currentPassengers.ContainsKey(i))&&(!c.MainPed.IsBeingJacked)&&(!c.MainPed.IsTaskActive(TaskType.CTaskExitVehicleSeat)))
|
||||||
|
{
|
||||||
|
Passengers[seat].MainPed.SetIntoVehicle(MainVehicle, seat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!MainVehicle.IsSeatFree(seat))
|
||||||
|
{
|
||||||
|
var p = MainVehicle.Occupants.Where(x => x.SeatIndex==seat).FirstOrDefault();
|
||||||
|
if ((p!=null)&& !p.IsTaskActive(TaskType.CTaskLeaveAnyCar))
|
||||||
|
{
|
||||||
|
p.Task.WarpOutOfVehicle(MainVehicle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
if (Colors != null && Colors != _lastVehicleColors)
|
||||||
|
{
|
||||||
|
Function.Call(Hash.SET_VEHICLE_COLOURS, MainVehicle, Colors[0], Colors[1]);
|
||||||
|
|
||||||
|
_lastVehicleColors = Colors;
|
||||||
|
}
|
||||||
|
MainVehicle.EngineHealth=EngineHealth;
|
||||||
|
if (Mods != null && !Mods.Compare(_lastVehicleMods))
|
||||||
|
{
|
||||||
|
Function.Call(Hash.SET_VEHICLE_MOD_KIT, MainVehicle, 0);
|
||||||
|
|
||||||
|
foreach (KeyValuePair<int, int> mod in Mods)
|
||||||
|
{
|
||||||
|
MainVehicle.Mods[(VehicleModType)mod.Key].Index = mod.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
_lastVehicleMods = Mods;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (Function.Call<string>(Hash.GET_VEHICLE_NUMBER_PLATE_TEXT, MainVehicle)!=LicensePlate)
|
if (Function.Call<string>(Hash.GET_VEHICLE_NUMBER_PLATE_TEXT, MainVehicle)!=LicensePlate)
|
||||||
{
|
{
|
||||||
|
@ -16,7 +16,7 @@ namespace RageCoop.Core
|
|||||||
public int ID { get; set; }
|
public int ID { get; set; }
|
||||||
|
|
||||||
public int OwnerID { get; set; }
|
public int OwnerID { get; set; }
|
||||||
public PedDataFlags Flag { get; set; }
|
public PedDataFlags Flags { get; set; }
|
||||||
|
|
||||||
public int Health { get; set; }
|
public int Health { get; set; }
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ namespace RageCoop.Core
|
|||||||
|
|
||||||
|
|
||||||
// Write ped flags
|
// Write ped flags
|
||||||
byteArray.AddRange(BitConverter.GetBytes((ushort)Flag));
|
byteArray.AddRange(BitConverter.GetBytes((ushort)Flags));
|
||||||
|
|
||||||
// Write ped health
|
// Write ped health
|
||||||
byteArray.AddRange(BitConverter.GetBytes(Health));
|
byteArray.AddRange(BitConverter.GetBytes(Health));
|
||||||
@ -87,7 +87,7 @@ namespace RageCoop.Core
|
|||||||
// Write ped weapon hash
|
// Write ped weapon hash
|
||||||
byteArray.AddRange(BitConverter.GetBytes(CurrentWeaponHash));
|
byteArray.AddRange(BitConverter.GetBytes(CurrentWeaponHash));
|
||||||
|
|
||||||
if (Flag.HasPedFlag(PedDataFlags.IsAiming))
|
if (Flags.HasPedFlag(PedDataFlags.IsAiming))
|
||||||
{
|
{
|
||||||
// Write ped aim coords
|
// Write ped aim coords
|
||||||
byteArray.AddVector3(AimCoords);
|
byteArray.AddVector3(AimCoords);
|
||||||
@ -95,7 +95,7 @@ namespace RageCoop.Core
|
|||||||
|
|
||||||
byteArray.AddFloat(Heading);
|
byteArray.AddFloat(Heading);
|
||||||
|
|
||||||
if (Flag.HasPedFlag(PedDataFlags.IsFullSync))
|
if (Flags.HasPedFlag(PedDataFlags.IsFullSync))
|
||||||
{
|
{
|
||||||
// Write model hash
|
// Write model hash
|
||||||
byteArray.AddInt(ModelHash);
|
byteArray.AddInt(ModelHash);
|
||||||
@ -147,7 +147,7 @@ namespace RageCoop.Core
|
|||||||
OwnerID=reader.ReadInt();
|
OwnerID=reader.ReadInt();
|
||||||
|
|
||||||
// Read player flags
|
// Read player flags
|
||||||
Flag = (PedDataFlags)reader.ReadUShort();
|
Flags = (PedDataFlags)reader.ReadUShort();
|
||||||
|
|
||||||
// Read player health
|
// Read player health
|
||||||
Health = reader.ReadInt();
|
Health = reader.ReadInt();
|
||||||
@ -168,7 +168,7 @@ namespace RageCoop.Core
|
|||||||
CurrentWeaponHash = reader.ReadUInt();
|
CurrentWeaponHash = reader.ReadUInt();
|
||||||
|
|
||||||
// Try to read aim coords
|
// Try to read aim coords
|
||||||
if (Flag.HasPedFlag(PedDataFlags.IsAiming))
|
if (Flags.HasPedFlag(PedDataFlags.IsAiming))
|
||||||
{
|
{
|
||||||
// Read player aim coords
|
// Read player aim coords
|
||||||
AimCoords = reader.ReadVector3();
|
AimCoords = reader.ReadVector3();
|
||||||
@ -176,7 +176,7 @@ namespace RageCoop.Core
|
|||||||
|
|
||||||
Heading=reader.ReadFloat();
|
Heading=reader.ReadFloat();
|
||||||
|
|
||||||
if (Flag.HasPedFlag(PedDataFlags.IsFullSync))
|
if (Flags.HasPedFlag(PedDataFlags.IsFullSync))
|
||||||
{
|
{
|
||||||
// Read player model hash
|
// Read player model hash
|
||||||
ModelHash = reader.ReadInt();
|
ModelHash = reader.ReadInt();
|
@ -17,7 +17,7 @@ namespace RageCoop.Core
|
|||||||
|
|
||||||
public int OwnerID { get; set; }
|
public int OwnerID { get; set; }
|
||||||
|
|
||||||
public VehicleDataFlags Flag { get; set; }
|
public VehicleDataFlags Flags { get; set; }
|
||||||
|
|
||||||
public Vector3 Position { get; set; }
|
public Vector3 Position { get; set; }
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ namespace RageCoop.Core
|
|||||||
|
|
||||||
byteArray.AddInt(ID);
|
byteArray.AddInt(ID);
|
||||||
byteArray.AddInt(OwnerID);
|
byteArray.AddInt(OwnerID);
|
||||||
byteArray.AddUshort((ushort)Flag);
|
byteArray.AddUshort((ushort)Flags);
|
||||||
byteArray.AddVector3(Position);
|
byteArray.AddVector3(Position);
|
||||||
byteArray.AddQuaternion(Quaternion);
|
byteArray.AddQuaternion(Quaternion);
|
||||||
byteArray.AddVector3(Velocity);
|
byteArray.AddVector3(Velocity);
|
||||||
@ -80,23 +80,23 @@ namespace RageCoop.Core
|
|||||||
byteArray.AddFloat(BrakePower);
|
byteArray.AddFloat(BrakePower);
|
||||||
byteArray.AddFloat(SteeringAngle);
|
byteArray.AddFloat(SteeringAngle);
|
||||||
|
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.IsDeluxoHovering))
|
if (Flags.HasVehFlag(VehicleDataFlags.IsDeluxoHovering))
|
||||||
{
|
{
|
||||||
byteArray.AddFloat(DeluxoWingRatio);
|
byteArray.AddFloat(DeluxoWingRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.IsFullSync))
|
if (Flags.HasVehFlag(VehicleDataFlags.IsFullSync))
|
||||||
{
|
{
|
||||||
byteArray.AddInt(ModelHash);
|
byteArray.AddInt(ModelHash);
|
||||||
byteArray.AddFloat(EngineHealth);
|
byteArray.AddFloat(EngineHealth);
|
||||||
|
|
||||||
// Check
|
// Check
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.IsAircraft))
|
if (Flags.HasVehFlag(VehicleDataFlags.IsAircraft))
|
||||||
{
|
{
|
||||||
// Write the vehicle landing gear
|
// Write the vehicle landing gear
|
||||||
byteArray.Add(LandingGear);
|
byteArray.Add(LandingGear);
|
||||||
}
|
}
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.HasRoof))
|
if (Flags.HasVehFlag(VehicleDataFlags.HasRoof))
|
||||||
{
|
{
|
||||||
byteArray.Add(RoofState);
|
byteArray.Add(RoofState);
|
||||||
}
|
}
|
||||||
@ -181,7 +181,7 @@ namespace RageCoop.Core
|
|||||||
|
|
||||||
OwnerID = reader.ReadInt();
|
OwnerID = reader.ReadInt();
|
||||||
|
|
||||||
Flag=(VehicleDataFlags)reader.ReadUShort();
|
Flags=(VehicleDataFlags)reader.ReadUShort();
|
||||||
|
|
||||||
// Read position
|
// Read position
|
||||||
Position = reader.ReadVector3();
|
Position = reader.ReadVector3();
|
||||||
@ -205,12 +205,12 @@ namespace RageCoop.Core
|
|||||||
SteeringAngle = reader.ReadFloat();
|
SteeringAngle = reader.ReadFloat();
|
||||||
|
|
||||||
|
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.IsDeluxoHovering))
|
if (Flags.HasVehFlag(VehicleDataFlags.IsDeluxoHovering))
|
||||||
{
|
{
|
||||||
DeluxoWingRatio = reader.ReadFloat();
|
DeluxoWingRatio = reader.ReadFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.IsFullSync))
|
if (Flags.HasVehFlag(VehicleDataFlags.IsFullSync))
|
||||||
{
|
{
|
||||||
// Read vehicle model hash
|
// Read vehicle model hash
|
||||||
ModelHash = reader.ReadInt();
|
ModelHash = reader.ReadInt();
|
||||||
@ -220,12 +220,12 @@ namespace RageCoop.Core
|
|||||||
|
|
||||||
|
|
||||||
// Check
|
// Check
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.IsAircraft))
|
if (Flags.HasVehFlag(VehicleDataFlags.IsAircraft))
|
||||||
{
|
{
|
||||||
// Read vehicle landing gear
|
// Read vehicle landing gear
|
||||||
LandingGear = reader.ReadByte();
|
LandingGear = reader.ReadByte();
|
||||||
}
|
}
|
||||||
if (Flag.HasVehFlag(VehicleDataFlags.HasRoof))
|
if (Flags.HasVehFlag(VehicleDataFlags.HasRoof))
|
||||||
{
|
{
|
||||||
RoofState=reader.ReadByte();
|
RoofState=reader.ReadByte();
|
||||||
}
|
}
|
@ -223,7 +223,7 @@ namespace RageCoop.Server.Scripting
|
|||||||
veh._pos = p.Position;
|
veh._pos = p.Position;
|
||||||
veh.Owner=sender;
|
veh.Owner=sender;
|
||||||
veh._quat=p.Quaternion;
|
veh._quat=p.Quaternion;
|
||||||
if (p.Flag.HasVehFlag(VehicleDataFlags.IsFullSync))
|
if (p.Flags.HasVehFlag(VehicleDataFlags.IsFullSync))
|
||||||
{
|
{
|
||||||
foreach (var pair in p.Passengers)
|
foreach (var pair in p.Passengers)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user