Exemplo n.º 1
0
        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}");
            }
        }
Exemplo n.º 2
0
        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}");
            }
        }