Добро пожаловать на RAGEM.RU

Все для RageMP GTA 5

Мануал Создание синхронизированных NPC.

Appi

Пробегом тут
Команда форума
Куратор портала
Модератор
Регистрация
27.03.2023
Сообщения
327
Розыгрыши
0
Репутация
1
Реакции
349
Баллы
63
RC
80
Discord: a.p.p.i
Создаем npc на стороне сервера(Я взял чистый сервер создал в нем папку server и в этой папке создал index.js):
Screenshot_4.jpg

JavaScript:
mp.events.addCommand({
    "spawnPed": (player) => {
        if(player.myPed)player.myPed.destroy();//если уже есть удаляем и пересоздаем
        player.myPed = mp.peds.new(mp.joaat('csb_burgerdrug'), new mp.Vector3(player.position.x+1, player.position.y, player.position.z), {
            dynamic: true,//синхранизирован false не синхранизирован.
            invincible: false,//true - npс бесмертный false - npс смертный
        })
        player.myPed.controller = player;//указываем, кто будет выступать в роли контроллера.
        if(player.myVeh)player.myPed.data.veh = player.myVeh; //привязали к NPC машину чтобы в дальнейшем могли обратится именно к ней уже на клиенте
    }
});

Теперь прописав в чат /spawnPed мы можем заспавнить нашего NPС
Зачем нужен контроллер? Скажу лишь, что через указанного игрока будет осуществляться синхронизация NPC с другими игроками.
Контроллера можно сменить в любой момент.

Идем дальше. Нам нужно как-то давать команды нашему NPC. Пусть NPC будет взаимодействовать с машиной, добавим возможность спавна авто.
Дополняем наш код на стороне сервера.

JavaScript:
mp.events.addCommand({
    "spawnPed": (player) => {
        if(player.myPed)player.myPed.destroy();//если уже есть удаляем и пересоздаем
        player.myPed = mp.peds.new(mp.joaat('csb_burgerdrug'), new mp.Vector3(player.position.x+1, player.position.y, player.position.z), {
            dynamic: true,
            invincible: false,//true - npс бесмертный false - npс смертный
        })
        player.myPed.controller = player;//указываем, кто будет выступать в роли контроллера.
        if(player.myVeh)player.myPed.data.veh = player.myVeh; //привязали к NPC машину чтобы в дальнейшем могли обратится именно к ней уже на клиенте
    },
    "spawnVeh": (player, name) => {
        if(player.myVeh)player.myVeh.destroy();//если уже есть удаляем и пересоздаем
        player.myVeh = mp.vehicles.new(mp.joaat(name), new mp.Vector3(player.position.x+3, player.position.y, player.position.z), {
             numberPlate: 'RAGEMP',
             color:[[0,0,0],[0,0,0]],
             alpha: 255,
             locked: false,
             dimension: player.dimension,
         });
        if(player.myPed)player.myPed.data.veh = player.myVeh; //привязали к NPC машину чтобы в дальнейшем могли обратится именно к ней уже на клиенте
    }
});

Теперь можем создать авто /spawnVeh Hash (/spawnVeh taxi)
Главный вопрос, как заставить NPC совершать какие-то действия? Давайте попробуем заставить нашего подопечного сесть в авто. И доехать до нас!
Все также на сервере

JavaScript:
mp.events.addCommand({
    "spawnPed": (player) => {
        if(player.myPed)player.myPed.destroy();//если уже есть удаляем и пересоздаем
        player.myPed = mp.peds.new(mp.joaat('csb_burgerdrug'), new mp.Vector3(player.position.x+1, player.position.y, player.position.z), {
            dynamic: true,
            invincible: false,//true - npс бесмертный false - npс смертный
        })
        player.myPed.controller = player;//указываем, кто будет выступать в роли контроллера.
        if(player.myVeh)player.myPed.data.veh = player.myVeh; //привязали к NPC машину чтобы в дальнейшем могли обратится именно к ней уже на клиенте
    },
    "spawnVeh": (player, name) => {
        if(player.myVeh)player.myVeh.destroy();//если уже есть удаляем и пересоздаем
        player.myVeh = mp.vehicles.new(mp.joaat(name), new mp.Vector3(player.position.x+3, player.position.y, player.position.z), {
             numberPlate: 'RAGEMP',
             color:[[0,0,0],[0,0,0]],
             alpha: 255,
             locked: false,
             dimension: player.dimension,
         });
        if(player.myPed)player.myPed.data.veh = player.myVeh; //привязали к NPC машину чтобы в дальнейшем могли обратится именно к ней уже на клиенте
    },
    "ped": (player, command) => {
        player.myPed.data.command = command; //Даем команду NPС
    }
});

Что здесь происходит? :eek: Мы при вызове команды /ped command передаем какую-нибудь команду боту.(не обязательно это делать так, это один из способов)
Это еще не все. На клиенте создайте файлик index.js

Screenshot_1.jpg

И в этом файле пишем следующее:

JavaScript:
switch (value) {
                case 'enterVeh':
                    let veh = entity.getVariable("veh");
                    if (veh){
                        entity.taskEnterVehicle(veh.handle, 10000, -1, 1, 1, 0);//даем задачу сесть в машину
                        entity.vehicle = veh;
                    }
                    else mp.gui.chat.push("ped: У меня нет машины в которую я мог бы сесть :(");
                    break;
                case 'goMe':
                    if (entity.vehicle) {
                        entity.taskVehiclePark(entity.vehicle.handle, player.position.x, player.position.y, player.position.z, 0, 0, 50, false); //ехать к персонажу
                    } else {
                        entity.taskGoToCoordAnyMeans(player.position.x, player.position.y, player.position.z, 6, 0, false, 1, 0); //идти к персонажу
                    }
                    break;
                default:
                    mp.gui.chat.push("ped: Я не знаю команды " + value);
                    break;
            }
        }
    })
})

Всё! Теперь мы можем управлять нашей марионеткой.
/ped enterVeh - заставит сесть NPC в заспавленую машину.
/ped goMe заставит идти NPC к вам если он не в машине, или заставит ехать на машине в которую он сел.
Все действия будут синхронизированы с другими игроками!

Скрытое содержимое доступно для зарегистрированных пользователей!
 

Все для RAGE:MP

Все для RAGE:MP. Портал о мультиплеере. Подумывали об том «как создать гта 5 сервер?» или «скачать готовый сервер rage mp?» на нашем сайте вы найдете очень много полезных ресурсов для RAGE:MP: готовые сервера, скрипты, моды, карты, шаблоны сайтов, мануалы и уроки, помощь в разработке, услуги скриптеров и других специалистов в сфере RAGE Multiplayer.

RAGE Multiplayer

Объединитесь с другими игроками, создайте свой сервер, сообщество или новый игровой режим. В RAGE Multiplayer вас ждут безграничные возможности и беспрецедентный контроль. Пусть ваше воображение будет единственным горизонтом.
Официальный сайт мультиплеера - rage.mp.
Сайт входит в группу проектов GTA V MP
Верх