Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Negalima prašyti ar platinti betkokių žaidimą (multiplayer) palengvinančių programų ir scriptų! Kitaip bus taikoma 1.21. taisyklė
❗️ Dėmesio! Prieš leidžiant skriptus/modifikacijas, būtinai patikrinkite jų kodą! </>

alt:v Įsėdimo į tr.priemone skriptas [F,G]


Recommended Posts

(redaguota)
import alt from "alt-client";
import native from "natives";

let enterSeat = alt.everyTick(() => {
    native.disableControlAction(0, 58, true);
    if (native.isDisabledControlJustPressed(0, 58)) {
        enterVehicleAsPassenger();
        return;
    }
    native.disableControlAction(0, 23, true);
    if (native.isDisabledControlJustPressed(0, 23)) {
        enterVehicleAsDriver();
        return;
    }
});

function enterVehicleAsDriver() {
    if (alt.Player.local.vehicle == null) {
        const player = alt.Player.local;

        var vehicles = alt.Vehicle.all;
        var closestVehicle;
        var playerPos = alt.Player.local.pos;

        var lastDistance = 5;
      
        vehicles.forEach(vehicle => {
            var vehiclePosition = vehicle.pos;
            var distance = playerPos.distanceTo(vehiclePosition);
            if (distance < lastDistance) {
                closestVehicle = vehicle;
                lastDistance = distance;
            }
        });
        
        if (closestVehicle == undefined) return;
        var vehicle = closestVehicle.scriptID;

        let boneFLDoor = native.getEntityBoneIndexByName(vehicle, 'door_dside_f');
        const posFLDoor = native.getWorldPositionOfEntityBone(vehicle, boneFLDoor);
        const distFLDoor = distance({ x: posFLDoor.x, y: posFLDoor.y, z: posFLDoor.z }, alt.Player.local.pos);

        let boneFRDoor = native.getEntityBoneIndexByName(vehicle, 'door_pside_f');
        const posFRDoor = native.getWorldPositionOfEntityBone(vehicle, boneFRDoor);
        const distFRDoor = distance({ x: posFRDoor.x, y: posFRDoor.y, z: posFRDoor.z }, alt.Player.local.pos);

        if (native.isVehicleSeatFree(vehicle, -1, false)) {
            let vehicleClass = native.getVehicleClass(vehicle);
            if (vehicleClass == 14) {
                native.setPedIntoVehicle(player.scriptID, vehicle, -1);
            } else {
                native.taskEnterVehicle(alt.Player.local.scriptID, vehicle, 5000, -1, 2, 1, 0,0);
            }
        } else {
            if (distFRDoor < distFLDoor) return;

            native.taskEnterVehicle(alt.Player.local.scriptID, vehicle, 5000, -1, 2, 1, 0,0);
        }
    }
}


