public async Task RevivePlayer(IPlayer player, IPlayer targetPlayer) { try { if (player == null || !player.Exists || targetPlayer == null || !targetPlayer.Exists) { return; } int targetId = (int)targetPlayer.GetCharacterMetaId(); int charId = (int)player.GetCharacterMetaId(); if (charId <= 0 || targetId <= 0 || !Characters.IsCharacterUnconscious(targetId)) { return; } if (!CharactersInventory.ExistCharacterItem(charId, "Defibrilator", "inventory") && !CharactersInventory.ExistCharacterItem(charId, "Defibrilator", "backpack")) { HUDHandler.SendNotification(player, 3, 3500, "Du hast keinen Defibrilator dabei."); return; } InventoryHandler.InventoryAnimation(player, "revive", 15000); int rnd = new Random().Next(1, 100); await Task.Delay(15000); if (rnd >= 1 && rnd <= 50) { //Reanimation erfolgreich if (!player.IsInVehicle) { InventoryHandler.StopAnimation(player, "missheistfbi3b_ig8_2", "cpr_loop_paramedic"); } if (targetId <= 0 || !Characters.IsCharacterUnconscious(targetId)) { return; } Characters.SetCharacterUnconscious(targetId, false, 0); DeathHandler.revive(targetPlayer); Characters.SetCharacterHealth(targetId, 115); targetPlayer.Health = 115; } else if (rnd >= 51 && rnd <= 100) { //Reanimation nicht erfolgreich if (!player.IsInVehicle) { InventoryHandler.StopAnimation(player, "missheistfbi3b_ig8_2", "cpr_loop_paramedic"); } HUDHandler.SendNotification(player, 3, 3500, "Die Renimation war nicht erfolgreich, versuch es weiter!"); } } catch (Exception e) { Alt.Log($"{e}"); } }
private static void ColshapeEnterExitHandler(IColShape colShape, IEntity targetEntity, bool state) { try { if (colShape == null) { return; } if (!colShape.Exists) { return; } IPlayer client = targetEntity as IPlayer; if (client == null || !client.Exists) { return; } int charId = User.GetPlayerOnline(client); if (charId <= 0) { return; } if (colShape == startJobShape && state) { if (client.GetPlayerCurrentMinijob() == "Müllmann") { HUDHandler.SendNotification(client, 1, 2500, "Drücke E um den Müllmann Minijob zu beenden."); } else if (client.GetPlayerCurrentMinijob() == "None") { HUDHandler.SendNotification(client, 1, 2500, "Drücke E um den Müllmann Minijob zu starten."); } else if (client.GetPlayerCurrentMinijob() != "None") { HUDHandler.SendNotification(client, 3, 25000, "Du bist bereits in einem Minijob."); } return; } if (client.GetPlayerCurrentMinijob() != "Müllmann") { return; } if (client.GetPlayerCurrentMinijobRouteId() <= 0) { return; } if (client.GetPlayerCurrentMinijobActionCount() <= 0) { return; } if (client.GetPlayerCurrentMinijobStep() == "PICKUP_TRASH" && state && !client.IsInVehicle) { var spot = Model.GetCharacterMinijobNextSpot(client); if (spot == null) { return; } if (colShape != spot.destinationColshape) { return; } var personalThrowCol = Alt.GetAllColShapes().Where(x => x.Exists && x != null).ToList().FirstOrDefault(x => x != null && x.Exists && x.GetColShapeName() == "GarbageMinijobThrowInVehicle" && x.GetColShapeId() == (ulong)charId); if (personalThrowCol != null && personalThrowCol.Exists) { personalThrowCol.Remove(); } //ToDo: Objeklt in Hand geben InventoryHandler.InventoryAnimation(client, "farmPickup", 1100); var veh = Alt.Server.GetVehicles().ToList().FirstOrDefault(x => x.Exists && x.NumberplateText == $"MM-{charId}"); if (veh == null || !veh.Exists) { return; } HUDHandler.SendNotification(client, 1, 1200, "Mülltonne geleert, werfe den Müll in den Wagen."); DegreeRotation vehRot = veh.Rotation; Position MMThrowPos = veh.Position.getPositionInBackOfPosition(vehRot.Yaw, -5.5f); client.EmitLocked("Client:Minijob:RemoveJobMarker"); client.SetPlayerCurrentMinijobStep("THROW_TRASH_IN_VEHICLE"); client.EmitLocked("Client:Minijob:CreateJobMarker", "Minijob: Müll einladen", 3, 514, 22, MMThrowPos.X, MMThrowPos.Y, MMThrowPos.Z, true); ClassicColshape throwCol = (ClassicColshape)Alt.CreateColShapeSphere(MMThrowPos, 2.5f); throwCol.SetColShapeName("GarbageMinijobThrowInVehicle"); throwCol.SetColShapeId((ulong)charId); throwCol.Radius = 2.5f; return; } else if (client.GetPlayerCurrentMinijobStep() == "THROW_TRASH_IN_VEHICLE" && state && !client.IsInVehicle) { var personalThrowCol = Alt.GetAllColShapes().Where(x => x.Exists && x != null).ToList().FirstOrDefault(x => x != null && x.Exists && x.GetColShapeName() == "GarbageMinijobThrowInVehicle" && x.GetColShapeId() == (ulong)charId); if (personalThrowCol == null || !personalThrowCol.Exists) { return; } if (!((ClassicColshape)personalThrowCol).IsInRange((ClassicPlayer)client)) { return; } client.EmitLocked("Client:Minijob:RemoveJobMarker"); //ToDo: Objekt aus Hand entfernen InventoryHandler.InventoryAnimation(client, "farmPickup", 1100); int maxSpots = Model.GetMinijobGarbageMaxRouteSpots((int)client.GetPlayerCurrentMinijobRouteId()); if ((int)client.GetPlayerCurrentMinijobActionCount() < maxSpots) { //neuer Punkt client.SetPlayerCurrentMinijobActionCount(client.GetPlayerCurrentMinijobActionCount() + 1); var spot = Model.GetCharacterMinijobNextSpot(client); if (spot == null) { return; } client.SetPlayerCurrentMinijobStep("PICKUP_TRASH"); client.EmitLocked("Client:Minijob:CreateJobMarker", "Minijob: Müll abholen", 3, 514, 1, spot.posX, spot.posY, spot.posZ, false); HUDHandler.SendNotification(client, 1, 2500, "Fahre zum nächsten Zielort um den Müll abzuholen, dieser wurde auf deinem GPS markiert."); Alt.Log($"Aktueller Spot || Route: {spot.routeId} || SpotID: {spot.spotId}"); } else if ((int)client.GetPlayerCurrentMinijobActionCount() >= maxSpots) { //zurueck zum Depot HUDHandler.SendNotification(client, 1, 2222, "VERSUCH: Colshape entfernen [003]"); if (personalThrowCol != null && personalThrowCol.Exists) { personalThrowCol.Remove(); } HUDHandler.SendNotification(client, 1, 6000, "Alles aufgesammelt mein Jung. Zurück zur Mülldeponie - das Zeug abgeben, stell das Fahrzeug einfach dort ab wo du es bekommen hast."); client.SetPlayerCurrentMinijobStep("DRIVE_BACK_TO_START"); client.EmitLocked("Client:Minijob:CreateJobMarker", "Minijob: Fahrzeug abgeben", 3, 514, 30, Constants.Positions.Minijob_Müllmann_VehOutPos.X, Constants.Positions.Minijob_Müllmann_VehOutPos.Y, Constants.Positions.Minijob_Müllmann_VehOutPos.Z, false); } return; } } catch (Exception e) { Alt.Log($"{e}"); } }