====== PlayGround ======
{{statdisplay>top entries}}
{{statdisplay>all?graph}}
{{statdisplay>top entries}}
fuck
rty
проверяем эксейп угловых скобок
PL 'длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная-длинная строка текста'
2
fuck
ASD > DSA
ASD
[[help:goto]]
sadfsaf
!saafdsfa
&!asdfasdfsa
dassda&!sdafsafs
(x ! y) OR (x <> y) & ! Результат -1
x OR y &! Двоичное 101 OR 110 = 111 Результат 7
====== ВАЖНОЕ ПРЕДИСЛОВИЕ ======
В ЭТОМ СБОРНИКЕ ПРЕДСТАВЛЕНЫ НАИБОЛЕЕ ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ ИЗ ТЕМЫ “КАК СДЕЛАТЬ?” НА ФОРУМЕ QSP.SU. СТАТЬИ РАЗБИТЫ НА ТЕМАТИЧЕСКИЕ РАЗДЕЛЫ ДЛЯ УДОБСТВА НАВИГАЦИИ ПО ВОПРОСАМ. В КОНЦЕ СПРАВОЧНИКА ПРЕДСТАВЛЕНЫ ССЫЛКИ НА МАТЕРИАЛЫ ПО КАЖДОМУ ВОПРОСУ, НЕКОТОРЫЕ ИЗ НИХ МОГУТ РАБОТАТЬ НЕКОРРЕКТНО В СВЯЗИ С ПЕРЕМЕЩЕНИЕМ РЯДА ВОПРОСОВ В ТЕМУ “КАК СДЕЛАТЬ?”. К СОЖАЛЕНИЮ ЭТО НЕ ПОДЛЕЖИТ ИСПРАВЛЕНИЮ, ОДНАКО ДЛЯ УДОБСТВА ПОИСКА К ССЫЛКАМ ДОБАВЛЕНА ИНФОРМАЦИЯ ОБ АВТОРЕ, ДАТЕ И НОМЕРЕ СООБЩЕНИЯ В ТЕМЕ.
ТАК ЖЕ СЛЕДУЕТ ПОМНИТЬ, ЧТО ВСЕ ПРЕДСТАВЛЕННЫЕ В СБОРНИКЕ ПРИМЕРЫ ДАНЫ В ЦЕЛЯХ ОБУЧЕНИЯ. НЕ СТОИТ ТУПО КОПИРОВАТЬ ИХ В СВОЮ ИГРУ, А ПОТОМ БЕГАТЬ С ПРЕТЕНЗИЯМИ ТИПА “А ВОТ Я СКОПИРОВАЛ КОД ОТСЮДА, НО ОН ПОЧЕМУ-ТО НЕ РАБОТАЕТ”, ИЛИ “ДЕЛАЕТ ЧТО-ТО НЕ ТО”. ВАЖНО ПРОЧИТАТЬ СТАТЬЮ И РАЗОБРАТЬ ТО, КАК РАБОТАЕТ ПРИМЕР. ЕЩЁ ЛУЧШЕ, СНАЧАЛА САМОМУ ПОПЫТАТЬСЯ РЕШИТЬ ПОСТАВЛЕННУЮ ЗАДАЧУ, А УЖЕ ПОСЛЕ ОБРАЩАТЬСЯ К “F.A.Q”. ДАННЫЙ СБОРНИК НЕ ЯВЛЯЕТСЯ ПЕРЕЧНЕМ ГОТОВЫХ РЕШЕНИЙ.
ЕСЛИ ВЫ НАШЛИ ОШИБКУ, ОПЕЧАТКУ ИЛИ НЕТОЧНОСТЬ, А ТАК ЖЕ ЕСЛИ У ВАС ЕСТЬ ЗАМЕЧАНИЯ К СТАТЬЯМ, ИЛИ ЖЕЛАНИЕ НАПИСАТЬ БОЛЕЕ РАЗВЁРНУТУЮ И ПОДРОБНУЮ ИХ ВЕРСИЮ, ПИШИТЕ НА ''%%aleksversus@mail.ru%%'' , ЛИБО В “ВК” [[https://vk.com/id40090736|HTTPS:%%//%%VK.COM/ID40090736]]. :::WARNING[**ВНИМАНИЕ!!!**] ВСЕ СТАТЬИ СБОРНИКА АКТУАЛИЗИРОВАНЫ ДЛЯ ПЛЕЕРОВ ВЕРСИИ 5.8.0. ЕСЛИ ВАМ НУЖЕН СПРАВОЧНИК ПО ПЛЕЕРАМ ВЕРСИИ 5.7.0, СКАЧАЙТЕ ОФФЛАЙН-ВЕРСИЮ НА [[https://github.com/AleksVersus/howdo_faq/releases|СТРАНИЦЕ РЕЛИЗОВ]]. :::
===== РАЗЪЯСНЕНИЯ И ТЕРМИНЫ =====
**ОБРАБОТКА ЛОКАЦИИ**, **ПОСЕЩЕНИЕ ЛОКАЦИИ** — ПОД ЭТИМИ ТЕРМИНАМИ ПОНИМАЮТСЯ СЛЕДУЮЩИЕ ПРОЦЕССЫ: ВЫПОЛНЕНИЕ КОДА ИЗ ПОЛЯ “//ВЫПОЛНИТЬ ПРИ ПОСЕЩЕНИИ//” УКАЗАННОЙ ЛОКАЦИИ, ДОБАВЛЕНИЕ В ОКНО ОСНОВНОГО ОПИСАНИЯ БАЗОВОГО ОПИСАНИЯ УКАЗАННОЙ ЛОКАЦИИ, А ТАК ЖЕ ДОБАВЛЕНИЕ В ОКНО ДЕЙСТВИЙ БАЗОВЫХ ДЕЙСТВИЙ УКАЗАННОЙ ЛОКАЦИИ. ОБРАБОТКА ЛОКАЦИИ ПРОИСХОДИТ В ДВУХ СЛУЧАЯХ: В СЛУЧАЕ “ПЕРЕХОДА” НА ЛОКАЦИЮ С ПОМОЩЬЮ ОПЕРАТОРОВ ''%%goto%%'' И ''%%xgoto%%'', ИЛИ В СЛУЧАЕ “ВЫЗОВА” ЛОКАЦИИ С ПОМОЩЬЮ ОПЕРАТОРОВ ''%%gosub%%'', ''%%menu%%'', ФУНКЦИИ ''%%func%%'' ИЛИ В КАЧЕСТВЕ ОБРАБОТЧИКА СОБЫТИЯ В АВТОМАТИЧЕСКОМ РЕЖИМЕ. С ПОНЯТИЯМИ “ПЕРЕХОД НА ЛОКАЦИЮ” И “ВЫЗОВ ЛОКАЦИИ” ВЫ МОЖЕТЕ ПОДРОБНЕЕ ОЗНАКОМИТЬСЯ В РАЗДЕЛЕ [[contents/what_dif/goto_gosub.md|“РАЗНИЦА МЕЖДУ ''%%goto%%'' И ''%%gosub%%''”]].
**ИНДЕКС** — В КОНТЕКСТЕ ДАННОГО СПРАВОЧНИКА ПОД ИНДЕКСОМ ПОДРАЗУМЕВАЕТСЯ УКАЗАТЕЛЬ НА КАКОЙ-ЛИБО ЭЛЕМЕНТ. НАПРИМЕР, У КАЖДОЙ ЯЧЕЙКИ МАССИВА ЕСТЬ СОБСТВЕННЫЙ ЧИСЛОВОЙ ИНДЕКС. ЕСЛИ МАССИВ СОСТОИТ ИЗ ПЯТИ ЭЛЕМЕНТОВ, ТО ЕГО ЭЛЕМЕНТЫ НУМЕРУЮТСЯ ОТ НУЛЯ ДО ЧЕТЫРЁХ — ЭТИ ЧИСЛА И ЯВЛЯЮТСЯ ИНДЕКСАМИ ЭЛЕМЕНТОВ. ДЛЯ ТОГО, ЧТОБЫ ОБРАТИТЬСЯ К КАКОМУ-ТО КОНКРЕТНОМУ ЭЛЕМЕНТУ МАССИВА, НУЖНО УКАЗАТЬ НАЗВАНИЕ ЭТОГО МАССИВА, А ЗА НАЗВАНИЕМ В КВАДРАТНЫХ СКОБКАХ - ИНДЕКС: ''%%qsp *pl mass[3] & ! выводим на экран значение элемента массива mass под индексом 3%%'' У ЭЛЕМЕНТОВ МАССИВОВ МОГУТ БЫТЬ ТЕКСТОВЫЕ ИНДЕКСЫ: ''%%mass["35,56"]%%'', А ТАК ЖЕ “МНОГОМЕРНЫЕ” ИНДЕКСЫ ''%%mass[13, 37]%%''.
ИНДЕКСЫ ЕСТЬ ПРАКТИЧЕСКИ У ВСЕХ ИСЧИСЛИМЫХ ЭЛЕМЕНТОВ ДЛЯ УДОБСТВА ОБРАЩЕНИЯ. НАПРИМЕР, КАЖДЫЙ СИМВОЛ СТРОКИ ОБЛАДАЕТ СОБСТВЕННЫМ ИНДЕКСОМ (НОМЕРОМ), КАЖДЫЙ ПРЕДМЕТ, ДОБАВЛЕННЫЙ В ОКНО ПРЕДМЕТОВ ТОЖЕ. И Т.Д. ЕСЛИ ВЫ ВСТРЕЧАЕТЕ ФРАЗУ “ЭЛЕМЕНТЫ ИНДЕКСИРУЮТСЯ С ЕДИНИЦЫ”, ЭТО ОЗНАЧАЕТ, ЧТО НУМЕРАЦИЯ ЭЛЕМЕНТОВ НАЧИНАЕТСЯ С ЧИСЛА 1. ЭЛЕМЕНТЫ МАССИВОВ ИНДЕКСИРУЮТСЯ С НУЛЯ.
**ПЕРЕМЕННАЯ-МАРКЕР** — ЭТО ПОЛЬЗОВАТЕЛЬСКАЯ (НЕ СИСТЕМНАЯ) ПЕРЕМЕННАЯ, КОТОРУЮ МЫ ВВОДИМ, ЧТОБЫ ОТМЕЧАТЬ ИЗМЕНЕНИЕ СОБЫТИЯ ИЛИ СОСТОЯНИЯ В ИГРЕ. НАПРИМЕР, ПЕРЕМЕННОЙ-МАРКЕРОМ МОЖНО НАЗВАТЬ ПЕРЕМЕННУЮ, ОБОЗНАЧАЮЩУЮ РАЗМЕЩЕНИЕ ПРЕДМЕТА НА ЛОКАЦИИ:
if ваза_на_столе=1:
! если переменная-маркер ваза_на_столе равна 1
! создаём действие
act "Взять вазу со стола":
! в действии изменяем значение переменной-маркера
ваза_на_столе=0
addobj "Ваза"
goto $curloc
end
end
**СИСТЕМНАЯ ПЕРЕМЕННАЯ** — ЭТО ЗАРЕЗЕРВИРОВАННАЯ В ПЛЕЕРЕ ПЕРЕМЕННАЯ. ИЗМЕНЕНИЕ ЕЁ ЗНАЧЕНИЯ ВНУТРИ ИГРЫ ИЗМЕНЯЕТ НАСТРОЙКИ И ПОВЕДЕНИЕ ПЛЕЕРА. НАПРИМЕР, СИСТЕМНОЙ ЯВЛЯЕТСЯ ПЕРЕМЕННАЯ ''%%nosave%%''. ЕСЛИ ЕЁ ЗНАЧЕНИЕ ОТЛИЧНО ОТ НУЛЯ, ИГРОК НЕ МОЖЕТ ПОЛЬЗОВАТЬСЯ ПУНКТАМИ МЕНЮ ПЛЕЕРА “ЗАГРУЗИТЬ СОСТОЯНИЕ ИГРЫ” И “СОХРАНИТЬ СОСТОЯНИЕ ИГРЫ”: ''%%qsp nosave = 1%%''
ОКНА ПЛЕЕРА МОГУТ НАЗЫВАТЬСЯ ПО-РАЗНОМУ: * **ОКНО ОСНОВНОГО ОПИСАНИЯ** МОЖЕТ НАЗЫВАТЬСЯ //ОСНОВНЫМ ОКНОМ//, //ОКНОМ ОСНОВНЫХ ОПИСАНИЙ//, //ГЛАВНЫМ ОКНОМ//, ИЛИ //ОКНОМ ИГРОКА//. * **ОКНО ДОПОЛНИТЕЛЬНОГО ОПИСАНИЯ** МОЖЕТ НАЗЫВАТЬСЯ //ДОПОЛНИТЕЛЬНЫМ ОКНОМ ОПИСАНИЙ//, //ОКНОМ СТАТИСТИКИ// (СТАТОВ), ИЛИ //ОКНОМ ПОЛЬЗОВАТЕЛЯ//. - **ОКНО ПРЕДМЕТОВ** МОЖЕТ НАЗЫВАТЬСЯ //ОКНОМ ИНВЕНТАРЯ//, //ИНВЕНТАРЁМ//, //СПИСКОМ ПРЕДМЕТОВ,// ИЛИ //РЮКЗАКОМ//. - **ОКНО ДЕЙСТВИЙ** МОЖЕТ НАЗЫВАТЬСЯ //СПИСКОМ ДЕЙСТВИЙ//. - //ОКНО С ПОЛЕМ ВВОДА// МОЖЕТ НАЗЫВАТЬСЯ **ПОЛЕМ ВВОДА**, //СТРОКОЙ ВВОДА// И ПР. * ДИАЛОГОВОЕ ОКНО, ВЫЗЫВАЕМОЕ ФУНКЦИЕЙ ''%%$input%%'', МОЖЕТ НАЗЫВАТЬСЯ **ОКНОМ ВВОДА**. * ДИАЛОГОВОЕ ОКНО, ВЫЗЫВАЕМОЕ ОПЕРАТОРОМ ''%%msg%%'', МОЖЕТ НАЗЫВАТЬСЯ **ОКНОМ СООБЩЕНИЯ**. * ОКНО, В КОТОРОМ ВЫВОДИТСЯ ИЗОБРАЖЕНИЕ ПРИ ИСПОЛЬЗОВАНИИ КОМАНДЫ ''%%view%%'', МОЖЕТ НАЗЫВАТЬСЯ **ОКНОМ ПРЕДПРОСМОТРА**, //ОКНОМ ПРОСМОТРА ИЗОБРАЖЕНИЯ//.
В РАЗДЕЛЕ “ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА, ПЕРЕМЕННЫЕ И СПЕЦСИМВОЛЫ” ИСПОЛЬЗУЮТСЯ ОБОЗНАЧЕНИЯ:\\
* ''%%[выражение]%%'' - ЗНАЧЕНИЕ ВЫРАЖЕНИЯ, КОТОРОЕ МОЖЕТ БЫТЬ КАК ТЕКСТОВОГО, ТАК И ЧИСЛОВОГО ТИПА. * ''%%[$выражение]%%'' - ЗНАЧЕНИЕ ВЫРАЖЕНИЯ, КОТОРОЕ МОЖЕТ БЫТЬ ТОЛЬКО ТЕКСТОВОГО (СТРОКОВОГО) ТИПА (НО ПРИ НЕОБХОДИМОСТИ ДВИЖОК АВТОМАТИЧЕСКИ ПЕРЕВЕДЁТ ЧИСЛО В СТРОКУ). * ''%%[#выражение]%%'' - ЗНАЧЕНИЕ ВЫРАЖЕНИЯ, КОТОРОЕ МОЖЕТ БЫТЬ ТОЛЬКО ЧИСЛОВОГО ТИПА (ЕСЛИ ВОЗМОЖНО, ДВИЖОК АВТОМАТИЧЕСКИ ПЕРЕВЕДЁТ СТРОКУ В ЧИСЛО).
**ПРИМЕЧЕНИЕ.** СИМВОЛ ''%%#%%'' ИСПОЛЬЗОВАН В СПРАВОЧНИКЕ ТОЛЬКО ЧТОБЫ РАЗДЕЛИТЬ ВЫРАЖЕНИЯ ПРОИЗВОЛЬНОГО И ЧИСЛОВОГО ТИПОВ. К СИНТАКСИСУ QSP ДАННЫЙ СИМВОЛ ОТНОШЕНИЯ НЕ ИМЕЕТ.
В ТОМ ЖЕ РАЗДЕЛЕ: ЕСЛИ ДЛЯ ОПЕРАТОРА ИЛИ ФУНКЦИИ НЕ УКАЗАНА ОБЩАЯ ЗАПИСЬ, ЗНАЧИТ ЭТОТ ОПЕРАТОР ИЛИ ФУНКЦИЮ НУЖНО ЗАПУСКАТЬ БЕЗ АРГУМЕНТОВ. НАПРИМЕР, ОПЕРАТОР ''%%unselect%%'', ФУНКЦИЯ ''%%$curloc%%''.
===== БЛАГОДАРНОСТИ =====
СПАСИБО ВСЕМУ СООБЩЕСТВУ QSP, ПОДПИСЧИКАМ МОЕГО КАНАЛА, А ТАК ЖЕ ВСЕМ, КТО ЗАДАВАЛ ВОПРОСЫ ПО ИЗЛОЖЕННЫМ В СБОРНИКЕ СТАТЬЯМ.
ОТДЕЛЬНАЯ БЛАГОДАРНОСТЬ **BYTE**’У, **WEREWOLF**’У, **FERING**’У, **HRONOSTRANGER**’У, **NEX**’У, **NICKOAILUS**’У, **ПОСЛЕДНЕМУ ИЗ ГАЯР**, **EVP**, **NEWSASH**’У, **ОЛЕГУС**У, **STORM**’У, **SVARTBERG**’У, **OLIVER**’У, **MKIR**’У, **SVANDRUS**’У, **LISICHK**’Е, **AJENT**’Е, **EJIKPLAINS**’У, **LARSON**’У, **DMVIKAR**’У, И ВСЕМ ПРОЧИМ АВТОРАМ, ЧЬИ НАРАБОТКИ, ПРИМЕРЫ И КУСОЧКИ КОДА ПОСЛУЖИЛИ МАТЕРИАЛОМ ДЛЯ ЭТИХ СТАТЕЙ. ПРОШУ ПРОЩЕНИЯ, КОГО ЗАБЫЛ УПОМЯНУТЬ.