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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 3 из 3

Тема: Про Dynamic

  1. #1
    Аватар для gangzone.ini
    Модератор

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

    Про 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.
    Модератор с 19.03.2015

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

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

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    15.06.2014
    Сообщений
    650
    Репутация:
    105 ±
    Цитата Сообщение от 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

    Закрывайте.
    Модератор с 19.03.2015

 

 

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

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

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

Ваши права

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