Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3

Тема: Про Dynamic

  1. #1
    Аватар для gangzone.ini
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.06.2014
    Сообщений
    651
    Репутация:
    106 ±

    Про Dynamic

    У меня такие вопросы:

    1. Чем отличается CreateDynamicObject от CreateObject и что лучше ?

    2. Что делает вот это: #pragma dynamic ... [кол-во]

    3. Есть разница или только кол-во строк сокращается?

    PHP код:
    1. 
    public 123(playerid)
    {
        return 
    1;
    }
    2. 
    public 123(playerid){
        return 
    1;} 
    Последний раз редактировалось gangzone.ini; 09.11.2014 в 00:13.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    1) Первая функция относится к плагину Streamer и создаёт объекты, которые понятны плагину, а вторая - создаёт стандартные объекты, которых всего 1000 может быть показано для одного игрока.
    Различие между объектами таково, что стандартные объекты грузятся в память клиента при входе на сервер и не выгружаются, пока он не выйдет. Динамические же объекты (объекты, созданные стримером) подгружаются только тогда, когда попадают в зону стрима (прогрузки) и как только покидают эту зону, они автоматически удаляются и, соответственно, отчищаются из памяти клиента (такой способ и позволяет создавать на сервере больше 1000 объектов за раз). Использовать обе функции одновременно можно, но CreateObject должно быть не больше 500 (либо больше/меньше. Зависит от того, как настроен стример. А именно то, сколько объектов он прогружает игроку. По дэфолту это значение равно 500. А раз SA-MP не переваривает больше 1000 объектов, значит от 1000 отнимаем тот лимит, что настроен в стримере и получаем число возможных CreateObject). Почему? Да потому что стандартные объекты, как уже было сказано ранее, не выгружаются из памяти клиента, пока он на сервере => если ты создашь, например, 700 объектов, а стример попытается отобразить 500, он сможет создать для игрока лишь 300 объектов в округе. Остальные 200 он прогрузить не сможет, ибо достигнут лимит SA-MP в 1000 объектов.
    Как-то так :)

    2) Данная директива увеличивает число выделяемой памяти под стэк. По дэфолту под стэк выделяется 16384 байт, но это не значит, что нельзя выделить больше/меньше. Но если вдруг компилятор ругается на переполнение стэка, лучше сначала попробовать оптимизировать код (урезать массивы, убрав лишние ячейки и т.п.), а лишь потом увеличивать.
    Можно и уменьшить. Но смысла в этом особого нет, ибо 16384 байт - не так уж и много для современных машин

    3) Для сервера разницы никакой. Все скобки/отступы и прочее удаляется на стадии компиляции. Машине плевать на то, как оформлен код. Оформление нужно человеку, который этот код будет читать. Именно для этого и придумываются различные языки программирования, а не используется двоичный машинный код, который понятен машине. Так что лучше используй первый вариант.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    gangzone.ini (09.11.2014)
  4. #3
    Аватар для gangzone.ini
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.06.2014
    Сообщений
    651
    Репутация:
    106 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    1) Первая функция относится к плагину Streamer и создаёт объекты, которые понятны плагину, а вторая - создаёт стандартные объекты, которых всего 1000 может быть показано для одного игрока.
    Различие между объектами таково, что стандартные объекты грузятся в память клиента при входе на сервер и не выгружаются, пока он не выйдет. Динамические же объекты (объекты, созданные стримером) подгружаются только тогда, когда попадают в зону стрима (прогрузки) и как только покидают эту зону, они автоматически удаляются и, соответственно, отчищаются из памяти клиента (такой способ и позволяет создавать на сервере больше 1000 объектов за раз). Использовать обе функции одновременно можно, но CreateObject должно быть не больше 500 (либо больше/меньше. Зависит от того, как настроен стример. А именно то, сколько объектов он прогружает игроку. По дэфолту это значение равно 500. А раз SA-MP не переваривает больше 1000 объектов, значит от 1000 отнимаем тот лимит, что настроен в стримере и получаем число возможных CreateObject). Почему? Да потому что стандартные объекты, как уже было сказано ранее, не выгружаются из памяти клиента, пока он на сервере => если ты создашь, например, 700 объектов, а стример попытается отобразить 500, он сможет создать для игрока лишь 300 объектов в округе. Остальные 200 он прогрузить не сможет, ибо достигнут лимит SA-MP в 1000 объектов.
    Как-то так :)

    2) Данная директива увеличивает число выделяемой памяти под стэк. По дэфолту под стэк выделяется 16384 байт, но это не значит, что нельзя выделить больше/меньше. Но если вдруг компилятор ругается на переполнение стэка, лучше сначала попробовать оптимизировать код (урезать массивы, убрав лишние ячейки и т.п.), а лишь потом увеличивать.
    Можно и уменьшить. Но смысла в этом особого нет, ибо 16384 байт - не так уж и много для современных машин

    3) Для сервера разницы никакой. Все скобки/отступы и прочее удаляется на стадии компиляции. Машине плевать на то, как оформлен код. Оформление нужно человеку, который этот код будет читать. Именно для этого и придумываются различные языки программирования, а не используется двоичный машинный код, который понятен машине. Так что лучше используй первый вариант.
    Спасибо! Не зря спросила про CreateDynamicObject

    Закрывайте.

 

 

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

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

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

Ваши права

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