Когда мы писали тетрис на JavaScript, то использовали в нём флаг остановки игры:

// ставим флаг окончания
gameOver = true;

В тот раз мы не останавливались на флагах подробно, поэтому сделаем это сегодня — расскажем, что такое флаг в программировании и для чего он нужен.

Флаг — это индикатор

Когда водитель садится за руль машины, то он видит много индикаторов — приборов и лампочек, которые:

  • показывают нам состояние различных узлов в машине (обороты двигателя);
  • показывают, включён или выключен какой-то прибор (например, кондиционер или ближний свет);
  • напоминают, что нужно что-то сделать (пристегнуться);
  • сигнализируют о неисправности (контрольная лампа давления масла, если уровень масла в двигателе слишком низкий).

Глядя на эти индикаторы, водитель понимает, что ему нужно сделать — пристегнуться, остановиться, чтобы долить масло в двигатель или ничего делать не нужно.

Флаги в программировании делают то же самое — показывают, что происходит в программе, чтобы алгоритм или человек мог принять решение.

ФЛАГ РОЗОЧКИ В МАЙНКРАФТ

Программные флаги — это переменные, а аппаратные флаги используются в процессорах.

Откуда такое название

В программирование флаги пришли из армии и флота, когда с помощью разноцветных флагов корабли передавали сигналы друг другу. Также флаги используют военные, когда подают сигналы для управления техникой — например, поднятый красный флаг запрещает движение.

Программный флаг — это переменная

В случае с тетрисом мы взяли логическую переменную gameOver и присвоили ей значение true — это называется «установить флаг». Эта переменная показывает, закончилась игра или нет: если true, то да, закончилась, а если false — можно играть дальше.

Но флаг сам по себе бесполезен, если на него никто не смотрит. Если мы просто установим флаг, то игра не закончится сама по себе — нам нужно периодически проверять, в каком состоянии флаг. Для этого в код в нужных местах добавляют проверку флага: смотрят, чему равен флаг, и если он сработал — выполняют определённые действия. В тетрисе мы делаем это в самом начале обработчика нажатия клавиш — если флаг сработал, то сразу останавливаем игру и выводим надпись Game Over.

Аппаратный флаг — регистр в процессоре

Процессор — это микросхема из миллиардов транзисторов, но ему тоже иногда нужны флаги, чтобы понять:

  • перед ним чётное число или нет;
  • произошло ли переполнение буфера;
  • есть ли что-то в стеке, куда нужно вернуться после этой операции;
  • в каком режиме работать.

Для этого в процессоре есть специальные регистры — хранилища данных, которые могут принимать различные значения. Технически это тоже как бы виртуальные переменные, только они влияют не на одну программу, а на весь процессор.

Аппаратные флаги в процессоре обрабатываются автоматически, в зависимости от используемых команд.

Зачем нужны флаги

Главная задача флага в программировании — показать, что что-то изменилось и что нужно на это отреагировать. Например:

Как Поставить флаг на Территорию(Minecraft)

  • кубик вылез за игровое поле и нужно остановить игру;
  • пользователь слишком много раз ввёл неправильный пароль — тогда программа поставит флаг и в ближайший час не пустит его в систему;
  • процедура закончила рисовать интерфейс и установила свой флаг — в этом случае система поймёт, что можно разрешить пользователю нажимать на кнопки;
  • система заметила подозрительную активность и установила специальный флаг — в этом случае она будет записывать все действия пользователя, пока флаг не снимется.

Флаг — удобный способ передать информацию внутри алгоритма, чтобы в нужный момент принять верное решение.

Рекламный блок «Яндекс Практикума»

Этот рекламный блок сообщает, что после обучения в «Яндекс Практикуме» вы можете получить высокооплачиваемую работу разработчика, тестировщика, аналитика, менеджера и дата-сайентиста.

Источник: thecode.media

USE-флаги

