diff --git a/src/SampSharp.Entities/SAMP/Components/Vehicle.cs b/src/SampSharp.Entities/SAMP/Components/Vehicle.cs index c01e5200..9321e689 100644 --- a/src/SampSharp.Entities/SAMP/Components/Vehicle.cs +++ b/src/SampSharp.Entities/SAMP/Components/Vehicle.cs @@ -618,6 +618,11 @@ public void SetWindowsParameters(bool driver, bool passenger, bool backLeft, boo public void SetWindowsParameters(VehicleParameterValue driver, VehicleParameterValue passenger, VehicleParameterValue backLeft, VehicleParameterValue backRight) { + if (driver != VehicleParameterValue.Unset) driver = (VehicleParameterValue)(driver == VehicleParameterValue.On ? 0 : 1); + if (passenger != VehicleParameterValue.Unset) passenger = (VehicleParameterValue)(passenger == VehicleParameterValue.On ? 0 : 1); + if (backLeft != VehicleParameterValue.Unset) backLeft = (VehicleParameterValue)(backLeft == VehicleParameterValue.On ? 0 : 1); + if (backRight != VehicleParameterValue.Unset) backRight = (VehicleParameterValue)(backRight == VehicleParameterValue.On ? 0 : 1); + GetComponent() .SetVehicleParamsCarWindows((int)driver, (int)passenger, (int)backLeft, (int)backRight); } @@ -633,6 +638,12 @@ public void GetWindowsParameters(out VehicleParameterValue driver, out VehiclePa GetComponent() .GetVehicleParamsCarWindows(out var tmpDriver, out var tmpPassenger, out var tmpBackLeft, out var tmpBackRight); + if (tmpDriver != -1) tmpDriver = (tmpDriver == 0 ? 1 : 0); + if (tmpPassenger != -1) tmpPassenger = (tmpPassenger == 0 ? 1 : 0); + if (tmpBackLeft != -1) tmpBackLeft = (tmpBackLeft == 0 ? 1 : 0); + if (tmpBackRight != -1) tmpBackRight = (tmpBackRight == 0 ? 1 : 0); + + driver = (VehicleParameterValue)tmpDriver; passenger = (VehicleParameterValue)tmpPassenger; backLeft = (VehicleParameterValue)tmpBackLeft; diff --git a/src/SampSharp.GameMode/World/BaseVehicle.cs b/src/SampSharp.GameMode/World/BaseVehicle.cs index 18d5bbe2..4453c80c 100644 --- a/src/SampSharp.GameMode/World/BaseVehicle.cs +++ b/src/SampSharp.GameMode/World/BaseVehicle.cs @@ -770,7 +770,13 @@ public virtual void SetWindowsParameters(VehicleParameterValue driver, VehiclePa { AssertNotDisposed(); - VehicleInternal.Instance.SetVehicleParamsCarWindows(Id, (int)driver, (int)passenger, (int)backleft, (int)backright); + if (driver != VehicleParameterValue.Unset) driver = (VehicleParameterValue)(driver == VehicleParameterValue.On ? 0 : 1); + if (passenger != VehicleParameterValue.Unset) passenger = (VehicleParameterValue)(passenger == VehicleParameterValue.On ? 0 : 1); + if (backleft != VehicleParameterValue.Unset) backleft = (VehicleParameterValue)(backleft == VehicleParameterValue.On ? 0 : 1); + if (backright != VehicleParameterValue.Unset) backright = (VehicleParameterValue)(backright == VehicleParameterValue.On ? 0 : 1); + + + VehicleInternal.Instance.SetVehicleParamsCarWindows(Id,(int)driver,(int)passenger,(int)backleft,(int)backright); } /// Gets the windows parameters. @@ -784,8 +790,15 @@ public virtual void GetWindowsParameters(out VehicleParameterValue driver, out V AssertNotDisposed(); VehicleInternal.Instance.GetVehicleParamsCarWindows(Id, out var tmpDriver, out var tmpPassenger, out var tmpBackleft, out var tmpBackright); - driver = (VehicleParameterValue)tmpDriver; - passenger = (VehicleParameterValue)tmpPassenger; + if (tmpDriver != -1) tmpDriver = (tmpDriver == 0 ? 1 : 0); + if (tmpPassenger != -1) tmpPassenger = (tmpPassenger == 0 ? 1 : 0); + if (tmpBackleft != -1) tmpBackleft = (tmpBackleft == 0 ? 1 : 0); + if (tmpBackright != -1) tmpBackright = (tmpBackright == 0 ? 1 : 0); + + + + driver = (VehicleParameterValue) tmpDriver; + passenger = (VehicleParameterValue)tmpPassenger; backleft = (VehicleParameterValue)tmpBackleft; backright = (VehicleParameterValue)tmpBackright; }