• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Вопрос Аналог Camera::ScreenPointToRay

mp.flow

Участник портала
9 Май 2022
39
11
68
Есть ли аналог Camera::ScreenPointToRay в RageMP? Мне нужно создать рейкаст от позиции мыши игрока.
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,490
239
100
Да, в RageMP есть аналог Camera::ScreenPointToRay. Вы можете использовать функцию mp.game.cam.getGameplayCamCoord(), чтобы получить позицию камеры игрока, и mp.game.cam.getGameplayCamRot(), чтобы получить ротацию камеры игрока. Затем вы можете использовать эти данные, чтобы создать луч с помощью mp.raycasting.testPointToPoint(). Вот пример кода:

JavaScript:
// Получаем позицию и ротацию камеры игрока
const camPos = mp.game.cam.getGameplayCamCoord();
const camRot = mp.game.cam.getGameplayCamRot(2);

// Получаем направление луча из ротации камеры
const direction = mp.game.object.offsetFromCoords(camPos.x, camPos.y, camPos.z, camRot.x, camRot.y, camRot.z);

// Создаем луч от позиции мыши до бесконечности
const raycast = mp.raycasting.testPointToPoint(camPos.x, camPos.y, camPos.z, direction.x, direction.y, direction.z, -1);

// Проверяем, есть ли пересечение с объектом
if (raycast.didHitEntity) {
    // Обработка пересечения с объектом
    const hitEntity = raycast.hitEntity;
    console.log("Пересечение с объектом:", hitEntity);
} else {
    // Пересечение не найдено
    console.log("Пересечение не найдено");
}

Помните, что данная функция будет работать только на сервере, так как рейкасты должны выполняться на сервере в многопользовательской среде.
 

mp.flow

Участник портала
9 Май 2022
39
11
68
Да, в RageMP есть аналог Camera::ScreenPointToRay. Вы можете использовать функцию mp.game.cam.getGameplayCamCoord(), чтобы получить позицию камеры игрока, и mp.game.cam.getGameplayCamRot(), чтобы получить ротацию камеры игрока. Затем вы можете использовать эти данные, чтобы создать луч с помощью mp.raycasting.testPointToPoint(). Вот пример кода:

JavaScript:
// Получаем позицию и ротацию камеры игрока
const camPos = mp.game.cam.getGameplayCamCoord();
const camRot = mp.game.cam.getGameplayCamRot(2);

// Получаем направление луча из ротации камеры
const direction = mp.game.object.offsetFromCoords(camPos.x, camPos.y, camPos.z, camRot.x, camRot.y, camRot.z);

// Создаем луч от позиции мыши до бесконечности
const raycast = mp.raycasting.testPointToPoint(camPos.x, camPos.y, camPos.z, direction.x, direction.y, direction.z, -1);

// Проверяем, есть ли пересечение с объектом
if (raycast.didHitEntity) {
    // Обработка пересечения с объектом
    const hitEntity = raycast.hitEntity;
    console.log("Пересечение с объектом:", hitEntity);
} else {
    // Пересечение не найдено
    console.log("Пересечение не найдено");
}

Помните, что данная функция будет работать только на сервере, так как рейкасты должны выполняться на сервере в многопользовательской среде.
Предоставленный код проводит raycast от камеры "gameplay" и игнорирует позицию курсора. Мне нужно провести Raycast от камеры которую я создал до точки на которую наведён курсор на экране
 

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
Предоставленный код проводит raycast от камеры "gameplay" и игнорирует позицию курсора. Мне нужно провести Raycast от камеры которую я создал до точки на которую наведён курсор на экране
можно получить позицию мыши на экране, получить необходимый угол и кинуть рейкаст
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,458
867
181
34
Код:
const cursorWorldPosition = mp.game.graphics.screen2dToWorld3d(new mp.Vector3(mp.gui.cursor.position[0], mp.gui.cursor.position[1], 0));
const start = new mp.Vector3(0, 0, 0);
const capsuleRadius = 1;
const raycast = mp.raycasting.testCapsule(start, cursorWorldPosition , capsuleRadius, this.player, 8 | 4);
 

mp.flow

Участник портала
9 Май 2022
39
11
68
Код:
const cursorWorldPosition = mp.game.graphics.screen2dToWorld3d(new mp.Vector3(mp.gui.cursor.position[0], mp.gui.cursor.position[1], 0));
const start = new mp.Vector3(0, 0, 0);
const capsuleRadius = 1;
const raycast = mp.raycasting.testCapsule(start, cursorWorldPosition , capsuleRadius, this.player, 8 | 4);
Я так попробовал но насколько я понимаю метод screen2dToWorld3d использует камеру "gameplay" а я пытаюсь сделать от созданной скриптом камеры.
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,458
867
181
34
Я так попробовал но насколько я понимаю метод screen2dToWorld3d использует камеру "gameplay" а я пытаюсь сделать от созданной скриптом камеры.
const start = new mp.Vector3(0, 0, 0);

Здесь указывай начало луча
 

mp.flow

Участник портала
9 Май 2022
39
11
68

Similar threads