Устанавливая Calculate (или любой другой дистрибутив), вы выбираете те или иные возможности в зависимости от среды, с которой работаете. Установка сервера отличается от установки рабочей станции, а установка игровой станции — от платформы 3D-рендеринга.

Это касается не только того, какие пакеты устанавливать, но и какие функции определенных пакетов должны поддерживаться. Если вам не нужен OpenGL, то зачем вам его ставить и встраивать поддержку OpenGL в большинство программ? Если вы не собираетесь использовать KDE, зачем собирать пакеты с его поддержкой, если они работают и без этого?

USE-флаги — это простой способ описания рабочей среды, чтобы помочь пользователям в выборе того, что устанавливать/активировать, а что — нет. Таким образом, пользователь может самостоятельно решить, что ему на самом деле нужно, и облегчить себе работу с Portage — системой управления пакетами.

Читайте также:  Прохождение Майнкрафт легенда о нотче

Определение USE-флагов

Рассмотрим USE-флаги. USE-флаг — это ключевое слово, включающее сведения о поддержке и зависимостях определенного понятия или функции. При определении какого-либо USE-флага Portage узнает, что вам нужна поддержка соответствующей функции. Конечно, это также влияет на сведения о зависимостях пакета.

Давайте рассмотрим конкретный пример — ключевое слово «kde». Если в вашей переменной USE нет этого слова, то все пакеты, где поддержка KDE является необязательной, собираются без неё. Все пакеты, где зависимость от KDE является необязательной, устанавливаются без установки библиотек KDE (по зависимости). Если же вы определите ключевое слово «kde», то эти пакеты будут собираться с поддержкой KDE, а KDE будет установлен в качестве необходимого.

Правильно определяя ключевые слова, вы создаете систему, специально подогнанную под ваши потребности.

Какие USE-флаги существуют?

USE-флаги могут быть двух типов: глобальные и локальные.

  • Глобальный USE-флаг используется несколькими пакетами и является системным. Это то, что большинство видит в качестве USE-флагов.
  • Локальный USE-флаг используется единичным пакетом для настройки определенных параметров самого пакета.

Список доступных глобальных USE-флагов можно найти здесь или локально в /usr/portage/profiles/use.desc.

Список локальных USE-флагов находится в вашей системе в /usr/portage/profiles/use.local.desc.

Использование USE-флагов

Объявление постоянных USE-флагов

Как было сказано ранее, все USE-флаги объявляются в переменной USE. Каждый дистрибутив Calculate Linux имеет свой набор USE-флагов, оптимизированный под конкретные задачи.

Профиль, на который ориентируется ваша система, указывается символьной ссылкой . Каждый профиль основывается на предыдущем, более крупном, а итоговый складывается из всех профилей. Верхним является базовый профиль (/usr/portage/profiles/base).

В качестве примера можно посмотреть значение USE-флагов профиля Calculate Directory Server:

. USE=»acl amd64 bash-completion berkdb bittorrent bzip2 cli cracklib crypt cups cxx dri exif foomaticdb fortran ftp gdbm gif gpm iconv imap ipv6 jpeg jpeg2k ldap logrotate maildir mmx modules mudflap multilib ncurses nfs nls nptl nptlonly openmp pam pcre perl png pppd python radius readline samba session sse sse2 ssl sysfs tcpd tiff truetype unicode userlocales xorg zlib» .

Как видите, эта переменная уже содержит достаточно много ключевых слов.

Для изменения значения по умолчанию следует добавлять или удалять ключевые слова из переменной USE. Это делается глобально, то есть определением переменной USE в make.conf. В эту переменную можно добавить нужные вам USE-флаги или удалить ненужные. Для удаления флага его надо указывать со знаком минус в виде приставки («-»).

Например, чтобы убрать поддержку KDE и QT, добавив при этом поддержку ldap, можно определить в /etc/portage/make.conf/custom переменную USE следующего вида:

USE=»-kde -qt ldap»

Дистрибутивы Calculate Linux по умолчанию используют бинарный профиль, игнорирующий Ваши изменения USE-флагов. Чтобы использовать изменения во время установки или обновления пакетов используйте флаг -N (или —newuse)». Пример:

