Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±

    SetPlayerFacingPos - повернуть игрока к указанным координатам

    Описание:
    Поворачивает игрока лицом к указанным координатам.

    Параметры:
    playerid - ID поворачиваемого игрока
    Float:x, Float:y - координаты, к которым будет повёрнут игрок

    Возвращаемое значение:
    Функция возвращает 1, если игрок подключен, иначе - 0.

    Код:
    1. stock SetPlayerFacingPos(playerid, Float:x, Float:y)
    2. {// by Daniel_Cortez \\ pro-pawn.ru
    3. static Float:ax, Float:ay, Float:az;
    4. if(GetPlayerPos(playerid, ax, ay, az) == 0)
    5. return 0;
    6. return SetPlayerFacingAngle(playerid, atan2(y-ay, x-ax)-90.00);
    7. }


    Пример использования:
    1. CMD:setfacingpos(playerid, params[])
    2. {
    3. extract params -> new Float:x, Float:y; else
    4. return SendClientMessage(playerid, -1, "Использование: /setfacingpos [x] [y]");
    5. return SetPlayerFacingPos(playerid, x, y);
    6. }


    Автор: Daniel_Cortez

    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 5 пользователя(ей) сказали cпасибо:
    Edwin (08.06.2015) franked (17.02.2016) L0ndl3m (01.05.2015) Nazarik (01.05.2015) vovandolg (06.07.2016)
  3. #2
    Аватар для Nazarik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.09.2013
    Адрес
    Ukraine | Lvov
    Сообщений
    20
    Репутация:
    11 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение

    Параметры:
    playerid - ID поворачиваемого игрока
    Float:x, Float:y, Float:z - координаты, к которым будет повёрнут игрок
    Ошибочка в описании.

  4. Пользователь сказал cпасибо:
    Daniel_Cortez (01.05.2015)
  5. #3
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Nazarik Посмотреть сообщение
    Ошибочка в описании.
    Исправлено, thx.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Если это возможно, то хотелось бы узнать на счёт функции "atan2", а именно: что она из себя представляет? Почему именно она использована в этом коде? Когда её полезно использовать?

    P.S.: На данный вопрос можно не отвечать, хочу узнать принцип действия, ибо я ни разу не использовал данную функцию, а подробной информации о данной функции я, к сожалению так и не нашёл.

    И почему была инициализирована переменная "a", ведь можно было обойтись без неё?
    Последний раз редактировалось L0ndl3m; 01.05.2015 в 23:49.

  7. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Это арктангенс от двух параметров, представляющих собой координаты точки.
    Принцип работы можно рассмотреть на следующем рисунке:
    Функция atan2 возвращает угол точки (A;B) относительно центра координат (0;0). Угол измеряется в градусах.
    Таким образом можно получить угол между двумя точками.
    И да, в SetPlayerFacingPos я отнял от полученного угла ещё 90 градусов. Это связано с тем, что в GTA:SA ось X почему-то вывернута разработчиками в противоположную сторону и углы поворота имеют совсем другие значения со смещением в -90.

    P.S.: Немного обновил функцию.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. 2 пользователя(ей) сказали cпасибо:
    franked (17.02.2016) L0ndl3m (02.05.2015)
  9. #6
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    extract params -> new Float:x, Float:y; else
    Я чего-то не знаю?

  10. #7
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Я чего-то не знаю?
    http://forum.sa-mp.com/showthread.php?t=570927 (см. раздел "extract")

    Странно, что этим до сих пор никто не пользуется, в то время, как скоро уже будет готов sscanf3.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  11. Пользователь сказал cпасибо:
    $continue$ (11.05.2015)
  12. #8
    Аватар для Edwin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.02.2014
    Адрес
    Беларусь
    Сообщений
    196
    Репутация:
    22 ±
    Вот спасибки, как раз ломал голову над изобретением чего-то подобного
    Про позицию Z, кстати, почему-то не подумал. Благодарствую, сэр

 

 

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

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

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

Ваши права

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