Amekudeku

[C#] TaskEnterVehicle

Recommended Posts

После целого дня попыток понять, почему это не работает, и обсуждения проблемы на дискорд сервере, мне все таки не удалось решить эту проблему, я решил опубликовать здесь на форуме, возможно, кто-то, кто уже был здесь с этой проблемой, нашел исправление.

Так вот в чем проблема: я пытаюсь обратится к игроку .TaskEnterVehicle но без успеха, я убедился, что транспортное средство не является нулевым, я убедился, что транспортное средство близко к игроку, все еще не работает. Я попробовал тот же самый код, но с другой задачей (это было что-то с exit vehicle), и он работал просто отлично. Но по какой-то причине TaskEnterVehicle не хочет.

P.s Видел эту проблему решают путем добавление пакета на js, но я бы хотел отказаться от таких костылей и попробовать сделать все на шарпе. Надеюсь на поддержку .-.

 

public class VehicleKeybinds : Events.Script
    {
        public VehicleKeybinds()
        {
            Events.Tick += OnTick;
        }

        private void OnTick(List<Events.TickNametagData> nametags)
        {
            RAGE.Game.Pad.DisableControlAction(0, 75, true); // F
            RAGE.Game.Pad.DisableControlAction(0, 58, true); // G

            // Enter Vehicle on F
            if(RAGE.Game.Pad.IsDisabledControlJustPressed(0, 75))
            {
                if(Player.LocalPlayer.Vehicle != null)
                {
                    Player.LocalPlayer.TaskLeaveAnyVehicle(0, 0);
                    return;
                }

                Vector3 pos = Player.LocalPlayer.Position;
                List<Vehicle> vehicles = RAGE.Elements.Entities.Vehicles.All;

                Vehicle vehicle = vehicles.Find(veh => veh.Position.DistanceTo2D(pos) <= 5f);

                if (vehicle == null)
                    return;

                Player.LocalPlayer.TaskEnterVehicle(vehicle.Handle, 5000, -1, 1.5f, 1, 0);
            }

            // Enter Vehicle on G
            if (RAGE.Game.Pad.IsDisabledControlJustPressed(0, 58))
            {
                if (Player.LocalPlayer.Vehicle != null)
                {
                    Player.LocalPlayer.TaskLeaveAnyVehicle(0, 0);
                    return;
                }

                Vector3 pos = Player.LocalPlayer.Position;
                List<Vehicle> vehicles = RAGE.Elements.Entities.Vehicles.All;

                Vehicle vehicle = vehicles.Find(veh => veh.Position.DistanceTo2D(pos) <= 5f);

                if (vehicle == null)
                    return;

                int seats = RAGE.Game.Vehicle.GetVehicleModelNumberOfSeats(vehicle.Model) - 1;
                int targetSeat = -99; // Exists seats

                for(int i = 0; i < seats; i++)
                {
                    if (vehicle.IsSeatFree(i, 0))
                    {
                        targetSeat = i;
                        break;
                    }
                }

                RAGE.Chat.Output(targetSeat.ToString());

                if (targetSeat == -99)
                    return;

                Player.LocalPlayer.TaskEnterVehicle(vehicle.Handle, 5000, targetSeat, 2.0f, 1, 0);
            }
        }
    }

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.