emerge -uN world

Объявление USE-флагов для отдельных пакетов

Иногда нужно определить некоторые USE-флаги только для одного или нескольких пакетов, не трогая системных настроек. Для этого необходимо создать файл в каталоге /etc/portage/package.use/ и отредактировать его значение. Имя файла может быть любым, удобным для вас.

Например, вам не нужна глобальная поддержка berkdb, но она необходима в mysql. Пример файла /etc/portage/package.use/mysql:

dev-db/mysql berkdb

Естественно, можно в явном виде отключить USE-флаги для определенного пакета. Предположим, что вам не нужна поддержка java в PHP. Пример файла /etc/portage/package.use/nojava:

dev-php/php -java

Объявление временных USE-флагов

Иногда необходимо установить какой-то USE-флаг только на один раз. Вместо того, чтобы дважды редактировать /etc/portage/make.conf/custom (сначала добавить изменения USE, а потом удалить), можно просто объявить USE как переменную среды. Помните, что в этом случае при переустановке или обновлении приложения (явном или в составе обновления системы) ваши изменения будут утеряны!

Например, уберем java из значения USE на время установки firefox:

USE=»-java» emerge firefox

Наследование

Нетрудно догадаться, что существует определенная последовательность формирования значения USE: вы же не хотите, например, объявить только для того, чтобы узнать, что всё ещё включена из-за значения с более высоким приоритетом. Последовательность установки значения USE в порядке приоритета (от меньшего к большему) такова:

  • значение USE по умолчанию, объявленное в файлах make.defaults в составе вашего профиля;
  • значение, определенное пользователем в /etc/portage/make.conf/custom;
  • значение, указанное пользователем в файлах /etc/portage/package.use/;
  • значение, определенное пользователям в переменной среды.
Читайте также:  Как быть призраком в Майнкрафте

Чтобы выяснить, какие настройки USE в конечном счете видит Portage, запустите emerge —info . Эта команда выводит значения всех переменных (включая USE), используемые Portage:

Адаптация всей системы под новые USE-флаги

Если вы изменили свои USE-флаги и хотите обновить всю систему в соответствии с новым значением USE, запустите emerge с параметром —newuse :

Пример полной пересборки системы:

emerge -uDN world

Теперь запустите функцию Portage depclean, чтобы удалить условные зависимости, присутствующие в прежней системе, но уже не нужные при новом составе USE-флагов.

Предупреждение: Запуск emerge -c (или —depclean ) является опасной операцией, которую следует использовать с осторожностью. Дважды проверьте список «ненужных» пакетов и убедитесь, что не удалятся нужные пакеты. В следующем примере мы добавляем ключ -a , чтобы depclean потребовал подтверждения перед удалением.

Удаление ненужных пакетов:

Когда depclean закончит свою работу, запустите revdep-rebuild, чтобы пересобрать программы, динамически связанные с библиотеками, входящими в потенциально удаленные пакеты:

После выполнения всех этих действий ваша система полностью перейдёт на новые значения USE-флагов.

USE-флаги отдельных пакетов

Просмотр доступных USE-флагов

Возьмем, к примеру, : какие USE-флаги он может использовать? Чтобы это выяснить, запустим emerge с параметрами -p (или —pretend ) и -v (или —verbose ).

emerge -pv firefox

These are the packages that would be merged, in order: Calculating dependencies. done! [ebuild N ] www-client/firefox-3.6.13 USE=»alsa bindist custom-optimization dbus ipc libnotify -gnome -java -startup-notification -system-sqlite -wifi» LINGUAS=»bg de en es fr it pl pt_BR ru uk -af -ar -as -be -bn -bn_BD -bn_IN -ca -cs -cy -da -el -en_GB -en_US -eo -es_AR -es_CL -es_ES -es_MX -et -eu -fa -fi -fy -fy_NL -ga -ga_IE -gl -gu -gu_IN -he -hi -hi_IN -hr -hu -id -is -ja -ka -kk -kn -ko -ku -lt -lv -mk -ml -mr -nb -nb_NO -nl -nn -nn_NO -oc -or -pa -pa_IN -pt -pt_PT -rm -ro -si -sk -sl -sq -sr -sv -sv_SE -ta -ta_LK -te -th -tr -vi -zh_CN -zh_TW» 0 kB