function enterVehicleAsPassenger() {
    if (alt.Player.local.vehicle) return;

    var vehicles = alt.Vehicle.all;
    var closestVehicle;
    var playerPos = alt.Player.local.pos;

    var lastDistance = 5;
  
    vehicles.forEach(vehicle => {
        var vehiclePosition = vehicle.pos;
        var distance = playerPos.distanceTo(vehiclePosition);
        if (distance < lastDistance) {
            closestVehicle = vehicle;
            lastDistance = distance;
        }
    });

    if (closestVehicle == undefined) return;
    var vehicle = closestVehicle.scriptID;
  
    if (!native.isVehicleSeatFree(vehicle, 0, false) && !native.isVehicleSeatFree(vehicle, 1, false) && !native.isVehicleSeatFree(vehicle, 2, false)) return;

    let boneFRDoor = native.getEntityBoneIndexByName(vehicle, 'door_pside_f');
    const posFRDoor = native.getWorldPositionOfEntityBone(vehicle, boneFRDoor);
    const distFRDoor = distance({ x: posFRDoor.x, y: posFRDoor.y, z: posFRDoor.z }, alt.Player.local.pos);

    let boneBLDoor = native.getEntityBoneIndexByName(vehicle, 'door_dside_r');
    const posBLDoor = native.getWorldPositionOfEntityBone(vehicle, boneBLDoor);
    const distBLDoor = distance({ x: posBLDoor.x, y: posBLDoor.y, z: posBLDoor.z }, alt.Player.local.pos);

    let boneBRDoor = native.getEntityBoneIndexByName(vehicle, 'door_pside_r');
    const posBRDoor = native.getWorldPositionOfEntityBone(vehicle, boneBRDoor);
    const distBRDoor = distance({ x: posBRDoor.x, y: posBRDoor.y, z: posBRDoor.z }, alt.Player.local.pos);

    let minDist = Math.min(distFRDoor, distBLDoor, distBRDoor);

    if (minDist == distFRDoor) {
        if (minDist > 1.8) return;

        if (native.isVehicleSeatFree(vehicle, 0, false)) {
            native.taskEnterVehicle(alt.Player.local.scriptID, vehicle, 5000, 0, 2, 1, 0,0);
        } else if (native.isVehicleSeatFree(vehicle, 2, false)) {
            native.taskEnterVehicle(alt.Player.local.scriptID, vehicle, 5000, 2, 2, 1, 0,0);
        }
        else {
            return;
        }
    }
    if (minDist == distBLDoor) {
        if (minDist > 1.8) return;

        if (native.isVehicleSeatFree(vehicle, 1, false)) {
            native.taskEnterVehicle(alt.Player.local.scriptID, vehicle, 5000, 1, 2, 1, 0,0);
        } else {
            return;
        }
    }
    if (minDist == distBRDoor) {
        if (minDist > 1.8) return;

        if (native.isVehicleSeatFree(vehicle, 2, false)) {
            native.taskEnterVehicle(alt.Player.local.scriptID, vehicle, 5000, 2, 2, 1, 0,0);
        } else if (native.isVehicleSeatFree(vehicle, 0, false)) {
            native.taskEnterVehicle(alt.Player.local.scriptID, vehicle, 5000, 0, 2, 1, 0,0);
        } else {
            return;
        }
    }
}

# Esant prieš mašinos ir paspaudus F sėsi į vairuotojo vietą, o paspaudus G sėsi į artimiausią keleivio vietą.

Ištestuota ant 16.0.0-dev.212 (2024-02-01) alt:v serverio versijos

Redaguota , nario MarcoD
Nuoroda į komentarą
Dalintis per kitą puslapį

Turiu savąjį, todėl matau kelias problemas tavajam, aišku netestinau, bet į 8 vietų automobilį neįlipsi su G, į motociklą turbūt irgi neįlipsi. Reiktų patikrinti tai tiesiog.

https://pastebin.com/4U8JDKDJ

Pas mane lipa visur su F raide, veikia ir ugniagesių 8 vietų automobiliai ir panašiai, aišku užrakinimai serverside, owner'is gali įlipti neatsirakinęs. Lango daužymo animacija išjungiama. Gal ir alt:V kodas senas, bet dalinuosi dėl logikos, o ne veikimo, temos autoriaus kodo papildymui.

Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)
2024-02-02 05:00, Vidmantas. parašė:

Turiu savąjį, todėl matau kelias problemas tavajam, aišku netestinau, bet į 8 vietų automobilį neįlipsi su G, į motociklą turbūt irgi neįlipsi. Reiktų patikrinti tai tiesiog.

https://pastebin.com/4U8JDKDJ

Pas mane lipa visur su F raide, veikia ir ugniagesių 8 vietų automobiliai ir panašiai, aišku užrakinimai serverside, owner'is gali įlipti neatsirakinęs. Lango daužymo animacija išjungiama. Gal ir alt:V kodas senas, bet dalinuosi dėl logikos, o ne veikimo, temos autoriaus kodo papildymui.

Su tr.priemonėmis turinčiomis 1 keleivio vieta yra problema ta, kad pvž į motociklus padarius, kad liptu į seat 0, jis vistiek lips į vairuotojo vieta :) kolkas vienintelis būdas native.setPedIntoVehicle

Redaguota , nario MarcoD
Nuoroda į komentarą
Dalintis per kitą puslapį

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

Skelbimai


×
×
  • Sukurti naują...