client.js

let activeFly = false;
let ped;
let speedDeault = 20;
let speed = speedDeault;
let speedMax = 100;

let objectHide;
let modelobject = 'p_d_scuba_tank_s'
RegisterCommand('fly', async()=>{
    let ped = PlayerPedId();
    let [x,y,z] = GetEntityCoords(ped)
    await carregarModelo(modelobject)
    objectHide = CreateObject(modelobject,x,y,z,true, false, false)
    activeFly = !activeFly;
    SetEntityInvincible(ped, true);
    SetEntityHasGravity(ped, false);
    SetPedCanRagdoll(ped, false);
    SetPedRagdollOnCollision(ped, false);
    SetEntityVisible(objectHide, false)
    AttachEntityToEntity(ped, objectHide, 0,0,0,1,0,0,0,false, false, true, true, 0,true)
})
setTick(async()=>{
    if(IsControlJustPressed(0,38)){ // key E
        activeFly = !activeFly;
        SetEntityInvincible(PlayerPedId(), true)
    }
    if(activeFly){
        if(IsControlPressed(0,21)){ // key SHIFT
            speed = speedMax;
        }else{
            speed = speedDeault;
        }
        let heading = GetGameplayCamRelativeHeading() + GetEntityHeading(objectHide);
        if(IsControlPressed(0,32)){ //key W
            ped = PlayerPedId()
            let [dx,dy,dz] = getCamDirection();
            SetEntityVelocity(objectHide, dx * speed, dy *speed, dz * speed)
        }
        if (IsControlPressed(0, 31)) { // S
            SetEntityVelocity(objectHide,0,0,0)
        }
        SetEntityHeading(objectHide, heading)
        SetEntityRotation(objectHide, 0, 0, heading, 2, true);
    }
})
function getCamDirection(){
    let heading = GetGameplayCamRelativeHeading()+GetEntityHeading(PlayerPedId());
    let pitch = GetGameplayCamRelativePitch();
    let x = -Math.sin(heading*Math.PI/180.0);
    let y = Math.cos(heading*Math.PI/180.0);
    let z = Math.sin(pitch*Math.PI/180.0);
    let len = Math.sqrt(x*x+y*y+z*z);
    if((len != 0)){
        x = x/len;
        y = y/len;
        z = z/len;
    }
    return [x,y,z];
}
Delay = (ms) => new Promise(res => setTimeout(res, ms));
async function carregarModelo(modelo){
    console.log('carregando modelo');
    RequestModel(modelo);
    while(!HasModelLoaded(modelo)){
      await Delay(500);
    }
    console.log('modelo carregado');
}