emerge — не единственное средство для решения этой задачи. Существует программа equery, специально предназначенная для вывода информация о пакетах. Для просмотра USE-флагов какого-нибудь пакета запустим equery с аргументом uses. Пусть это будет пакет app-office/gnumeric:

equery uses app-office/gnumeric

[ Searching for packages matching app-office/gnumeric-1.10.13. ] [ Colour Code : set unset ] [ Legend : Left column (U) — USE flags from make.conf ] [ : Right column (I) — USE flags packages was installed with ] [ Found these USE variables for app-office/gnumeric-1.10.13 ] U I — — gnome : Adds GNOME support + + perl : Adds support/bindings for the Perl language + + python : Adds support/bindings for the Python language

Источник: wiki.calculate-linux.org

WorldGuard

Custom Full Custom Full Custom Full Custom Full Custom Half4.3 / 5 76

Плагин WorldGuard создан для защиты регионов на сервере Minecraft. Этот плагин является одним из основных плагинов. Он должен стоять абсолютно на каждом сервере Майнкрафт.

Каждый админ сервера не хочет, чтобы на сервере процветало гриферство и хаос. Для этого и служит данный плагин. Теперь игроки смогут защищать свои дома от гриферства.

На заприваченной территории можно настраивать специальные флаги. Можно включить или выключить взрыв ТнТ, растекание воды и лавы, урон по блокам от Дракона Эндера. Можно отключить получение любого урона на территории, отключить или включить PvP. Можно даже разрешить ломать определенные блоки внутри территории или наоборот запретить ломать только какую-то группу блоков.

Вообщем настроек у территорий очень много, каждый сможет сделать идеальную территорию для себя и своего сервера.

Как заприватить территорию через плагин WorldGuard?

Для того чтобы заприватить свой дом в Minecraft или какую-либо постройку, нужно воспользоваться парой плагинов. Но для начала нужно выделить область привата.

Берем в руки деревянный топор, его можно получить с помощью команды: //wand

После этого нам нужно отметить первый угол нашего привата правой или левой кнопкой мыши. Теперь идем в противоположный конец нашей области и там нам нужно отметить вторую точку привата уже другой кнопкой мыши. Если первая точка была отмечена левой кнопкой мыши, тогда вторую точку отмечаем правой кнопкой мыши и наоборот.

WorldGuard

Сейчас осталось прописать команду: /rg claim

Все, теперь ваш дом запривачен и его не смогут сломать другие игроки.

Также есть один лайфхак при привате территории.

Как увеличить приват вверх и вниз командой WorldGuard?

Необязательно строить столб и отмечать точку привата на вершине столба, также необязательно копать под себя вниз, чтобы отметить нижнюю точку привата, чтобы заприватить подвал дома.

Читайте также:  Как в Майнкрафте сделать бобик

Вы можете отметить просто крайние углы привата на любой высоте, а дальше увеличить командой приват на определенное количество блоков вверх и вниз.

Чтобы увеличить приват территории вверх, нужно прописать команду:

Чтобы увеличить приват территории вниз, нужно прописать команду:

/expand down

После этого также прописываем команду: /expand up

Поздравляю, ваш приват готов!

Флаги плагина WorldGuard

Для установки флагов в регионе нужно прописать команду:

