Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 2 ПерваяПервая 1 2
Показано с 11 по 18 из 18
  1. #11
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Kazoox Посмотреть сообщение
    W_Points заинтересовал, но результаты теста старые (6 лет). По тестам в офф.теме получается что стример работает медленнее, но быть может за 6 лет всё изменилось в обратную сторону? Допустим, у нас есть ворота которые должны открываться если к ним приблизился игрок, у какого из вариантов будет выше КПД?
    1) Создаём чекпоинты с помощью стримера (CreateDynamicCP) с одной и с другой стороны ворот соответственно. И когда игрок встал на чекпоинт (OnPlayerEnterCheckPoint):
    PHP код:
    if(IsPlayerInRangeOfPoint(playerid,radius,x,y,z)) MoveObject(...); 
    2) Создаём сферу у ворот. И при вхождении игрока в сферу:
    PHP код:
    if(IsPlayerInRangeOfPoint(playerid,radius,x,y,z)) MoveObject(...); 
    И насколько велика разница? У меня реализован 1 вариант, в случае если 2 вариант не сильно уж и шустрее, то смысла как я понимаю "заморачиваться" мало.
    Протестировал я W_Points, в итоге результаты теста показали что IsPlayerInRangeOfPoint работает в разы быстрее чем GetPlayerPoint.
    Эм, для чекпоинтов (да и для всего подобного) следует делать так:
    PHP код:
    new
        
    gGateCP;

    public 
    OnGameModeInit()
    {
        
    gGateCP CreateDynamicCP(...);
        return 
    1;
    }

    public 
    OnPlayerEnterDynamicCP(playeridSTREAMER_TAG_CP checkpointid)
    {
        if (
    checkpointid == gGateCP) {
            
    // открыть ворота
        
    }
        return 
    1;

    А проверок вида if(IsPlayerInRangeOfPoint(playerid,radius,x,y,z)), при правильном использовании стримера, быть вообще не должно.

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

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Сообщений
    121
    Репутация:
    3 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Эм, для чекпоинтов (да и для всего подобного) следует делать так:
    PHP код:
    new
        
    gGateCP;

    public 
    OnGameModeInit()
    {
        
    gGateCP CreateDynamicCP(...);
        return 
    1;
    }

    public 
    OnPlayerEnterDynamicCP(playeridSTREAMER_TAG_CP checkpointid)
    {
        if (
    checkpointid == gGateCP) {
            
    // открыть ворота
        
    }
        return 
    1;

    А проверок вида if(IsPlayerInRangeOfPoint(playerid,radius,x,y,z)), при правильном использовании стримера, быть вообще не должно.
    Хорошо, а если нам надо (допустим) отправить всем игрокам в определённом радиусе сообщение? Все равно ведь придется использовать IsPlayerInRangeOfPoint. Можно конечно использовать GetPlayerDistanceFromPoint, но не суть, у стримера ведь нет функций подобных.
    Последний раз редактировалось Kazoox; 27.03.2016 в 16:57.

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

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    А это тут причем?

  4. #14
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Kazoox Посмотреть сообщение
    Хорошо, а если нам надо (допустим) отправить всем игрокам в определённом радиусе сообщение? Все равно ведь придется использовать IsPlayerInRangeOfPoint. Можно конечно использовать GetPlayerDistanceFromPoint, но не суть, у стримера ведь нет функций подобных.
    Ну это уже совсем другая задача, но и для этого можно использовать зоны стримера, но я бы не заморачивался.

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

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Сообщений
    121
    Репутация:
    3 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Ну это уже совсем другая задача, но и для этого можно использовать зоны стримера, но я бы не заморачивался.
    Так всё же быть может лучше отказаться от чекпоинтов и использовать сферы и те же прямоугольники (CreateDynamicRectangle)? Для тех же ворот было бы более целесообразно использовать сферы, а вот к примеру для проверки находится ли игрок у бензоколонок, на заправке - прямоугольники и тд? То есть я к тому что стоит ли мне над этим "заморачиваться" или же чекпоинты справятся со своей задачей и так на ура.

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

    Статус
    Оффлайн
    Регистрация
    06.03.2016
    Адрес
    Moscow
    Сообщений
    167
    Репутация:
    44 ±
    Цитата Сообщение от Kazoox Посмотреть сообщение
    Так всё же быть может лучше отказаться от чекпоинтов и использовать сферы и те же прямоугольники (CreateDynamicRectangle)? Для тех же ворот было бы более целесообразно использовать сферы, а вот к примеру для проверки находится ли игрок у бензоколонок, на заправке - прямоугольники и тд? То есть я к тому что стоит ли мне над этим "заморачиваться" или же чекпоинты справятся со своей задачей и так на ура.
    По личным наблюдениям сферы медленней CP срабатывают.
    Последний раз редактировалось Nash_Brigers; 27.03.2016 в 17:22.

  7. #17
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Kazoox Посмотреть сообщение
    Так всё же быть может лучше отказаться от чекпоинтов и использовать сферы и те же прямоугольники (CreateDynamicRectangle)? Для тех же ворот было бы более целесообразно использовать сферы, а вот к примеру для проверки находится ли игрок у бензоколонок, на заправке - прямоугольники и тд? То есть я к тому что стоит ли мне над этим "заморачиваться" или же чекпоинты справятся со своей задачей и так на ура.
    При входе в чекпоинт клиент отправляет на сервер информацию об этом, поэтому это событие срабатывает с минимальной задержкой. А зоны проверяются с задержкой Streamer_GetTickRate(), которая для игрока будет заметна. Поэтому для чекпоинтов и пикапов лучше использовать соответствующие автовызываемые функции.

  8. #18
    Аватар для Kazoox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Сообщений
    121
    Репутация:
    3 ±
    Тему можно закрывать. Благодарю за помощь.

 

 
Страница 2 из 2 ПерваяПервая 1 2

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

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

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

Ваши права

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