PDA

Просмотр полной версии : [Info] Какие уроки вы хотите видеть в этом разделе?



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

Camelot
31.07.2014, 22:35
Хотелось бы увидеть урок про TextDraw'ы. В каких случаях лучше создавать PlayerTextDraw, а в каких TextDraw и как правильно с ними обращаться.
В разделе: "Вопросы по скриптингу" часто встречались вопросы про TextDraw'ы.
Не знаю почему, но раньше трудно давалось их понять... Может что-нибудь новенькое узнаю, да и для других полезно будет.

Axemarron4ik
06.08.2014, 11:34
Хотелось бы увидеть урок про TextDraw'ы. В каких случаях лучше создавать PlayerTextDraw, а в каких TextDraw и как правильно с ними обращаться.
В разделе: "Вопросы по скриптингу" часто встречались вопросы про TextDraw'ы.
Не знаю почему, но раньше трудно давалось их понять... Может что-нибудь новенькое узнаю, да и для других полезно будет.

Полностью с тобой соглашусь, я бы тоже не прочь послушать что-то новенькое о TextDraw'ах.

Camelot
11.08.2014, 23:12
Хотел бы увидеть урок про "Static/Const". Сейчас частенько стали всплывать мануалы с ними, а многие начинающие скриптеры даже и не знают как с ними обходиться. Я тоже не вникаю. Будет интересно почитать.

DeimoS
12.08.2014, 07:47
Хотел бы увидеть урок про "Static/Const". Сейчас частенько стали всплывать мануалы с ними, а многие начинающие скриптеры даже и не знают как с ними обходиться. Я тоже не вникаю. Будет интересно почитать.

const - константа. Значение слова "константа" должно сказать само за себя. То есть, какое значение было заданно для переменной при создании, таковым оно будет всегда и изменению оно не подлежит. const не дает менять объекты, которые не должны меняться/

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


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

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


Хотелось бы увидеть урок про 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 и прочих коллбэках, которые вызываются игроком.

Salvacore
12.08.2014, 13:38
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 и прочих коллбэках, которые вызываются игроком.

оформи как уроки.

DeimoS
12.08.2014, 14:31
оформи как уроки.

Говорю же, довольно мало информации для отдельных уроков. Ну текстдравы можно расписать, но только за счёт описания функций. Если надо - сделаю

Camelot
12.08.2014, 15:45
Говорю же, довольно мало информации для отдельных уроков. Ну текстдравы можно расписать, но только за счёт описания функций. Если надо - сделаю

Спасибо. Всё, что хотел уяснить - уяснил. Но, уроки, я думаю, понадобятся так и так.