private void Despawn(IRpcEvent e, int vehicleNetId) { if (API.NetworkDoesNetworkIdExist(vehicleNetId)) { var citVeh = new CitizenFX.Core.Vehicle(API.NetToVeh(vehicleNetId)); citVeh.Delete(); } this.Tracked.Remove(this.Tracked.FirstOrDefault(v => v.NetId == vehicleNetId)); this.Rpc.Event(VehicleEvents.Despawn).Trigger(vehicleNetId); }
private void Despawn(ICommunicationMessage e, int vehicleNetId) { if (API.NetworkDoesNetworkIdExist(vehicleNetId)) { var citVeh = new CitizenFX.Core.Vehicle(API.NetToVeh(vehicleNetId)); citVeh.Delete(); } this.Tracked.Remove(this.Tracked.FirstOrDefault(v => v.NetId == vehicleNetId)); this.Comms.Event(VehicleEvents.Despawn).ToServer().Emit(vehicleNetId); }
private void SaveTracked() { foreach (var trackedVehicle in this.Tracked) { if (!API.NetworkDoesNetworkIdExist(trackedVehicle.NetId)) { this.Despawn(null, trackedVehicle.NetId); continue; } var vehicleHandle = API.NetToVeh(trackedVehicle.NetId); if (!API.DoesEntityExist(vehicleHandle)) { this.Despawn(null, trackedVehicle.NetId); continue; } var citVeh = new CitizenFX.Core.Vehicle(vehicleHandle); var netId = API.NetworkGetNetworkIdFromEntity(citVeh.Handle); switch (trackedVehicle.Type.VehicleType().Name) { case "Car": //var car = (Car)vehicle; // TODO: explicit converter //Add car specific props... var car = citVeh.ToVehicle <Car>(); car.Id = trackedVehicle.Id; car.TrackingUserId = this.User.Id; car.NetId = netId; this.Rpc.Event(VehicleEvents.SaveCar).Trigger(car); break; default: var vehicle = citVeh.ToVehicle <Car>(); vehicle.Id = trackedVehicle.Id; vehicle.TrackingUserId = this.User.Id; vehicle.NetId = netId; this.Rpc.Event($"igicore:vehicles:save:{trackedVehicle.Type.VehicleType().Name}") .Trigger(vehicle); break; } } }