JS Создание NPC

muzon4ik

New member
Здравствуйте уважаемые знатоки, требуется помощь ваших умов, данная возможность добавилась в Rage mp 1.1, и по этому толком о ней ничего нет
На стороне сервера я создаю ped
JavaScript:
let dynamicPed = mp.peds.new(mp.joaat('mp_m_freemode_01'), mp.players.at(0).position, {dynamic:true});
dynamicPed.controller = mp.players.at(0);

Вопрос заключается в следующем, как заставить сесть бота в машину?
На стороне клиента нужно запустить
JavaScript:
ped.taskEnterVehicle(veh.handle, 10000, 1, 1, 1, 0);
Где veh это машина где сейчас сидит игрок
А ped это бот которого создали на стороне сервера
Как можно обратиться к этому ped, или как его можно передать на клинскую сторону? Я уже много что перепробовал в конечном итоге это всегда приводит к крашу игры
 

Lev Angel

Developer
Команда форума
Скриптер
Ты можешь отправить на клиент событие и в аргументах передать своего педа.
JavaScript:
player.call('pedTestEvent', [dynamicPed] );
и принять это соответственно на клиенте
JavaScript:
mp.events.add("pedTestEvent", (ped) => {
    const { x, y, z} = mp.players.local.position;
    ped.taskGoToCoordAnyMeans(x, y, z, 1, 0, false, 12, 1000);
});
 

Lev Angel

Developer
Команда форума
Скриптер
Как вариант еще можно найти педа перебором на клиенте
JavaScript:
mp.peds.forEachInStreamRange( ped => {

});
 
Решение

muzon4ik

New member
Благодарю за помощь, как раз верхний вариант я пробовал, и он у меня крашил клиент, да и он не особо подходит для реализации скрипта
Перебор сработал на ура, и как раз то что нужно
 

skyElmax

Trainee
Server-Side
JavaScript:
let player = mp.players.at(0);
let dynamicPed = mp.peds.new(mp.joaat('mp_m_freemode_01'), player.position, { dynamic: true });
let vehicle = mp.vehicles.new(mp.game.joaat("turismor"), player.position, {
    numberPlate: "ADMIN",
    color: [[255, 0, 0],[255,0,0]]
});
player.call("PED:taskEnterVehicle", [dynamicPed.id, vehicle.id, 10000, -1, 1, 1, 0]);

Client-Side
JavaScript:
mp.events.add("PED:taskEnterVehicle", (ped, vehicle, timeout, seat, speed, mode, p6) => {
    let at_ped = mp.peds.atRemoteId(ped), at_veh = mp.vehicles.atRemoteId(vehicle);
    if (!at_ped || !at_veh) return;
    at_ped.taskEnterVehicle(at_veh.handle, timeout, seat, speed, mode, p6);
});
 
Яндекс.Метрика
Верх