Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5
  1. #1
    Аватар для Jous
    Пользователь

    Статус
    Оффлайн
    Регистрация
    20.02.2018
    Сообщений
    1
    Репутация:
    0 ±

    ColAndreas. Координаты

    Долго искал по интернету и пришел к выводу, что единственным нормальным выходом будет ColAndreas. Мне требуется узнать, в какую точку смотрит игрок(и куда он целится), а именно координаты этой точки. Только вот функцию из ColAndreas, которая выполняет это, не знаю. Прошу помочь, описать функцию и желательно пример использования, просто в первые работаю с этим плагином

  2. #2
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Думаю, хватит одной функции:

    PHP код:
    CA_RayCastLine(Float:StartXFloat:StartYFloat:StartZFloat:EndXFloat:EndYFloat:EndZ, &Float:x, &Float:y, &Float:z

  3. #3
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    PHP код:
    #define MAX_SCALE_DIST    100.0 //Максимальная дистанция для проверки, на которую пустится луч

    new
        
    Float:pXFloat:pYFloat:pZ,
        
    Float:vXFloat:vYFloat:vZ,
        
    Float:atXFloat:atYFloat:atZ;

    GetPlayerCameraPos(playeridpXpYpZ); //Узнаём начальные координаты для луча
    GetPlayerCameraFrontVector(playeridvXvYvZ);

    //Вычисляем конечные координаты для луча
    atX pX + (vX MAX_SCALE_DIST);
    atY pY + (vY MAX_SCALE_DIST);
    atZ pZ + (vZ MAX_SCALE_DIST);

    //Узнаём, нашёл ли луч какую-то коллизию с объектом на своём пути
    if(CA_RayCastLine(pXpYpZvXvYvZatXatYatZ)) //Нашёл
    //Координаты коллизии (т.е. та точка, в которую смотрит игрок) теперь лежат в atX, atY, atZ
        //Твой код
    }
    else 
    //Луч ни с чем не столкнулся, возможно игрок смотрит в небо или что-то подобное
    {
        
    //Твой код

    Последний раз редактировалось Nexius_Tailer; 24.02.2018 в 17:24.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  4. #4
    Аватар для Long-
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.11.2016
    Сообщений
    131
    Репутация:
    23 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    PHP код:
    #define MAX_SCALE_DIST    100.0 //Максимальная дистанция для проверки, на которую пустится луч

    new
        
    Float:pXFloat:pYFloat:pZ,
        
    Float:vXFloat:vYFloat:vZ,
        
    Float:atXFloat:atYFloat:atZ;

    GetPlayerCameraPos(playeridpXpYpZ); //Узнаём начальные координаты для луча
    GetPlayerCameraFrontVector(playeridvXvYvZ);

    //Вычисляем конечные координаты для луча
    atX pX + (vX MAX_SCALE_DIST);
    atY pY + (vY MAX_SCALE_DIST);
    atZ pZ + (vZ MAX_SCALE_DIST);

    //Узнаём, нашёл ли луч какую-то коллизию с объектом на своём пути
    if(CA_RayCastLine(pXpYpZvXvYvZatXatYatZ)) //Нашёл
    //Координаты коллизии (т.е. та точка, в которую смотрит игрок) теперь лежат в atX, atY, atZ
        //Твой код
    }
    else 
    //Луч ни с чем не столкнулся, возможно игрок смотрит в небо или что-то подобное
    {
        
    //Твой код

    Лучше бы он сам попробовал сделать, чем кидать готовый код :)
    Так-же у тебя немного не корректный код:

    Параметры в первые три аргумента стоило находить от нахождения игрока, а не камеры.

    Float:StartX, Float:StartY, Float:StartZ - задаёшь сюда координаты игрока
    Float:EndX, Float:EndY, Float:EndZ - задаёшь сюда точку назначения
    &Float:x, &Float:y, &Float:z - получаешь здесь координаты точки коллизии объекта
    Последний раз редактировалось Long-; 24.02.2018 в 17:49.

  5. #5
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Long- Посмотреть сообщение
    Лучше бы он сам попробовал сделать, чем кидать готовый код :)
    Так-же у тебя немного не корректный код:

    Параметры в первые три аргумента стоило находить от нахождения игрока, а не камеры.

    Float:StartX, Float:StartY, Float:StartZ - задаёшь сюда координаты игрока
    Float:EndX, Float:EndY, Float:EndZ - задаёшь сюда точку назначения
    &Float:x, &Float:y, &Float:z - получаешь здесь координаты точки коллизии объекта
    Корректный, т.к. от позиции игрока будет правильно работать только тогда, когда он на ногах, в то время как от камеры работает корректно при любой ситуации.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •