Advertisement
Guest User

Untitled

a guest
Feb 1st, 2024
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. alt.everyTick(() => {
  2.     // Enter vehicle F
  3.     native.disableControlAction(0, 23, true);
  4.     if (native.isDisabledControlJustPressed(0, 23)) {
  5.         enterVehicle();
  6.     }
  7. });
  8.  
  9. const seats = { handle_dside_f: -1, handle_pside_f: 0, handle_dside_r: 1, handle_pside_r: 2, seat_dside_r1: 3, seat_pside_r1: 4, seat_dside_r2: 5, seat_pside_r2: 6 };
  10. function enterVehicle() {
  11.     if(alt.Player.local.vehicle == null && native.getVehiclePedIsEntering(alt.Player.local) == 0) {
  12.         var closestVehicle = false;
  13.         var closestVehicleDistance = 6;
  14.         alt.Vehicle.all.forEach(vehicle => {
  15.             const dist = alt.Utils.Distance(alt.Player.local.pos, vehicle.pos)*1000;
  16.             if(dist < closestVehicleDistance) {
  17.                 closestVehicle = vehicle;
  18.                 closestVehicleDistance = dist;
  19.             }
  20.         });
  21.  
  22.         if(!closestVehicle || !closestVehicle.hasSyncedMeta('lockState')) return;
  23.  
  24.         const isVehicleOwner = closestVehicle.getSyncedMeta('ownerId') !== undefined && closestVehicle.getSyncedMeta('ownerId') === alt.Player.local.getSyncedMeta('dbId');
  25.  
  26.         // if not motorcycles
  27.         if([8, 16].indexOf(native.getVehicleClass(closestVehicle)) === -1) {
  28.             var closestSeat = false;
  29.             var closestSeatDistance = 0;
  30.             for(const door of Object.keys(seats)) {
  31.                 const doorPos = native.getWorldPositionOfEntityBone(closestVehicle, native.getEntityBoneIndexByName(closestVehicle, door));
  32.                 if(doorPos.x == 0 && doorPos.y == 0  && doorPos.z == 0) { continue; }
  33.  
  34.                 const dist = alt.Utils.Distance(alt.Player.local.pos, doorPos)*1000;
  35.                 if(closestSeat === false || dist < closestSeatDistance && native.isVehicleSeatFree(closestVehicle, closestSeat, true)) {
  36.                     closestSeat = seats[door];
  37.                     closestSeatDistance = dist;
  38.                 }
  39.             }
  40.  
  41.             if(closestSeat === false) return;
  42.            
  43.             native.setVehicleDoorsLocked(closestVehicle, isVehicleOwner ? 1 : closestVehicle.getSyncedMeta('lockState'));
  44.             native.taskEnterVehicle(alt.Player.local, closestVehicle, 4000, closestSeat, 2, 1, 0);
  45.  
  46.             // clear vehicle window break animation
  47.             if(closestVehicle.getSyncedMeta('lockState') == 2 && !isVehicleOwner) {
  48.                 var timeout = alt.setTimeout(() => {
  49.                     alt.clearInterval(check);
  50.                     return;
  51.                 }, 4000);
  52.  
  53.                 var check = alt.setInterval(() => {
  54.                     if(closestVehicle.getSyncedMeta('lockState') == 1) {
  55.                         alt.clearTimeout(timeout);
  56.                         alt.clearInterval(check);
  57.                         native.clearPedTasksImmediately(alt.Player.local);
  58.                     }
  59.                 }, 500);
  60.             }
  61.         }
  62.         else {
  63.             // in any seat is free
  64.             const freeSeat = native.isVehicleSeatFree(closestVehicle, -1, true) ? -1 : (native.isVehicleSeatFree(closestVehicle, 0, true) ? 0 : false);
  65.             if(freeSeat !== false) {
  66.                 native.setVehicleDoorsLocked(closestVehicle, isVehicleOwner ? 1 : closestVehicle.getSyncedMeta('lockState'));
  67.                 native.taskEnterVehicle(alt.Player.local, closestVehicle, 4000, freeSeat, 2, 1, 0);
  68.             }
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement