protected override void OnUse(Ped playerped, DBVehicle dbVehicle, MyPlayer myPlayer) { // Any erfordert eine Delegate vom Typ Predicate, das als Parameter ein Objekt vom Typ der zugegriffenen Liste hat und Boolean als Rückgabetyp erwartet if (playerped.IsInAnyVehicle(false) && dbVehicle.tankful < 99) { Game.DisplaySubtitle("~h~Seller:~s~ Hey Sir, Please drive to a gas pump and then leave the car", 1000); return; } if (refuelPoints.Any(r => r.IsInRange(playerped.Position)) && dbVehicle.tankful < 99) // Wir checken, ob eines der refuelPoints Items innerhalb des Radius zum Spieler und dessen Auto ist { Game.DisplayHelp("Go to a tank column and press [E]"); if (Game.IsKeyDown(Keys.E)) { dbVehicle.tankful = maxTankful; DBVehicleManager.UpdateVehicle(dbVehicle, maxTankful); Game.DisplayHelp("Wait, your vehicle is being refueled ... "); Game.DisplaySubtitle("~h~Seller: ~b~Please wait", 4000); GameFiber.Sleep(4000); Game.DisplayHelp("Your vehicle has now a full tank!"); if (myPlayer.playerMoney >= 500) { myPlayer.playerMoney -= 500; } Game.DisplaySubtitle("~h~Seller: ~g~Thank you for your visit", 12000); } } base.OnUse(playerped, dbVehicle, myPlayer); }
public bool PlayerIsDriving(Ped playerPed, DBVehicle dbVehicle) { if (playerPed.IsInAnyVehicle(false)) { Main(playerPed, dbVehicle); return(true); } else { return(false); } }
public bool TryUse(Ped playerped, DBVehicle dbVehicle, MyPlayer myPlayer) { if (playerped.IsAlive && dbVehicle != null) { OnUse(playerped, dbVehicle, myPlayer); return(true); } else { return(false); } }
protected override void Main(Ped playerPed, DBVehicle dbVehicle) { Vehicle vehicle = playerPed.CurrentVehicle; if (dbVehicle.tankful <= 0) { vehicle.FuelTankHealth = 5.0f; return; } if (vehicle.Speed >= 1 && vehicle.Speed <= 20 && dbVehicle.tankful > 0) { float lostFuelPerSecond = 0.008f; float petrolStatus = dbVehicle.tankful -= lostFuelPerSecond * Game.FrameTime; dbVehicle.tankful = petrolStatus; } else if (vehicle.Speed >= 21 && vehicle.Speed <= 30 && dbVehicle.tankful > 0) { float lostFuelPerSecond = 0.05f; float petrolStatus = dbVehicle.tankful -= lostFuelPerSecond * Game.FrameTime; dbVehicle.tankful = petrolStatus; } else if (vehicle.Speed >= 31 && vehicle.Speed <= 45 && dbVehicle.tankful > 0) { float lostFuelPerSecond = 0.07f; HungerFactory.lostLifePerSecond = 0.006f; float petrolStatus = dbVehicle.tankful -= lostFuelPerSecond * Game.FrameTime; dbVehicle.tankful = petrolStatus; } else if (vehicle.Speed >= 45 && dbVehicle.tankful > 0) { float lostFuelPerSecond = 0.1f; HungerFactory.lostLifePerSecond = 0.009f; float petrolStatus = dbVehicle.tankful -= lostFuelPerSecond * Game.FrameTime; dbVehicle.tankful = petrolStatus; } base.Main(playerPed, dbVehicle); }
protected virtual void Main(Ped playerPed, DBVehicle dbVehicle) { }
public static void changeSpeedoTexture(DBVehicle dbVehicle) { var speedoMeter = textureList.Find(x => x.name == "SpeedoMeter"); var speedoMeterNeedle01 = textureList.Find(x => x.name == "SpeedoMeterNeedle01"); var speedoMeterNeedle02 = textureList.Find(x => x.name == "SpeedoMeterNeedle02"); var speedoMeterHighLight = textureList.Find(x => x.name == "SpeedoMeterHighLight"); var speedoMeterNormalLight = textureList.Find(x => x.name == "SpeedoMeterNormalLight"); var speedoMeterBattery = textureList.Find(x => x.name == "SpeedoMeterBattery"); var speedoMeterBrake = textureList.Find(x => x.name == "SpeedoMeterBrake"); var speedoMeterFuel = textureList.Find(x => x.name == "SpeedoMeterFuel"); var speedoMeterIndicatorLeft = textureList.Find(x => x.name == "SpeedoMeterIndicatorLeft"); var speedoMeterIndicatorRight = textureList.Find(x => x.name == "SpeedoMeterIndicatorRight"); if (speedoMeter != null && dbVehicle.cVehicle != null && dbVehicle.cVehicle.IsValid()) { var speed = dbVehicle.cVehicle.Speed * 3.6; if (speed > 280) { //280 ist die Speedogrenze speed = 280; } //0.9051 Winkelmultiplikator speedoMeterNeedle01.rotate = Convert.ToSingle(speed * 0.9051f); speedoMeterNeedle02.rotate = Convert.ToSingle(dbVehicle.tankful * 1.49f); speedoMeterBattery.setOptional = (dbVehicle.cVehicle.IsEngineOn ? false : true); speedoMeterFuel.setOptional = (dbVehicle.tankful > 10 ? false : true); bool BrakeEnable = (dbVehicle.cVehicle.Metadata.BrakeEnable != null && dbVehicle.cVehicle.Metadata.BrakeEnable ? true : false); speedoMeterBrake.setOptional = BrakeEnable; bool IndicatorLeft = (dbVehicle.cVehicle.Metadata.IndicatorLeft != null && dbVehicle.cVehicle.Metadata.IndicatorLeft ? true : false); if (IndicatorLeft) { speedoMeterIndicatorLeft.setOptional = (blinkStatus ? false : true); } else { speedoMeterIndicatorLeft.setOptional = IndicatorLeft; } bool IndicatorRight = (dbVehicle.cVehicle.Metadata.IndicatorRight != null && dbVehicle.cVehicle.Metadata.IndicatorRight ? true : false); if (IndicatorRight) { speedoMeterIndicatorRight.setOptional = (blinkStatus ? false : true); } else { speedoMeterIndicatorRight.setOptional = IndicatorRight; } unsafe { bool lightsOn = false; bool highbeamsOn = false; NativeFunction.CallByName <bool>("GET_VEHICLE_LIGHTS_STATE", dbVehicle.cVehicle, &lightsOn, &highbeamsOn); speedoMeterHighLight.setOptional = (highbeamsOn ? true : false); speedoMeterNormalLight.setOptional = (lightsOn ? true : false); } } }
protected override void OnUse(Ped playerped, DBVehicle dbVehicle, MyPlayer myPlayer) { if (EatPoint.Any(r => r.IsInRange(playerped.Position))) { NativeFunction.CallByName <uint>("SET_VEHICLE_DOOR_OPEN", vehicle, 5, false, false); Ped[] ped = playerped.GetNearbyPeds(1); Ped burgerPed = ped[0]; if (myPlayer.playerLife >= 80 && !eaten) { if (!answer) { Game.DisplayHelp("Give an answer by pressing Key 1 or 2"); Game.DisplaySubtitle("~y~Burgermen~s~: Unfortunately I have no more food, Check back soon ~b~officer", 1000); NotificationManager.addNotification("~b~Your~s~ answers:\n\n1 - No problem, i come again later\n2 - Make your job properly!"); } if (answer) { if (goodAnswer) { goodAnswer = false; Game.DisplaySubtitle("~b~You~s~: No problem, they do a good job! i'll be back later", 4000); GameFiber.Sleep(4000); Game.DisplaySubtitle("~y~Burgermen~s~: Thank you for your understanding! You're a good officer", 10000); if (PlayerAuthenticate.isLogged) { ExperienceManager.UpdateExp(5, "Good Behavior"); } GameFiber.Sleep(10000); } else if (badAnswer) { badAnswer = false; Game.DisplaySubtitle("~b~You~s~: Make their job properly Sir! I need my food ... !!", 4000); GameFiber.Sleep(4000); Game.DisplaySubtitle("~y~Burgermen~s~: I can not hear it! .. i .. i ... I quit my job!!!", 15000); Vehicle[] _vehicle = burgerPed.GetNearbyVehicles(1); _vehicle[0].LockStatus = VehicleLockStatus.Unlocked; _vehicle[0].FuelTankHealth = 500.0f; burgerPed.Tasks.EnterVehicle(_vehicle[0], 5000, -1).WaitForCompletion(); _vehicle[0].LockStatus = VehicleLockStatus.Locked; NativeFunction.CallByName <uint>("START_VEHICLE_HORN", vehicle, 5000, 0, true); burgerPed.Dismiss(); GameFiber.Sleep(10000); GameFiber.Yield(); } } if (Game.IsKeyDown(Keys.D1)) { answer = true; goodAnswer = true; } else if (Game.IsKeyDown(Keys.D2)) { answer = true; badAnswer = true; } return; } if (playerped.IsInAnyVehicle(false)) { Game.DisplaySubtitle("~y~Burgermen~s~: Officer " + PlayerAuthenticate.onlineUsername + ", please get out of the vehicle I can not understand you", 1000); return; } if (!menuSelection && !eaten) { Vector3 directionFromPlayerToPed = (playerped.Position - burgerPed.Position); directionFromPlayerToPed.Normalize(); float heading = MathHelper.ConvertDirectionToHeading(directionFromPlayerToPed); burgerPed.Heading = heading; Game.DisplayHelp("Give an answer by pressing Key 1 or 2"); Game.DisplaySubtitle("~y~Burgermen~s~: Nice to see you, what do you want to buy ?", 1000); NotificationManager.addNotification("~b~Choose a key ~s~for your food:\n\n1 - Burger with cheese\n" + "2 - HotDog with a drink"); GameFiber.Yield(); } if (Game.IsKeyDown(Keys.D1)) { menuSelection = true; Game.DisplaySubtitle("~y~Burgermen~s~: Okay, you want a burger. ~g~Good choice i prepare it ", 5000); GameFiber.Sleep(5000); eaten = true; Game.DisplaySubtitle("~y~Burgermen~s~: Thank you for your visit ~b~Officer " + PlayerAuthenticate.onlineUsername + "~s~, Here your food, ~p~Bon Appetit ", 9000); myPlayer.playerLife = 100; HungerManager.UpdatePlayerLife(myPlayer); GameFiber.Yield(); } else if (Game.IsKeyDown(Keys.D2)) { menuSelection = true; Game.DisplaySubtitle("~y~Burgermen~s~: I cook a hotdog for you. I prepare it one moment please", 5000); GameFiber.Sleep(5000); eaten = true; Game.DisplaySubtitle("~y~Burgermen~s~: Thank you for your visit ~b~Officer " + PlayerAuthenticate.onlineUsername + "~s~, Here your food, ~p~Bon Appetit ", 9000); myPlayer.playerLife = 100; HungerManager.UpdatePlayerLife(myPlayer); GameFiber.Yield(); } } else { eaten = false; } base.OnUse(playerped, dbVehicle, myPlayer); }
protected virtual void OnUse(Ped playerped, DBVehicle dbVehicle, MyPlayer myPlayer) { }
public static DBVehicle GetRandomVehicle(string currentVehiclePlate) { DBVehicle dbVehicle = new DBVehicle(currentVehiclePlate, 100f); return(dbVehicle); }