Создаем npc на стороне сервера(Я взял чистый сервер создал в нем папку server и в этой папке создал index.js):
Теперь прописав в чат /spawnPed мы можем заспавнить нашего NPС
Зачем нужен контроллер? Скажу лишь, что через указанного игрока будет осуществляться синхронизация NPC с другими игроками.
Контроллера можно сменить в любой момент.
Идем дальше. Нам нужно как-то давать команды нашему NPC. Пусть NPC будет взаимодействовать с машиной, добавим возможность спавна авто.
Дополняем наш код на стороне сервера.
Теперь можем создать авто /spawnVeh Hash (/spawnVeh taxi)
Главный вопрос, как заставить NPC совершать какие-то действия? Давайте попробуем заставить нашего подопечного сесть в авто. И доехать до нас!
Все также на сервере
Что здесь происходит? Мы при вызове команды /ped command передаем какую-нибудь команду боту.(не обязательно это делать так, это один из способов)
Это еще не все. На клиенте создайте файлик index.js
И в этом файле пишем следующее:
Всё! Теперь мы можем управлять нашей марионеткой.
/ped enterVeh - заставит сесть NPC в заспавленую машину.
/ped goMe заставит идти 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,//синхранизирован 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С
}
});
Что здесь происходит? Мы при вызове команды /ped command передаем какую-нибудь команду боту.(не обязательно это делать так, это один из способов)
Это еще не все. На клиенте создайте файлик index.js
И в этом файле пишем следующее:
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 к вам если он не в машине, или заставит ехать на машине в которую он сел.
Все действия будут синхронизированы с другими игроками!
Скрытое содержимое доступно для зарегистрированных пользователей!