Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 15 из 133 ПерваяПервая ... 5 13 14 15 16 17 25 65 115 ... ПоследняяПоследняя
Показано с 141 по 150 из 1325
  1. #141
    Аватар для Kazoox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Сообщений
    121
    Репутация:
    3 ±
    50 мс интервала между проверками всех внесённых в список чекпоинтов, правильно? То есть в идеале до 20 раз в секунду? Ну хорошо, у нас есть ворота которые нужно открыть игроку, у нас есть 2 варианта:
    1) Раз в секунду проверять кор-ты с помощью IsPlayerInRangeOfPoint
    2) CreateDynamicCP которые по дефолту проверяются каждые 50 мс
    Учитывая все обстоятельства все равно второй вариант превосходит первый? Но ведь столько проверок на секунду... даже учитывая что там другой принцип проверки координат...

    И еще вопрос. Стек больше всего забивают локальные переменные или?
    Последний раз редактировалось DeimoS; 13.03.2016 в 10:33.

  2. #142
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Kazoox Посмотреть сообщение
    И еще вопрос. Стек больше всего забивают локальные переменные или?
    Локальные переменные используют только стек. Глобальные же занимают пространство в сегменте данных.
    После выполнения функции стек восстанавливается. Но не стоит забывать, что может быть переполнение стека, например, из-за размера массива.
    Последний раз редактировалось VVWVV; 13.03.2016 в 02:31.

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Приподниму

    А правда, что SetTimerEx таймер без повтора надо останавливать через KillTimer?

  4. #144
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Отвечал же уже выше =\



    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, то есть, такой?
    PHP код:
    SetTimerEx("Deimos"2500"ii"playerid1); 
    Если да, то только в том случае, когда тебе вдруг не нужно, чтоб таймер сработал (то бишь, убить его до его срабатывания). В остальных же случаях он сработает и удалится из памяти сервера (вроде, в этой теме я давал код, где таймером запускал сразу кучу таймеров и пытался посмотреть, есть ли в SA-MP ограничение на ID таймера)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Отвечал же уже выше =\
    Не заметил). Я тестил таймеры и вот такое заметил. Если запустить таймер таким способом, то после смерти игрока он будет работать в 2 раза быстрее.
    PHP код:
    public OnPlayerSpawn(playerid)
    {
        
    SetTimerEx("two"1000false"i"playerid);
        return 
    1;
    }
    public 
    two(playerid)
    {
        
    SetTimerEx("two"1000false"i"playerid);
        return 
    1;


  6. #146
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Не заметил). Я тестил таймеры и вот такое заметил. Если запустить таймер таким способом, то после смерти игрока он будет работать в 2 раза быстрее.
    PHP код:
    public OnPlayerSpawn(playerid)
    {
        
    SetTimerEx("two"1000false"i"playerid);
        return 
    1;
    }
    public 
    two(playerid)
    {
        
    SetTimerEx("two"1000false"i"playerid);
        return 
    1;

    Ну естественно, ибо ты создашь уже 2 таймера. Создавай его, например, при авторизации или входе на сервер и всё будет нормально. Либо в самом таймере делай проверку, типа:
    PHP код:
    public two(playerid)
    {
        if(
    переменная_помогающая_отловить_респавн == 1) return переменная_помогающая_отловить_респавн 0;
        
    SetTimerEx("two"1000false"i"playerid);
        return 
    1;

    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #147
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну естественно, ибо ты создашь уже 2 таймера. Создавай его, например, при авторизации или входе на сервер и всё будет нормально. Либо в самом таймере делай проверку, типа:
    PHP код:
    public two(playerid)
    {
        if(
    переменная_помогающая_отловить_респавн == 1) return переменная_помогающая_отловить_респавн 0;
        
    SetTimerEx("two"1000false"i"playerid);
        return 
    1;

    PVar будут грузить?

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

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Сообщений
    121
    Репутация:
    3 ±
    Цитата Сообщение от Kazoox Посмотреть сообщение
    50 мс интервала между проверками всех внесённых в список чекпоинтов, правильно? То есть в идеале до 20 раз в секунду? Ну хорошо, у нас есть ворота которые нужно открыть игроку, у нас есть 2 варианта:
    1) Раз в секунду проверять кор-ты с помощью IsPlayerInRangeOfPoint
    2) CreateDynamicCP которые по дефолту проверяются каждые 50 мс
    Учитывая все обстоятельства все равно второй вариант превосходит первый? Но ведь столько проверок на секунду... даже учитывая что там другой принцип проверки координат...
    Никто не поможет?

  9. #149
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    PVar будут грузить?
    А какой смысл там использовать pVar? Проще массив байтов (char) создать и уже его приравнивать к нулю/единице. Но почему именно в OnPlayerSpawn нужно создавать таймер?

    - - - Добавлено - - -

    Цитата Сообщение от Kazoox Посмотреть сообщение
    Никто не поможет?
    Плагин, во-первых, делает проверки на своей стороне, которая написана на С++ и, естественно, работает быстрее. А, во-вторых, он проверяет не все маркеры, а делит карту на ячейки и проверяет только те маркеры (пикапы/динамические зоны и т.п.), которые находятся в одной ячейке игроком.
    Ну а как это будет при большом онлайне - не скажу, ибо не проверял. Но не думаю, что из-за этого твой сервер начнёт лагать
    Последний раз редактировалось DeimoS; 13.03.2016 в 19:47.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Сообщений
    121
    Репутация:
    3 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А какой смысл там использовать pVar? Проще массив байт (char) создать и уже его приравнивать к нулю/единице. Но почему именно в OnPlayerSpawn нужно создавать таймер?

    - - - Добавлено - - -



    Плагин, во-первых, делает проверки на своей стороне, которая написана на С++ и, естественно, работает быстрее. А, во-вторых, он проверяет не все маркеры, а делит карту на ячейки и проверяет только те маркеры (пикапы/динамические зоны и т.п.), которые находятся в одной ячейке игроком.
    Ну а как это будет при большом онлайне - не скажу, ибо не проверял. Но не думаю, что из-за этого твой сервер начнёт лагать
    Что тогда по поводу Streamer_SetTickRate? Это ведь не только чекпоинтов как я понимаю касается, а и тех же объектов и тд? Какое оптимальное значение тогда? 50 как-то слишком мне кажется

 

 
Страница 15 из 133 ПерваяПервая ... 5 13 14 15 16 17 25 65 115 ... ПоследняяПоследняя

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

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

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

Ваши права

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