Добавлял на сервер скрипт дальнобоя переделав его под лодку. Залил на сервер и выдает такую ошибку при включении двигателя и лодка не движется. Также еще если добираешься до маркера пишет ошибку playerentercolshapes error:1
const truckSpawns = [
{ x: -108.77093505859375, y: -2766.211669921875, z: 0.973876953125, heading: -18.22724151611328},
{ x: -82.05560302734375, y: -2768.9130859375, z: -0.98529052734375, heading: -12.60693359375}
];
const pickPoints = [
{ x: -161.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -200.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -150.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -161.3080749511719, y: -2840.32763671875, z: 0.4},
{ x: -171.3080749511719, y: -2815.32763671875, z: 0.4},
{ x: -160.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -151.3080749511719, y: -2840.32763671875, z: 0.4},
{ x: -131.3080749511719, y: -2815.32763671875, z: 0.4}
];
mp.events.add('packagesLoaded', () => { // при старте сервера спавним транспорт для миссии
spawnWorkVehicles("tug", truckSpawns);
});
function spawnWorkVehicles(modelName, spawnPoints){ // функция позволяет заспавнить транспорт по координатам переданным в массиве spawnPoints
spawnPoints.forEach( spawn => {
mp.vehicles.new(mp.joaat(modelName), spawn, { heading: spawn.heading});
});
}
mp.events.addCommand('tw', (player) => { // команда старта работы
let loadPoint = getRandomPoint();
let destPoint;
do{
destPoint = getRandomPoint();
} while(loadPoint.x == destPoint.x && loadPoint.y == destPoint.y); // проверяем чтобы точки старта и финиша не совпадали
player.call('playerStartTruckWork', [loadPoint, destPoint]);
});
function getRandomPoint(){ // получаем случайную точку из массива pickPoints
return pickPoints[ Math.floor( Math.random() * pickPoints.length ) ];
}
{ x: -108.77093505859375, y: -2766.211669921875, z: 0.973876953125, heading: -18.22724151611328},
{ x: -82.05560302734375, y: -2768.9130859375, z: -0.98529052734375, heading: -12.60693359375}
];
const pickPoints = [
{ x: -161.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -200.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -150.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -161.3080749511719, y: -2840.32763671875, z: 0.4},
{ x: -171.3080749511719, y: -2815.32763671875, z: 0.4},
{ x: -160.3080749511719, y: -2885.32763671875, z: 0.4},
{ x: -151.3080749511719, y: -2840.32763671875, z: 0.4},
{ x: -131.3080749511719, y: -2815.32763671875, z: 0.4}
];
mp.events.add('packagesLoaded', () => { // при старте сервера спавним транспорт для миссии
spawnWorkVehicles("tug", truckSpawns);
});
function spawnWorkVehicles(modelName, spawnPoints){ // функция позволяет заспавнить транспорт по координатам переданным в массиве spawnPoints
spawnPoints.forEach( spawn => {
mp.vehicles.new(mp.joaat(modelName), spawn, { heading: spawn.heading});
});
}
mp.events.addCommand('tw', (player) => { // команда старта работы
let loadPoint = getRandomPoint();
let destPoint;
do{
destPoint = getRandomPoint();
} while(loadPoint.x == destPoint.x && loadPoint.y == destPoint.y); // проверяем чтобы точки старта и финиша не совпадали
player.call('playerStartTruckWork', [loadPoint, destPoint]);
});
function getRandomPoint(){ // получаем случайную точку из массива pickPoints
return pickPoints[ Math.floor( Math.random() * pickPoints.length ) ];
}
const markerType = 1; // тип маркера
const markerSize = 5; // размер маркера
const markerColor = [255, 0, 0, 100]; // цвет маркера
const blipType = 67; // тип иконки на радаре
const freezeTime = 3; // время на сколько замораживать игрока при загрузке/разгрузке, в секундах
const localPlayer = mp.players.local; // локальный игрок
let loadPoint = false; // точка загрузки
let destPoint = false; // точка выгрузки
let workMarker = false; // маркер
let workMarkerColshape = false; // колшейп
let workBlip = false; // иконка на радаре
let missionStatus = 0; // Статус миссии: 0 - не начато, 1 - идем к точке загрзки, 2 - едем к точке разгрузки
mp.events.add('playerStartTruckWork', (startPoint, finishPoint)=> { // запуск миссии
if( missionStatus !== 0){
return mp.gui.chat.push("ОШИБКА: Вы уже начали работу Дальнобойщика!");
}
// запонимаем точки старта и назначения
loadPoint = startPoint;
destPoint = finishPoint;
setMarker(startPoint);
missionStatus = 1;
mp.gui.chat.push("Вы начали работу Дальнобойщика!");
});
mp.events.add('playerEnterColshape', (colshape) => { // попадание игрока в колшейп
if( colshape == workMarkerColshape){ // проверяем что это наш колшейп
pickLocation();
}
});
function pickLocation(){ // игрок наехал на маркер
clearMarker();
freezePlayer();
if( missionStatus == 1){
playerReachLoadingPoint(); // загружаем груз
} else if ( missionStatus == 2){
playerReachDestPoint(); // выгружаем груз
}
}
function playerReachLoadingPoint(){ // игрок доехал до точки загрузки
mp.gui.chat.push("Вы прибыли на место загрузки. Ожидайте...");
mp.gui.chat.push("Вы получили");
setTimeout( () => {
unfreezePlayer();
mp.gui.chat.push("Отправляйтесь к месту разгрузки");
missionStatus = 2;
setMarker(destPoint);
}, freezeTime * 10);
}
function playerReachDestPoint(){ // игрок доехал до точки разгрузки
mp.gui.chat.push("Вы прибыли на место загрузки. Ожидайте...");
mp.gui.chat.push("Вы получили 100$");
setTimeout( () => {
unfreezePlayer();
mp.gui.chat.push("Отправляйтесь к месту разгрузки");
missionStatus = 1;
setMarker(loadPoint);
}, freezeTime * 10);
}
function setMarker(point){ // ставим маркер в точку point
workMarker = mp.markers.new(markerType, point, markerSize, { color: markerColor});
workMarkerColshape = mp.colshapes.newSphere(point.x, point.y, point.z, markerSize);
workBlip = mp.blips.new(blipType, point, {shorRange: false});
workBlip.setRoute(true); // включаем отображение маршрута на карте
}
function clearMarker(){ // убираем маркер
workMarker.destroy();
workMarkerColshape.destroy();
workBlip.setRoute(false);
workBlip.destroy();
}
function freezePlayer(){
localPlayer.vehicle.freezePosition(true);
}
function unfreezePlayer(){
localPlayer.vehicle.freezePosition(false);
}
const markerSize = 5; // размер маркера
const markerColor = [255, 0, 0, 100]; // цвет маркера
const blipType = 67; // тип иконки на радаре
const freezeTime = 3; // время на сколько замораживать игрока при загрузке/разгрузке, в секундах
const localPlayer = mp.players.local; // локальный игрок
let loadPoint = false; // точка загрузки
let destPoint = false; // точка выгрузки
let workMarker = false; // маркер
let workMarkerColshape = false; // колшейп
let workBlip = false; // иконка на радаре
let missionStatus = 0; // Статус миссии: 0 - не начато, 1 - идем к точке загрзки, 2 - едем к точке разгрузки
mp.events.add('playerStartTruckWork', (startPoint, finishPoint)=> { // запуск миссии
if( missionStatus !== 0){
return mp.gui.chat.push("ОШИБКА: Вы уже начали работу Дальнобойщика!");
}
// запонимаем точки старта и назначения
loadPoint = startPoint;
destPoint = finishPoint;
setMarker(startPoint);
missionStatus = 1;
mp.gui.chat.push("Вы начали работу Дальнобойщика!");
});
mp.events.add('playerEnterColshape', (colshape) => { // попадание игрока в колшейп
if( colshape == workMarkerColshape){ // проверяем что это наш колшейп
pickLocation();
}
});
function pickLocation(){ // игрок наехал на маркер
clearMarker();
freezePlayer();
if( missionStatus == 1){
playerReachLoadingPoint(); // загружаем груз
} else if ( missionStatus == 2){
playerReachDestPoint(); // выгружаем груз
}
}
function playerReachLoadingPoint(){ // игрок доехал до точки загрузки
mp.gui.chat.push("Вы прибыли на место загрузки. Ожидайте...");
mp.gui.chat.push("Вы получили");
setTimeout( () => {
unfreezePlayer();
mp.gui.chat.push("Отправляйтесь к месту разгрузки");
missionStatus = 2;
setMarker(destPoint);
}, freezeTime * 10);
}
function playerReachDestPoint(){ // игрок доехал до точки разгрузки
mp.gui.chat.push("Вы прибыли на место загрузки. Ожидайте...");
mp.gui.chat.push("Вы получили 100$");
setTimeout( () => {
unfreezePlayer();
mp.gui.chat.push("Отправляйтесь к месту разгрузки");
missionStatus = 1;
setMarker(loadPoint);
}, freezeTime * 10);
}
function setMarker(point){ // ставим маркер в точку point
workMarker = mp.markers.new(markerType, point, markerSize, { color: markerColor});
workMarkerColshape = mp.colshapes.newSphere(point.x, point.y, point.z, markerSize);
workBlip = mp.blips.new(blipType, point, {shorRange: false});
workBlip.setRoute(true); // включаем отображение маршрута на карте
}
function clearMarker(){ // убираем маркер
workMarker.destroy();
workMarkerColshape.destroy();
workBlip.setRoute(false);
workBlip.destroy();
}
function freezePlayer(){
localPlayer.vehicle.freezePosition(true);
}
function unfreezePlayer(){
localPlayer.vehicle.freezePosition(false);
}