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

Все для RageMP GTA 5

  • Гость, на форуме проходит розыгрыш, возможно ты станешь победителем! ПРИНЯТЬ УЧАСТИЕ Теги: Халява, Бесплатно, Деньги даром
  • Собираем команду. подробности ТYТ либо в discord канале форума!

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

Appi

Пробегом тут
Випка
Команда форума
Куратор портала
Регистрация
27.03.2023
Сообщения
176
Реакции
84
Баллы
65
RC
283
Создаем 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 к вам если он не в машине, или заставит ехать на машине в которую он сел.
Все действия будут синхронизированы с другими игроками!

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

Все для RAGE:MP

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

RAGE Multiplayer

Объединитесь с другими игроками, создайте свой сервер, сообщество или новый игровой режим. В RAGE Multiplayer вас ждут безграничные возможности и беспрецедентный контроль. Пусть ваше воображение будет единственным горизонтом.

Сайт входит в группу проектов GTA V MP
Верх