Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±

    Какие уроки вы хотите видеть в этом разделе?

    Ну собсна должно быть всё понятно...
    Пишите с какими функциями вам тяжело работать, может кто нибудь напишет урок...
    И не пишите MySQL, врядли кто будет писать.

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

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±
    Хотелось бы увидеть урок про TextDraw'ы. В каких случаях лучше создавать PlayerTextDraw, а в каких TextDraw и как правильно с ними обращаться.
    В разделе: "Вопросы по скриптингу" часто встречались вопросы про TextDraw'ы.
    Не знаю почему, но раньше трудно давалось их понять... Может что-нибудь новенькое узнаю, да и для других полезно будет.

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Сообщений
    276
    Репутация:
    75 ±
    Цитата Сообщение от Camelot Посмотреть сообщение
    Хотелось бы увидеть урок про TextDraw'ы. В каких случаях лучше создавать PlayerTextDraw, а в каких TextDraw и как правильно с ними обращаться.
    В разделе: "Вопросы по скриптингу" часто встречались вопросы про TextDraw'ы.
    Не знаю почему, но раньше трудно давалось их понять... Может что-нибудь новенькое узнаю, да и для других полезно будет.
    Полностью с тобой соглашусь, я бы тоже не прочь послушать что-то новенькое о TextDraw'ах.

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

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±
    Хотел бы увидеть урок про "Static/Const". Сейчас частенько стали всплывать мануалы с ними, а многие начинающие скриптеры даже и не знают как с ними обходиться. Я тоже не вникаю. Будет интересно почитать.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Camelot Посмотреть сообщение
    Хотел бы увидеть урок про "Static/Const". Сейчас частенько стали всплывать мануалы с ними, а многие начинающие скриптеры даже и не знают как с ними обходиться. Я тоже не вникаю. Будет интересно почитать.
    const - константа. Значение слова "константа" должно сказать само за себя. То есть, какое значение было заданно для переменной при создании, таковым оно будет всегда и изменению оно не подлежит. const не дает менять объекты, которые не должны меняться/

    static - статичный/стационарный. Переменные типа static - это переменные так называемого долговременного хранения, то есть они хранят свои значения в пределах своей функции или файла.
    То есть, если мы создадим локальную переменную с использованием спецификатора static - значение этой переменной будет хранится в памяти сервера даже после окончания обработки нашей функции (получится что-то типа глобальной переменной, которую можно использовать только внутри нашей функции, где её объявили).
    Если же создавать глобальную переменную с использованием данного спецификатора - зона её видимости ограничится исключительно тем файлом, где была создана эта переменная. Например, если создать обычную переменную с именем "azaza" в инклюде, подключить инклюд к другому файлу и после создать в файле ещё одну такую переменную - компилятор начнёт ругаться на то, что имена переменных схожи (переменная уже объявлена). Если же проделать всё то же самое, только в инклюде использовать спецификатор static - предупреждения не будет, ибо наша переменная для компилятора будет создана только в инклюде и за его пределы не выйдет.


    Как-то так. Информации слишком мало для отдельного урока :)

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

    Цитата Сообщение от Camelot Посмотреть сообщение
    Хотелось бы увидеть урок про TextDraw'ы. В каких случаях лучше создавать PlayerTextDraw, а в каких TextDraw и как правильно с ними обращаться.
    В разделе: "Вопросы по скриптингу" часто встречались вопросы про TextDraw'ы.
    Не знаю почему, но раньше трудно давалось их понять... Может что-нибудь новенькое узнаю, да и для других полезно будет.
    Ну всю информацию можно прочесть здесь - http://wiki.sa-mp.com/wiki/Textdraw
    А вообще основное их различие только в лимитах.

    То есть, глобальных текстдравов всего может быть создано 2048 штук. На первый взгляд этого кажется достаточно, но стоит вспомнить о том, что для отображения индивидуальной информации (уровень/статистика и т.п.) для игроков нужен отдельный текстдрав и сразу становится понятно, что 2048 штук хватит для ~20 индивидуальных текстдравов, если онлайн будет превышать 100 игроков. А это уже не так уж и много.
    Так же глобальные текстдравы хранятся в памяти сервера до перезагрузки/выключения гейммода. То есть, если не удалять из памяти все наши 20 созданных текстдравов при выходе игрока, для переполнения памяти хватит и одного игрока на сервере, который перезайдёт 100 раз в игру. Поэтому тут очень важно отчищать память с помощь функции TextDrawDestroy в тот момент, когда нужный текстдрав больше не нужен на сервере вообще.

    Локальные (PlayerTextDraw) же имеют лимит, который равен 256 для ИГРОКА. То есть, для каждого игрока можно создать 256 текстдравов. Если на сервере будет играть 1000 игроков, общее число текстдравов для них будет равно 256000 (но каждому всё равно можно будет создать только 256). Согласись, это уже не 2048 штук.
    И локальные текстдравы сами удаляются из памяти при выходе игрока. Поэтому заморачиваться с их удалением не нужно.


    Таким образом можно понять, что для текстдравов, в которых не будет хранится индивидуальная информация (адрес сайта/фон для спидометра и прочее), лучше использовать глобальные текстдравы. А уже текстдравы с индивидуальной информацией (скорость автомобиля/статистика убийств и т.п.) лучше создавать локальными. Тогда всё в вашей жизни будет хорошо :)

      Открыть/закрыть
    Ну допустим, что мы рисуем спидометр на текстдравах, на котором будет отображаться марка автомобиля, статус дверей (открыто/закрыто), скорость автомобиля и название сервера. Так же будет тёмный фон, на котором и будут отображены все эти текстдравы.

    Сразу разделяем текстдравы на локальные и глобальные.
    Имя сервера для всех игроков одинаково. Фон тоже. Поэтому эти текстдравы мы создаём глобальными, в коллбэке OnGameModeInIt (при старте сервера) и отображаем игрокам в нужный момент.
    Всё остальное так или иначе будет иметь индивидуальную информацию, поэтому их уже создаём в виде локальных текстдравов при входе игрока на сервер.
    Вот и всё


    И да, под глобальными текстдравами я имел ввиду текстдравы, которые создаются TextDrawCreate в коллбэке OnGameModeInIt (при старте сервера). Под локальными я имел ввиду текстдравы, созданные с помощью CreatePlayerTextDraw в коллбэке OnPlayerConnect и прочих коллбэках, которые вызываются игроком.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  6. #6
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    const - константа. Значение слова "константа" должно сказать само за себя. То есть, какое значение было заданно для переменной при создании, таковым оно будет всегда и изменению оно не подлежит. const не дает менять объекты, которые не должны меняться/

    static - статичный/стационарный. Переменные типа static - это переменные так называемого долговременного хранения, то есть они хранят свои значения в пределах своей функции или файла.
    То есть, если мы создадим локальную переменную с использованием спецификатора static - значение этой переменной будет хранится в памяти сервера даже после окончания обработки нашей функции (получится что-то типа глобальной переменной, которую можно использовать только внутри нашей функции, где её объявили).
    Если же создавать глобальную переменную с использованием данного спецификатора - зона её видимости ограничится исключительно тем файлом, где была создана эта переменная. Например, если создать обычную переменную с именем "azaza" в инклюде, подключить инклюд к другому файлу и после создать в файле ещё одну такую переменную - компилятор начнёт ругаться на то, что имена переменных схожи (переменная уже объявлена). Если же проделать всё то же самое, только в инклюде использовать спецификатор static - предупреждения не будет, ибо наша переменная для компилятора будет создана только в инклюде и за его пределы не выйдет.


    Как-то так. Информации слишком мало для отдельного урока :)

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



    Ну всю информацию можно прочесть здесь - http://wiki.sa-mp.com/wiki/Textdraw
    А вообще основное их различие только в лимитах.

    То есть, глобальных текстдравов всего может быть создано 2048 штук. На первый взгляд этого кажется достаточно, но стоит вспомнить о том, что для отображения индивидуальной информации (уровень/статистика и т.п.) для игроков нужен отдельный текстдрав и сразу становится понятно, что 2048 штук хватит для ~20 индивидуальных текстдравов, если онлайн будет превышать 100 игроков. А это уже не так уж и много.
    Так же глобальные текстдравы хранятся в памяти сервера до перезагрузки/выключения гейммода. То есть, если не удалять из памяти все наши 20 созданных текстдравов при выходе игрока, для переполнения памяти хватит и одного игрока на сервере, который перезайдёт 100 раз в игру. Поэтому тут очень важно отчищать память с помощь функции TextDrawDestroy в тот момент, когда нужный текстдрав больше не нужен на сервере вообще.

    Локальные (PlayerTextDraw) же имеют лимит, который равен 256 для ИГРОКА. То есть, для каждого игрока можно создать 256 текстдравов. Если на сервере будет играть 1000 игроков, общее число текстдравов для них будет равно 256000 (но каждому всё равно можно будет создать только 256). Согласись, это уже не 2048 штук.
    И локальные текстдравы сами удаляются из памяти при выходе игрока. Поэтому заморачиваться с их удалением не нужно.


    Таким образом можно понять, что для текстдравов, в которых не будет хранится индивидуальная информация (адрес сайта/фон для спидометра и прочее), лучше использовать глобальные текстдравы. А уже текстдравы с индивидуальной информацией (скорость автомобиля/статистика убийств и т.п.) лучше создавать локальными. Тогда всё в вашей жизни будет хорошо :)

      Открыть/закрыть
    Ну допустим, что мы рисуем спидометр на текстдравах, на котором будет отображаться марка автомобиля, статус дверей (открыто/закрыто), скорость автомобиля и название сервера. Так же будет тёмный фон, на котором и будут отображены все эти текстдравы.

    Сразу разделяем текстдравы на локальные и глобальные.
    Имя сервера для всех игроков одинаково. Фон тоже. Поэтому эти текстдравы мы создаём глобальными, в коллбэке OnGameModeInIt (при старте сервера) и отображаем игрокам в нужный момент.
    Всё остальное так или иначе будет иметь индивидуальную информацию, поэтому их уже создаём в виде локальных текстдравов при входе игрока на сервер.
    Вот и всё


    И да, под глобальными текстдравами я имел ввиду текстдравы, которые создаются TextDrawCreate в коллбэке OnGameModeInIt (при старте сервера). Под локальными я имел ввиду текстдравы, созданные с помощью CreatePlayerTextDraw в коллбэке OnPlayerConnect и прочих коллбэках, которые вызываются игроком.
    оформи как уроки.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    оформи как уроки.
    Говорю же, довольно мало информации для отдельных уроков. Ну текстдравы можно расписать, но только за счёт описания функций. Если надо - сделаю
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    07.03.2014
    Адрес
    Ярославль
    Сообщений
    57
    Репутация:
    4 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Говорю же, довольно мало информации для отдельных уроков. Ну текстдравы можно расписать, но только за счёт описания функций. Если надо - сделаю
    Спасибо. Всё, что хотел уяснить - уяснил. Но, уроки, я думаю, понадобятся так и так.

 

 

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

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

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

Ваши права

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