Добрый день! У меня возникла такая проблема: я написал систему GPS, выбор пунктов работает в целом, но когда я пытаюсь выбрать что-то, метка не устанавливается.
JavaScript:
CEF:
"navigations": {
name: "navigations",
header: "Навигация",
items: [{
text: "Важные места",
},
{
text: "Работы"
},
{
text: "Государственные организации"
},
{
text: "Уличные группировки"
},
{
text: "Автосалоны и Los Santos Customs"
},
{
text: "Развлечения"
},
{
text: "Разное"
},
{
text: "Закрыть"
},
],
i: 0,
j: 0,
list: {
"Важные места": [{
id: 1,
name: "Мэрия",
coordinates: { x: -540.10, y: -212.07, z: 37.65, z: 0 }
},
{
id: 2,
name: "Центр лицензирования",
coordinates: { x: -118.01, y: -629.35, z: 0 }
},
{
id: 3,
name: "Банк",
locations: [
{ x: 315.80, y: -274.43, z: 0},
{ x: 1175.09, y: 2701.96, z: 0},
{ x: -2967.53, y: 15.47, z: 0},
{ x: 150.99, y: -1036.94, z: 0}
]
},
{
id: 4,
name: "Аэропорт Los Santos",
coordinates: { x: -1033.35, y: -2730.50, z: 0 }
},
{
id: 5,
name: "Подземное метро",
coordinates: { x: -245.42, y: -337.89, z: 0 }
},
{
id: 6,
name: "Железнодорожная станция",
coordinates: { x: 118.46, y: -1729.55, z: 0 }
}
],
"Работы": [{
id: 7,
name: "Ферма",
coordinates: { x: 2037.28, y: 4978.24, z: 0 }
},
{
id: 8,
name: "Таксопарк 'Cuber'",
coordinates: { x: 915.98, y: -180.55, z: 0 }
},
{
id: 9,
name: "Шахта",
coordinates: { x: 2562.51, y: 2708.46, z: 0 }
},
{
id: 10,
name: "Лесопилка",
coordinates: { x: -578.71, y: 5251.16, z: 0 }
},
{
id: 11,
name: "Грузоперевозки",
coordinates: { x: 859.10, y: -1570.42, z: 0 }
},
{
id: 12,
name: "СТО",
locations: [
{ x: 529.60, y: 54.22, z: 0 },
{ x: 499.23, y: -1309.03, z: 0 },
{ x: -232.78, y: -1411.19, z: 0 }
]
},
],
"Государственные организации": [{
id: 13,
name: "Мэрия",
coordinates: { x: -542.10, y: -209.02, z: 0 }
},
{
id: 14,
name: "ФБР",
coordinates: { x: 65.42, y: -740.65, z: 0 }
},
{
id: 15,
name: "Больница",
coordinates: { x: 296.45, y: -584.11, z: 0 }
},
{
id: 16,
name: "Полицейский департамент",
coordinates: { x: 427.50, y: -980.42, z: 0 }
},
{
id: 17,
name: "Департамент шерифа",
coordinates: { x: -438.58, y: 6021.15, z: 0 }
},
{
id: 18,
name: "Центр лицензирования",
coordinates: { x: -118.01, y: -629.35, z: 0 }
},
{
id: 19,
name: "Военная база",
coordinates: { x: -1580.85, y: 2791.46, z: 0 }
},
],
"Уличные группировки": [{
id: 20,
name: "Marabunta Grande",
coordinates: { x: 1269.73, y: -1737.86, z: 0 }
},
{
id: 21,
name: "The Families",
coordinates: { x: -0.35, y: -1461.16, z: 0 }
},
{
id: 22,
name: "The Ballas Gang",
coordinates: { x: 80.60, y: -1923.36, z: 0 }
},
{
id: 23,
name: "Los Santos Vagos",
coordinates: { x: 302.77, y: -2012.64, z: 0 }
},
{
id: 24,
name: "La Cosa Nostra",
coordinates: { x: 181.59, y: 1674.67, z: 0 }
},
{
id: 25,
name: "Russian Mafia",
coordinates: { x: -120.53, y: 900.97, z: 0 }
},
{
id: 26,
name: "Yakuza",
coordinates: { x: -1470.78, y: 63.76, z: 0 }
},
],
"Автосалоны и Los Santos Customs": [{
id: 27,
name: "Автосалон",
coordinates: { x: -39.03, y: -1110.25, z: 0 }
},
{
id: 28,
name: "Автосалон Люкс",
coordinates: { x: -806.27, y: -225.78, z: 0 }
},
{
id: 29,
name: "Los Santos Customs",
locations: [
{ x: -316.80, y: -131.88, z: 0 },
{ x: 1178.60, y: 2655.05, z: 0 },
{ x: 715.48, y: -1088.51, z: 0 },
{ x: -210.83, y: -1346.69, z: 0 },
{ x: -1141.80, y: -1986.97, z: 0 },
{ x: 119.83, y: 6614.08, z: 0 }
]
},
],
"Развлечения": [{
id: 30,
name: "Казино",
coordinates: { x: 923.76, y: 47.80, z: 0 }
},
],
"Разное": [{
id: 31,
name: "Церковь",
coordinates: { x: -1679.28, y: -295.09, z: 0 }
},
{
id: 32,
name: "Рыбалка",
locations: [
{ x: -1579.15, y: 5194.66, z: 0 },
{ x: 714.06, y: 4153.10, z: 0 },
{ x: -1630.88, y: -1123.28, z: 0 },
{ x: -429.57, y: 6359.52, z: 0 }
]
},
{
id: 33,
name: "СТО",
locations: [
{ x: 529.60, y: 54.22, z: 0 },
{ x: 499.23, y: -1309.03, z: 0 },
{ x: -232.78, y: -1411.19, z: 0 }
]
},
],
},
handler(eventName) {
var item = this.items[this.i];
var e = {
menuName: this.name,
itemName: item.text,
itemIndex: this.i,
itemValue: (item.i != null && item.values) ? item.values[item.i] : null,
valueIndex: item.i,
};
if (eventName == 'onItemSelected') {
if (e.itemName == 'Закрыть') {
selectMenu.show = false;
} else {
var key = Object.keys(this.list)[e.itemIndex];
selectMenu.menus["navigationList"].init(key, this.list[key]);
selectMenu.showByName("navigationList");
}
} else if (eventName == 'onBackspacePressed') {
selectMenu.show = false;
}
}
},
"navigationList": {
name: "navigationList",
header: "Категория",
items: [{
text: "Место 1",
},
{
text: "Место 2"
},
{
text: "Вернуться"
},
],
i: 0,
j: 0,
list: null,
init(header, list) {
this.header = header,
this.list = list;
var items = [];
list.forEach(place => {
items.push({
text: place.name,
locations: place.locations || null
});
});
items.push({
text: "Вернуться"
});
selectMenu.setItems("navigationList", items);
},
handler(eventName) {
var item = this.items[this.i];
var e = {
menuName: this.name,
itemName: item.text,
itemIndex: this.i,
itemValue: (item.i != null && item.values) ? item.values[item.i] : null,
valueIndex: item.i,
};
if (eventName == 'onItemSelected') {
if (e.itemName == 'Вернуться') {
selectMenu.showByName("navigations");
}
if (item.locations) {
const playerPos = mp.players.local.position;
let closestLocation = null;
let minDistance = Infinity;
item.locations.forEach(location => {
const distance = Math.sqrt(
Math.pow(location.x - playerPos.x, 2) +
Math.pow(location.y - playerPos.y, 2) +
Math.pow(location.z - playerPos.z, 2)
);
if (distance < minDistance) {
minDistance = distance;
closestLocation = location;
}
});
if (closestLocation) {
mp.trigger('createBlips', closestLocation);
}
} else {
const singleLocation = item.coordinates;
if (singleLocation) {
mp.trigger('createBlips', singleLocation);
}
}
} else if (eventName == 'onBackspacePressed') {
selectMenu.showByName("navigations");
}
}
},
Последнее редактирование: