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

Вопрос colshapes

mecinat

Участник портала
Автор темы
18 Мар 2023
24
1
8
Ковырял я colshape и не понял одной вещи. Можно ли как то получить координаты шейпа если например мы создали его на сервере, и нам нужно получить его координаты на клиенте. Я пытался отправить массив со всеми шейпами, но результата не оказалось. Как это можно решить?
 

Лорд

Начинающий специалист
6 Окт 2020
49
6
72
30
Можно по идее передавать клиенту информацию о координатах но зачем создавать его на сервере чтобы потом искать на клиенте?
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Не уверен, но
JavaScript:
mp.colshapes.forEach(colshape => // Все ColShape, которые видит клиент
{
    mp.gui.chat.push(`${colshape.position}`);
});

mp.colshapes.forEachInStreamRange(colshape => // Все ColShape, которые видит клиент в зоне прорисовки игрока
{
    mp.gui.chat.push(`${colshape.position}`);
});
По идее ты можешь использовать SharedData, на сервере выставить что-нибудь кулшейпу при создании и использовать это для идентификации на клиенте.
 

DaVilka

Гуру
16 Сен 2020
605
228
108
Добавлю что ивенты, на вход и выход для колшейпа доступны и для клиента
 

kirjushka////////////

Участник портала
28 Янв 2023
21
14
13
mp.colshapes.atRemoteId(ID)

ID - это айди колшейпа с сервера.
 

Mi-Zaft

Гуру
VIP
9 Окт 2020
1,189
412
145
Реакции: h4cker777

mecinat

Участник портала
Автор темы
18 Мар 2023
24
1
8
Спасибо за помощью, но к сожелению у colshape не имеется position
 

ff!

Участник портала
30 Дек 2022
1
0
23

Можно закостылить решение:

server
JavaScript:
const colshape = mp.colshapes.newSphere(x, y, z, radius);
colshape.setVariable('colshape::id', colshape.id);
colshape.setVariable('colshape::position', JSON.stringify({x, y, z}));

client

JavaScript:
mp.colshapes.forEach(colshape => // Все ColShape, которые видит клиент
{
    const position = colshape.getVariable('colshape::position') ? JSON.parse(colshape.getVariable('colshape::position')) : null;
    const id = colshape.getVariable('colshape::id') || null;
    mp.gui.chat.push(`${id}, ${position}`);
});

А вообще если тебе что-то нужно делать с этими шейпами - лучше использовать события входа/выхода в них и уже вызывать нужные методы (либо звонить в клиент)
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27