4

我开始为 GTA V 创建一个小型 Mod,但我没有找到很多教程。Mod应该会产生一辆带司机的加长豪华轿车。当豪华轿车靠近我时,我可以用 F 键进入后座,司机会开车带我到一个航点。

此刻,当我按下 Num1 时,车辆和司机正在产卵。司机上了车,朝我开来。我试图通过这样做进入后座

if (Game.Player.Character.GetVehicleIsTryingToEnter() == stretch && isEnteringCar == false)
        {
            isEnteringCar = true;
            Game.Player.Character.Task.EnterVehicle(stretch, VehicleSeat.RightRear);
            isEnteringCar = false;
        }

拉伸是我正在生成的豪华轿车的对象名称。"isEnteringCar"是我添加的一个布尔值,所以 if, 语句只会在进入汽车时执行一次。这个 if 语句位于我的 onTick() 方法中,该方法在每个滴答时都会执行(显然)。但是当我在我的豪华轿车附近按 F 时,我的角色会陷入某种无限循环,即使我试图用我的 bool "isEnteringCar"来防止这种情况。“开门”-动画每刻都会重置,因此我的角色只是四处摆动,直到我再次使豪华轿车消失。

长话短说:

当我按“F”进入生成的豪华轿车时,布尔值“IsEnteringCar”设置为 true,因此该方法Game.Player.Character.Task.EnterVehicle(stretch, VehicleSeat.RightRear);不会多次执行。当我成功进入车辆后,bool 被设置为 false,所以我下车后可以再次进入车辆。但是当我尝试进入汽车时,我的角色卡在 EnterVehicle() 方法中,可能是因为它干扰了 GTA 代码,使我在驾驶员座位上进入车辆。如何禁用“在驾驶员座位上进入汽车”-部分?

4

1 回答 1

1

您可以尝试使用角色 Ped 对象中可用的标志来检查您是否已经在车辆内,您也可以尝试使用该方法SetIntoVehicle而不是使用任务,例如:

if (!Game.Player.Character.IsGettingIntoVehicle && !Game.Player.Character.IsInVehicle())
{
    Game.Player.Character.SetIntoVehicle(stretch, VehicleSeat.RightRear);
}

假设您使用的是 ScriptHookVDotNet v3.0.2,以下是相关来源:https ://github.com/crosire/scripthookvdotnet/blob/master/source/scripting_v3/GTA/Entities/Peds/Ped.cs

于 2019-12-17T23:25:05.157 回答