This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Проблема с системой GPS

Lost Angel

Участник портала
18 Июн 2024
7
2
18
Добрый день! У меня возникла такая проблема: я написал систему 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");
                    }
                }
            },
 
Последнее редактирование:

Lost Angel

Участник портала
18 Июн 2024
7
2
18
Код:
Client Event:

mp.events.add("createBlips", (location) => {
    const blip = mp.blips.new(1, new mp.Vector3(location.x, location.y, location.z), {
        name: 'Навигационная метка',
        scale: 1,
        color: 50,
        alpha: 255,
        drawDistance: 100,
        shortRange: false,
        rotation: 0,
        dimension: 0
    });
});
 
Последнее редактирование:

Vermilion

Мастер
29 Сен 2021
972
748
151
34
На клиент информация приходит? Выводил в консоль? Так же надо убрать вот это
Код:
drawDistance: 100,

Так как блип будет виден только на расстоянии 100 метров до него
 

Swayze

Начинающий специалист
6 Окт 2022
66
16
45
Не хватает blip.setRoute(true);
 

Vermilion

Мастер
29 Сен 2021
972
748
151
34

Lost Angel

Участник портала
18 Июн 2024
7
2
18
Через console.log не выводил, но пытался сделать чтобы выводило в чат, но не выводит, а через серверную команду и player.call все создается
 

Vermilion

Мастер
29 Сен 2021
972
748
151
34
Код:
mp.console.logInfo(JSON.stringify(location))
В игре открываешь F11 и смотришь
 

Swayze

Начинающий специалист
6 Окт 2022
66
16
45
console.log выведет информацию в консоль тебе только на сервере, для клиента есть отдельная команда, выше написали тебе
 

Lost Angel

Участник портала
18 Июн 2024
7
2
18
Код:
mp.console.logInfo(JSON.stringify(location))
В игре открываешь F11 и смотришь
Если вызывать mp.trigger('createBlips', singleLocation); то он выводит что у location.x не определен x, если mp.trigger('createBlips', [singleLocation]); то вообще ничего не выводит)
 

Vermilion

Мастер
29 Сен 2021
972
748
151
34
Вот тебе и ответ. На клиент не приходят координаты, соответственно и блип не создается
 

Vermilion

Мастер
29 Сен 2021
972
748
151
34
А вообще, я бы на твоем месте изначально посмотрел в консоли что ты отправляешь
Код:
console.log(singleLocation)
mp.trigger('createBlips', singleLocation);

Может быть проблема где то раньше
 
Реакции: Lost Angel

Lost Angel

Участник портала
18 Июн 2024
7
2
18
Спасибо дружище, помог, теперь все работает!
 
Реакции: Vermilion