private static List <Entity> GetTransportHookEntities(TransportHookType hookType) { Vehicle playerAirVehicle = Util.GetVehiclePlayerIsIn(); List <Entity> nearbyEntities = new List <Entity>(50); if (hookType == TransportHookType.MULTIPLE) { nearbyEntities.AddRange(World.GetNearbyEntities(playerAirVehicle.Position, TransportEntitiesRadius)); } else if (hookType == TransportHookType.SINGLE) { nearbyEntities.Add(GetNearestTransportEntity(playerAirVehicle.Position, TransportEntitiesRadius)); //nearbyEntities.AddRange(World.GetNearbyEntities(playerAirVehicle.Position, TransportEntitiesRadius)); } //else if (hookType == TransportHookType.PRECISE) //{ // RaycastResult rayResult = World.RaycastCapsule(playerAirVehicle.Position, (-playerAirVehicle.UpVector), // (TransportEntitiesRadius * 2f), 3f, IntersectOptions.Everything); // if (rayResult.DitHitEntity) // { // nearbyEntities.Add(rayResult.HitEntity); // } //} return(nearbyEntities); }
public static void AttachTransportHooksProc(TransportHookType hookType) { try { if (Game.Player.Character.IsAlive && Game.Player.Character.IsSittingInVehicle()) { if (Game.Player.Character.IsInFlyingVehicle) { CreateAirVehicleTransportHooks(hookType); } } } catch (Exception exc) { UI.Notify("VRope AttachTransportHooks() Error:\n" + GetErrorMessage(exc)); } }
//public static void CreateLandVehicleTransportHooks(TransportHookType hookType) //{ // try // { // //if (HookFilter.DefaultFilters[CurrentTransportHookFilterIndex].filterValue.Contains("GTA.Ped")) // // hookType = TransportHookType.SINGLE; // List<Entity> transportEntities = GetTransportHookEntities(hookType); // Entity playerFlyingVehicle = Util.GetVehiclePlayerIsIn(); // for (int i = 0; i < transportEntities.Count; i++) // { // Entity entity = transportEntities[i]; // if (!CheckTransportHookPermission(entity)) // continue; // Entity hookEntity1 = (!Util.IsPed(entity) ? Game.Player.Character : playerFlyingVehicle); // HookPair transHook = new HookPair(); // TransportHookMode hookMode = TransportHookMode.CENTER; // transHook.isTransportHook = true; // transHook.ropeType = TransportHooksRopeType; // transHook.entity1 = hookEntity1; // transHook.entity2 = entity; // if (!Util.IsPed(entity) && hookType == TransportHookType.SINGLE) // { // hookMode = AllTransportHookModes[CurrentTransportHookModeIndex].first; // } // else if (hookType == TransportHookType.MULTIPLE) // { // transHook.hookOffset1 = Util.GetRandom2DPositionAround(Vector3.Zero, 0.31f); // } // switch (hookMode) // { // case TransportHookMode.CENTER: // CreateTransportHookCenterMode(transHook); break; // case TransportHookMode.LEFT_RIGHT: // CreateTransportHookLeftRightMode(transHook); break; // } // } // } // catch (Exception exc) // { // UI.Notify("VRope CreateAirVehicleTransportHooks() Error: " + GetErrorMessage(exc)); // } //} public static void CreateAirVehicleTransportHooks(TransportHookType hookType) { try { List <Entity> transportEntities = GetTransportHookEntities(hookType); Entity playerFlyingVehicle = Util.GetVehiclePlayerIsIn(); for (int i = 0; i < transportEntities.Count; i++) { Entity entity = transportEntities[i]; if (!CheckTransportHookPermission(entity)) { continue; } Entity hookEntity1 = (!Util.IsPed(entity) ? Game.Player.Character : playerFlyingVehicle); HookPair transHook = new HookPair(); TransportHookMode hookMode = TransportHookMode.CENTER; transHook.isTransportHook = true; transHook.ropeType = TransportHooksRopeType; transHook.entity1 = hookEntity1; transHook.entity2 = entity; //if (!Util.IsPed(entity) && hookType == TransportHookType.SINGLE) if (hookType == TransportHookType.SINGLE) { hookMode = AllTransportHookModes[CurrentTransportHookModeIndex].first; } else if (hookType == TransportHookType.MULTIPLE) { transHook.hookOffset1 = Util.GetRandom2DPositionAround(Vector3.Zero, 0.31f); } if (Util.IsPed(entity)) { hookMode = TransportHookMode.CENTER; } switch (hookMode) { case TransportHookMode.CENTER: CreateTransportHookCenterMode(transHook); break; case TransportHookMode.LEFT_RIGHT: CreateTransportHookLeftRightMode(transHook); break; case TransportHookMode.FRONT_BACK: CreateTransportHookFrontBackMode(transHook); break; //case TransportHookMode.CROSS: // CreateTransportHookCrossMode(transHook); break; } } } catch (Exception exc) { UI.Notify("VRope CreateAirVehicleTransportHooks() Error: " + GetErrorMessage(exc)); } }