Флаг Описание Значение по стандарту
build Флаг отвечает за строительство в регионе. По стандарту строить могут только участники региона. Если прописать deny, то ломать не сможет никто, если прописать true, то ломать смогут всем. Не указано
pvp Флаг отвечает за PvP в регионе. Включено
mob-damage Флаг отвечает за то, смогут ли мобы в регионе наносить урон игрокам или нет. Включено
mob-spawning Флаг отвечает за спавн мобов в регионе. Включено
creeper-explosion Флаг отвечает за взрыв крипера. Если поставить false, крипер просто будет взрываться и не будет наносить урон территории. Включено
enderman-grief Флаг отвечает за то, сможет ли эндермэн воровать блоки в регионе или нет. Включено
enderpearl Флаг отвечает за использование жемчуга эндера в регионе. Включено
sleep Флаг отвечает за возможность поспать на кровати в регионе. Включено
ghast-fireball Флаг отвечает за урон территории от файрбола гаста. Если поставить false, файрболы гаста не будут наносить урон территории. Включено
tnt Флаг отвечает за взрыв тнт в регионе. Включено
lighter Флаг отвечает за использование зажигалки в регионе. Включено
fire-spread Флаг отвечает за распространение огня в регионе. Включено
lava-fire Флаг отвечает за то, сможет ли лава поджечь ближайшие блоки или нет. Включено
lightning Флаг отвечает за удары молнией в регионе. Включено
chest-access Флаг отвечает за доступ к сундукам. По стандарту могут открывать сундуки только участники региона. Отключено
water-flow Флаг отвечает за разлитие воды в регионе. Включено
lava-flow Флаг отвечает за разлитие лавы в регионе. Включено
use Флаг отвечает за использование дверей, эндер-сундуков, рычагов, печек, кнопок и прочих блоков. Включено
vehicle-place Флаг отвечает за размещение вагонеток в регионе. Включено
vehicle-destroy Флаг отвечает за разрушение вагонеток в регионе. Отключено
snow-fall Флаг отвечает за выпадение снега в регионе. Включено
leaf-decay Флаг отвечает за исчезновение блоков листвы в регионе. Включено
invincible Флаг отвечает за бессмертие игроков в регионе. Отключено
entry Флаг отвечает за вход игроков в регион. Включено
exit Флаг отвечает за выход игроков из региона. Включено
greeting При установке данного флага, все игроки при входе в регион будут видеть в чате сообщение: “Добро пожаловать, .” Цвет сообщения – голубой. Также нужно поставить флаг notify-enter. Нет надписи
farewell Сообщение при выходе из региона. Также нужно поставить флаг notify-leave. Нет надписи
notify-enter Флаг отвечает за показ сообщения при входе в регион. Отключено
notify-leave Флаг отвечает за показ сообщения при выходе из региона. Отключено
deny-spawn Флаг отвечает за запрет на спавн отдельных мобов. Пусто
heal-delay Флаг отвечает за скорость восстановления жизней в регионе. (1 = 1 секунда) Нет значения
heal-amount Флаг отвечает за максимальное количество жизней в регионе. (1 = 1 хп) Нет значения
teleport Флаг позволяет установить точку телепорта в регионе. Телепортироваться можно с помощью команды /region teleport (id) Нет значения
spawn Данный флаг позволяет установить точку спавна в регионе: /region flag (x) (y) (z) Нет значения
blocked-cmds Флаг позволяет заблокировать определенные команды в регионе. Нет значения
allowed-cmds Флаг позволяет запретить все команды в регионе, кроме указанных. Нет значения
feed-min-hunger Флаг отвечает за минимальное значение голода. Нет значения
feed-max-hunger Флаг отвечает за максимальное значение голода. Нет значения
ice-form Флаг отвечает за генерацию льда в регионе. Включено
ice-melt Флаг отвечает за таяние льда в регионе. Включено
potion-splash Флаг отвечает за эффекты от взрывных зелий. Включено
pistons Флаг отвечает за использование поршней в регионе. Включено
item-drop Флаг отвечает за выбрасывание вещей в регионе. Включено
game-mode Флаг позволяет установить игровой режим в регионе. Нет значения

Для работы плагина необходимо установить плагин World Edit

Плагин обновлен до версии World Guard 1.16

Источник: minecrafterl.ru