/// <summary> /// Pays a taxi meter fee in a car /// </summary> /// <param name="payer">Payer</param> public void PayTaxiMeterFee(Character payer) { // Give money to driver // Remove taxi meter RPVehicle v = VehicleManager.Instance().GetVehicleForCharacter(payer); TaxiMeter meter = GetTaxiMeterForCharacterInTaxi(payer, v.id); if (meter == null) { payer.TriggerEvent("You don't have an active taxi fee in this car"); return; } if (v == VehicleManager.Instance().GetVehicleForCharacter(meter.setter)) { if (payer.money < meter.money) { payer.SendErrorNotification("You don't have enough money to pay the taxi fee."); return; } payer.SetMoney(payer.money - meter.money); meter.setter.SetMoney(meter.setter.money + meter.money); payer.SendSuccessNotification(String.Format("You payed a taxi fee of ${0}", meter.money)); meter.setter.SendNotification(String.Format("You received taxi fee payment of ${0} from {1}", meter.money, payer.fullName)); // Destroy the taxi meter RemoveTaxiMeterFromCharacterInTaxi(payer, v.id); } }
/// <summary> /// When character enters taxi, this is ran /// </summary> /// <param name="character">Character</param> /// <param name="vehicleHandle">Vehicle handle</param> /// <param name="seat">Seat</param> private void CharacterEnteredTaxi(Character character, NetHandle vehicleHandle, int seat) { if (VehicleManager.Instance().DoesVehicleHandleHaveRPVehicle(vehicleHandle)) { RPVehicle vehicle = VehicleManager.Instance().GetVehicleForHandle(vehicleHandle); if (IsTaxiMeterSetForCharacterOnCar(character, vehicle.id)) { SetTaxiMeterHUDForCharacter(character, vehicle.id); } } }
/// <summary> /// Stops a taxi meter for character /// </summary> /// <param name="setter">Setter</param> /// <param name="character">Character</param> public void StopTaxiMeterForCharacter(Character setter, Character character) { RPVehicle v = VehicleManager.Instance().GetVehicleForCharacter(setter); TaxiMeter meter = GetTaxiMeterForCharacterInTaxi(character, v.id); if (meter == null) { return; } GetTaxiMeterForCharacterInTaxi(character, v.id).taxiTimer.Stop(); setter.SendNotification(String.Format("Taxi meter stopped for {0}", character.fullName)); }
/// <summary> /// Sets taxi meter for character /// </summary> /// <param name="setter">Setter</param> /// <param name="character">Character to who the meter is set</param> public void SetTaxiMeterForCharacter(Character setter, Character character) { // Has to be in same car // Can't have timer going RPVehicle taxiVehicle = VehicleManager.Instance().GetVehicleForCharacter(setter); RPVehicle v2 = VehicleManager.Instance().GetVehicleForCharacter(character); if (taxiVehicle == null || taxiVehicle.handle.model != (int)API.shared.vehicleNameToModel("Taxi")) { setter.SendNotification("You have to be in a taxi to set the meter"); return; } if (setter.ID == character.ID) { setter.SendNotification("You can't set the taxi meter on yourself"); return; } if (v2 == null || v2.id != taxiVehicle.id) { setter.SendNotification("Your customer has to be in your the taxi"); return; } if (IsTaxiMeterSetForCharacterOnCar(character, taxiVehicle.id)) { setter.SendNotification("This customer already has an active taxi meter"); return; } if (!taxiMeters.ContainsKey(taxiVehicle.id)) { taxiMeters[taxiVehicle.id] = new Dictionary <int, TaxiMeter>(); } taxiMeters[taxiVehicle.id][character.ID] = new TaxiMeter(setter.ID, 200, new GTRPTimer(RPTimerEvent, taxiFeeInterval, new KeyValuePair <int, int>(taxiVehicle.id, character.ID), true)); // Starting money SetTaxiMeterHUDForCharacter(character, taxiVehicle.id); setter.SendNotification(String.Format("Taxi meter set for customer {0}", character.fullName)); taxiMeters[taxiVehicle.id][character.ID].taxiTimer.Start(); }