<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://ifwiki.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikita</id>
	<title>IFВики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://ifwiki.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nikita"/>
	<link rel="alternate" type="text/html" href="https://ifwiki.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Nikita"/>
	<updated>2026-10-18T00:31:54Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Fallout_Quest_(HTML)&amp;diff=36569</id>
		<title>Fallout Quest (HTML)</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Fallout_Quest_(HTML)&amp;diff=36569"/>
		<updated>2026-10-15T23:47:02Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Nikita переименовал страницу Fallout Quest (HTML) в Fallout Quest (QEngine): Уточнение название движка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Fallout Quest (QEngine)]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Fallout_Quest_(QEngine)&amp;diff=36568</id>
		<title>Fallout Quest (QEngine)</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Fallout_Quest_(QEngine)&amp;diff=36568"/>
		<updated>2026-10-15T23:47:02Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Nikita переименовал страницу Fallout Quest (HTML) в Fallout Quest (QEngine): Уточнение название движка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Fallout Quest&lt;br /&gt;
 |обложка=Falloutquest.jpg&lt;br /&gt;
 |автор=[[Автор::Digital Geckos]]&lt;br /&gt;
 |вышла=15.10.2000&lt;br /&gt;
 |платформа=QEngine&lt;br /&gt;
 |темы=фантастика, постапокалипсис, фанфик&lt;br /&gt;
}}&lt;br /&gt;
==Как все начинается==&lt;br /&gt;
Ты - полицейский в Джанктауне, Самом Веселом Месте по эту сторону от побережья. &lt;br /&gt;
Твоя работа уже несколько лет как перестала быть работой, потому что Гизмо прокололся и его убили, когда пришли к нему за арестом, рейдеров уничтожили какие-то вооруженные люди, а мелкие воришки не заходили в этот город, опасаясь праведного гнева Киллиана, мэра и торговца в одном лице.&lt;br /&gt;
&lt;br /&gt;
Твоя пушка порядком проржавела. Конечно, ты не забывал ее чистить, но в ней слишком давно не взрывался порох и пуля не летела навстречу чьей-нибудь морде. В этом месте слишком давно не происходило что-нибудь интересное, а с исчезновением Гизмо и преступности, слово &amp;quot;приключения&amp;quot; навсегда покинуло высокие железные стены города.&lt;br /&gt;
&lt;br /&gt;
Сегодня Ларс, начальник полиции в Джанктауне, сказал, чтобы вы все подходили к зданию полиции на очень важное совещание. Ну хорошо, пойдем, посмотрим, что там... &lt;br /&gt;
&lt;br /&gt;
== Версии ==&lt;br /&gt;
* [http://wasteland.ag.ru/static/other/fangames/fquest.rar Скачать игру]&lt;br /&gt;
* Также см. [[Fallout Quest (INSTEAD)|римейк на INSTEAD]]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://wasteland.ag.ru/games/lyubitel-skie-igry/fallout-quest/#.WTVeJtSLRH0 Страница игры]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Fallout_Quest_(INSTEAD)&amp;diff=36567</id>
		<title>Fallout Quest (INSTEAD)</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Fallout_Quest_(INSTEAD)&amp;diff=36567"/>
		<updated>2026-10-15T23:46:00Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Fallout Quest&lt;br /&gt;
 |обложка=Falloutquest.jpg&lt;br /&gt;
 |автор=[[Автор::Digital Geckos]], портирование — [[Программист::Можайский, Сергей]]&lt;br /&gt;
 |вышла=17.09.2012&lt;br /&gt;
 |платформа=INSTEAD&lt;br /&gt;
 |темы=фантастика, постапокалипсис, фанфик&lt;br /&gt;
}}&lt;br /&gt;
Интерактивная история о судьбе Джанктауна после событий первой части Fallout. Перенос оригинального [[Fallout Quest (QEngine)|Fallout Quest]] от [[Digital Geckos]] на платформу INSTEAD.&lt;br /&gt;
&lt;br /&gt;
==Версии==&lt;br /&gt;
* [http://instead-games.ru/downloader.php?file=instead-fallout_quest-0.0.1.zip Архив для интерпретатора INSTEAD]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://instead-games.ru/game.php?ID=35 Страница игры в репозитории INSTEAD]&lt;br /&gt;
* {{Старая_ссылка|на=http://instead.syscall.ru/forum/viewtopic.php?id=638|Обсуждение игры}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Fallout_Quest&amp;diff=36566</id>
		<title>Fallout Quest</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Fallout_Quest&amp;diff=36566"/>
		<updated>2026-10-15T23:44:55Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{неоднозначность}}&lt;br /&gt;
&lt;br /&gt;
Игры:&lt;br /&gt;
* [[Fallout Quest (QEngine)]]&lt;br /&gt;
* [[Fallout Quest (INSTEAD)]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Fallout_Quest_(QEngine)&amp;diff=36565</id>
		<title>Fallout Quest (QEngine)</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Fallout_Quest_(QEngine)&amp;diff=36565"/>
		<updated>2026-10-15T23:41:50Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Fallout Quest&lt;br /&gt;
 |обложка=Falloutquest.jpg&lt;br /&gt;
 |автор=[[Автор::Digital Geckos]]&lt;br /&gt;
 |вышла=15.10.2000&lt;br /&gt;
 |платформа=QEngine&lt;br /&gt;
 |темы=фантастика, постапокалипсис, фанфик&lt;br /&gt;
}}&lt;br /&gt;
==Как все начинается==&lt;br /&gt;
Ты - полицейский в Джанктауне, Самом Веселом Месте по эту сторону от побережья. &lt;br /&gt;
Твоя работа уже несколько лет как перестала быть работой, потому что Гизмо прокололся и его убили, когда пришли к нему за арестом, рейдеров уничтожили какие-то вооруженные люди, а мелкие воришки не заходили в этот город, опасаясь праведного гнева Киллиана, мэра и торговца в одном лице.&lt;br /&gt;
&lt;br /&gt;
Твоя пушка порядком проржавела. Конечно, ты не забывал ее чистить, но в ней слишком давно не взрывался порох и пуля не летела навстречу чьей-нибудь морде. В этом месте слишком давно не происходило что-нибудь интересное, а с исчезновением Гизмо и преступности, слово &amp;quot;приключения&amp;quot; навсегда покинуло высокие железные стены города.&lt;br /&gt;
&lt;br /&gt;
Сегодня Ларс, начальник полиции в Джанктауне, сказал, чтобы вы все подходили к зданию полиции на очень важное совещание. Ну хорошо, пойдем, посмотрим, что там... &lt;br /&gt;
&lt;br /&gt;
== Версии ==&lt;br /&gt;
* [http://wasteland.ag.ru/static/other/fangames/fquest.rar Скачать игру]&lt;br /&gt;
* Также см. [[Fallout Quest (INSTEAD)|римейк на INSTEAD]]&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://wasteland.ag.ru/games/lyubitel-skie-igry/fallout-quest/#.WTVeJtSLRH0 Страница игры]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Shadow_(2023)&amp;diff=36564</id>
		<title>Shadow (2023)</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Shadow_(2023)&amp;diff=36564"/>
		<updated>2026-10-13T11:46:37Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Shadow&lt;br /&gt;
 |автор=[[Автор::Команда Light]], [[Программист::SirAndriy]][[Автор::SirAndriy| ]], [[Иллюстратор::Марфа]], [[Композитор::Сергей Гущин]]&lt;br /&gt;
 |вышла=03.03.2023&lt;br /&gt;
 |платформа=RPG Maker MZ&lt;br /&gt;
 |темы=Визуальная новелла, Фантастика&lt;br /&gt;
}}{{ЗОК|2023|4|10}}&lt;br /&gt;
&lt;br /&gt;
Действия происходят в далёком будущем. В огромном городе-государстве под названием &amp;amp;laquo;Оазис&amp;amp;raquo;. Алиса - главная героиня истории ещё будучи ребёнком стала жертвой жестокого эксперимента, и с тех пор всю жизнь провела в лаборатории. Однако теперь у неё появился шанс получить свободу&amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
Заявленная тема игры: Соблазнительное предложение&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* {{ссылка|на=https://forum.ifiction.ru/viewtopic.php?id=2691|Страница игры с обсуждением}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9D%D0%B0%D1%82%D0%B0%D1%88%D0%B0_%D0%B8_%D0%B2%D0%B5%D1%80%D0%B2%D0%BE%D0%BB%D1%8C%D1%84&amp;diff=36563</id>
		<title>Наташа и вервольф</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9D%D0%B0%D1%82%D0%B0%D1%88%D0%B0_%D0%B8_%D0%B2%D0%B5%D1%80%D0%B2%D0%BE%D0%BB%D1%8C%D1%84&amp;diff=36563"/>
		<updated>2026-10-13T11:41:36Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Наташа и вервольф&lt;br /&gt;
 |автор=[[Автор::albertik2004]]&lt;br /&gt;
 |вышла=13.10.2025&lt;br /&gt;
 |платформа=FireURQ&lt;br /&gt;
 |темы=Мистика, Романтика&lt;br /&gt;
}}{{Паровозик|9|18}}&lt;br /&gt;
&lt;br /&gt;
==Как всё начинается== &lt;br /&gt;
Эта история о мужчине, который ради окончательного примирения с возлюбленной отправляется через таинственный и опасный лес.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Версии== &lt;br /&gt;
* {{ссылка|на=https://forum.ifiction.ru/file.php?i=ca237f918cd2c879ef1e0f95fb3650af|Скачать}}&lt;br /&gt;
&lt;br /&gt;
==Ссылки== &lt;br /&gt;
* {{ссылка|на=https://forum.ifiction.ru/viewtopic.php?id=2883|Тема игры на форуме iFiction.ru}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%83%D0%B1%D1%8A%D0%B5%D0%BA%D1%82&amp;diff=36559</id>
		<title>Шаблон:Субъект</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%83%D0%B1%D1%8A%D0%B5%D0%BA%D1%82&amp;diff=36559"/>
		<updated>2026-10-06T17:18:41Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Универсальные параметры шаблона */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Внимание! Шаблон находится в разработке и до снятия этого статуса не должен использоваться на страницах вики.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Когда-нибудь тут будет код шаблона с предварительными операциями. --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Когда-нибудь тут будет код шаблона с выводом информации. --&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Шаблон, отображающий карточку с информацией о субъекте процессов вокруг интерактивной литературы. Он предназначен для описания не героев произведений, а реальных участников создания, распространения и осмысления интерактивной литературы (авторы, переводчики, иллюстраторы, издатели, институции и т.д.).&lt;br /&gt;
&lt;br /&gt;
== Цель ==&lt;br /&gt;
&lt;br /&gt;
Реализовать шаблон, который будет вставляться в начало статей, описывающих людей и организации, и выводить на страницах автоматически генерируемые карточки со сводной информацией.&lt;br /&gt;
&lt;br /&gt;
== Исследование текущего состояния системы ==&lt;br /&gt;
&lt;br /&gt;
* Существует этический вопрос, стоит ли отображать на страницах про людей их настоящие имена. Некоторые люди изъявляли явное желание, чтобы их настоящие имена не фигурировали на страницах, даже если они являются общеизвестной информацией. На IFВики принято правило, что в таких случаях описание следует за явно выраженным желанием описываемой персоны. В настоящий момент такие явно выраженные желания персон фиксируются в свободной форме на странице обсуждения. Например, см. страницу [[Saint]] и [[Обсуждение:Saint|её обсуждение]]. Это желание персоны может быть формализовано в виде параметра шаблона, который будет управлять отображением настоящего имени в карточке на странице, а также в целом документировать желание в коде той же страницы.&lt;br /&gt;
* Имеется формируемая вручную страница &amp;quot;[[Псевдонимы]]&amp;quot;. Её данные в виде пар сопоставления псевдонима и реального имени могут быть полностью перенесены в параметр шаблона, а сама страница может быть заменена на автоматически генерируемую таблицу.&lt;br /&gt;
* На страницах о персонах принято вручную указывать известные псевдонимы. Эти данные могут быть полностью перенесены в параметр шаблона, где известные псевдонимы будут указываться строгим перечнем и обрабатываться для добавления семантики и отображения в едином формате.&lt;br /&gt;
* На страницах о персонах принято вручную добавлять скрытую семантическую ссылку с данными об их дате рождения. Эти данные могут быть полностью перенесены в параметр шаблона, где будут обрабатываться и отображаться в едином формате. Эти данные также могут быть расширены датой смерти и автоматически рассчитываемым количеством полных лет, если для таких расчётов достаточно данных.&lt;br /&gt;
* Нет строгих правил по написанию нерусскоязычных имён. Частью они пишутся на их родном языке, частью представлены в русскоязычной адаптации. Шаблон должен предоставить механизмы для описания всей этой информации: страница именуется по русскоязычному варианту имени, но шаблон предоставляет возможность указать оригинальное написание иностранного имени, которое отобразит отдельным элементом карточки.&lt;br /&gt;
* Страницы о персонах требуют ручного добавления в категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot; или в одну из дочерних категорий. Добавление в категорию может быть полностью автоматизировано шаблоном.&lt;br /&gt;
* Шаблоны &amp;quot;[[Шаблон:Игры автора|Игры автора]]&amp;quot; и &amp;quot;[[Шаблон:Проекты и разработки|ППроекты и разработки]]&amp;quot; при добавлении на страницу автоматически проставляют категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;. Это потребуется изменить, так как при внедрении новой системы описания субъектов автором игры или разработчиком проекта может быть не только персона. Фактически шаблоном, ответственным за отнесение страницы к категории описания того или иного субъекта должен стать именно шаблон с карточкой описания субъекта.&lt;br /&gt;
* В настоящий момент таксономия предполагает корневую категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;, внутри которой находятся страницы про субъектов-людей, а также дочерние категории &amp;quot;[[:Категория:Игровые персонажи|Игровые персонажи]]&amp;quot;, &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; и &amp;quot;[[:Категория:Компании|Компании]]&amp;quot;. Схема явно потребует переработки, например:&lt;br /&gt;
** Категорию &amp;quot;[[:Категория:Игровые персонажи|Игровые персонажи]]&amp;quot; переместить в категорию &amp;quot;[[:Категория:Игры|Игры]]&amp;quot;.&lt;br /&gt;
** Корневой категорией сделать &amp;quot;Субъекты&amp;quot; или с более понятным названием &amp;quot;Люди и организации&amp;quot;. Соответствующим образом надо будет поменять ссылку на главной странице.&lt;br /&gt;
** Внутри корневой категории сделать дочерние, по которым шаблон и должен автоматически распределять. В частности, это могут быть категории &amp;quot;Люди&amp;quot;, &amp;quot;Организации&amp;quot; и &amp;quot;Команды&amp;quot;.&lt;br /&gt;
** Категория &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; должна быть упразднена&amp;quot;, так как в принципе представляется неинформативной: де-факто к иностранным относят авторов, которые самостоятельно не писали игры на русском языке, а вот на русском языке писали авторы сразу из нескольких стран, поэтому предполагающаяся антитеза &amp;quot;отечественные&amp;quot; к ним не очень подходит. Но и формирование категорий &amp;quot;русскоязычные&amp;quot; и &amp;quot;не русскоязычные&amp;quot; авторы также представляется спорным решением из-за существования релизов на разных языках, где перевод имеет непонятную долю авторства в команде разработчиков.&lt;br /&gt;
&lt;br /&gt;
== Предварительное проектирование ==&lt;br /&gt;
&lt;br /&gt;
Предполагается, что шаблон глобально должен быть способен описывать субъектов трёх типов:&lt;br /&gt;
&lt;br /&gt;
* Человек - персоналия, имеющая признаки отдельного реально существующего человека. Например, конкретное физическое лицо автор или переводчик.&lt;br /&gt;
* Организация - некое юридическое лицо или институция. Это может быть компания, разрабатывавшая или издававшая игры, или какое-то неформальное объединение людей, но имеющее минимально формализованную организационную структуру, например, &amp;quot;[[Гильдия авторов книг-игр]]&amp;quot; или &amp;quot;[[Братство РИЛ]]&amp;quot;.&lt;br /&gt;
* Команда - неформальное и ситуативное объединение нескольких людей (или организаций) под определённым названием. Например, игра &amp;quot;[[Инви непобедимый]]&amp;quot; написана не автором, а командой [[GameC]], а игра &amp;quot;[[Резня в Лапландии не удалась]]&amp;quot; - командой [[Неизвестное трио]].&lt;br /&gt;
&lt;br /&gt;
Для учёта этих видов субъектов может быть введён параметр шаблона &amp;quot;тип&amp;quot;, в зависимости от которого будет адаптироваться внешний вид генерируемой карточки и алгоритмы обработки остальных параметров. Однако не исключено, что в итоге предпочтительной реализацией окажется создание нескольких отдельных шаблонов. Для этого необходимо проанализировать предполагаемые общие и специфические поля карточек каждого вида и принять итоговое архитектурное решение. Если будет решено делать отдельные шаблоны, то для некоторых сложных алгоритмов, типа получения списка ролей субъекта, есть смысл подготовить также отдельные шаблоны для переиспользования общей реализации.&lt;br /&gt;
&lt;br /&gt;
=== Универсальные параметры шаблона ===&lt;br /&gt;
&lt;br /&gt;
* Род. Параметр, где надо будет указать род описываемого субъекта, чтобы на его основе подстраивать названия полей карточки, таких как &amp;quot;Родился 1 января 1970&amp;quot;, &amp;quot;Известен как автор, переводчик и разработчик&amp;quot; и др. Правда некоторые названия надо будет подстраивать не только в зависимости от рода, но и в зависимости от типа субъекта, например, для людей &amp;quot;Родился 1 января 1970&amp;quot;, а для организаций &amp;quot;Создан 1 января 1970&amp;quot;.&lt;br /&gt;
* Дата начала существования. Семантической свойство типа дата, обозначающее момент создания субъекта. Хотя можно обойтись универсальным алгоритмом обработки значений, но в карточке для разных видов субъектов потребуется отображение разных названий: &amp;quot;Дата рождения&amp;quot; для людей и &amp;quot;Дата создания&amp;quot; для организаций. Также для команд параметр может оказаться неактуальным из-за дублирования информации о периоде выпуска игр.&lt;br /&gt;
* Дата окончания существования. Семантической свойство типа дата, обозначающее момент окончания существования субъекта. Хотя можно обойтись универсальным алгоритмом обработки значений, но в карточке для разных видов субъектов потребуется отображение разных названий: &amp;quot;Дата смерти&amp;quot; для людей и &amp;quot;Дата закрытия&amp;quot; для организаций. Также для команд параметр может оказаться неактуальным из-за дублирования информации о периоде выпуска игр.&lt;br /&gt;
* Каналы коммуникации. Параметр для указания основных каналов коммуникации: сайт, электронная почта, страница в социальной сети и пр. по возможности следует максимально использовать [[:Категория:Шаблоны ссылок на ресурсы|шаблоны ссылок на ресурсы]].&lt;br /&gt;
&lt;br /&gt;
=== Параметры, специфичные для людей ===&lt;br /&gt;
&lt;br /&gt;
* Показ имени. Параметр управляющий показом всех полей карточки, отображающих информацию о настоящем имени персоны. Также одновременно выполняет функцию документирования желания человека относительно демонстрации его настоящего имени на странице. Если задан запрет на показ настоящего имени, то значения соответствующих параметров не просто не должны отображаться в карточке на странице, но также не должны и заполнять соответствующие семантические свойства, чтобы эта информация не попадала в возможные отображения в других шаблонах и на других страницах на основе семантических запросов.&lt;br /&gt;
* Настоящее имя. Не эквивалентно имени в названии страницы и карточки, потому что человек может быть не против опубличивания имени, но предпочитать, чтобы страница называлась по его никнейму (случай [[Ajenta Arrow]]).&lt;br /&gt;
* Имя на другом языке. Параметр для указания оригинального написания имени, если требуется.&lt;br /&gt;
* Никнейм. Не эквивалентно имени в названии страницы и карточки, потому что человек может предпочитать именование статьи по реальному имени, но при этом иметь некий общеизвестный никнейм (случай [[Жучков, Антон|Антона Жучкова]] / [[Fireton]]). При этом, представляется необходимым выделять некий основной никнейм из общего списка псевдонимов. Например, у [[Павленко, Юрий|Юрия Павленко]] есть ряд ситуативных псевдонимов, но также существует основной никнейм [[Goraph]].&lt;br /&gt;
* Полное имя. Поле для указания максимально полного имени, например, Карлос Сезар Сальвадор Аранья Кастанеда для Карлоса Кастанеды. Также может быть использовано для написания имени с использованием символов ударения, поясняющих произношение, например, Пётр Алекса́ндрович Косы́х.&lt;br /&gt;
* Известные псевдонимы. Параметр с обработкой списка с разделителем.&lt;br /&gt;
&lt;br /&gt;
=== Параметры, специфичные для организаций ===&lt;br /&gt;
&lt;br /&gt;
* Название. Строка названия организации.&lt;br /&gt;
* Тип. Строка текста, содержащая перечисление через запятую типов описываемой организации, которые в свою очередь будут обрабатываться как категории, куда добавляется страница с шаблоном. В этом параметре следует уточнять тип организации, например, &amp;quot;Коммерческие компании&amp;quot;, &amp;quot;Некоммерческие организации&amp;quot;, &amp;quot;Сетевые сообщества&amp;quot; и пр. Соответствующие категории следует делать подкатегориями категории &amp;quot;[[:Категория:Организации|Организации]]&amp;quot;. Может возникнуть идея добавлять страницу с шаблоном в категорию &amp;quot;[[:Категория:Организации|Организации]]&amp;quot; только при отсутствии указанных категорий в параметре типа, но так лучше не делать, потому что при указании нестандартного типа страница окажется без существующей категории.&lt;br /&gt;
* Альтернативные названия. Параметр для перечисления альтернативных названий организации. Может использоваться для указания сокращённого названия (или наоборот для расшифровки аббревиатуры), а также для указания названия на другом языке, если существует традиция перевода названия организации. Например, для основного названия &amp;quot;[[Фонд Технологий Интерактивной Литературы]]&amp;quot; есть смысл указать альтернативные названия Interactive Fiction Technology Foundation и IFTF.&lt;br /&gt;
* Ключевые фигуры. Параметр для общего описания ключевых фигур организации в свободной форме.&lt;br /&gt;
* Состояние. Параметр для общего описания текущего статуса организации. Главным образом нужен для случаев, когда у организации не указана конкретная дата окончания существования, но, вместе с этим, какой-либо активной деятельности ей также не ведётся. Тогда в этом параметре можно указать что-то типа &amp;quot; 2017 года активной деятельности не ведётся&amp;quot;.&lt;br /&gt;
* Страна/государство. Как правило, компании имеют выраженную страновую принадлежность: либо общую, либо только юридически значимую в виде регистрации штаб-квартиры в определённой национальной юрисдикции. Хотя следует оценить общую значимость для IFВики факта, что, например, [[Infocom]] - это американская компания, а [[Magnetic Scrolls]] - британская. Возможно, если это и важно, то только в отдельных случаях и может быть описано в свободной форме под карточкой.&lt;br /&gt;
&lt;br /&gt;
=== Параметры, специфичные для команд ===&lt;br /&gt;
&lt;br /&gt;
* Название. Строка названия команды.&lt;br /&gt;
* Альтернативные названия. Параметр для перечисления альтернативных названий команды. Может использоваться для указания сокращённого названия (или наоборот для расшифровки аббревиатуры), а также для указания названия на другом языке, если существует традиция перевода названия команды.&lt;br /&gt;
* Ключевые фигуры. Параметр для общего описания ключевых фигур команды в свободной форме.&lt;br /&gt;
* Подавлять отображение дат начала и окончания существования, а также возраста, даже если соответствующие параметры указаны. Фактически возраст и срок жизни команд - это тоже самое, что их Период выпуска игр.&lt;br /&gt;
&lt;br /&gt;
=== Поля и свойства карточки, которые рассчитываются автоматически ===&lt;br /&gt;
&lt;br /&gt;
Следующие поля карточки не требуют ручного указания и должны рассчитываться автоматически:&lt;br /&gt;
&lt;br /&gt;
* Срок существования. Количество полных лет, прошедших от даты создания субъекта до текущего дня или даты окончания существования субъекта, если число больше 0. Может потребоваться механизм предотвращения вывода неконтролируемо больших значений, например, через явное указание значения &amp;quot;неизвестно&amp;quot; для даты окончания существования.&lt;br /&gt;
* Период выпуска игр. Временной интервал в годах от даты самой ранней работы субъекта до самой поздней. Желательно именно такое нейтральное название, а не что-то типа &amp;quot;Годы творчества&amp;quot;, потому что этот временной интервал может не совпадать с годами жизни (случай [[Пушкин, Александр|Александра Пушкина]] или [[Жариков, Николай|Николая Жарикова]]).&lt;br /&gt;
* Язык выпуска игр. Список всех языков, на которых выпускались игры субъекта. Можно определить по свойству &amp;quot;[[Свойство:Язык]]&amp;quot; у страниц из категории &amp;quot;[[:Категория:Игры|Игры]]&amp;quot;.&lt;br /&gt;
* Перечень ролей. Список ролей, в которых фигурировал описываемый субъект в IFВики. Можно извлечь из родительского для всех форм участия свойства &amp;quot;[[Свойство:Роль|Роль]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Также страница с карточкой должна получать универсальное семантическое свойство &amp;quot;Наименование&amp;quot;, которое можно будет использовать для вывода данных. Для случаев организаций и команд им просто должно становиться значение параметра &amp;quot;Название&amp;quot;, а вот для случаев персон всё сложнее. Карточки персон, должны назначить свойство &amp;quot;Наименование&amp;quot;, выбрав его на основе значений параметров отображения настоящего имени, никнейма и настоящего имени:&lt;br /&gt;
&lt;br /&gt;
* Если разрешён показ настоящего имени и настоящее имя задано, то наименованием персоны назначается настоящее имя.&lt;br /&gt;
* Если настоящее имя не задано или запрещён его показ, то:&lt;br /&gt;
** Если задан никнейм, то наименованием персоны назначается никнейм.&lt;br /&gt;
** Если никнейм не задан, то наименованием персоны назначается название страницы.&lt;br /&gt;
&lt;br /&gt;
== Примеры заполнения шаблона ==&lt;br /&gt;
&lt;br /&gt;
Ниже приводятся примеры заполнения шаблона.&lt;br /&gt;
&lt;br /&gt;
=== Пример отдельного шаблона персоны ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{персона&lt;br /&gt;
|показывать настоящее имя = да&lt;br /&gt;
|род или число = мужской&lt;br /&gt;
|настоящее имя = Пушкин, Александр&lt;br /&gt;
|никнейм = Сверчок&lt;br /&gt;
|полное имя = Алекса́ндр Серге́евич Пу́шкин&lt;br /&gt;
|имя на другом языке = дор. орф. Александръ Сергѣевичъ Пушкинъ&lt;br /&gt;
|псевдонимы = Александр НКШП, Иван Петрович Белкин, Феофилакт Косичкин&lt;br /&gt;
|дата рождения = 06.06.1799&lt;br /&gt;
|дата смерти = 10.02.1837&lt;br /&gt;
|каналы коммуникации = [https://www.museumpushkin.ru/ Сайт Всероссийского музея Александра Сергеевича Пушкина]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Пример отдельного шаблона организации ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{организация&lt;br /&gt;
|род или число = женский&lt;br /&gt;
|название = Infocom&lt;br /&gt;
|тип = Коммерческие компании&lt;br /&gt;
|альтернативные названия = Infocom, Inc.&lt;br /&gt;
|дата создания = 22.06.1979&lt;br /&gt;
|дата закрытия = 05.05.1989&lt;br /&gt;
|ключевые фигуры = [[Берез, Джоэл|Джоэл Берез]] (президент , генеральный директор)&lt;br /&gt;
|страна = Соединённые Штаты Америки&lt;br /&gt;
|состояние = После 1989 года эпизодически использовалась как торговая марка для нескольких изданий&lt;br /&gt;
|каналы коммуникации = [http://infocom-if.org Неофициальный сайт-музей]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Пример отдельного шаблона команды ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{команда&lt;br /&gt;
|род или число = множественное&lt;br /&gt;
|название = Сёстры РИЛ&lt;br /&gt;
|альтернативные названия = RIL Sisters&lt;br /&gt;
|ключевые фигуры = Почётная основательница - Маша, художественная руководительница - Наташа&lt;br /&gt;
|каналы коммуникации = [mailto:rilsisters@example.com Контактный email: rilsisters@example.com\&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Мероприятия по внедрению ==&lt;br /&gt;
&lt;br /&gt;
Для широкомасштабного внедрения шаблона (или системы шаблонов) требуется выполнить следующие действия:&lt;br /&gt;
&lt;br /&gt;
# В категории &amp;quot;[[:Категория:Шаблоны|Шаблоны]]&amp;quot; создать подкатегорию &amp;quot;[[:Категория:Шаблоны описания субъектов|Шаблоны описания субъектов]]&amp;quot;, в которой реализовать запланированные шаблоны &amp;quot;[[Шаблон:Команда|Команда]]&amp;quot;, &amp;quot;[[Шаблон:Организация|Организация\\&amp;quot; и &amp;quot;[[Шаблон:Персона|Персона\\&amp;quot;, а также возможные вызываемые внутренние шаблоны для переиспользования. Внутренние шаблоны также добавить в категорию &amp;quot;[[:Категория:Шаблоны для шаблонов|Шаблоны для шаблонов]]&amp;quot;.&lt;br /&gt;
# Создать страницы всех новых свойств, которые будут использоваться шаблонами, созданными на предыдущем шаге.&lt;br /&gt;
# Создать основную корневую категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot;, а внутри неё категории &amp;quot;[[:Категория:Команды|Команды]]&amp;quot;, &amp;quot;[[:Категория:Организации|Организации]]&amp;quot; и &amp;quot;[[:Категория:Персоны]]&amp;quot;. Категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot; временно поместить в категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;.&lt;br /&gt;
# Переместить страницу &amp;quot;[[Псевдонимы]]&amp;quot; в категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot;.&lt;br /&gt;
# В шаблонах &amp;quot;[[Шаблон:Игры автора|Игры автора]]&amp;quot; и &amp;quot;[[Шаблон:Проекты и разработки|Проекты и разработки]]&amp;quot; заменить автоматически добавляемую категорию с &amp;quot;Персоналии&amp;quot; на &amp;quot;[[:Категория:Персоналии (автопроставленная)|Персоналии (автопроставленная)]]&amp;quot;; и создать саму эту категорию внутри категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;. Это нужно, чтобы в &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot; остались только явно вручную добавленные туда страницы и это можно было бы явно видеть.&lt;br /&gt;
# Внедрить шаблоны описания субъектов на страницы из категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;. В процессе следует выполнять следующие действия:&lt;br /&gt;
#* Добавляя шаблон &amp;quot;[[Шаблон:Организация|Организация]]&amp;quot; и заполняя в нём параметр &amp;quot;тип&amp;quot;, следует проверять, чтобы категории, автоматически добавляемые по значениям параметра, существовали и являлись подкатегориями категории &amp;quot;[[:Категория:Организации|Организации]]&amp;quot;. Предположительно потребуются следующие категории для типов организаций: &amp;quot;Коммерческая компания&amp;quot;, &amp;quot;Некоммерческая организация&amp;quot;, &amp;quot;Сетевое сообщество&amp;quot;.&lt;br /&gt;
#* Значение семантических ссылок &amp;quot;День рождения&amp;quot; переносить в параметр &amp;quot;Дата рождения&amp;quot; шаблона &amp;quot;Персона&amp;quot; или параметр &amp;quot;Дата создания&amp;quot; шаблона &amp;quot;Организация&amp;quot;, а саму ссылку &amp;quot;День рождения&amp;quot; удалять.&lt;br /&gt;
#* Удалять все ручные добавления страницы в категории &amp;quot;Персоналии&amp;quot;, &amp;quot;Иностранные персоналии&amp;quot; и &amp;quot;Компании&amp;quot;.&lt;br /&gt;
#* Неструктурированные описания псевдонимов, настоящих имён, каналов коммуникации и прочего структурировать в виде заполнения соответствующих параметров шаблонов. Следует учитывать принятое в шаблоне &amp;quot;[[Шаблон:Персона|Персона]]&amp;quot; разделение на возможный основной никнейм и прочие ситуативные псевдонимы.&lt;br /&gt;
# Проверить, что после завершения предыдущего шага в категориях &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;, &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; и &amp;quot;[[:Категория:Компании|Компании]]&amp;quot; не осталось ни одной страницы. Оставшиеся страницы дообработать как на предпредыдущем шаге, так как это либо ошибки обработки на предыдущем шаге, либо какие-то вырожденные случаи. Аналогично не должно остаться страниц с использованием свойства &amp;quot;[[Свойство:День рождения|День рождения]]&amp;quot;.&lt;br /&gt;
# Модифицировать шаблон &amp;quot;[[Шаблон:День в истории|День в истории]]&amp;quot;, чтобы для показа дней рождения он использовал не свойство &amp;quot;[[Свойство:День рождения|День рождения]]&amp;quot;, а свойство &amp;quot;[[Свойство:Дата рождения|Дата рождения]]&amp;quot;.&lt;br /&gt;
# Удалить свойство &amp;quot;[[Свойство:День рождения|День рождения]]&amp;quot;, убедившись, что больше не осталось страниц, которые его используют.&lt;br /&gt;
# Переместить категорию &amp;quot;[[:Категория:Игровые персонажи|Игровые персонажи]]&amp;quot; из категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot; в категорию &amp;quot;[[:Категория:Игры|Игры]]&amp;quot;.&lt;br /&gt;
# В шаблонах &amp;quot;[[Шаблон:Игры автора|Игры автора]]&amp;quot; и &amp;quot;[[Шаблон:Проекты и разработки|Проекты и разработки]]&amp;quot; убрать автоматическое добавление категории &amp;quot;[[:Категория:Персоналии (автопроставленная)|Персоналии (автопроставленная)]]&amp;quot;. Убедиться, что категория стала пустой, и удалить эту категорию.&lt;br /&gt;
# Удалить категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;, &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; и &amp;quot;[[:Категория:Компании|Компании]]&amp;quot;. Перед этим следует просмотреть страницы, ссылающиеся на их страницы и выполнить замены ссылок. В общем случае схема замены:&lt;br /&gt;
#* Вместо &amp;quot;Персоналии&amp;quot; в зависимости от контекста ссылаться либо на общую &amp;quot;Люди и организации&amp;quot;, либо конкретно на &amp;quot;Персоны&amp;quot;.&lt;br /&gt;
#* Вместо &amp;quot;Иностранные персоналии&amp;quot; ссылаться на общую &amp;quot;Персоны&amp;quot; (прямого аналога не предполагается).&lt;br /&gt;
#* Вместо &amp;quot;Компании&amp;quot; ссылаться на &amp;quot;Организации&amp;quot;.&lt;br /&gt;
# Категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot;, временно находившуюся в уже удалённой к этому моменту категории &amp;quot;Персоналии&amp;quot; вынести на корневой уровень.&lt;br /&gt;
# Обработать страницу &amp;quot;[[Псевдонимы]]&amp;quot;, перенеся из неё недостающую информацию в параметр &amp;quot;Псевдонимы&amp;quot; шаблона &amp;quot;Персона&amp;quot;. Может оказаться, что не все псевдонимы были упомянуты на страницах персон. Обрабатывать эффективнее не с опорой на псевдоним, а с опорой на настоящее имя: так потребуется меньшее количество редактирований. Обработанные данные следует удалять со страницы. Когда данных на странице не останется, её следует удалить, или же разместить на ней шаблон, автоматически генерирующий общую таблицу сопоставления псевдонимов и настоящих имён.&lt;br /&gt;
# Отредактировать страницу &amp;quot;[[Правила редактирования персоналий]]&amp;quot;, актуализировав представленные на ней данные (в том числе с возможным её переименованием).&lt;br /&gt;
# Доработать шаблон &amp;quot;[[Шаблон:День в истории|День в истории]]&amp;quot;, внедрив в него показ дней создания организаций и дни смерти персон.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Шаблоны]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%83%D0%B1%D1%8A%D0%B5%D0%BA%D1%82&amp;diff=36558</id>
		<title>Шаблон:Субъект</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%83%D0%B1%D1%8A%D0%B5%D0%BA%D1%82&amp;diff=36558"/>
		<updated>2026-10-06T17:17:52Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Универсальные параметры шаблона */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Внимание! Шаблон находится в разработке и до снятия этого статуса не должен использоваться на страницах вики.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Когда-нибудь тут будет код шаблона с предварительными операциями. --&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- Когда-нибудь тут будет код шаблона с выводом информации. --&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Шаблон, отображающий карточку с информацией о субъекте процессов вокруг интерактивной литературы. Он предназначен для описания не героев произведений, а реальных участников создания, распространения и осмысления интерактивной литературы (авторы, переводчики, иллюстраторы, издатели, институции и т.д.).&lt;br /&gt;
&lt;br /&gt;
== Цель ==&lt;br /&gt;
&lt;br /&gt;
Реализовать шаблон, который будет вставляться в начало статей, описывающих людей и организации, и выводить на страницах автоматически генерируемые карточки со сводной информацией.&lt;br /&gt;
&lt;br /&gt;
== Исследование текущего состояния системы ==&lt;br /&gt;
&lt;br /&gt;
* Существует этический вопрос, стоит ли отображать на страницах про людей их настоящие имена. Некоторые люди изъявляли явное желание, чтобы их настоящие имена не фигурировали на страницах, даже если они являются общеизвестной информацией. На IFВики принято правило, что в таких случаях описание следует за явно выраженным желанием описываемой персоны. В настоящий момент такие явно выраженные желания персон фиксируются в свободной форме на странице обсуждения. Например, см. страницу [[Saint]] и [[Обсуждение:Saint|её обсуждение]]. Это желание персоны может быть формализовано в виде параметра шаблона, который будет управлять отображением настоящего имени в карточке на странице, а также в целом документировать желание в коде той же страницы.&lt;br /&gt;
* Имеется формируемая вручную страница &amp;quot;[[Псевдонимы]]&amp;quot;. Её данные в виде пар сопоставления псевдонима и реального имени могут быть полностью перенесены в параметр шаблона, а сама страница может быть заменена на автоматически генерируемую таблицу.&lt;br /&gt;
* На страницах о персонах принято вручную указывать известные псевдонимы. Эти данные могут быть полностью перенесены в параметр шаблона, где известные псевдонимы будут указываться строгим перечнем и обрабатываться для добавления семантики и отображения в едином формате.&lt;br /&gt;
* На страницах о персонах принято вручную добавлять скрытую семантическую ссылку с данными об их дате рождения. Эти данные могут быть полностью перенесены в параметр шаблона, где будут обрабатываться и отображаться в едином формате. Эти данные также могут быть расширены датой смерти и автоматически рассчитываемым количеством полных лет, если для таких расчётов достаточно данных.&lt;br /&gt;
* Нет строгих правил по написанию нерусскоязычных имён. Частью они пишутся на их родном языке, частью представлены в русскоязычной адаптации. Шаблон должен предоставить механизмы для описания всей этой информации: страница именуется по русскоязычному варианту имени, но шаблон предоставляет возможность указать оригинальное написание иностранного имени, которое отобразит отдельным элементом карточки.&lt;br /&gt;
* Страницы о персонах требуют ручного добавления в категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot; или в одну из дочерних категорий. Добавление в категорию может быть полностью автоматизировано шаблоном.&lt;br /&gt;
* Шаблоны &amp;quot;[[Шаблон:Игры автора|Игры автора]]&amp;quot; и &amp;quot;[[Шаблон:Проекты и разработки|ППроекты и разработки]]&amp;quot; при добавлении на страницу автоматически проставляют категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;. Это потребуется изменить, так как при внедрении новой системы описания субъектов автором игры или разработчиком проекта может быть не только персона. Фактически шаблоном, ответственным за отнесение страницы к категории описания того или иного субъекта должен стать именно шаблон с карточкой описания субъекта.&lt;br /&gt;
* В настоящий момент таксономия предполагает корневую категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;, внутри которой находятся страницы про субъектов-людей, а также дочерние категории &amp;quot;[[:Категория:Игровые персонажи|Игровые персонажи]]&amp;quot;, &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; и &amp;quot;[[:Категория:Компании|Компании]]&amp;quot;. Схема явно потребует переработки, например:&lt;br /&gt;
** Категорию &amp;quot;[[:Категория:Игровые персонажи|Игровые персонажи]]&amp;quot; переместить в категорию &amp;quot;[[:Категория:Игры|Игры]]&amp;quot;.&lt;br /&gt;
** Корневой категорией сделать &amp;quot;Субъекты&amp;quot; или с более понятным названием &amp;quot;Люди и организации&amp;quot;. Соответствующим образом надо будет поменять ссылку на главной странице.&lt;br /&gt;
** Внутри корневой категории сделать дочерние, по которым шаблон и должен автоматически распределять. В частности, это могут быть категории &amp;quot;Люди&amp;quot;, &amp;quot;Организации&amp;quot; и &amp;quot;Команды&amp;quot;.&lt;br /&gt;
** Категория &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; должна быть упразднена&amp;quot;, так как в принципе представляется неинформативной: де-факто к иностранным относят авторов, которые самостоятельно не писали игры на русском языке, а вот на русском языке писали авторы сразу из нескольких стран, поэтому предполагающаяся антитеза &amp;quot;отечественные&amp;quot; к ним не очень подходит. Но и формирование категорий &amp;quot;русскоязычные&amp;quot; и &amp;quot;не русскоязычные&amp;quot; авторы также представляется спорным решением из-за существования релизов на разных языках, где перевод имеет непонятную долю авторства в команде разработчиков.&lt;br /&gt;
&lt;br /&gt;
== Предварительное проектирование ==&lt;br /&gt;
&lt;br /&gt;
Предполагается, что шаблон глобально должен быть способен описывать субъектов трёх типов:&lt;br /&gt;
&lt;br /&gt;
* Человек - персоналия, имеющая признаки отдельного реально существующего человека. Например, конкретное физическое лицо автор или переводчик.&lt;br /&gt;
* Организация - некое юридическое лицо или институция. Это может быть компания, разрабатывавшая или издававшая игры, или какое-то неформальное объединение людей, но имеющее минимально формализованную организационную структуру, например, &amp;quot;[[Гильдия авторов книг-игр]]&amp;quot; или &amp;quot;[[Братство РИЛ]]&amp;quot;.&lt;br /&gt;
* Команда - неформальное и ситуативное объединение нескольких людей (или организаций) под определённым названием. Например, игра &amp;quot;[[Инви непобедимый]]&amp;quot; написана не автором, а командой [[GameC]], а игра &amp;quot;[[Резня в Лапландии не удалась]]&amp;quot; - командой [[Неизвестное трио]].&lt;br /&gt;
&lt;br /&gt;
Для учёта этих видов субъектов может быть введён параметр шаблона &amp;quot;тип&amp;quot;, в зависимости от которого будет адаптироваться внешний вид генерируемой карточки и алгоритмы обработки остальных параметров. Однако не исключено, что в итоге предпочтительной реализацией окажется создание нескольких отдельных шаблонов. Для этого необходимо проанализировать предполагаемые общие и специфические поля карточек каждого вида и принять итоговое архитектурное решение. Если будет решено делать отдельные шаблоны, то для некоторых сложных алгоритмов, типа получения списка ролей субъекта, есть смысл подготовить также отдельные шаблоны для переиспользования общей реализации.&lt;br /&gt;
&lt;br /&gt;
=== Универсальные параметры шаблона ===&lt;br /&gt;
&lt;br /&gt;
* Род. Параметр, где надо будет указать род описываемого субъекта, чтобы на его основе подстраивать названия полей карточки, таких как &amp;quot;Родился 1 января 1970&amp;quot;, &amp;quot;Известен как автор, переводчик и разработчик&amp;quot; и др. Правда некоторые названия надо будет подстраивать не только в зависимости от рода, но и в зависимости от типа субъекта, например, для людей &amp;quot;Родился 1 января 1970&amp;quot;, а для организаций &amp;quot;Создан 1 января 1970&amp;quot;.&lt;br /&gt;
* Дата начала существования. Семантической свойство типа дата, обозначающее момент создания субъекта. Хотя можно обойтись универсальным алгоритмом обработки значений, но в карточке для разных видов субъектов потребуется отображение разных названий: &amp;quot;Дата рождения&amp;quot; для людей и &amp;quot;Дата создания&amp;quot; для организаций. Также для команд параметр может оказаться неактуальным из-за дублирования информации о периоде выпуска игр.&lt;br /&gt;
* Дата окончания существования. Семантической свойство типа дата, обозначающее момент окончания существования субъекта. Хотя можно обойтись универсальным алгоритмом обработки значений, но в карточке для разных видов субъектов потребуется отображение разных названий: &amp;quot;Дата смерти&amp;quot; для людей и &amp;quot;Дата закрытия&amp;quot; для организаций. Также для команд параметр может оказаться неактуальным из-за дублирования информации о периоде выпуска игр.&lt;br /&gt;
* Каналы коммуникации. Параметр для указания основных каналов коммуникации: сайт, электронная почта, страница в социальной сети и пр. по возможности следует максимально использовать [[:Категория:Шаблоны ссылок на ресурсы}шаблоны ссылок на ресурсы]].&lt;br /&gt;
&lt;br /&gt;
=== Параметры, специфичные для людей ===&lt;br /&gt;
&lt;br /&gt;
* Показ имени. Параметр управляющий показом всех полей карточки, отображающих информацию о настоящем имени персоны. Также одновременно выполняет функцию документирования желания человека относительно демонстрации его настоящего имени на странице. Если задан запрет на показ настоящего имени, то значения соответствующих параметров не просто не должны отображаться в карточке на странице, но также не должны и заполнять соответствующие семантические свойства, чтобы эта информация не попадала в возможные отображения в других шаблонах и на других страницах на основе семантических запросов.&lt;br /&gt;
* Настоящее имя. Не эквивалентно имени в названии страницы и карточки, потому что человек может быть не против опубличивания имени, но предпочитать, чтобы страница называлась по его никнейму (случай [[Ajenta Arrow]]).&lt;br /&gt;
* Имя на другом языке. Параметр для указания оригинального написания имени, если требуется.&lt;br /&gt;
* Никнейм. Не эквивалентно имени в названии страницы и карточки, потому что человек может предпочитать именование статьи по реальному имени, но при этом иметь некий общеизвестный никнейм (случай [[Жучков, Антон|Антона Жучкова]] / [[Fireton]]). При этом, представляется необходимым выделять некий основной никнейм из общего списка псевдонимов. Например, у [[Павленко, Юрий|Юрия Павленко]] есть ряд ситуативных псевдонимов, но также существует основной никнейм [[Goraph]].&lt;br /&gt;
* Полное имя. Поле для указания максимально полного имени, например, Карлос Сезар Сальвадор Аранья Кастанеда для Карлоса Кастанеды. Также может быть использовано для написания имени с использованием символов ударения, поясняющих произношение, например, Пётр Алекса́ндрович Косы́х.&lt;br /&gt;
* Известные псевдонимы. Параметр с обработкой списка с разделителем.&lt;br /&gt;
&lt;br /&gt;
=== Параметры, специфичные для организаций ===&lt;br /&gt;
&lt;br /&gt;
* Название. Строка названия организации.&lt;br /&gt;
* Тип. Строка текста, содержащая перечисление через запятую типов описываемой организации, которые в свою очередь будут обрабатываться как категории, куда добавляется страница с шаблоном. В этом параметре следует уточнять тип организации, например, &amp;quot;Коммерческие компании&amp;quot;, &amp;quot;Некоммерческие организации&amp;quot;, &amp;quot;Сетевые сообщества&amp;quot; и пр. Соответствующие категории следует делать подкатегориями категории &amp;quot;[[:Категория:Организации|Организации]]&amp;quot;. Может возникнуть идея добавлять страницу с шаблоном в категорию &amp;quot;[[:Категория:Организации|Организации]]&amp;quot; только при отсутствии указанных категорий в параметре типа, но так лучше не делать, потому что при указании нестандартного типа страница окажется без существующей категории.&lt;br /&gt;
* Альтернативные названия. Параметр для перечисления альтернативных названий организации. Может использоваться для указания сокращённого названия (или наоборот для расшифровки аббревиатуры), а также для указания названия на другом языке, если существует традиция перевода названия организации. Например, для основного названия &amp;quot;[[Фонд Технологий Интерактивной Литературы]]&amp;quot; есть смысл указать альтернативные названия Interactive Fiction Technology Foundation и IFTF.&lt;br /&gt;
* Ключевые фигуры. Параметр для общего описания ключевых фигур организации в свободной форме.&lt;br /&gt;
* Состояние. Параметр для общего описания текущего статуса организации. Главным образом нужен для случаев, когда у организации не указана конкретная дата окончания существования, но, вместе с этим, какой-либо активной деятельности ей также не ведётся. Тогда в этом параметре можно указать что-то типа &amp;quot; 2017 года активной деятельности не ведётся&amp;quot;.&lt;br /&gt;
* Страна/государство. Как правило, компании имеют выраженную страновую принадлежность: либо общую, либо только юридически значимую в виде регистрации штаб-квартиры в определённой национальной юрисдикции. Хотя следует оценить общую значимость для IFВики факта, что, например, [[Infocom]] - это американская компания, а [[Magnetic Scrolls]] - британская. Возможно, если это и важно, то только в отдельных случаях и может быть описано в свободной форме под карточкой.&lt;br /&gt;
&lt;br /&gt;
=== Параметры, специфичные для команд ===&lt;br /&gt;
&lt;br /&gt;
* Название. Строка названия команды.&lt;br /&gt;
* Альтернативные названия. Параметр для перечисления альтернативных названий команды. Может использоваться для указания сокращённого названия (или наоборот для расшифровки аббревиатуры), а также для указания названия на другом языке, если существует традиция перевода названия команды.&lt;br /&gt;
* Ключевые фигуры. Параметр для общего описания ключевых фигур команды в свободной форме.&lt;br /&gt;
* Подавлять отображение дат начала и окончания существования, а также возраста, даже если соответствующие параметры указаны. Фактически возраст и срок жизни команд - это тоже самое, что их Период выпуска игр.&lt;br /&gt;
&lt;br /&gt;
=== Поля и свойства карточки, которые рассчитываются автоматически ===&lt;br /&gt;
&lt;br /&gt;
Следующие поля карточки не требуют ручного указания и должны рассчитываться автоматически:&lt;br /&gt;
&lt;br /&gt;
* Срок существования. Количество полных лет, прошедших от даты создания субъекта до текущего дня или даты окончания существования субъекта, если число больше 0. Может потребоваться механизм предотвращения вывода неконтролируемо больших значений, например, через явное указание значения &amp;quot;неизвестно&amp;quot; для даты окончания существования.&lt;br /&gt;
* Период выпуска игр. Временной интервал в годах от даты самой ранней работы субъекта до самой поздней. Желательно именно такое нейтральное название, а не что-то типа &amp;quot;Годы творчества&amp;quot;, потому что этот временной интервал может не совпадать с годами жизни (случай [[Пушкин, Александр|Александра Пушкина]] или [[Жариков, Николай|Николая Жарикова]]).&lt;br /&gt;
* Язык выпуска игр. Список всех языков, на которых выпускались игры субъекта. Можно определить по свойству &amp;quot;[[Свойство:Язык]]&amp;quot; у страниц из категории &amp;quot;[[:Категория:Игры|Игры]]&amp;quot;.&lt;br /&gt;
* Перечень ролей. Список ролей, в которых фигурировал описываемый субъект в IFВики. Можно извлечь из родительского для всех форм участия свойства &amp;quot;[[Свойство:Роль|Роль]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Также страница с карточкой должна получать универсальное семантическое свойство &amp;quot;Наименование&amp;quot;, которое можно будет использовать для вывода данных. Для случаев организаций и команд им просто должно становиться значение параметра &amp;quot;Название&amp;quot;, а вот для случаев персон всё сложнее. Карточки персон, должны назначить свойство &amp;quot;Наименование&amp;quot;, выбрав его на основе значений параметров отображения настоящего имени, никнейма и настоящего имени:&lt;br /&gt;
&lt;br /&gt;
* Если разрешён показ настоящего имени и настоящее имя задано, то наименованием персоны назначается настоящее имя.&lt;br /&gt;
* Если настоящее имя не задано или запрещён его показ, то:&lt;br /&gt;
** Если задан никнейм, то наименованием персоны назначается никнейм.&lt;br /&gt;
** Если никнейм не задан, то наименованием персоны назначается название страницы.&lt;br /&gt;
&lt;br /&gt;
== Примеры заполнения шаблона ==&lt;br /&gt;
&lt;br /&gt;
Ниже приводятся примеры заполнения шаблона.&lt;br /&gt;
&lt;br /&gt;
=== Пример отдельного шаблона персоны ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{персона&lt;br /&gt;
|показывать настоящее имя = да&lt;br /&gt;
|род или число = мужской&lt;br /&gt;
|настоящее имя = Пушкин, Александр&lt;br /&gt;
|никнейм = Сверчок&lt;br /&gt;
|полное имя = Алекса́ндр Серге́евич Пу́шкин&lt;br /&gt;
|имя на другом языке = дор. орф. Александръ Сергѣевичъ Пушкинъ&lt;br /&gt;
|псевдонимы = Александр НКШП, Иван Петрович Белкин, Феофилакт Косичкин&lt;br /&gt;
|дата рождения = 06.06.1799&lt;br /&gt;
|дата смерти = 10.02.1837&lt;br /&gt;
|каналы коммуникации = [https://www.museumpushkin.ru/ Сайт Всероссийского музея Александра Сергеевича Пушкина]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Пример отдельного шаблона организации ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{организация&lt;br /&gt;
|род или число = женский&lt;br /&gt;
|название = Infocom&lt;br /&gt;
|тип = Коммерческие компании&lt;br /&gt;
|альтернативные названия = Infocom, Inc.&lt;br /&gt;
|дата создания = 22.06.1979&lt;br /&gt;
|дата закрытия = 05.05.1989&lt;br /&gt;
|ключевые фигуры = [[Берез, Джоэл|Джоэл Берез]] (президент , генеральный директор)&lt;br /&gt;
|страна = Соединённые Штаты Америки&lt;br /&gt;
|состояние = После 1989 года эпизодически использовалась как торговая марка для нескольких изданий&lt;br /&gt;
|каналы коммуникации = [http://infocom-if.org Неофициальный сайт-музей]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Пример отдельного шаблона команды ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{команда&lt;br /&gt;
|род или число = множественное&lt;br /&gt;
|название = Сёстры РИЛ&lt;br /&gt;
|альтернативные названия = RIL Sisters&lt;br /&gt;
|ключевые фигуры = Почётная основательница - Маша, художественная руководительница - Наташа&lt;br /&gt;
|каналы коммуникации = [mailto:rilsisters@example.com Контактный email: rilsisters@example.com\&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Мероприятия по внедрению ==&lt;br /&gt;
&lt;br /&gt;
Для широкомасштабного внедрения шаблона (или системы шаблонов) требуется выполнить следующие действия:&lt;br /&gt;
&lt;br /&gt;
# В категории &amp;quot;[[:Категория:Шаблоны|Шаблоны]]&amp;quot; создать подкатегорию &amp;quot;[[:Категория:Шаблоны описания субъектов|Шаблоны описания субъектов]]&amp;quot;, в которой реализовать запланированные шаблоны &amp;quot;[[Шаблон:Команда|Команда]]&amp;quot;, &amp;quot;[[Шаблон:Организация|Организация\\&amp;quot; и &amp;quot;[[Шаблон:Персона|Персона\\&amp;quot;, а также возможные вызываемые внутренние шаблоны для переиспользования. Внутренние шаблоны также добавить в категорию &amp;quot;[[:Категория:Шаблоны для шаблонов|Шаблоны для шаблонов]]&amp;quot;.&lt;br /&gt;
# Создать страницы всех новых свойств, которые будут использоваться шаблонами, созданными на предыдущем шаге.&lt;br /&gt;
# Создать основную корневую категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot;, а внутри неё категории &amp;quot;[[:Категория:Команды|Команды]]&amp;quot;, &amp;quot;[[:Категория:Организации|Организации]]&amp;quot; и &amp;quot;[[:Категория:Персоны]]&amp;quot;. Категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot; временно поместить в категорию &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;.&lt;br /&gt;
# Переместить страницу &amp;quot;[[Псевдонимы]]&amp;quot; в категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot;.&lt;br /&gt;
# В шаблонах &amp;quot;[[Шаблон:Игры автора|Игры автора]]&amp;quot; и &amp;quot;[[Шаблон:Проекты и разработки|Проекты и разработки]]&amp;quot; заменить автоматически добавляемую категорию с &amp;quot;Персоналии&amp;quot; на &amp;quot;[[:Категория:Персоналии (автопроставленная)|Персоналии (автопроставленная)]]&amp;quot;; и создать саму эту категорию внутри категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;. Это нужно, чтобы в &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot; остались только явно вручную добавленные туда страницы и это можно было бы явно видеть.&lt;br /&gt;
# Внедрить шаблоны описания субъектов на страницы из категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;. В процессе следует выполнять следующие действия:&lt;br /&gt;
#* Добавляя шаблон &amp;quot;[[Шаблон:Организация|Организация]]&amp;quot; и заполняя в нём параметр &amp;quot;тип&amp;quot;, следует проверять, чтобы категории, автоматически добавляемые по значениям параметра, существовали и являлись подкатегориями категории &amp;quot;[[:Категория:Организации|Организации]]&amp;quot;. Предположительно потребуются следующие категории для типов организаций: &amp;quot;Коммерческая компания&amp;quot;, &amp;quot;Некоммерческая организация&amp;quot;, &amp;quot;Сетевое сообщество&amp;quot;.&lt;br /&gt;
#* Значение семантических ссылок &amp;quot;День рождения&amp;quot; переносить в параметр &amp;quot;Дата рождения&amp;quot; шаблона &amp;quot;Персона&amp;quot; или параметр &amp;quot;Дата создания&amp;quot; шаблона &amp;quot;Организация&amp;quot;, а саму ссылку &amp;quot;День рождения&amp;quot; удалять.&lt;br /&gt;
#* Удалять все ручные добавления страницы в категории &amp;quot;Персоналии&amp;quot;, &amp;quot;Иностранные персоналии&amp;quot; и &amp;quot;Компании&amp;quot;.&lt;br /&gt;
#* Неструктурированные описания псевдонимов, настоящих имён, каналов коммуникации и прочего структурировать в виде заполнения соответствующих параметров шаблонов. Следует учитывать принятое в шаблоне &amp;quot;[[Шаблон:Персона|Персона]]&amp;quot; разделение на возможный основной никнейм и прочие ситуативные псевдонимы.&lt;br /&gt;
# Проверить, что после завершения предыдущего шага в категориях &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;, &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; и &amp;quot;[[:Категория:Компании|Компании]]&amp;quot; не осталось ни одной страницы. Оставшиеся страницы дообработать как на предпредыдущем шаге, так как это либо ошибки обработки на предыдущем шаге, либо какие-то вырожденные случаи. Аналогично не должно остаться страниц с использованием свойства &amp;quot;[[Свойство:День рождения|День рождения]]&amp;quot;.&lt;br /&gt;
# Модифицировать шаблон &amp;quot;[[Шаблон:День в истории|День в истории]]&amp;quot;, чтобы для показа дней рождения он использовал не свойство &amp;quot;[[Свойство:День рождения|День рождения]]&amp;quot;, а свойство &amp;quot;[[Свойство:Дата рождения|Дата рождения]]&amp;quot;.&lt;br /&gt;
# Удалить свойство &amp;quot;[[Свойство:День рождения|День рождения]]&amp;quot;, убедившись, что больше не осталось страниц, которые его используют.&lt;br /&gt;
# Переместить категорию &amp;quot;[[:Категория:Игровые персонажи|Игровые персонажи]]&amp;quot; из категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot; в категорию &amp;quot;[[:Категория:Игры|Игры]]&amp;quot;.&lt;br /&gt;
# В шаблонах &amp;quot;[[Шаблон:Игры автора|Игры автора]]&amp;quot; и &amp;quot;[[Шаблон:Проекты и разработки|Проекты и разработки]]&amp;quot; убрать автоматическое добавление категории &amp;quot;[[:Категория:Персоналии (автопроставленная)|Персоналии (автопроставленная)]]&amp;quot;. Убедиться, что категория стала пустой, и удалить эту категорию.&lt;br /&gt;
# Удалить категории &amp;quot;[[:Категория:Персоналии|Персоналии]]&amp;quot;, &amp;quot;[[:Категория:Иностранные персоналии|Иностранные персоналии]]&amp;quot; и &amp;quot;[[:Категория:Компании|Компании]]&amp;quot;. Перед этим следует просмотреть страницы, ссылающиеся на их страницы и выполнить замены ссылок. В общем случае схема замены:&lt;br /&gt;
#* Вместо &amp;quot;Персоналии&amp;quot; в зависимости от контекста ссылаться либо на общую &amp;quot;Люди и организации&amp;quot;, либо конкретно на &amp;quot;Персоны&amp;quot;.&lt;br /&gt;
#* Вместо &amp;quot;Иностранные персоналии&amp;quot; ссылаться на общую &amp;quot;Персоны&amp;quot; (прямого аналога не предполагается).&lt;br /&gt;
#* Вместо &amp;quot;Компании&amp;quot; ссылаться на &amp;quot;Организации&amp;quot;.&lt;br /&gt;
# Категорию &amp;quot;[[:Категория:Люди и организации|Люди и организации]]&amp;quot;, временно находившуюся в уже удалённой к этому моменту категории &amp;quot;Персоналии&amp;quot; вынести на корневой уровень.&lt;br /&gt;
# Обработать страницу &amp;quot;[[Псевдонимы]]&amp;quot;, перенеся из неё недостающую информацию в параметр &amp;quot;Псевдонимы&amp;quot; шаблона &amp;quot;Персона&amp;quot;. Может оказаться, что не все псевдонимы были упомянуты на страницах персон. Обрабатывать эффективнее не с опорой на псевдоним, а с опорой на настоящее имя: так потребуется меньшее количество редактирований. Обработанные данные следует удалять со страницы. Когда данных на странице не останется, её следует удалить, или же разместить на ней шаблон, автоматически генерирующий общую таблицу сопоставления псевдонимов и настоящих имён.&lt;br /&gt;
# Отредактировать страницу &amp;quot;[[Правила редактирования персоналий]]&amp;quot;, актуализировав представленные на ней данные (в том числе с возможным её переименованием).&lt;br /&gt;
# Доработать шаблон &amp;quot;[[Шаблон:День в истории|День в истории]]&amp;quot;, внедрив в него показ дней создания организаций и дни смерти персон.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Шаблоны]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%82%D0%B0%D1%80%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&amp;diff=36557</id>
		<title>Шаблон:Старая ссылка</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%82%D0%B0%D1%80%D0%B0%D1%8F_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&amp;diff=36557"/>
		<updated>2026-10-06T17:14:46Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[{{{архив|http://web.archive.org/web/{{{на}}}}}} {{{1|}}}]&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;(архивная копия)&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
См. [[:Шаблон:Ссылка]]&lt;br /&gt;
[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&amp;diff=36556</id>
		<title>Шаблон:Ссылка</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&amp;diff=36556"/>
		<updated>2026-10-06T17:14:10Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[{{{на}}} {{{1|}}}]&amp;amp;nbsp; {{#if: {{{архив| }}}|[{{{архив}}} &amp;lt;small&amp;gt;&#039;&#039;(зеркало)&#039;&#039;&amp;lt;/small&amp;gt;]|[http://web.archive.org/web/{{{на}}} &amp;lt;small&amp;gt;&#039;&#039;(зеркало?)&#039;&#039;&amp;lt;/small&amp;gt;]}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Шаблон &#039;&#039;&#039;ссылка&#039;&#039;&#039; - это способ дать не только ссылку на URL, но и ссылку на запасной архив, чтобы уменьшить опасность от умирания внешних сайтов. Шаблон взят с английской IFWiki, см. [[ifwiki-en:Template:Link]] Когда ссылка устаревает (сайт закрылся), можете поправить шаблон на [[:Шаблон:Старая ссылка]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
===Аргументы===&lt;br /&gt;
* &#039;&#039;&#039;на&#039;&#039;&#039; &#039;&#039;(Обязательно.)&#039;&#039; Живая ссылка на страницу&lt;br /&gt;
* &#039;&#039;&#039;архив&#039;&#039;&#039; &#039;&#039;(Необязательно.)&#039;&#039; Запасная ссылка на архив страницы. Например, вы можете использовать [http://web.archive.org Интернет-Архив].&lt;br /&gt;
* &#039;&#039;&#039;текст ссылки&#039;&#039;&#039; &#039;&#039;(Необязательно, аргумент без названия.)&#039;&#039; Текст, который показывается вместо ссылки (например, &amp;quot;Обзор&amp;quot;).&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Основной формат===&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{ссылка|на=http://www.original-link.com|архив=http://www.archived-version.com|Текст ссылки}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;{{ссылка|на=https://emshort.wordpress.com/2016/06/05/the-mary-jane-of-tomorrow/ |архив=https://web.archive.org/web/20160608153033/http://emshort.wordpress.com/2016/06/05/the-mary-jane-of-tomorrow/|The Mary Jane of Tomorrow}}&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
будет выглядеть как:&lt;br /&gt;
&lt;br /&gt;
[https://emshort.wordpress.com/2016/06/05/the-mary-jane-of-tomorrow/ The Mary Jane of Tomorrow] [https://web.archive.org/web/20160608153033/http://emshort.wordpress.com/2016/06/05/the-mary-jane-of-tomorrow/ &amp;lt;small&amp;gt;&#039;&#039;(зеркало)&#039;&#039;&amp;lt;/small&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Автозеркало ===&lt;br /&gt;
Если ссылки на зеркало нет, шаблон вставит ссылку на веб-архив. Но так как он не проверяет, существует ли там действительно актуальное зеркало, это будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
[https://emshort.wordpress.com/2016/06/05/the-mary-jane-of-tomorrow/ The Mary Jane of Tomorrow] [https://web.archive.org/web/http://emshort.wordpress.com/2016/06/05/the-mary-jane-of-tomorrow/ &amp;lt;small&amp;gt;&#039;&#039;(зеркало?)&#039;&#039;&amp;lt;/small&amp;gt;]&lt;br /&gt;
[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Описание ссылки&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;на&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Куда ведёт ссылка&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;url&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;архив&amp;quot;: {&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;Ссылка на архивную копию&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;url&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A0%D0%98%D0%9B%D0%A4%D0%B0%D0%B9%D0%BB&amp;diff=36555</id>
		<title>Шаблон:РИЛФайл</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%A0%D0%98%D0%9B%D0%A4%D0%B0%D0%B9%D0%BB&amp;diff=36555"/>
		<updated>2026-10-06T17:12:56Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[{{{1}}} Архив с игрой] в [[Библиотека РИЛ|Библиотеке РИЛ]]&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%9A%D1%80%D0%B0%D1%83%D0%B4%D1%84%D0%B0%D0%BD%D0%B4%D0%B8%D0%BD%D0%B3&amp;diff=36554</id>
		<title>Шаблон:Краудфандинг</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%9A%D1%80%D0%B0%D1%83%D0%B4%D1%84%D0%B0%D0%BD%D0%B4%D0%B8%D0%BD%D0%B3&amp;diff=36554"/>
		<updated>2026-10-06T17:10:24Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;[[Ссылка на краудфандинг::{{{1}}}|]]{{ссылка|на={{{1}}}|{{{2}}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%D0%B1%D0%BB%D0%BE%D0%B3&amp;diff=36553</id>
		<title>Шаблон:Видеоблог</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%D0%B1%D0%BB%D0%BE%D0%B3&amp;diff=36553"/>
		<updated>2026-10-06T17:09:04Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Шаблон для ссылок на Youtube, Rutube, Peertube и другие видеоканалы.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для использования&#039;&#039;&#039; вставьте в разделе ссылок на странице автора:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Видеоблог|https://example.com/videoblog|Описание}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;[[Ссылка на видеоблог::{{{1}}}|]]{{ссылка|на={{{1}}}|{{{2}}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%91%D0%BB%D0%BE%D0%B3&amp;diff=36552</id>
		<title>Шаблон:Блог</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%91%D0%BB%D0%BE%D0%B3&amp;diff=36552"/>
		<updated>2026-10-06T17:08:16Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;[[Ссылка на блог::{{{1|}}}|]]{{ссылка|на={{{1|}}}|{{{2|}}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:UrqW&amp;diff=36551</id>
		<title>Шаблон:UrqW</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:UrqW&amp;diff=36551"/>
		<updated>2026-10-06T17:07:27Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#if: {{{id|}}}|[https://urqw.github.io/UrqW/?id={{{id|}}} Играть онлайн через UrqW]|[{{{1|}}} Играть онлайн через UrqW]}}&lt;br /&gt;
[[Категория:Игры на UrqW| ]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шаблон можно использовать двумя способами:&lt;br /&gt;
* указав прямую ссылку, например, &amp;lt;nowiki&amp;gt;{{UrqW|https://example.com/?id=game}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* указав идентификатор игры (после решётки в ссылке) в каталоге основного репозитория [[UrqW]], например, &amp;lt;nowiki&amp;gt;{{UrqW|id=hamster1}}&amp;lt;/nowiki&amp;gt; - сформируется ссылка вида &amp;lt;nowiki&amp;gt;https://urqw.github.io/UrqW/?id=hamster1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
В обоих случаях игра добавится в категорию [[:Категория:Игры на UrqW|Игры на UrqW]].&lt;br /&gt;
[[Категория:Шаблоны ссылок на ресурсы]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:URQStead&amp;diff=36550</id>
		<title>Шаблон:URQStead</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:URQStead&amp;diff=36550"/>
		<updated>2026-10-06T17:07:12Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#if: {{{id|}}}|[http://instead-games.ru/game.php?ID={{{id|}}} Сборка для интерпретатора INSTEAD]|[{{{1|}}} Сборка для интерпретатора INSTEAD]}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Категория:Игры на URQ-модуле INSTEAD| ]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Шаблон можно использовать двумя способами:&lt;br /&gt;
* указав прямую ссылку, например, &amp;lt;nowiki&amp;gt;{{URQStead|http://somesite.ru/download/somegame.zip}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* указав идентификатор игры в репозитории INSTEAD, например, &amp;lt;nowiki&amp;gt;{{URQStead|id=100}}&amp;lt;/nowiki&amp;gt; – сформируется ссылка вида &amp;lt;nowiki&amp;gt;http://instead-games.ru/game.php?ID=100&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
В обоих случаях игра добавится в категорию [[:Категория:Игры на URQ-модуле INSTEAD|Игры на URQ-модуле INSTEAD]].&lt;br /&gt;
[[Категория:Шаблоны ссылок на ресурсы]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Twitter&amp;diff=36549</id>
		<title>Шаблон:Twitter</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Twitter&amp;diff=36549"/>
		<updated>2026-10-06T17:05:54Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Twitter::{{{1}}}| ]]{{Блог|https://twitter.com/{{{1}}}|@{{{1}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Mastodon&amp;diff=36548</id>
		<title>Шаблон:Mastodon</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Mastodon&amp;diff=36548"/>
		<updated>2026-10-06T17:04:57Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Mastodon::{{{1}}}@{{{2}}}| ]]{{Блог|https://{{{2}}}/@{{{1}}}|{{{1}}}@{{{2}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:IFDB&amp;diff=36547</id>
		<title>Шаблон:IFDB</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:IFDB&amp;diff=36547"/>
		<updated>2026-10-06T17:04:29Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[IFDB ID::{{{1|}}}|]]&amp;lt;/includeonly&amp;gt;{{ссылка|на=https://ifdb.org/viewgame?id={{{1|}}}|Страница игры на IFDB}}&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA_%D0%BD%D0%B0_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B&amp;diff=36546</id>
		<title>Категория:Шаблоны ссылок на ресурсы</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA_%D0%BD%D0%B0_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B&amp;diff=36546"/>
		<updated>2026-10-06T17:03:08Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В этой категории располагаются шаблоны для унифицированного оформления ссылок на различные ресурсы.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Шаблоны]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:CremDB&amp;diff=36545</id>
		<title>Шаблон:CremDB</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:CremDB&amp;diff=36545"/>
		<updated>2026-10-06T17:02:49Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[CremDB ID::{{{1|}}}|]]&amp;lt;/includeonly&amp;gt;[https://db.crem.xyz/game/{{{1|}}} Страница игры] в библиотеке [[CremDB]].&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA_%D0%BD%D0%B0_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B&amp;diff=36544</id>
		<title>Категория:Шаблоны ссылок на ресурсы</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D1%81%D1%81%D1%8B%D0%BB%D0%BE%D0%BA_%D0%BD%D0%B0_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B&amp;diff=36544"/>
		<updated>2026-10-06T17:01:52Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Новая страница: «В этой категории располагаются шаблоны для унифицированного оформления ссылок на различные ресурсы.»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В этой категории располагаются шаблоны для унифицированного оформления ссылок на различные ресурсы.&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:CremDB&amp;diff=36543</id>
		<title>Шаблон:CremDB</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:CremDB&amp;diff=36543"/>
		<updated>2026-10-06T17:01:09Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[CremDB ID::{{{1|}}}|]]&amp;lt;/includeonly&amp;gt;[https://db.crem.xyz/game/{{{1|}}} Страница игры] в библиотеке [[CremDB]].&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны]][[Категория:Шаблоны ссылок на ресурсы]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A3%D1%80%D0%B7%D0%B8&amp;diff=36542</id>
		<title>Урзи</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A3%D1%80%D0%B7%D0%B8&amp;diff=36542"/>
		<updated>2026-10-06T16:33:24Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Урзи&lt;br /&gt;
 |автор=[[Автор::Жучков, Антон]], перевод на английский: [[Переводчик::Сорокин, Александр|Александр Сорокин]]&lt;br /&gt;
 |вышла=14.04.2020&lt;br /&gt;
 |платформа=Метапарсер 3&lt;br /&gt;
 |язык=Русский, Английский&lt;br /&gt;
 |темы=Повседневность, Животные&lt;br /&gt;
}}{{Паровозик|6|3}}&lt;br /&gt;
&lt;br /&gt;
== Как она начинается ==&lt;br /&gt;
Урзи спал долго. Какой-то звук и Урзи проснулся. Потянулся. Хорошо. Надо поесть. &lt;br /&gt;
&lt;br /&gt;
== Версии ==&lt;br /&gt;
* [https://if.zhuchkovs.com/games/urzi.html Играть онлайн]&lt;br /&gt;
* [http://instead-games.ru/downloader.php?file=instead-urzi-1.03.zip Скачать игру]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://instead-games.ru/game.php?ID=341 Карточка игры в репозитории игр INSTEAD]&lt;br /&gt;
* [https://forum.ifiction.ru/viewtopic.php?id=2519&amp;amp;lid=7 Карточка игры на форуме ifiction.ru]&lt;br /&gt;
* [https://www.youtube.com/watch?v=5nF5L4JSX7E Видео прохождения игры] от [[Ajenta|Адженты]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D0%B2&amp;diff=36541</id>
		<title>Архив</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D0%B2&amp;diff=36541"/>
		<updated>2026-10-06T16:32:19Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Архив&lt;br /&gt;
 |обложка=archive.jpg&lt;br /&gt;
 |автор=[[Автор::Косых, Пётр|Пётр Косых]], музыка, звук: [[Композитор::Соборов, Александр|Александр Соборов]], перевод на английский: [[Переводчик::Сорокин, Александр|Александр Сорокин]]&lt;br /&gt;
 |вышла=05.05.2020&lt;br /&gt;
 |платформа=Метапарсер 3&lt;br /&gt;
 |темы=Фантастика, Космос&lt;br /&gt;
 |язык=русский,английский&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Происшествие в гиперпространстве&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Интерактивная новелла-миниатюра для выполнения на средствах вычислительной техники.&lt;br /&gt;
&lt;br /&gt;
== Как всё начинается ==&lt;br /&gt;
Ты — геолог-разведчик объектов дальнего космоса. Пробивающаяся седина в бороде, усталый взгляд и морщины на лице выдают в тебе мужчину средних лет.&lt;br /&gt;
&lt;br /&gt;
Пол года ты работал по контракту на &amp;quot;Димидии&amp;quot;, занимаясь разведкой месторождений урана. Но теперь контракт завершён.&lt;br /&gt;
&lt;br /&gt;
Пора возвращаться домой.&lt;br /&gt;
&lt;br /&gt;
В рубке «Резвого» тесно. Сквозь узкие окна в кабину проникают косые лучи звезды 51 Peg, освещая приборную панель. Прямо по курсу — ворота перехода, парящие над Димидием.&lt;br /&gt;
&lt;br /&gt;
Всё подготовлено, чтобы начать переход. Но всё-таки ты хочешь ещё раз осмотреть приборы. &lt;br /&gt;
&lt;br /&gt;
== Версии ==&lt;br /&gt;
* [http://instead-games.ru/game.php?ID=343 Карточка полнофункциональной версии в библиотеке игр INSTEAD]&lt;br /&gt;
* [https://instead.itch.io/archive Страница полнофункциональной версии игры на itch.io  с бинарными сборками для Windows и Linux]&lt;br /&gt;
* [https://parser.hugeping.ru/games/archive/index.html Онлайн версия без звука и иллюстраций]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [https://ifhub.club/2020/05/09/obzor-arhiv-petr-kosyh.html Обзор игры] от [[Жучков, Антон|Антона Жучкова]]&lt;br /&gt;
* [http://dialas.ru/2020/05/23/%d0%be%d0%b1%d0%b7%d0%be%d1%80-%d0%b8%d0%b3%d1%80%d1%8b-%d0%b0%d1%80%d1%85%d0%b8%d0%b2/ Обзор игры] от [[Гаджимурадов, Алик|Алика Гаджимуратова]]&lt;br /&gt;
* [https://club.hugeping.ru/lj4EB38HiRogjcnOp7cJ История создания игры] от [[Косых, Пётр|её автора Петра Косых]] (содержит [[Спойлер|спойлеры]])&lt;br /&gt;
* [http://instead-games.ru/forum/index.php?p=/discussion/comment/13436/#Comment_13436 Обсуждение игры на форуме INSTEAD]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=ADRIFT&amp;diff=36540</id>
		<title>ADRIFT</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=ADRIFT&amp;diff=36540"/>
		<updated>2026-10-05T12:58:17Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = &lt;br /&gt;
|тип = Парсерные платформы&lt;br /&gt;
|разработчик = [[Разработчик::Уайльд, Кэмпбелл|Кэмпбелл Уайльд]], русский локализатор версии 3.9 [[Локализатор::Лисова, Лариса|Лариса Лисова]]&lt;br /&gt;
|язык = Английский&lt;br /&gt;
|система = Windows, macOS, GNU/Linux, Android&lt;br /&gt;
|онлайн = да&lt;br /&gt;
|написано на = [[Visual Basic .NET]] (до версии 5.0 на [[Visual Basic]])&lt;br /&gt;
|язык разработки = Визуальный редактор&lt;br /&gt;
|читаемый формат = Игры ADRIFT ([[.taf|*.taf]];[[.blorb|*blorb]]), [[.bak|Резервные копии проекта ADRIFT (*.bak)]], [[.amf|Файлы модулей ADRIFT (*.amf)]]&lt;br /&gt;
|создаваемый формат = Игры ADRIFT ([[.taf|*.taf]];[[.blorb|*blorb]]), [[.bak|Резервные копии проекта ADRIFT (*.bak)]], [[.amf|Файлы модулей ADRIFT (*.amf)]], [[.exe|Исполняемые файлы Windows (*.exe)]]&lt;br /&gt;
|первый выпуск = 16.02.1997&lt;br /&gt;
|последняя версия = 5.0 release 36&lt;br /&gt;
|дата последней версии = 12.09.2020&lt;br /&gt;
|состояние = &lt;br /&gt;
|лицензия = [[Freeware]]&lt;br /&gt;
|сайт = [http://www.adrift.co/ adrift.co]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADRIFT&#039;&#039;&#039; (Adventure Developer &amp;amp; Runner - Interactive Fiction Toolkit) - интерактивная среда разработки и исполнения [[Парсерные игры|парсерных игр]]. Разрабатывается [[Уайльд, Кэмпбелл|Кэмпбеллом Уайльдом]] с 1997 года. До версии 3 называлась Adventure Generator. Изначально распространялась на коммерческой основе, требуя покупки лицензии за 18,95 долларов для сохранения игры больше некоторого размера, но с версии 5.0 стала бесплатной, перейдя на финансирование с помощью пожертвований.&lt;br /&gt;
&lt;br /&gt;
==Принципы технологии==&lt;br /&gt;
Платформа состоит из двух основных компонентов: ADRIFT Generator и [[ADRIFT Runner]]:&lt;br /&gt;
&lt;br /&gt;
* ADRIFT Generator - это интерактивная среда разработки, в которой игра пишется путём взаимодействия с [[Визуальный редактор|визуальным редактором]] без необходимости писать программный код. Разработчик через графический интерфейс добавляет все игровые элементы (локации, объекты, персонажи, действия и события). Вставка новых элементов осуществляется из выпадающих меню, так что разработчику нет необходимости запоминать какие-то управляющие конструкции или команды. Содержимое проекта логически структурируется, а взаимосвязи между различными элементами визуализируются специальным образом, например, карта локаций.&lt;br /&gt;
* [[ADRIFT Runner]] - это [[интерпретатор]] для воспроизведения игр, написанных с помощью ADRIFT Generator. Помимо классического парсерного интерфейса с телетайпным окном вывода и строкой ввода команд, он имеет ряд дополнительных возможностей, в частности, интерактивную карту игрового мира, показывающую места, в которых уже побывал игрок.&lt;br /&gt;
&lt;br /&gt;
[[ADRIFT Runner]] может распространяться как отдельное приложение, например, вместе с файлом игры. Сам [[.taf|файл игры (*.taf)]] может быть зашифрован средствами ADRIFT Generator, чтобы скрыть его содержимое. Платформа также позволяет скомпилировать игру в [[.exe|исполняемый файл Windows (*.exe)]].&lt;br /&gt;
&lt;br /&gt;
== Переносимость ==&lt;br /&gt;
Изначально платформа ADRIFT (Adventure Generator) разрабатывалась только под операционные системы Windows. До версии 4.0 включительно [[ADRIFT Runner]] существовал исключительно в версии для Windows, так как был написан на [[Visual Basic]], жёстко привязанном к WinAPI.&lt;br /&gt;
&lt;br /&gt;
Впрочем, проблема запуска ADRIFT-игр на других системах частично решалась за счёт альтернативных интерпретаторов, не являвшихся полным аналогом [[ADRIFT Runner]], но всё же позволявших воспроизвести большинство игр, хотя и без всех интерактивных возможностей. В частности, сначала появился интерпретатор [[JAsea]], а затем он был переписан в рамках проекта другого интерпретатора [[SCARE]], который может использоваться на таких системах как Windows, macOS, GNU/Linux и DOS. Кроме того, ограниченное воспроизведение ADRIFT-игр поддерживает мультиформатный интерпретатор [[Gargoyle]].&lt;br /&gt;
&lt;br /&gt;
На устройствах под управлением Android игры ADRIFT могут быть запущены при помощи интерпретатора [[Fabularium]].&lt;br /&gt;
&lt;br /&gt;
27 сентября 2011 года появился официальный интерпретатор [[WebRunner]], позволяющий играть в ADRIFT онлайн в браузере. Ну а с выходом ADRIFT 5.0 появилась версия [[ADRIFT Runner]] для macOS и GNU/Linux, правда требующая для запуска фреймворк [[wikipedia:Mono|Mono]], так как система была переписана на [[Visual Basic .NET]].&lt;br /&gt;
&lt;br /&gt;
Разделение на официальные и неофициальные (альтернативные) интерпретаторы для ADRIFT является довольно строгим, так как исходный код платформы остаётся закрытым, поэтому у неё есть конкретный разработчик в лице [[Уайльд, Кэмпбелл|Кэмпбелла Уайльда]].&lt;br /&gt;
&lt;br /&gt;
==Основные возможности==&lt;br /&gt;
Разработка или редактирование игры с помощью Adrift Generator предполагает работу в удобной [[Визуальный редактор|интерактивной среде]]. Пользователю доступно несколько рабочих окон:&lt;br /&gt;
* &#039;&#039;Rooms&#039;&#039;: локации игры (их краткие и полные описания, пути между ними и т.п.);&lt;br /&gt;
* &#039;&#039;Objects&#039;&#039;: объекты игры, статические или динамические (портативные). Разумеется, они также имеют описания и специфические свойства (контейнер, поверхность, может быть надет на себя, съедобен, может быть оружием и т.п.), а также такие специфические атрибуты, как размер и вес.&lt;br /&gt;
* &#039;&#039;Tasks&#039;&#039;: собственно команды, определённые пользователем. Здесь можно задавать их связь с объектами, и вызванные ими действия.&lt;br /&gt;
* &#039;&#039;Events&#039;&#039;: позволяет задавать асинхронные (не связанные с действиями пользователя) события игры.&lt;br /&gt;
* &#039;&#039;Characters&#039;&#039;: не главные персонажи (НГП) игры. Здесь задаются алгоритмы их перемещения, их действия, общение с ними.&lt;br /&gt;
&lt;br /&gt;
Хотя ADRIFT является [[:Категория:Платформы без программирования|платформой без программирования]], некоторые базовые вычислительные и программные возможности в неё заложены (в любой текст, выводимый программой, можно включать вычисляемые выражения, в которых допустимо довольно много полезных операций).&lt;br /&gt;
&lt;br /&gt;
В версии 5.0 добавлен целый ряд новых возможностей, работающих в объектно-ориентированной парадигме, что приблизило функциональность ADRIFT к более развитым [[:Категория:Парсерные платформы|парсерным платформам]], основанным на прямом программировании игрового мира.&lt;br /&gt;
&lt;br /&gt;
Ещё одна существенная особенность ADRIFT — встроенная боевая система, позволяющая легко программировать интерактивные баталии в стиле ролевых игр — у главного героя и любых [[NPC|НГП]] могут быть разнообразное оружие, броня и пр.&lt;br /&gt;
&lt;br /&gt;
Обычный недостаток всех интерактивных систем с [[Визуальный редактор|визуальным редактором]] — отсутствие исходного текста программы (из-за чего невозможно работать с ним внешними средствами, повторно использовать фрагменты программного кода, коллективно разрабатывать программу и пр.) В ADRIFT этот недостаток частично преодолён — имеются средства импорта и экспорта модулей программы в виде исходного текста ([[.amf|файлы .amf]]).&lt;br /&gt;
&lt;br /&gt;
==Интернационализация и русская версия==&lt;br /&gt;
В ADRIFT заложены средства интернационализации, хотя и довольно примитивные. Они основаны на простой подстановке текстовых строк. Обычно, в виде [[.alr|ALR-файла]], поставляемого вместе с игрой, задаётся набор текстовых подстановок, действующих на любой выводимый программой текст (вроде «Also here is|Здесь же»).&lt;br /&gt;
&lt;br /&gt;
Существует русская версия ADRIFT 3.9, локализованная [[Лисова, Лариса|Ларисой Лисовой]]. Качество перевода хорошее, если сделать скидку на труднопреодолимые ограничения самой системы.&lt;br /&gt;
* [http://sampo.ru/~andy_repin/adrift39.zip Скачать русский ADRIFT 3.9]&lt;br /&gt;
* [http://sampo.ru/~andy_repin/Manual.rar Скачать русское руководство для ADRIFT 3.9]&lt;br /&gt;
&lt;br /&gt;
Готовой локализации версии 5.0 в открытом доступе нет, но общие принципы её адаптации для русского языка описаны [[Репин, Андрей|Андреем Репиным]] в [http://adrift.ifiction.ru/about/ его блоге], а также им выпущена русская игра &amp;quot;[[Тайна затерянного храма]]&amp;quot; на ADRIFT 5.0.&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [http://forum.ifiction.ru/viewforum.php?id=13 Форум по вопросам использования ADRIFT на русском языке]&lt;br /&gt;
* [http://adrift.ifiction.ru «Adrift по-русски - опыт пользователя»]&lt;br /&gt;
* [http://advantureclub.narod.ru «Клуб Адвантюристов (русскоязычное сообщество авторов ADRIFT)»]&lt;br /&gt;
* [http://www.adrift.co/ ADRIFT — официальный сайт (англоязычный)]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[:Категория:Интерпретаторы ADRIFT|Интерпретаторы ADRIFT]]&lt;br /&gt;
* [[:Категория:Игры на ADRIFT|Игры на ADRIFT]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%95%D1%80%D0%BE%D1%88%D0%BA%D0%B8%D0%BD%D0%B0,_%D0%9C%D0%B0%D1%80%D0%B8%D1%8F&amp;diff=36539</id>
		<title>Ерошкина, Мария</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%95%D1%80%D0%BE%D1%88%D0%BA%D0%B8%D0%BD%D0%B0,_%D0%9C%D0%B0%D1%80%D0%B8%D1%8F&amp;diff=36539"/>
		<updated>2026-10-05T12:00:10Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Известна как &#039;&#039;&#039;Kadena‎&#039;&#039;&#039;.&lt;br /&gt;
{{Игры автора}}&lt;br /&gt;
{{Проекты и разработки}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%97%D0%9E%D0%9A_2026&amp;diff=36538</id>
		<title>ЗОК 2026</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%97%D0%9E%D0%9A_2026&amp;diff=36538"/>
		<updated>2026-10-05T11:58:25Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Жюри */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{event info&lt;br /&gt;
|название=ЗОК 2026&lt;br /&gt;
|тип=Конкурсы&lt;br /&gt;
|номер=21&lt;br /&gt;
|обложка=ЗОК 2026.png&lt;br /&gt;
|организатор=[[Организатор::Enola]]&lt;br /&gt;
|начало=01.12.2025&lt;br /&gt;
|окончание=29.03.2026&lt;br /&gt;
|сайт=https://zok.ifiction.ru/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Приветствую всех на очередном конкурсе текстовых игр ЗОК 2026!&lt;br /&gt;
&lt;br /&gt;
В конкурсе может принять участие любая игра на русском языке в жанре интерактивная литература (Interactive fiction).&lt;br /&gt;
==Сроки проведения==&lt;br /&gt;
&lt;br /&gt;
* Игры принимаются с 1 декабря 2025 года.&lt;br /&gt;
* Окончание приёма заявок с играми: 15 февраля 2026 года.&lt;br /&gt;
* Публикация игр конкурса: 16 февраля 2026 г.&lt;br /&gt;
* Голосование жюри и игроков: ориентировочно до конца марта, но будет зависеть от количества и объёма присланных игр.&lt;br /&gt;
* Церемония объявления результатов: после завершения голосования.&lt;br /&gt;
* Все даты считаются включительно; время московское (UTC+3).&lt;br /&gt;
&lt;br /&gt;
==Как принять участие==&lt;br /&gt;
&lt;br /&gt;
Прочитайте внимательно правила конкурса и убедитесь, что ваша игра им соответствует.&lt;br /&gt;
&lt;br /&gt;
Чтобы принять участие в конкурсе, зарегистрируйтесь на сайте и нажмите вверху на кнопку с таймером «Подать заявку» и заполните форму заявки, приложив ссылку на архив с игрой. Заявки, посланные по другим каналам связи: чаты, почта и т.д. на конкурс не принимаются&lt;br /&gt;
&lt;br /&gt;
Если возникают какие-либо трудности с заполнением формы заявки, либо вы хотите отправить на конкурс онлайн-игру посмотрите раздел «Как отправить игру».&lt;br /&gt;
&lt;br /&gt;
Организатор проверит вашу заявку на соответствие правилам конкурса, после чего уведомит вас о принятии игры на конкурс (статус «Прошло проверку» или «Одобрено») или о наличии проблем в оформлении заявки в личном кабинете на сайте.&lt;br /&gt;
&lt;br /&gt;
Если после прочтения правил и FAQ, у вас остались вопросы, а также возникли какие-то проблемы при подаче заявке на конкурс, то вы можете обратиться напрямую к организатору, контакты для связи ниже на странице.&lt;br /&gt;
&lt;br /&gt;
Победителей определяет жюри конкурса по правилам, указанным в соответствующем разделе сайта.&lt;br /&gt;
&lt;br /&gt;
Также есть «приз зрительских симпатий», который получает игра, набравшая наивысший балл по голосованию игроков и самих авторов. Голосование игроков будет проходить отдельно. Его основные правила: оценки от 1 до 10 и подсчёт по среднему арифметическому. Подробности будут опубликованы дополнительно.&lt;br /&gt;
&lt;br /&gt;
==Правила==&lt;br /&gt;
===Требования к играм===&lt;br /&gt;
* Игра должна быть в жанре «текстовые игры»/«интерактивная литература» (Interactive fiction).&lt;br /&gt;
* Игры не должны быть опубликованы где-либо ещё до момента публикации игр конкурса. Про отправку онлайн-игр на конкурс смотрите в разделе «Как отправить игру». Игры, которые раньше были частично опубликованы (отдельная часть, глава, история из игры), допускаются на конкурс после решения организатора, в зависимости от количества нового контента. Примерно допустимое соотношение нового и старого контента: 3 к 1.&lt;br /&gt;
* Игра должна быть на русском языке, либо иметь его в качестве одного из возможных языков для выбора в игре.&lt;br /&gt;
* Игра должна быть игрой, а не просто текстовым файлом. 📜 То есть, чтобы присутствовала минимальная интерактивность (наличие ссылок в тексте) и возможность для игрока взаимодействовать с игрой. Линейные рассказы со ссылками или кинетические новеллы допускаются.&lt;br /&gt;
* Игра должна быть законченной и проходимой. Отсутствуют критичные баги, 🐛 мешающие прохождению, а сама игра логически завершена и не обрывается на полуслове. Есть возможность достижения концовки хотя бы одной сюжетной ветки.&lt;br /&gt;
* Игра должна быть бесплатной. Игра не запрашивает оплату для прохождения, а также не должна требовать от игрока просмотра платной рекламы или предъявлять аналогичные коммерческие требования игроку.&lt;br /&gt;
* Писать можно под любую операционную систему и любой движок, но одна из версий должна быть под Windows. Необходимо, чтобы одна из прикладываемых к заявке версий игры запускалась на Windows 10 (x64), либо была возможность простого запуска игры через бесплатный эмулятор. Игры, которые запускаются в браузере, разрешаются.&lt;br /&gt;
* Не принимаются игры, портированные/перенесённые/адаптированные с других движков или изданных книг. Данное правило не касается переводов игр.&lt;br /&gt;
&lt;br /&gt;
===Дополнительные требования к переводам игр===&lt;br /&gt;
&lt;br /&gt;
* Перевод должен быть выполнен впервые. То есть, игру больше никто никогда не переводил на русский язык.&lt;br /&gt;
*     Переводы собственных игр присылать нельзя.&lt;br /&gt;
*     В заявке на конкурс надо дополнительно указать название, автора и ссылку на переводимую игру.&lt;br /&gt;
*     Предоставляя игру на конкурс, вы подтверждаете, что получили согласие/разрешение на перевод от автора оригинальной игры.&lt;br /&gt;
&lt;br /&gt;
===Секция «Вне конкурса»===&lt;br /&gt;
&lt;br /&gt;
В секцию «Вне конкурса» попадают игры, которые не соответствуют требованиям конкурса (игры, опубликованные до момента начала голосования на конкурсе; игры, портированные с одной платформы на другую; незавершённые игры; демо-версии и т.д.), а также игры, чьи авторы не хотят или не могут участвовать в розыгрыше призового фонда.&lt;br /&gt;
Игры «Вне конкурса» не претендуют на любые призы и обязательные оценки, обзоры от жюри и игроков. Такие игры будут размещены на сайте конкурса в специальном разделе и доступны для скачивания/комментирования всеми желающими.&lt;br /&gt;
В качестве бонуса: организатор может написать небольшие отзывы на каждую игру в этом разделе.&lt;br /&gt;
&lt;br /&gt;
===Юридические подробности===&lt;br /&gt;
&lt;br /&gt;
Вы сохраняете авторские права на присланную игру и можете делать со своей работой всё, что пожелаете (в том числе удалять файлы игры с сайта конкурса), после окончания конкурса (публикации результатов конкурса). После публикации игр конкурса вы также можете самостоятельно размещать игру на других сайтах/ресурсах.&lt;br /&gt;
&lt;br /&gt;
Участвуя в ЗОК, вы предоставляете организатору конкурса неисключительное право на неограниченное распространение игры и всех материалов, которые вы представляете на конкурс.&lt;br /&gt;
&lt;br /&gt;
В случае, если перевод или игра, отправленные на конкурс, содержат материалы, созданные не вами (картинки, музыка, звуки, тексты и иные объекты авторских прав) вы подтверждаете, что получили все необходимые права на использование этих материалов, согласия, разрешения, лицензии, отсутствие претензий авторов и прочие документы). Организатор не проверяет игры на соблюдение авторских прав.&lt;br /&gt;
&lt;br /&gt;
===Ответственность за нарушение правил конкурса===&lt;br /&gt;
&lt;br /&gt;
В случае нарушения правил конкурса участником:&lt;br /&gt;
на стадии приёма заявок — игра может быть отправлена во «Вне конкурса», либо дисквалифицирована(удалена) с конкурса по решению организатора;&lt;br /&gt;
на стадии голосования — игра участника может быть отправлена во «Вне конкурса», либо дисквалифицирована(удалена) с конкурса по коллективному решению жюри и организатора.&lt;br /&gt;
&lt;br /&gt;
===Прочие ограничения===&lt;br /&gt;
&lt;br /&gt;
Руководствуйтесь собственной порядочностью и здравым смыслом. Учитывайте законодательство страны, в которой живёте. Мы не можем предположить всевозможные запреты на различные виды контента, которые могут появиться во всём мире в будущем. Это особенно важно, если вы подписываете игру своим реальным именем, а не псевдонимом, и оставляете внутри игры персональные данные, по которым вас легко найти.&lt;br /&gt;
Организатор также оставляет за собой право аргументированно отказать автору игры в публикации в рамках конкурса по морально-этическим соображениям.&lt;br /&gt;
&lt;br /&gt;
В заключение отмечу, что мы поддерживаем вежливую атмосферу на площадках конкурса. Хамство, грубость и токсичное поведение при общении с другими участниками конкурса, игроками, организатором, членами жюри недопустимо. Такое поведение будет пресекаться модераторами, а к нарушителю могут быть применены меры ответственности.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Жюри==&lt;br /&gt;
===Состав жюри===&lt;br /&gt;
&lt;br /&gt;
*     [[Член жюри::Ajenta]] — автор игр, обзорщица и организатор множества мероприятий интерактивной литературы.&lt;br /&gt;
*     [[Член жюри::Виталий Блинов]] — автор игр, победитель и призёр КРИЛ и ЗОК, организатор Контигра.&lt;br /&gt;
*     [[Член жюри::Aleks Versus]] — автор игр и разработчик утилит для QSP.&lt;br /&gt;
*     [[Член жюри::Fireton]] — автор игр и разработчик движка FireURQ.&lt;br /&gt;
*     [[Член жюри::Kadena]] — автор и переводчица множества книг-игр.&lt;br /&gt;
*     [[Член жюри::Silencio]] — фикрайтер, куратор конкурса авторской прозы в рамках geek-конвента CON.Версия.&lt;br /&gt;
&lt;br /&gt;
===Оценивание игр===&lt;br /&gt;
&lt;br /&gt;
Жюри оценивает игры по пяти критериям. По каждому критерию члены жюри выставляют оценку от 1 до 10 (наивысшая).&lt;br /&gt;
&lt;br /&gt;
Оценки всех членов жюри по каждой игре суммируются. Игры ранжируются в зависимости от набранных баллов. В случае равенства итогового балла у нескольких игр побеждает игра, набравшая наивысший балл по критерию «Общее впечатление об игре». В случае равенства баллов по данному критерию, побеждает игра, выбранная организатором.&lt;br /&gt;
&lt;br /&gt;
Ниже пояснения по каждому из критериев.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Общее впечатление об игре&#039;&#039;&#039;&lt;br /&gt;
Это — самое важное, что можно сказать об игре. Общие впечатления и ощущения. Насколько все остальные элементы органично сочетаются в игре? И не выпирает ли какой-то один аспект в ущерб другим? Понравилось ли играть или игре чего-то не хватает, даже при высоких баллах по остальным критериям? Что-то, что зацепило именно вас.&lt;br /&gt;
* &#039;&#039;&#039;Геймплей и головоломки&#039;&#039;&#039;&lt;br /&gt;
Собственно игровая механика. Насколько геймплей игры разнообразен и соответствует остальным элементам игры. Наличие именно игровой составляющей – играбельность. Интересные небанальные головоломки, геймплейные решения, разнообразие вариантов в решении загадок. В общем всё то, без чего игра перестаёт быть игрой, а становится книгой или линейной кинетической новеллой.&lt;br /&gt;
* &#039;&#039;&#039;Сюжет и атмосфера&#039;&#039;&#039;&lt;br /&gt;
Интересность сюжета. Оригинальность истории, её непротиворечивость. Наличие интересной идеи, задумки (именно в плане сеттинга, а не механики). Хорошо прописанный мир с богатой предысторией. Отсутствие логических неувязок, неясностей, последовательное, а не «рваное» повествование (если, конечно, это не специальный приём в игре).&lt;br /&gt;
* &#039;&#039;&#039;Текст и литературный стиль&#039;&#039;&#039;&lt;br /&gt;
Качество текста. Наличие ошибок (орфографических, пунктуационных, речевых и т.д.), стиль текста, лёгкость чтения и восприятия. Насколько приятно читается текст? Разнообразие художественных приёмов, образов, фигур речи.&lt;br /&gt;
* &#039;&#039;&#039;Техническое исполнение и оформление&#039;&#039;&#039;&lt;br /&gt;
Техническая реализация игры (баги, ошибки и т.д.). Удобство управления, запуска игры. Общее оформление игры. Графический дизайн игры, использование аудиовизуальных медиа-материалов. Их органичность миру игры и геймплею. Даже стандартное оформление движка (дефолтные шрифты, темы и прочее) может получить высокие баллы, если оно приятное и удачно вписывается в концепцию игры. &lt;br /&gt;
&lt;br /&gt;
Переводы оцениваются на усмотрение жюри, но рекомендую основное внимание уделять именно качеству текста (перевода) и техническому исполнению, а не геймплейным или сюжетным элементам, которые заимствованы из оригинальной игры.&lt;br /&gt;
&lt;br /&gt;
===Правила для жюри===&lt;br /&gt;
&lt;br /&gt;
* Члены жюри должны поиграть во все игры, поступившие на конкурс.&lt;br /&gt;
*     Жюри должны основывать свои суждения о каждой игре максимум по первым двум часам геймплея. Если член жюри поиграл в игру в совокупности два часа и хочет продолжать играть в неё, то он должен оценить игру и не изменять эту оценку позже.&lt;br /&gt;
*     Члены жюри не обязаны проходить последнюю версию игры.&lt;br /&gt;
*     Члены жюри должны поставить оценки по всем критериям играм, участвующим в конкурсе.&lt;br /&gt;
*     Члены жюри должны написать отзывы к каждой игре длиной не менее 500 символов без пробелов.&lt;br /&gt;
*     Отзывы могут быть написаны в свободной форме, но достаточно развёрнуто. Можно, например, дать короткий комментарий по каждому из критериев игры, либо, например, написать, что «Запоминается…», чего «Хотелось бы…» и «Итоговый вердикт…» или «Плюсы» — «Минусы». Отзывы без оценок, можно публиковать во время конкурса на других сайтах.&lt;br /&gt;
*     Все оценки и отзывы члены жюри оставляют на сайте конкурса в специальной форме для голосования. После окончания срока голосования все поступившие от жюри отзывы и оценки публикуются на сайте конкурса.&lt;br /&gt;
*     Жюри голосуют отдельно от остальных игроков и не могут повторно голосовать в качестве обычных игроков.&lt;br /&gt;
*     В случае нарушения правил конкурса членом жюри по решению организатора общие результаты подсчитываются без учёта голосов данного члена жюри.&lt;br /&gt;
*     Игра члена жюри может принять участие в конкурсе, но не в розыгрыше призового фонда, распределяемого жюри. И соответственно без обязательных оценок и обзоров от других членов жюри.&lt;br /&gt;
&lt;br /&gt;
==Основной призовой фонд==&lt;br /&gt;
&lt;br /&gt;
* 1-ое место — 15 000 рублей.&lt;br /&gt;
*     2-ое место — 10 000 рублей.&lt;br /&gt;
*     3-е место — 5 000 рублей.&lt;br /&gt;
*     Приз зрительских симпатий — 10 000 рублей. (Лучшая игра по голосованию игроков и авторов)&lt;br /&gt;
&lt;br /&gt;
===Дополнительные номинации===&lt;br /&gt;
&lt;br /&gt;
* Анонимный представитель парсерного лобби назначил следующее вознаграждение: 1 000 рублей каждой парсерной игре на русском языке (не перевод). Если парсерных игр на конкурсе будет 4 или больше, то игра занявшая самое высокое место по голосованию игроков получает дополнительно 5000 рублей.&lt;br /&gt;
* 3 000 рублей получит перевод, который займёт высшее место по голосованию игроков (если перевод будет не единственный на конкурсе).&lt;br /&gt;
*     10 000 рублей — «Приз Фаертоновских симпатий». Член жюри Fireton лично (независимо от голосования) выбирает наиболее понравившуюся ему игру. Движок может быть любой, не обязательно FireURQ.&lt;br /&gt;
*     Byte (разработчик QSP) выберет игру, которая получит от него 100 евро. Движок любой.&lt;br /&gt;
&lt;br /&gt;
Призовой фонд не окончательный. Приглашаются все желающие спонсоры, которые хотят помочь конкурсу, своему движку, отдельному жанру игр или хотят ввести собственный дополнительный приз. Свяжитесь со мной по контактам, указанным на сайте.&lt;br /&gt;
==Контакты==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор: Enola.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://discord.com/invite/mkdqgj3dam Канал #зок на сервере интерактивной литературы в Дискорде].&lt;br /&gt;
* [https://t.me/ifiction_group Чат интерактивной литературы в Телеграме].&lt;br /&gt;
* Можно зарегистрироваться на этом сайте (https://zok.ifiction.ru/), создать заявку с игрой (полностью заполнять необязательно) и переписываться с организатором посредством комментариев к этой заявке. Уведомления о комментариях приходят на электронную почту.&lt;br /&gt;
* [https://chat.ifhub.club/ IRC-чат. Канал #zok.] Альтернативный канал связи. Подробнее о сервере IRC.&lt;br /&gt;
    &lt;br /&gt;
Почти всегда присутствую, даже если стоит статус «Нет на месте». Так что не ждите, пока увидите меня онлайн, пишите сразу. На остальных форумах-сайтах появляюсь нерегулярно и, хотя, если повезёт, могу ответить достаточно быстро, это ненадёжные каналы связи.&lt;br /&gt;
&lt;br /&gt;
==Игры конкурса==&lt;br /&gt;
*Игры Психотленный и Soul&#039;s sides набрали одинаковое число баллов и вместе занимают 20-21 место.&lt;br /&gt;
&lt;br /&gt;
{{Игры конкурса|ЗОК 2026|места=да}}&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1am9_kHA2kfUNlRu05fo_achzZdmX3Ajo/edit?usp=drive_link&amp;amp;ouid=108704303318077773580&amp;amp;rtpof=true&amp;amp;sd=true Оценки жюри]&lt;br /&gt;
* [https://drive.google.com/file/d/1swa2SfOneZyvkUvMejCPl948LtMJzK7U/view Отзывы жюри]&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1BqAtnDI6B323SFaR09vtUMyOLZ27fRl7/edit?usp=sharing&amp;amp;ouid=108704303318077773580&amp;amp;rtpof=true&amp;amp;sd=true Оценки игроков и конкурс для игроков]&lt;br /&gt;
[[Категория:Зимний конкурс]][[Категория:2025]][[Категория:2026]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9A%D0%B8%D1%80%D0%B4%D0%B0%D0%BD%D1%8C,_%D0%9C%D0%B0%D1%80%D0%BA&amp;diff=36537</id>
		<title>Кирдань, Марк</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9A%D0%B8%D1%80%D0%B4%D0%B0%D0%BD%D1%8C,_%D0%9C%D0%B0%D1%80%D0%BA&amp;diff=36537"/>
		<updated>2026-10-05T11:54:34Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Игры автора}}&lt;br /&gt;
а также:&lt;br /&gt;
* [http://qsp.su/index.php?option=com_sobi2&amp;amp;sobi2Task=sobi2Details&amp;amp;sobi2Id=391&amp;amp;Itemid=55 Генератор Логлайнов] (QSP, 2020)&lt;br /&gt;
* Сброс!!! ([[Квестер]], 2014)&lt;br /&gt;
* Веселая торговля ([[Квестер]], 2014)&lt;br /&gt;
* Бессмысленный тест о смысле жизни ([[Квестер]], 2014)&lt;br /&gt;
* О чем говорят глаза повешенного ([[Квестер]], 2014)&lt;br /&gt;
* Унгарик Баран 3 Примитивная реальность ([[Квестер]], 2013)&lt;br /&gt;
* Времени нет ([[Квестер]], 2013)&lt;br /&gt;
* Топотун и Барабас: Гляделки ([[Квестер]], 2012)&lt;br /&gt;
* Бабайки ([[Квестер]], 2012)&lt;br /&gt;
&lt;br /&gt;
{{Проекты и разработки}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* {{Старая ссылка|на=http://kvester.ru/profile/2496.html Профиль mkir на Квестере}}&lt;br /&gt;
* {{Блог|https://t.me/mkirdan|Канал в Telegram}}&lt;br /&gt;
* {{Видеоблог|https://www.youtube.com/@utomlenie|Утомительный Уголок}} - канал на Youtube, посвященный текстовым играм&lt;br /&gt;
* [https://ifhub.club/2017/05/02/interview-mkir.html Интервью] — IFHub (Oreolek), май 2017&lt;br /&gt;
&lt;br /&gt;
[[День рождения::20 октября| ]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Teleelf&amp;diff=36536</id>
		<title>Teleelf</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Teleelf&amp;diff=36536"/>
		<updated>2026-10-05T11:53:39Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Игры автора}}&lt;br /&gt;
&lt;br /&gt;
{{Проекты и разработки}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%BA%D0%BE%D1%88%D0%B5%D0%B2,_%D0%9F%D1%91%D1%82%D1%80&amp;diff=36535</id>
		<title>Прокошев, Пётр</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%BA%D0%BE%D1%88%D0%B5%D0%B2,_%D0%9F%D1%91%D1%82%D1%80&amp;diff=36535"/>
		<updated>2026-10-05T11:53:05Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ник на форуме - &#039;&#039;&#039;Pete Pr&#039;&#039;&#039;.&lt;br /&gt;
{{Игры автора}}&lt;br /&gt;
{{Проекты и разработки}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=QSP-Compo_2026&amp;diff=36534</id>
		<title>QSP-Compo 2026</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=QSP-Compo_2026&amp;diff=36534"/>
		<updated>2026-10-05T11:52:39Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Сроки проведения мероприятия: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{event info&lt;br /&gt;
|название=QSP-Compo 2026: Тайна раскрыта&lt;br /&gt;
|обложка=Logo126.png&lt;br /&gt;
|тип=Конкурсы&lt;br /&gt;
|номер=18&lt;br /&gt;
|организатор=[[Организатор::De@th K!d]] &lt;br /&gt;
|начало=01.03.2026&lt;br /&gt;
|окончание=30.08.2026&lt;br /&gt;
|сайт=https://qsp.org/forum/1405-qsp-compo-2026-taina-raskryta-osnovnaia-tema&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
И снова здравствуйте, дорогие друзья! Мы рады приветствовать вас в мире загадок, тайн и хитросплетений, которые сможете распутать только вы - авторы и игроки, своими поступками приоткрывающие вуаль, отделяющую нас от того либо иного секрета))) Ежегодный конкурс QSP-Compo с подзаголовком “Тайна раскрыта” позволит вам вжиться в роль детектива, разоблачающего самых хитрых и изворотливых антагонистов, а также даст прочувствовать бодрящий аромат недавно вскрытых карт судьбы, которая не смогла интеллектуально одолеть вас :)) Мы открываем соревнование, где вы сможете как создать череду ловких и крышесносных загадок, так и попробовать себя в роли того, кто непременно найдёт на них исчерпывающие ответы :) Усаживайтесь у камина, наливайте себе любимый напиток и готовьтесь к погружению в миры, полные интриг и мощных сюжетных поворотов!)) И не забывайте главного - всякая тайна будет раскрыта…&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Тема для обзоров - как от членов жюри, так и от игроков - будет создана позднее…&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Сроки проведения мероприятия:===&lt;br /&gt;
&lt;br /&gt;
* анонс: 1 марта&lt;br /&gt;
* крайний день сдачи: 28 июня&lt;br /&gt;
* публикация игр: 4/5 июля&lt;br /&gt;
* подведение итогов: 30 августа&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор конкурса в этом году:&#039;&#039;&#039; [[De@th K!d]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Члены жюри:&#039;&#039;&#039; [[Член жюри::Byte]], [[Член жюри::Enola]], [[Член жюри::Марк Кирдань]], [[Член жюри::teleelf]], [[Член жюри::Pete Pr]], [[Член жюри::Wol4ik]], [[Член жюри::Aleks Versus]], [[Член жюри::Khaelenmore Thaal]]&lt;br /&gt;
&lt;br /&gt;
Художник, ответственный за логотип: Umbrella (дизайн от De@th K!d, будет опубликован позже)&lt;br /&gt;
&lt;br /&gt;
Присылайте ваши творения на следующий почтовый ящик: deathkid@mail.ru. В теме письма обязательно укажите фразу “QSP-Compo”))) В самом сообщении должно быть следующее: а) название игры; б) одиночный/коллективный никнейм либо имя автора (ежели разработчиков несколько, можно написать имена через запятую); в) возрастной рейтинг проекта с расшифровкой; г) на какой версии плеера QSP запускается (если структура игры отличается от обычной); д) способ связи с автором (e-mail - наиболее оптимальный вариант); е) архив с проектом и прохождение в текстовом виде.&lt;br /&gt;
&lt;br /&gt;
К участию в конкурсе допускаются любые игры, созданные на движке QSP и всех его вариациях. Тематика работ определяется автором и не обязательно должна быть детективом. Победитель выявится через среднее арифметическое. Фанфики, то есть творчество по мотивам уже существующего фэндома, &#039;&#039;&#039;разрешены&#039;&#039;&#039;, поскольку являются мыслями создателя. Проекты также должны соответствовать &#039;&#039;&#039;следующим требованиям&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# иметь как минимум один выбор в течение геймплея. Игра может обладать линейной концовкой, но какая-никакая вариативность в ней обязана присутствовать;&lt;br /&gt;
# содержать в себе как минимум одну загадку, которой должно быть дано исчерпывающее объяснение. Количество загадок не ограничено, однако каждая обязана быть раскрыта на одной или нескольких сюжетных ветках. Загадки без ответов, открытые и оборванные финалы не допускаются;&lt;br /&gt;
# обладать проходимостью, то есть возможностью дойти до финала, и давать игроку ясно понять, что данное приключение только что было им завершено;&lt;br /&gt;
# иметь грамотный литературный язык. От ошибок не застрахован никто, но ежели игра буквально пестрит ими, она точно будет снята с конкурса;&lt;br /&gt;
# обладать предварительной эксклюзивностью. Работа должна публиковаться впервые, не являться римейком либо ремастером уже существующего проекта (в том числе от другого разработчика) и не содержать в себе скопированные мысли других авторов (включая тех, кто не был связан с interactive fiction);&lt;br /&gt;
# не являться проектом, написанным нейросетью (код, сделанный с помощью ИИ, разрешён);&lt;br /&gt;
# не нарушать авторские права. Ежели на контент игры будет подана жалоба от правообладателя, это станет серьёзным основанием для её дисквалификации;&lt;br /&gt;
# не разжигать межнациональную, межэтническую, межрелигиозную или иную рознь своим проектом через оскорбление, скрытое или намеренное, которое выражено автором через тексты, звуки либо изображения. Мы такое сильно не поощряем и будем с этим бороться; &lt;br /&gt;
# сильно не увлекаться ЛГБТ-тематикой. Гендеры у людей и персонажей могут быть разными, безусловно, и герои с нетрадиционной ориентацией также имеют место быть, но знайте с этим меру. Можно вводить таких действующих лиц в сюжет, не акцентируя особого внимания на их сексуальных предпочтениях, однако же открытая пропаганда и неподдельное восхваление ЛГБТ могут послужить для нас основанием не принять Вашу игру.&lt;br /&gt;
&lt;br /&gt;
===Дополнительные правила о количестве проектов и их месте в призовой тройке:===&lt;br /&gt;
    &lt;br /&gt;
# количество квестов от одного разработчика, присланных на Компо-2024, не ограничено;&lt;br /&gt;
# до тех пор, пока игра соответствует требованиям, указанным в шапке данной темы, она не будет снята с конкурса. Но возможна дисквалификация игры, если в проекте были неожиданно найдены нарушения, незамеченные организатором, и приведены их доказательства. В этом случае организатор вправе устроить совещательное голосование среди членов жюри с целью установления судьбы такого проекта. Окончательное решение по данному поводу остаётся за организатором, но голоса членов жюри также будут иметь значение в этом вопросе;&lt;br /&gt;
# призы распределяются между участниками исходя изо следующих критериев:&lt;br /&gt;
&lt;br /&gt;
а) если от одного автора поступило две и более игры, в ТОП-3 проходит только один проект - тот, что получил от жюри высшее количество баллов. Таким образом, лишь один квест может дать создателю право на одну из трёх основных номинаций;&lt;br /&gt;
&lt;br /&gt;
б) если на мероприятии будет всего один конкурсант, он автоматически становится победителем и весь призовой фонд отходит к нему. Что, однако, не снимает со членов жюри обязанности написать обзоры по каждой его игре :P ;&lt;br /&gt;
&lt;br /&gt;
в) если на конкурсе окажется два участника, призовой фонд перераспределяется организатором и делится на два, после чего между дуэлянтами идёт соревнование, исходя из пункта а) текущего абзаца;&lt;br /&gt;
&lt;br /&gt;
г) если на турнир попадают трое и более разработчиков, призовой фонд остаётся как есть, а “сражение” между авторами также идёт в соответствии с пунктом а) данного абзаца.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор обязуется:&#039;&#039;&#039; &lt;br /&gt;
# принять все игры от потенциальных участников и проверить каждую из них на производительность и соответствие правилам;&lt;br /&gt;
# коли проект физически непроходим либо имеет возрастной рейтинг выше заявленного, а также если тайна/тайны в нём незаметны с первого взгляда и не очевидны для организатора, связаться с автором в максимально кратчайшие сроки и указать тому на ошибки (во втором случае с одобрения последнего допускается увеличение рейтинга в более высокую сторону), дав разработчику разумное время на исправление ошибок;&lt;br /&gt;
# вовремя анонсировать, запустить и завершить конкурс текстовых игр “QSP-Compo 2026”;&lt;br /&gt;
# подвести итоги, базируясь на голосах от членов жюри, и распределить участников по местам, раздав первой тройке призовой фонд;&lt;br /&gt;
# не принимать участие в оценивании игр и не быть ничьим тестером;&lt;br /&gt;
# информировать о статусе мероприятия на форуме QSP и в Telegram-канале.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор имеет право:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; не принимать игру на конкурс либо дисквалифицировать её по желанию разработчика с непременным уведомлением последнего. Причинами для отказа могут быть:&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) стопроцентная линейность (проект не содержит выборов и всё, чего в нём может делать игрок, это нажимать кнопку “далее” - так называемый интерактивный рассказ);&amp;lt;br&amp;gt;&lt;br /&gt;
б) копипаста (например, если автор взял текст из книги и перенёс его на движок QSP, отредактировав полностью или в части);&amp;lt;br&amp;gt;&lt;br /&gt;
в) римейк или ремастер уже существующей игры, вне зависимости от авторства и степени изменения контента, равно как и слишком ранняя публикация в каталоге (после начала конкурса публикация допускается);&amp;lt;br&amp;gt;&lt;br /&gt;
г) невозможность пройти работу даже с солюшеном (критические баги либо массовые ошибки кода, из-за которых играть очень сложно);&amp;lt;br&amp;gt;&lt;br /&gt;
д) проект неграмотно написан, что делает затруднительным чтение текста в нём;&amp;lt;br&amp;gt;&lt;br /&gt;
е) игра нарушает авторские права (только если правообладатель напрямую заявит об этом организатору и данный вопрос будет существенно изучен, а затем сей факт подтвердится);&amp;lt;br&amp;gt;&lt;br /&gt;
ж) отсутствие хотя бы одной загадки или оставление тайны/тайн без достаточно развёрнутых и понятных для читателя ответов;&amp;lt;br&amp;gt;&lt;br /&gt;
з) другие причины, связанные непосредственно с контентом (включая пропаганду ЛГБТ и сведения, осознанно порочащие честь и достоинство какой-либо группы людей);&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; сдвинуть сроки начала/завершения конкурса на некоторое время с указанием причины на форуме QSP и в канале Telegram, не превышающее месяца.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Члены жюри обязуются:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# пройти каждую из присланных работ как минимум один раз;&lt;br /&gt;
# написать на все игры обзоры длиной не менее шести форумных строк (от тысячи символов) и выставить им оценки от одного балла до десяти, где единичка - это “очень плохо”, а десятка символизирует маленький шедевр РИЛ-сферы, после чего вовремя отослать их организатору либо написать на форуме QSP. Все ревью будут опубликованы на данном форуме для всеобщего обозрения;&lt;br /&gt;
# оценивать проекты непредвзято и никому не подсуживая.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Члены жюри имеют право:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# утверждать свою собственную номинацию, выплачивая за неё денежное либо вещное вознаграждение. К примеру, “игра, которая будет обладать сюжетом, достойным хотя бы рассказа, получит от меня тысячу рублей и/или набор сделанных вручную шоколадных конфет”. Данная возможность необязательна и реализуется исключительно по желанию члена жюри. Ответственность об отправке такого вознаграждения ложится целиком на его плечи;&lt;br /&gt;
# быть тестером для участников конкурса (не забывая, впрочем, о пункте 3 предыдущего абзаца).&lt;br /&gt;
&lt;br /&gt;
Связаться с организатором мероприятия, то бишь мной, по тем либо иным вопросам можно в социальной сети ВКонтакте (vk.com/deathkid8 - Никита Карташёв), в Телеграме (@deathkid61) или прямо здесь, отправив ему личное сообщение. Не стесняйтесь и спрашивайте о чём угодно)) Всего Вам наилучшего и… успешного Вам раскрытия каждой тайны во Вселенной ;)&lt;br /&gt;
&lt;br /&gt;
[[Категория:QSP-Compo]][[Категория:2026]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Lunohod&amp;diff=36533</id>
		<title>Lunohod</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Lunohod&amp;diff=36533"/>
		<updated>2026-10-05T11:51:09Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ранее был известен Wol4ik, он же Andrey S. С 2023 г. сотрудник Студии Ночных Шалунов Дискорда. Студия разрабатывает игры в жанре IFiction, занимается видеообзорами игр IFiction на YouTube(больше не обновляется) на видеохостигне VK Video, написанием отзывов, статей и обучающих материалов на эту тему, а так же широковещательным флудом на любых доступных площадках.&lt;br /&gt;
{{Игры автора}}&lt;br /&gt;
&lt;br /&gt;
{{Проекты и разработки}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* {{Ссылка|на=https://t.me/+psphuGMTrw9hODQ6|Канал в Telegram с играми студии и концепт-артом}}&lt;br /&gt;
* {{Ссылка|на=https://www.youtube.com/@Lunohod-1|Замороженный канал на Youtube}}&lt;br /&gt;
* {{Видеоблог|https://vkvideo.ru/@club228180131|Актуальный канал на VK Video}}&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%A8%D0%BF%D0%B0%D0%BA,_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9&amp;diff=36532</id>
		<title>Шпак, Алексей</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%A8%D0%BF%D0%B0%D0%BA,_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9&amp;diff=36532"/>
		<updated>2026-10-05T11:50:37Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Известен как &#039;&#039;&#039;Aleks Versus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Один из самых активных участников [[QSP]]-сообщества. Автор [http://qsp.su/index.php?option=com_agora&amp;amp;task=topic&amp;amp;id=1220&amp;amp;Itemid=57 видеоуроков по языку] и [http://qsp.su/index.php?option=com_agora&amp;amp;task=topic&amp;amp;id=1280&amp;amp;Itemid=57 FAQ на основе часто задаваемых вопросов] из темы &amp;quot;Как сделать?&amp;quot;. Спонсор и член жюри нескольких конкурсов.&lt;br /&gt;
{{Игры автора}}&lt;br /&gt;
а также:&lt;br /&gt;
* Электровикторина ([[QSP]], 2011) [http://rilarhiv.ru/qsp/Elektroviktorina.rar Скачать]&lt;br /&gt;
* Анаграммы ([[QSP]], 2014) [http://rilarhiv.ru/qsp/anagrammi.rar Скачать]&lt;br /&gt;
&lt;br /&gt;
{{Проекты и разработки}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://aleksversus.narod.ru/ Сайт автора]&lt;br /&gt;
* {{Видеоблог|https://www.youtube.com/channel/UCwX8RW2B9yTUFdlivtCGAgA|YouTube-канал с видеоуроками по QSP}}&lt;br /&gt;
* {{Краудфандинг|https://boosty.to/aleksversus|Блог на boosty}}&lt;br /&gt;
* [https://www.donationalerts.com/r/aleksversus Страница для пожертвований]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Khaelenmore_Thaal&amp;diff=36531</id>
		<title>Khaelenmore Thaal</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Khaelenmore_Thaal&amp;diff=36531"/>
		<updated>2026-10-05T11:49:55Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Дракон, автор полутора игр, начинающий стример и ретрогеймер. &lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
# [//silverwing.one Основной сайт] - Тут в первую очередь появляется вся информация по проектам.&lt;br /&gt;
# {{Видеоблог|https://www.youtube.com/channel/UC-Ob62Q9afK8MuXtEpfQwBQ| Канал YouTube}} - Тут появляется видео по проектам(позднее, чем на сайте), стримы и записи стримов. &lt;br /&gt;
# [https://dlive.tv/Khaelenmore Канал DLive] - Альтернативная платформа для стримов.&lt;br /&gt;
# Канал в Twitter: {{twitter|Khaelenmore}} - Мелкие объявления о всяком. &lt;br /&gt;
# {{Блог|https://t.me/k_thaal_announce|Канал в Telegram}} -- Новости по проектам, анонсы стримов&lt;br /&gt;
# Группа ВК: [https://vk.com/silver_dragons_lair Логово Серебряного Дракона] -- новости по проектам, часть инфы по проектам&lt;br /&gt;
# Сервер в Discord: [https://discord.gg/YHvXEJm silverwing.one] - флуд на темы проектов, игр, железа&lt;br /&gt;
{{Игры автора}}&lt;br /&gt;
{{Проекты и разработки}}&lt;br /&gt;
[[День рождения::25.06.1991| ]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=QSP-Compo_2026&amp;diff=36530</id>
		<title>QSP-Compo 2026</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=QSP-Compo_2026&amp;diff=36530"/>
		<updated>2026-10-05T11:49:14Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Сроки проведения мероприятия: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{event info&lt;br /&gt;
|название=QSP-Compo 2026: Тайна раскрыта&lt;br /&gt;
|обложка=Logo126.png&lt;br /&gt;
|тип=Конкурсы&lt;br /&gt;
|номер=18&lt;br /&gt;
|организатор=[[Организатор::De@th K!d]] &lt;br /&gt;
|начало=01.03.2026&lt;br /&gt;
|окончание=30.08.2026&lt;br /&gt;
|сайт=https://qsp.org/forum/1405-qsp-compo-2026-taina-raskryta-osnovnaia-tema&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
И снова здравствуйте, дорогие друзья! Мы рады приветствовать вас в мире загадок, тайн и хитросплетений, которые сможете распутать только вы - авторы и игроки, своими поступками приоткрывающие вуаль, отделяющую нас от того либо иного секрета))) Ежегодный конкурс QSP-Compo с подзаголовком “Тайна раскрыта” позволит вам вжиться в роль детектива, разоблачающего самых хитрых и изворотливых антагонистов, а также даст прочувствовать бодрящий аромат недавно вскрытых карт судьбы, которая не смогла интеллектуально одолеть вас :)) Мы открываем соревнование, где вы сможете как создать череду ловких и крышесносных загадок, так и попробовать себя в роли того, кто непременно найдёт на них исчерпывающие ответы :) Усаживайтесь у камина, наливайте себе любимый напиток и готовьтесь к погружению в миры, полные интриг и мощных сюжетных поворотов!)) И не забывайте главного - всякая тайна будет раскрыта…&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Тема для обзоров - как от членов жюри, так и от игроков - будет создана позднее…&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Сроки проведения мероприятия:===&lt;br /&gt;
&lt;br /&gt;
* анонс: 1 марта&lt;br /&gt;
* крайний день сдачи: 28 июня&lt;br /&gt;
* публикация игр: 4/5 июля&lt;br /&gt;
* подведение итогов: 30 августа&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор конкурса в этом году:&#039;&#039;&#039; [[De@th K!d]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Члены жюри:&#039;&#039;&#039; [[Член жюри::Byte]], [[Член жюри::Enola]], [[Член жюри::Марк Кирдань]], [[Член жюри::teleelf]], [[Член жюри::Pete Pr.]], [[Член жюри::Wol4ik]], [[Член жюри::Aleks Versus]], [[Член жюри::Khaelenmore Thaal]]&lt;br /&gt;
&lt;br /&gt;
Художник, ответственный за логотип: Umbrella (дизайн от De@th K!d, будет опубликован позже)&lt;br /&gt;
&lt;br /&gt;
Присылайте ваши творения на следующий почтовый ящик: deathkid@mail.ru. В теме письма обязательно укажите фразу “QSP-Compo”))) В самом сообщении должно быть следующее: а) название игры; б) одиночный/коллективный никнейм либо имя автора (ежели разработчиков несколько, можно написать имена через запятую); в) возрастной рейтинг проекта с расшифровкой; г) на какой версии плеера QSP запускается (если структура игры отличается от обычной); д) способ связи с автором (e-mail - наиболее оптимальный вариант); е) архив с проектом и прохождение в текстовом виде.&lt;br /&gt;
&lt;br /&gt;
К участию в конкурсе допускаются любые игры, созданные на движке QSP и всех его вариациях. Тематика работ определяется автором и не обязательно должна быть детективом. Победитель выявится через среднее арифметическое. Фанфики, то есть творчество по мотивам уже существующего фэндома, &#039;&#039;&#039;разрешены&#039;&#039;&#039;, поскольку являются мыслями создателя. Проекты также должны соответствовать &#039;&#039;&#039;следующим требованиям&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# иметь как минимум один выбор в течение геймплея. Игра может обладать линейной концовкой, но какая-никакая вариативность в ней обязана присутствовать;&lt;br /&gt;
# содержать в себе как минимум одну загадку, которой должно быть дано исчерпывающее объяснение. Количество загадок не ограничено, однако каждая обязана быть раскрыта на одной или нескольких сюжетных ветках. Загадки без ответов, открытые и оборванные финалы не допускаются;&lt;br /&gt;
# обладать проходимостью, то есть возможностью дойти до финала, и давать игроку ясно понять, что данное приключение только что было им завершено;&lt;br /&gt;
# иметь грамотный литературный язык. От ошибок не застрахован никто, но ежели игра буквально пестрит ими, она точно будет снята с конкурса;&lt;br /&gt;
# обладать предварительной эксклюзивностью. Работа должна публиковаться впервые, не являться римейком либо ремастером уже существующего проекта (в том числе от другого разработчика) и не содержать в себе скопированные мысли других авторов (включая тех, кто не был связан с interactive fiction);&lt;br /&gt;
# не являться проектом, написанным нейросетью (код, сделанный с помощью ИИ, разрешён);&lt;br /&gt;
# не нарушать авторские права. Ежели на контент игры будет подана жалоба от правообладателя, это станет серьёзным основанием для её дисквалификации;&lt;br /&gt;
# не разжигать межнациональную, межэтническую, межрелигиозную или иную рознь своим проектом через оскорбление, скрытое или намеренное, которое выражено автором через тексты, звуки либо изображения. Мы такое сильно не поощряем и будем с этим бороться; &lt;br /&gt;
# сильно не увлекаться ЛГБТ-тематикой. Гендеры у людей и персонажей могут быть разными, безусловно, и герои с нетрадиционной ориентацией также имеют место быть, но знайте с этим меру. Можно вводить таких действующих лиц в сюжет, не акцентируя особого внимания на их сексуальных предпочтениях, однако же открытая пропаганда и неподдельное восхваление ЛГБТ могут послужить для нас основанием не принять Вашу игру.&lt;br /&gt;
&lt;br /&gt;
===Дополнительные правила о количестве проектов и их месте в призовой тройке:===&lt;br /&gt;
    &lt;br /&gt;
# количество квестов от одного разработчика, присланных на Компо-2024, не ограничено;&lt;br /&gt;
# до тех пор, пока игра соответствует требованиям, указанным в шапке данной темы, она не будет снята с конкурса. Но возможна дисквалификация игры, если в проекте были неожиданно найдены нарушения, незамеченные организатором, и приведены их доказательства. В этом случае организатор вправе устроить совещательное голосование среди членов жюри с целью установления судьбы такого проекта. Окончательное решение по данному поводу остаётся за организатором, но голоса членов жюри также будут иметь значение в этом вопросе;&lt;br /&gt;
# призы распределяются между участниками исходя изо следующих критериев:&lt;br /&gt;
&lt;br /&gt;
а) если от одного автора поступило две и более игры, в ТОП-3 проходит только один проект - тот, что получил от жюри высшее количество баллов. Таким образом, лишь один квест может дать создателю право на одну из трёх основных номинаций;&lt;br /&gt;
&lt;br /&gt;
б) если на мероприятии будет всего один конкурсант, он автоматически становится победителем и весь призовой фонд отходит к нему. Что, однако, не снимает со членов жюри обязанности написать обзоры по каждой его игре :P ;&lt;br /&gt;
&lt;br /&gt;
в) если на конкурсе окажется два участника, призовой фонд перераспределяется организатором и делится на два, после чего между дуэлянтами идёт соревнование, исходя из пункта а) текущего абзаца;&lt;br /&gt;
&lt;br /&gt;
г) если на турнир попадают трое и более разработчиков, призовой фонд остаётся как есть, а “сражение” между авторами также идёт в соответствии с пунктом а) данного абзаца.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор обязуется:&#039;&#039;&#039; &lt;br /&gt;
# принять все игры от потенциальных участников и проверить каждую из них на производительность и соответствие правилам;&lt;br /&gt;
# коли проект физически непроходим либо имеет возрастной рейтинг выше заявленного, а также если тайна/тайны в нём незаметны с первого взгляда и не очевидны для организатора, связаться с автором в максимально кратчайшие сроки и указать тому на ошибки (во втором случае с одобрения последнего допускается увеличение рейтинга в более высокую сторону), дав разработчику разумное время на исправление ошибок;&lt;br /&gt;
# вовремя анонсировать, запустить и завершить конкурс текстовых игр “QSP-Compo 2026”;&lt;br /&gt;
# подвести итоги, базируясь на голосах от членов жюри, и распределить участников по местам, раздав первой тройке призовой фонд;&lt;br /&gt;
# не принимать участие в оценивании игр и не быть ничьим тестером;&lt;br /&gt;
# информировать о статусе мероприятия на форуме QSP и в Telegram-канале.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор имеет право:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; не принимать игру на конкурс либо дисквалифицировать её по желанию разработчика с непременным уведомлением последнего. Причинами для отказа могут быть:&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) стопроцентная линейность (проект не содержит выборов и всё, чего в нём может делать игрок, это нажимать кнопку “далее” - так называемый интерактивный рассказ);&amp;lt;br&amp;gt;&lt;br /&gt;
б) копипаста (например, если автор взял текст из книги и перенёс его на движок QSP, отредактировав полностью или в части);&amp;lt;br&amp;gt;&lt;br /&gt;
в) римейк или ремастер уже существующей игры, вне зависимости от авторства и степени изменения контента, равно как и слишком ранняя публикация в каталоге (после начала конкурса публикация допускается);&amp;lt;br&amp;gt;&lt;br /&gt;
г) невозможность пройти работу даже с солюшеном (критические баги либо массовые ошибки кода, из-за которых играть очень сложно);&amp;lt;br&amp;gt;&lt;br /&gt;
д) проект неграмотно написан, что делает затруднительным чтение текста в нём;&amp;lt;br&amp;gt;&lt;br /&gt;
е) игра нарушает авторские права (только если правообладатель напрямую заявит об этом организатору и данный вопрос будет существенно изучен, а затем сей факт подтвердится);&amp;lt;br&amp;gt;&lt;br /&gt;
ж) отсутствие хотя бы одной загадки или оставление тайны/тайн без достаточно развёрнутых и понятных для читателя ответов;&amp;lt;br&amp;gt;&lt;br /&gt;
з) другие причины, связанные непосредственно с контентом (включая пропаганду ЛГБТ и сведения, осознанно порочащие честь и достоинство какой-либо группы людей);&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; сдвинуть сроки начала/завершения конкурса на некоторое время с указанием причины на форуме QSP и в канале Telegram, не превышающее месяца.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Члены жюри обязуются:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# пройти каждую из присланных работ как минимум один раз;&lt;br /&gt;
# написать на все игры обзоры длиной не менее шести форумных строк (от тысячи символов) и выставить им оценки от одного балла до десяти, где единичка - это “очень плохо”, а десятка символизирует маленький шедевр РИЛ-сферы, после чего вовремя отослать их организатору либо написать на форуме QSP. Все ревью будут опубликованы на данном форуме для всеобщего обозрения;&lt;br /&gt;
# оценивать проекты непредвзято и никому не подсуживая.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Члены жюри имеют право:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# утверждать свою собственную номинацию, выплачивая за неё денежное либо вещное вознаграждение. К примеру, “игра, которая будет обладать сюжетом, достойным хотя бы рассказа, получит от меня тысячу рублей и/или набор сделанных вручную шоколадных конфет”. Данная возможность необязательна и реализуется исключительно по желанию члена жюри. Ответственность об отправке такого вознаграждения ложится целиком на его плечи;&lt;br /&gt;
# быть тестером для участников конкурса (не забывая, впрочем, о пункте 3 предыдущего абзаца).&lt;br /&gt;
&lt;br /&gt;
Связаться с организатором мероприятия, то бишь мной, по тем либо иным вопросам можно в социальной сети ВКонтакте (vk.com/deathkid8 - Никита Карташёв), в Телеграме (@deathkid61) или прямо здесь, отправив ему личное сообщение. Не стесняйтесь и спрашивайте о чём угодно)) Всего Вам наилучшего и… успешного Вам раскрытия каждой тайны во Вселенной ;)&lt;br /&gt;
&lt;br /&gt;
[[Категория:QSP-Compo]][[Категория:2026]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=QSP-Compo_2026&amp;diff=36529</id>
		<title>QSP-Compo 2026</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=QSP-Compo_2026&amp;diff=36529"/>
		<updated>2026-10-05T11:48:10Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Сроки проведения мероприятия: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{event info&lt;br /&gt;
|название=QSP-Compo 2026: Тайна раскрыта&lt;br /&gt;
|обложка=Logo126.png&lt;br /&gt;
|тип=Конкурсы&lt;br /&gt;
|номер=18&lt;br /&gt;
|организатор=[[Организатор::De@th K!d]] &lt;br /&gt;
|начало=01.03.2026&lt;br /&gt;
|окончание=30.08.2026&lt;br /&gt;
|сайт=https://qsp.org/forum/1405-qsp-compo-2026-taina-raskryta-osnovnaia-tema&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
И снова здравствуйте, дорогие друзья! Мы рады приветствовать вас в мире загадок, тайн и хитросплетений, которые сможете распутать только вы - авторы и игроки, своими поступками приоткрывающие вуаль, отделяющую нас от того либо иного секрета))) Ежегодный конкурс QSP-Compo с подзаголовком “Тайна раскрыта” позволит вам вжиться в роль детектива, разоблачающего самых хитрых и изворотливых антагонистов, а также даст прочувствовать бодрящий аромат недавно вскрытых карт судьбы, которая не смогла интеллектуально одолеть вас :)) Мы открываем соревнование, где вы сможете как создать череду ловких и крышесносных загадок, так и попробовать себя в роли того, кто непременно найдёт на них исчерпывающие ответы :) Усаживайтесь у камина, наливайте себе любимый напиток и готовьтесь к погружению в миры, полные интриг и мощных сюжетных поворотов!)) И не забывайте главного - всякая тайна будет раскрыта…&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Тема для обзоров - как от членов жюри, так и от игроков - будет создана позднее…&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Сроки проведения мероприятия:===&lt;br /&gt;
&lt;br /&gt;
* анонс: 1 марта&lt;br /&gt;
* крайний день сдачи: 28 июня&lt;br /&gt;
* публикация игр: 4/5 июля&lt;br /&gt;
* подведение итогов: 30 августа&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор конкурса в этом году:&#039;&#039;&#039; [[De@th K!d]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Члены жюри:&#039;&#039;&#039; [[Член жюри::Byte}}, [[Член жюри::Enola]], [[Член жюри::Марк Кирдань]], [[Член жюри::teleelf]], [[Член жюри::Pete Pr.]], [[Член жюри::Wol4ik]], [[Член жюри::Aleks Versus]], [[Член жюри::Khaelenmore Thaal]]&lt;br /&gt;
&lt;br /&gt;
Художник, ответственный за логотип: Umbrella (дизайн от De@th K!d, будет опубликован позже)&lt;br /&gt;
&lt;br /&gt;
Присылайте ваши творения на следующий почтовый ящик: deathkid@mail.ru. В теме письма обязательно укажите фразу “QSP-Compo”))) В самом сообщении должно быть следующее: а) название игры; б) одиночный/коллективный никнейм либо имя автора (ежели разработчиков несколько, можно написать имена через запятую); в) возрастной рейтинг проекта с расшифровкой; г) на какой версии плеера QSP запускается (если структура игры отличается от обычной); д) способ связи с автором (e-mail - наиболее оптимальный вариант); е) архив с проектом и прохождение в текстовом виде.&lt;br /&gt;
&lt;br /&gt;
К участию в конкурсе допускаются любые игры, созданные на движке QSP и всех его вариациях. Тематика работ определяется автором и не обязательно должна быть детективом. Победитель выявится через среднее арифметическое. Фанфики, то есть творчество по мотивам уже существующего фэндома, &#039;&#039;&#039;разрешены&#039;&#039;&#039;, поскольку являются мыслями создателя. Проекты также должны соответствовать &#039;&#039;&#039;следующим требованиям&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
# иметь как минимум один выбор в течение геймплея. Игра может обладать линейной концовкой, но какая-никакая вариативность в ней обязана присутствовать;&lt;br /&gt;
# содержать в себе как минимум одну загадку, которой должно быть дано исчерпывающее объяснение. Количество загадок не ограничено, однако каждая обязана быть раскрыта на одной или нескольких сюжетных ветках. Загадки без ответов, открытые и оборванные финалы не допускаются;&lt;br /&gt;
# обладать проходимостью, то есть возможностью дойти до финала, и давать игроку ясно понять, что данное приключение только что было им завершено;&lt;br /&gt;
# иметь грамотный литературный язык. От ошибок не застрахован никто, но ежели игра буквально пестрит ими, она точно будет снята с конкурса;&lt;br /&gt;
# обладать предварительной эксклюзивностью. Работа должна публиковаться впервые, не являться римейком либо ремастером уже существующего проекта (в том числе от другого разработчика) и не содержать в себе скопированные мысли других авторов (включая тех, кто не был связан с interactive fiction);&lt;br /&gt;
# не являться проектом, написанным нейросетью (код, сделанный с помощью ИИ, разрешён);&lt;br /&gt;
# не нарушать авторские права. Ежели на контент игры будет подана жалоба от правообладателя, это станет серьёзным основанием для её дисквалификации;&lt;br /&gt;
# не разжигать межнациональную, межэтническую, межрелигиозную или иную рознь своим проектом через оскорбление, скрытое или намеренное, которое выражено автором через тексты, звуки либо изображения. Мы такое сильно не поощряем и будем с этим бороться; &lt;br /&gt;
# сильно не увлекаться ЛГБТ-тематикой. Гендеры у людей и персонажей могут быть разными, безусловно, и герои с нетрадиционной ориентацией также имеют место быть, но знайте с этим меру. Можно вводить таких действующих лиц в сюжет, не акцентируя особого внимания на их сексуальных предпочтениях, однако же открытая пропаганда и неподдельное восхваление ЛГБТ могут послужить для нас основанием не принять Вашу игру.&lt;br /&gt;
&lt;br /&gt;
===Дополнительные правила о количестве проектов и их месте в призовой тройке:===&lt;br /&gt;
    &lt;br /&gt;
# количество квестов от одного разработчика, присланных на Компо-2024, не ограничено;&lt;br /&gt;
# до тех пор, пока игра соответствует требованиям, указанным в шапке данной темы, она не будет снята с конкурса. Но возможна дисквалификация игры, если в проекте были неожиданно найдены нарушения, незамеченные организатором, и приведены их доказательства. В этом случае организатор вправе устроить совещательное голосование среди членов жюри с целью установления судьбы такого проекта. Окончательное решение по данному поводу остаётся за организатором, но голоса членов жюри также будут иметь значение в этом вопросе;&lt;br /&gt;
# призы распределяются между участниками исходя изо следующих критериев:&lt;br /&gt;
&lt;br /&gt;
а) если от одного автора поступило две и более игры, в ТОП-3 проходит только один проект - тот, что получил от жюри высшее количество баллов. Таким образом, лишь один квест может дать создателю право на одну из трёх основных номинаций;&lt;br /&gt;
&lt;br /&gt;
б) если на мероприятии будет всего один конкурсант, он автоматически становится победителем и весь призовой фонд отходит к нему. Что, однако, не снимает со членов жюри обязанности написать обзоры по каждой его игре :P ;&lt;br /&gt;
&lt;br /&gt;
в) если на конкурсе окажется два участника, призовой фонд перераспределяется организатором и делится на два, после чего между дуэлянтами идёт соревнование, исходя из пункта а) текущего абзаца;&lt;br /&gt;
&lt;br /&gt;
г) если на турнир попадают трое и более разработчиков, призовой фонд остаётся как есть, а “сражение” между авторами также идёт в соответствии с пунктом а) данного абзаца.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор обязуется:&#039;&#039;&#039; &lt;br /&gt;
# принять все игры от потенциальных участников и проверить каждую из них на производительность и соответствие правилам;&lt;br /&gt;
# коли проект физически непроходим либо имеет возрастной рейтинг выше заявленного, а также если тайна/тайны в нём незаметны с первого взгляда и не очевидны для организатора, связаться с автором в максимально кратчайшие сроки и указать тому на ошибки (во втором случае с одобрения последнего допускается увеличение рейтинга в более высокую сторону), дав разработчику разумное время на исправление ошибок;&lt;br /&gt;
# вовремя анонсировать, запустить и завершить конкурс текстовых игр “QSP-Compo 2026”;&lt;br /&gt;
# подвести итоги, базируясь на голосах от членов жюри, и распределить участников по местам, раздав первой тройке призовой фонд;&lt;br /&gt;
# не принимать участие в оценивании игр и не быть ничьим тестером;&lt;br /&gt;
# информировать о статусе мероприятия на форуме QSP и в Telegram-канале.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Организатор имеет право:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt; не принимать игру на конкурс либо дисквалифицировать её по желанию разработчика с непременным уведомлением последнего. Причинами для отказа могут быть:&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) стопроцентная линейность (проект не содержит выборов и всё, чего в нём может делать игрок, это нажимать кнопку “далее” - так называемый интерактивный рассказ);&amp;lt;br&amp;gt;&lt;br /&gt;
б) копипаста (например, если автор взял текст из книги и перенёс его на движок QSP, отредактировав полностью или в части);&amp;lt;br&amp;gt;&lt;br /&gt;
в) римейк или ремастер уже существующей игры, вне зависимости от авторства и степени изменения контента, равно как и слишком ранняя публикация в каталоге (после начала конкурса публикация допускается);&amp;lt;br&amp;gt;&lt;br /&gt;
г) невозможность пройти работу даже с солюшеном (критические баги либо массовые ошибки кода, из-за которых играть очень сложно);&amp;lt;br&amp;gt;&lt;br /&gt;
д) проект неграмотно написан, что делает затруднительным чтение текста в нём;&amp;lt;br&amp;gt;&lt;br /&gt;
е) игра нарушает авторские права (только если правообладатель напрямую заявит об этом организатору и данный вопрос будет существенно изучен, а затем сей факт подтвердится);&amp;lt;br&amp;gt;&lt;br /&gt;
ж) отсутствие хотя бы одной загадки или оставление тайны/тайн без достаточно развёрнутых и понятных для читателя ответов;&amp;lt;br&amp;gt;&lt;br /&gt;
з) другие причины, связанные непосредственно с контентом (включая пропаганду ЛГБТ и сведения, осознанно порочащие честь и достоинство какой-либо группы людей);&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; сдвинуть сроки начала/завершения конкурса на некоторое время с указанием причины на форуме QSP и в канале Telegram, не превышающее месяца.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Члены жюри обязуются:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# пройти каждую из присланных работ как минимум один раз;&lt;br /&gt;
# написать на все игры обзоры длиной не менее шести форумных строк (от тысячи символов) и выставить им оценки от одного балла до десяти, где единичка - это “очень плохо”, а десятка символизирует маленький шедевр РИЛ-сферы, после чего вовремя отослать их организатору либо написать на форуме QSP. Все ревью будут опубликованы на данном форуме для всеобщего обозрения;&lt;br /&gt;
# оценивать проекты непредвзято и никому не подсуживая.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Члены жюри имеют право:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# утверждать свою собственную номинацию, выплачивая за неё денежное либо вещное вознаграждение. К примеру, “игра, которая будет обладать сюжетом, достойным хотя бы рассказа, получит от меня тысячу рублей и/или набор сделанных вручную шоколадных конфет”. Данная возможность необязательна и реализуется исключительно по желанию члена жюри. Ответственность об отправке такого вознаграждения ложится целиком на его плечи;&lt;br /&gt;
# быть тестером для участников конкурса (не забывая, впрочем, о пункте 3 предыдущего абзаца).&lt;br /&gt;
&lt;br /&gt;
Связаться с организатором мероприятия, то бишь мной, по тем либо иным вопросам можно в социальной сети ВКонтакте (vk.com/deathkid8 - Никита Карташёв), в Телеграме (@deathkid61) или прямо здесь, отправив ему личное сообщение. Не стесняйтесь и спрашивайте о чём угодно)) Всего Вам наилучшего и… успешного Вам раскрытия каждой тайны во Вселенной ;)&lt;br /&gt;
&lt;br /&gt;
[[Категория:QSP-Compo]][[Категория:2026]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Z-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0&amp;diff=36528</id>
		<title>Z-машина</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Z-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0&amp;diff=36528"/>
		<updated>2026-10-05T11:32:44Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = Z-машина&lt;br /&gt;
|тип = Технические стандарты&lt;br /&gt;
|разработчик = [[Разработчик::Infocom]] ([[Разработчик::Берез, Джоэл|Джоэл Берез]], [[Разработчик::Бланк, Марк|Марк Бланк]])&lt;br /&gt;
|язык = &lt;br /&gt;
|система = &lt;br /&gt;
|онлайн = &lt;br /&gt;
|написано на = &lt;br /&gt;
|язык разработки = &lt;br /&gt;
|читаемый формат = &lt;br /&gt;
|создаваемый формат = &lt;br /&gt;
|первый выпуск = 1979&lt;br /&gt;
|последняя версия = 1.1&lt;br /&gt;
|дата последней версии = 24.02.2014&lt;br /&gt;
|состояние = &lt;br /&gt;
|лицензия = &lt;br /&gt;
|сайт = [https://www.inform-fiction.org/zmachine/ inform-fiction.org/zmachine/]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Виртуальная машина была разработана компанией Infocom в 1979 году.  Игра [[Zork]], как и все последующие продукты фирмы [[Infocom]], была написана на специальном коде для этой воображаемой машины, которая получила название Z-машина (англ. Z-machine). Z - первая буква слова Zork.  Язык получил название ZIL (Zork Implementation Language; при этом Zork I была первой игрой Infocom). Соответственно, программа для этой машины называется Z-программа, а интерпретатор, позволяющий выполнять эту программу на конкретном реальном компьютере - Z-интерпретатор или, коротко, Zip (не путайте с известной программой упаковки файлов).&lt;br /&gt;
&lt;br /&gt;
В результате файл данных любой игры фирмы Infocom до сих пор может быть выполнен &amp;quot;вообще без изменений&amp;quot; на любом компьютере, для которого существует Zip. И действительно, игры Infocom&#039;а дошли до огромного числа компьютеров и их модификаций, от карманных до самых больших, скорее всего этот выбор больше, чем у любой другой игры. Все версии интерпретаторов совместимы сверху и, имея &amp;quot;современный&amp;quot; интерпретатор, можно играть во все игры, созданные Infocom&#039;ом.&lt;br /&gt;
&lt;br /&gt;
Компания Infocom выпустила шесть версий Z-машины, причем более поздние версии обладали расширенными возможностями. Выпуск системы разработки Inform, созданной Грэмом Нельсоном в мае 1993 года, привел к значительному увеличению числа игр в формате Z-кода, а также к появлению спецификаций еще двух версий Z-машины. В настоящее время используются расширения файлов .z1, .z2, .z3, .z4, .z5, .z6, .z7 и .z8. Требования, возникшие при создании более масштабных игр на языке Inform, в конечном итоге привели к разработке виртуальной машины [[Glulx]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Глоссарий]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Windows_Frotz&amp;diff=36527</id>
		<title>Windows Frotz</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Windows_Frotz&amp;diff=36527"/>
		<updated>2026-10-05T11:30:17Z</updated>

		<summary type="html">&lt;p&gt;Nikita: /* Возможности */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = Windows Frotz&lt;br /&gt;
|тип = Интерпретаторы Z-машины&lt;br /&gt;
|разработчик = [[Разработчик::Киндер, Дэвид|Дэвид Киндер]], русификация: [[Локализатор::Цейковец, Никита|Никита Цейковец]]&lt;br /&gt;
|язык = Русский, английский, испанский, итальянский, немецкий&lt;br /&gt;
|система = Windows&lt;br /&gt;
|онлайн = &lt;br /&gt;
|написано на = [[C]], [[C++]]&lt;br /&gt;
|язык разработки = &lt;br /&gt;
|читаемый формат = Игры для Z-машины ([[.z?|*.z?]];[[.zblorb|*.zblorb]];[[.zlb|*.zlb]];[[.zip|*.zip]];[[.dat|*.dat]])&lt;br /&gt;
|создаваемый формат = &lt;br /&gt;
|первый выпуск = 2002&lt;br /&gt;
|последняя версия = 1.29&lt;br /&gt;
|дата последней версии = 22.09.2026&lt;br /&gt;
|состояние = &lt;br /&gt;
|лицензия = [https://github.com/DavidKinder/Windows-Frotz/blob/master/COPYING GNU GPL v2]&lt;br /&gt;
|сайт = [https://www.davidkinder.co.uk/frotz.html davidkinder.co.uk/frotz.html]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Windows Frotz - это интерпретатор Z-машины для операционных систем Windows&amp;lt;ref name=&amp;quot;note 1&amp;quot; /&amp;gt;, принадлежащий к семейству портов [[Frotz]]. При разработке особое внимание уделялось полному соответствию стандарту [[Z-машина|Z-машины]] и реализации всех описанных в нём функций. Windows Frotz поддерживает в том числе и малораспространённый формат 6 версии [[Z-машина|Z-машины]].&lt;br /&gt;
&lt;br /&gt;
Windows Frotz не стоит путать с другим интерпретатором WinFrotz, разрабатывавшемся в 1999 году [[Лоуренс, Рич|Ричем Лоуренсом]] на базе оригинального [[Frotz]] (ещё первой MS-DOS версии [[Джокиш, Стефан|Стефана Джокиша]]). Иногда, чтобы подчеркнуть различие, Windows Frotz могут называть Windows Frotz 2002, обращая внимание на год начала разработки.&lt;br /&gt;
&lt;br /&gt;
Начиная с 2003 года, Windows Frotz поддерживает корректную работу с вводом и выводом Unicode, а соответственно и кириллического текста, поэтому является одним из рекомендуемых интерпретаторов [[Z-машина|Z-машины]] для русскоязычных игр&amp;lt;ref name=&amp;quot;note 2&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Возможности ==&lt;br /&gt;
&lt;br /&gt;
* Полная поддержка всех версий [[Z-машина|Z-кода]] (от V1 до V8), включая V6 (&amp;quot;графическую&amp;quot; версию).&lt;br /&gt;
* Полное соответствие стандарту [[Z-машина|Z-машины]] версии 1.1.&lt;br /&gt;
* Полная поддержка формата [[Blorb]] версии 2.0.&lt;br /&gt;
* Поддержка цвета и графики (форматы PNG и JPEG в контейнере [[Blorb]], а также расширения [[Брейси, Кевин|Кевина Брейси]] для игр [[Infocom]] версии V6).&lt;br /&gt;
* Альфа-смешивание и гамма-коррекция для графики в формате PNG.&lt;br /&gt;
* Поддержка звука и музыки (форматы AIFF, MOD, Ogg Vorbis и MP3 в контейнере [[Blorb]]).&lt;br /&gt;
* Полная поддержка различных языков (как при вводе, так и при выводе), включая полную поддержку Unicode.&lt;br /&gt;
* Поддержка ввода с ограничением по времени, использования мыши и меню.&lt;br /&gt;
* Опциональная строгая проверка на ошибки.&lt;br /&gt;
* Сохранение игр в формате [[Quetzal]], не зависящем от конкретной аппаратной платформы или интерпретатора.&lt;br /&gt;
* Поддержка речевого вывода через Microsoft Speech API (SAPI) 5.x, позволяющая озвучивать текстовый вывод.&lt;br /&gt;
&lt;br /&gt;
== Версии ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.ifarchive.org/if-archive/infocom/interpreters/frotz/WindowsFrotzInstaller.exe Скачать установочную версию]&lt;br /&gt;
* [https://www.ifarchive.org/if-archive/infocom/interpreters/frotz/WindowsFrotz.zip Скачать переносную версию, не требующую установки в систему]&lt;br /&gt;
* [https://github.com/DavidKinder/Windows-Frotz/releases/ Страница релизов на GitHub]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.davidkinder.co.uk/frotz.html Официальный сайт Windows Frotz]&lt;br /&gt;
* [https://github.com/DavidKinder/Windows-Frotz/ Репозиторий с исходным кодом на GitHub]&lt;br /&gt;
* [https://www.ifarchive.org/if-archive/infocom/interpreters/frotz/WindowsFrotzSrc.zip Исходный код Windows Frotz в IF Archive]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[:Категория:Игры на RInform|Игры на RInform]]&lt;br /&gt;
* [[:Категория:Игры на Inform|Игры на Inform]]&lt;br /&gt;
* [[:Категория:Игры на Dialog|Игры на Dialog]]&lt;br /&gt;
* [[:Категория:Игры на ZIL|Игры на ZIL]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;note 1&amp;quot;&amp;gt;Программа может быть запущена в отличных от Windows ОС через Wine, но отдельные функции могут быть недоступны или работать некорректно.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;note 2&amp;quot;&amp;gt;Несмотря на поддержку Unicode, запись и чтение текстовых файлов с игровыми командами происходит в кодировке [[ZSCII]]. Это приводит к тому, что символы, не входящие в её набор, например буквы кириллицы, заменяются в выходном файле числами, а команды на кириллице, содержащиеся в файлах для автоввода не распознаются в Windows Frotz. При этом, файлы с командами, созданные в самой программе могут быть воспроизведены в ней, независимо от того какие символы использовались игроком при записи файла.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36518</id>
		<title>Sharpee</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36518"/>
		<updated>2026-10-04T04:13:53Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = &lt;br /&gt;
|тип = Парсерные платформы&lt;br /&gt;
|разработчик = [[Разработчик::Cornelson, David|Дэвид Корнельсон]] &lt;br /&gt;
|язык = английский&lt;br /&gt;
|система =  Windows, macOS, Linux (runtime); macOS (Chord Writer) &lt;br /&gt;
|онлайн = да&lt;br /&gt;
|написано на = [[TypeScript]]&lt;br /&gt;
|язык разработки = [[JavaScript]], [[TypeScript]] [[wikipedia:Категория:Семейство языков программирования JavaScript|или др.]]&lt;br /&gt;
|читаемый формат = &lt;br /&gt;
|создаваемый формат = &lt;br /&gt;
|первый выпуск = 2025&lt;br /&gt;
|последняя версия = 5.4.0&lt;br /&gt;
|дата последней версии = 11.09.2026&lt;br /&gt;
|состояние = активное&lt;br /&gt;
|лицензия = [https://github.com/ChicagoDave/sharpee/blob/main/LICENSE MIT]&lt;br /&gt;
|сайт = [https://sharpee.net/ sharpee.net]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Sharpee — это платформа для создания текстовых игр (с [[Синтаксический анализатор|парсером]]), написанная на языке TypeScript. Это движок, на котором работают все файлы на языке Chord, а также полноценный инструмент для разработки игр.&lt;br /&gt;
&lt;br /&gt;
Файл игры .story на языке Chord компилируется в  файл IR, который загрузчик сценария преобразует в сущности, характеристики, фразы и связи. Сценарий на TypeScript формирует те же элементы напрямую через API. В обоих случаях игра выполняется одним и тем же движком.&lt;br /&gt;
&lt;br /&gt;
Что может предложить платформа Sharpee:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Движок&#039;&#039;&#039;.	Цикл хода, выполнение команд, диспетчеризация событий, плагины;&lt;br /&gt;
* &#039;&#039;&#039;Модель мира&#039;&#039;&#039;.	Сущности, состоящие из свойств (данных) и поведения (логики), без глубокой иерархии наследования;&lt;br /&gt;
* &#039;&#039;&#039;Стандартная библиотека&#039;&#039;&#039;.	Доступны 45 [[Глагол|действий]] в игровом мире — взять, бросить, открыть, запереть, идти, осмотреть и прочие, — а также сохранение, восстановление, отмена, повтор, счет и справка;&lt;br /&gt;
* &#039;&#039;&#039;[[Синтаксический анализатор|Парсер]]&#039;&#039;&#039;.	Разбор на основе грамматики с поддержкой синонимов [[Глагол|глаголов]], ограничений слотов и шаблонов, заданных в сценарии;&lt;br /&gt;
* &#039;&#039;&#039;Языковой слой&#039;&#039;&#039;.	Все строки, видимые пользователю, вызываются по идентификатору сообщения;&lt;br /&gt;
* &#039;&#039;&#039;Каналы&#039;&#039;&#039;.	Структурированный вывод истории: повествовательный текст, статус, медиа, макет интерфейса;&lt;br /&gt;
* &#039;&#039;&#039;Расширения&#039;&#039;&#039;.	Опциональные системы: система очков, голод, базовая боевая система, диалоги, тестирование;&lt;br /&gt;
&lt;br /&gt;
Движок и стандартная библиотека никогда не выводят текст на английском языке. Всё, что читает игрок, поступает из языкового слоя по идентификатору сообщения; благодаря этому локализация сводится к добавлению языкового пакета, а не к поиску и замене жестко прописанного в коде текста.&lt;br /&gt;
&lt;br /&gt;
Файлы .story не «печатают» готовый текст, а «собирают» его. Файл с игрой отправляет данные по именованным каналам, а некий внешний механизм решает, как именно они превратятся в интерфейс. Именно поэтому одна и та же история может работать в терминале, в браузере или в интерфейсе, созданном самостоятельно автором игры, и можно изменить стиль или заменить любой элемент представления, не затрагивая логику самой игры.&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://sharpee.net/ Официальный сайт] &lt;br /&gt;
* [https://sharpee.net/sharpee Официальная документация на английском]&lt;br /&gt;
* [https://github.com/ChicagoDave/sharpee Официальный репозиторий]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36517</id>
		<title>Sharpee</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36517"/>
		<updated>2026-10-04T04:12:50Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = &lt;br /&gt;
|тип = Парсерные платформы&lt;br /&gt;
|разработчик = [[Разработчик::Cornelson, David|Дэвид Корнельсон]] &lt;br /&gt;
|язык = английский&lt;br /&gt;
|система =  Windows, macOS, Linux (runtime); macOS (Chord Writer) &lt;br /&gt;
|онлайн = да&lt;br /&gt;
|написано на = [[TypeScript]]&lt;br /&gt;
|язык разработки = [[JavaScript]], [[TypeScript]] [[wikipedia:Категория:Семейство языков программирования JavaScript|или др.]]&lt;br /&gt;
|читаемый формат = &lt;br /&gt;
|создаваемый формат = &lt;br /&gt;
|первый выпуск = 2025&lt;br /&gt;
|последняя версия = 5.4.0&lt;br /&gt;
|дата последней версии = 11.09.2026&lt;br /&gt;
|состояние = активное&lt;br /&gt;
|лицензия = [https://github.com/ChicagoDave/sharpee/blob/main/LICENSE MIT]&lt;br /&gt;
|сайт = [https://sharpee.net/ sharpee.net]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Sharpee — это платформа для создания текстовых игр (с [[Синтаксический анализатор|парсером]]), написанная на языке TypeScript. Это движок, на котором работают все файлы на языке Chord, а также полноценный инструмент для разработки игр.&lt;br /&gt;
&lt;br /&gt;
Файл игры .story на языке Chord компилируется в  файл IR, который загрузчик сценария преобразует в сущности, характеристики, фразы и связи. Сценарий на TypeScript формирует те же элементы напрямую через API. В обоих случаях игра выполняется одним и тем же движком.&lt;br /&gt;
&lt;br /&gt;
Что может предложить платформа Sharpee:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Движок&#039;&#039;&#039;.	Цикл хода, выполнение команд, диспетчеризация событий, плагины;&lt;br /&gt;
* &#039;&#039;&#039;Модель мира&#039;&#039;&#039;.	Сущности, состоящие из свойств (данных) и поведения (логики), без глубокой иерархии наследования;&lt;br /&gt;
* &#039;&#039;&#039;Стандартная библиотека&#039;&#039;&#039;.	Доступны 45 [[Глагол|действий]] в игровом мире — взять, бросить, открыть, запереть, идти, осмотреть и прочие, — а также сохранение, восстановление, отмена, повтор, счет и справка;&lt;br /&gt;
* &#039;&#039;&#039;[[Синтаксический анализатор|Парсер]]&#039;&#039;&#039;.	Разбор на основе грамматики с поддержкой синонимов [[Глагол|глаголов]], ограничений слотов и шаблонов, заданных в сценарии;&lt;br /&gt;
* &#039;&#039;&#039;Языковой слой&#039;&#039;&#039;.	Все строки, видимые пользователю, вызываются по идентификатору сообщения;&lt;br /&gt;
* &#039;&#039;&#039;Каналы&#039;&#039;&#039;.	Структурированный вывод истории: повествовательный текст, статус, медиа, макет интерфейса;&lt;br /&gt;
* &#039;&#039;&#039;Расширения&#039;&#039;&#039;.	Опциональные системы: система очков, голод, базовая боевая система, диалоги, тестирование;&lt;br /&gt;
&lt;br /&gt;
Движок и стандартная библиотека никогда не выводят текст на английском языке. Всё, что читает игрок, поступает из языкового слоя по идентификатору сообщения; благодаря этому локализация сводится к добавлению языкового пакета, а не к поиску и замене жестко прописанного в коде текста.&lt;br /&gt;
&lt;br /&gt;
Файлы .story не «печатают» готовый текст, а «собирают» его. Файл с игрой отправляет данные по именованным каналам, а некий внешний механизм решает, как именно они превратятся в интерфейс. Именно поэтому одна и та же история может работать в терминале, в браузере или в интерфейсе, созданном самостоятельно автором игры, и можно изменить стиль или заменить любой элемент представления, не затрагивая логику самой игры.&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://sharpee.net/ Официальный сайт] &lt;br /&gt;
* [https://sharpee.net/sharpee Официальная документация на английском]&lt;br /&gt;
* [https://github.com/ChicagoDave/sharpee Официальный репозиторий]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36516</id>
		<title>Sharpee</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36516"/>
		<updated>2026-10-04T04:08:46Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = &lt;br /&gt;
|тип = Парсерные платформы&lt;br /&gt;
|разработчик = [[Разработчик::Cornelson, David|Дэвид Корнельсон]] &lt;br /&gt;
|язык = английский&lt;br /&gt;
|система =  Windows, macOS, Linux (runtime); macOS (Chord Writer) &lt;br /&gt;
|онлайн = да&lt;br /&gt;
|написано на = [[TypeScript]]&lt;br /&gt;
|язык разработки = [[JavaScript]], [[TypeScript]] [[wikipedia:Категория:Семейство языков программирования JavaScript|или др.]]&lt;br /&gt;
|читаемый формат = &lt;br /&gt;
|создаваемый формат = &lt;br /&gt;
|первый выпуск = 2025&lt;br /&gt;
|последняя версия = 5.4.0&lt;br /&gt;
|дата последней версии = 11.09.2026&lt;br /&gt;
|состояние = активное&lt;br /&gt;
|лицензия = [https://github.com/ChicagoDave/sharpee/blob/main/LICENSE MIT]&lt;br /&gt;
|сайт = [https://sharpee.net/ sharpee.net]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Sharpee — это платформа для создания текстовых игр (с парсером), написанная на языке TypeScript. Это движок, на котором работают все файлы на языке Chord, а также полноценный инструмент для разработки игр.&lt;br /&gt;
&lt;br /&gt;
Файл игры .story на языке Chord компилируется в  файл IR, который загрузчик сценария преобразует в сущности, характеристики, фразы и связи. Сценарий на TypeScript формирует те же элементы напрямую через API. В обоих случаях игра выполняется одним и тем же движком.&lt;br /&gt;
&lt;br /&gt;
Что может предложить платформа Sharpee:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Движок&#039;&#039;&#039;.	Цикл хода, выполнение команд, диспетчеризация событий, плагины;&lt;br /&gt;
* &#039;&#039;&#039;Модель мира&#039;&#039;&#039;.	Сущности, состоящие из свойств (данных) и поведения (логики), без глубокой иерархии наследования;&lt;br /&gt;
* &#039;&#039;&#039;Стандартная библиотека&#039;&#039;&#039;.	Доступны 45 действий в игровом мире — взять, бросить, открыть, запереть, идти, осмотреть и прочие, — а также сохранение, восстановление, отмена, повтор, счет и справка;&lt;br /&gt;
* &#039;&#039;&#039;Парсер&#039;&#039;&#039;.	Разбор на основе грамматики с поддержкой синонимов глаголов, ограничений слотов и шаблонов, заданных в сценарии;&lt;br /&gt;
* &#039;&#039;&#039;Языковой слой&#039;&#039;&#039;.	Все строки, видимые пользователю, вызываются по идентификатору сообщения;&lt;br /&gt;
* &#039;&#039;&#039;Каналы&#039;&#039;&#039;.	Структурированный вывод истории: повествовательный текст, статус, медиа, макет интерфейса;&lt;br /&gt;
* &#039;&#039;&#039;Расширения&#039;&#039;&#039;.	Опциональные системы: система очков, голод, базовая боевая система, диалоги, тестирование;&lt;br /&gt;
&lt;br /&gt;
Движок и стандартная библиотека никогда не выводят текст на английском языке. Всё, что читает игрок, поступает из языкового слоя по идентификатору сообщения; благодаря этому локализация сводится к добавлению языкового пакета, а не к поиску и замене жестко прописанного в коде текста.&lt;br /&gt;
&lt;br /&gt;
Файлы .story не «печатают» готовый текст, а «собирают» его. Файл с игрой отправляет данные по именованным каналам, а некий внешний механизм решает, как именно они превратятся в интерфейс. Именно поэтому одна и та же история может работать в терминале, в браузере или в интерфейсе, созданном самостоятельно автором игры, и можно изменить стиль или заменить любой элемент представления, не затрагивая логику самой игры.&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://sharpee.net/ Официальный сайт] &lt;br /&gt;
* [https://sharpee.net/sharpee Официальная документация на английском]&lt;br /&gt;
* [https://github.com/ChicagoDave/sharpee Официальный репозиторий]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36515</id>
		<title>Sharpee</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36515"/>
		<updated>2026-10-04T04:07:17Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = &lt;br /&gt;
|тип = Парсерные платформы&lt;br /&gt;
|разработчик = [[Разработчик::Cornelson, David|Дэвид Корнельсон]] &lt;br /&gt;
|язык = английский&lt;br /&gt;
|система =  Windows, macOS, Linux (runtime); macOS (Chord Writer) &lt;br /&gt;
|онлайн = да&lt;br /&gt;
|написано на = [[TypeScript]]&lt;br /&gt;
|язык разработки = [[JavaScript]], [[TypeScript]] [[wikipedia:Категория:Семейство языков программирования JavaScript|или др.]]&lt;br /&gt;
|читаемый формат = &lt;br /&gt;
|создаваемый формат = &lt;br /&gt;
|первый выпуск = 2025&lt;br /&gt;
|последняя версия = 5.4.0&lt;br /&gt;
|дата последней версии = 11.09.2026&lt;br /&gt;
|состояние = активное&lt;br /&gt;
|лицензия = [https://github.com/ChicagoDave/sharpee/blob/main/LICENSE MIT]&lt;br /&gt;
|сайт = [https://sharpee.net/ sharpee.net]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Sharpee — это платформа для создания текстовых игр (с парсером), написанная на языке TypeScript. Это движок, на котором работают все файлы на языке Chord, а также полноценный инструмент для разработки игр.&lt;br /&gt;
&lt;br /&gt;
Файл игры .story на языке Chord компилируется в  файл IR, который загрузчик сценария преобразует в сущности, характеристики, фразы и связи. Сценарий на TypeScript формирует те же элементы напрямую через API. В обоих случаях игра выполняется одним и тем же движком.&lt;br /&gt;
&lt;br /&gt;
Что может предложить платформа Sharpee:&lt;br /&gt;
&lt;br /&gt;
**Движок**.	Цикл хода, выполнение команд, диспетчеризация событий, плагины;&lt;br /&gt;
**Модель мира**.	Сущности, состоящие из свойств (данных) и поведения (логики), без глубокой иерархии наследования;&lt;br /&gt;
**Стандартная библиотека**.	Доступны 45 действий в игровом мире — взять, бросить, открыть, запереть, идти, осмотреть и прочие, — а также сохранение, восстановление, отмена, повтор, счет и справка;&lt;br /&gt;
**Парсер**.	Разбор на основе грамматики с поддержкой синонимов глаголов, ограничений слотов и шаблонов, заданных в сценарии;&lt;br /&gt;
**Языковой слой**.	Все строки, видимые пользователю, вызываются по идентификатору сообщения;&lt;br /&gt;
**Каналы**.	Структурированный вывод истории: повествовательный текст, статус, медиа, макет интерфейса;&lt;br /&gt;
**Расширения**.	Опциональные системы: система очков, голод, базовая боевая система, диалоги, тестирование;&lt;br /&gt;
&lt;br /&gt;
Движок и стандартная библиотека никогда не выводят текст на английском языке. Всё, что читает игрок, поступает из языкового слоя по идентификатору сообщения; благодаря этому локализация сводится к добавлению языкового пакета, а не к поиску и замене жестко прописанного в коде текста.&lt;br /&gt;
&lt;br /&gt;
Файлы .story не «печатают» готовый текст, а «собирают» его. Файл с игрой отправляет данные по именованным каналам, а некий внешний механизм решает, как именно они превратятся в интерфейс. Именно поэтому одна и та же история может работать в терминале, в браузере или в интерфейсе, созданном самостоятельно автором игры, и можно изменить стиль или заменить любой элемент представления, не затрагивая логику самой игры.&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://sharpee.net/ Официальный сайт] &lt;br /&gt;
* [https://sharpee.net/sharpee Официальная документация на английском]&lt;br /&gt;
* [https://github.com/ChicagoDave/sharpee Официальный репозиторий]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36514</id>
		<title>Sharpee</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=Sharpee&amp;diff=36514"/>
		<updated>2026-10-04T04:06:39Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{product info&lt;br /&gt;
|название = &lt;br /&gt;
|тип = Парсерные платформы&lt;br /&gt;
|разработчик = [[Разработчик::Cornelson, David|Дэвид Корнельсон]] &lt;br /&gt;
|язык = английский&lt;br /&gt;
|система =  Windows, macOS, Linux (runtime); macOS (Chord Writer) &lt;br /&gt;
|онлайн = да&lt;br /&gt;
|написано на = &lt;br /&gt;
|язык разработки = [[JavaScript]], [[TypeScript]] [[wikipedia:Категория:Семейство языков программирования JavaScript|или др.]]&lt;br /&gt;
|читаемый формат = &lt;br /&gt;
|создаваемый формат = &lt;br /&gt;
|первый выпуск = 2025&lt;br /&gt;
|последняя версия = 5.4.0&lt;br /&gt;
|дата последней версии = 11.09.2026&lt;br /&gt;
|состояние = активное&lt;br /&gt;
|лицензия = [https://github.com/ChicagoDave/sharpee/blob/main/LICENSE MIT]&lt;br /&gt;
|сайт = [https://sharpee.net/ sharpee.net]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Sharpee — это платформа для создания текстовых игр (с парсером), написанная на языке TypeScript. Это движок, на котором работают все файлы на языке Chord, а также полноценный инструмент для разработки игр.&lt;br /&gt;
&lt;br /&gt;
Файл игры .story на языке Chord компилируется в  файл IR, который загрузчик сценария преобразует в сущности, характеристики, фразы и связи. Сценарий на TypeScript формирует те же элементы напрямую через API. В обоих случаях игра выполняется одним и тем же движком.&lt;br /&gt;
&lt;br /&gt;
Что может предложить платформа Sharpee:&lt;br /&gt;
&lt;br /&gt;
**Движок**.	Цикл хода, выполнение команд, диспетчеризация событий, плагины;&lt;br /&gt;
**Модель мира**.	Сущности, состоящие из свойств (данных) и поведения (логики), без глубокой иерархии наследования;&lt;br /&gt;
**Стандартная библиотека**.	Доступны 45 действий в игровом мире — взять, бросить, открыть, запереть, идти, осмотреть и прочие, — а также сохранение, восстановление, отмена, повтор, счет и справка;&lt;br /&gt;
**Парсер**.	Разбор на основе грамматики с поддержкой синонимов глаголов, ограничений слотов и шаблонов, заданных в сценарии;&lt;br /&gt;
**Языковой слой**.	Все строки, видимые пользователю, вызываются по идентификатору сообщения;&lt;br /&gt;
**Каналы**.	Структурированный вывод истории: повествовательный текст, статус, медиа, макет интерфейса;&lt;br /&gt;
**Расширения**.	Опциональные системы: система очков, голод, базовая боевая система, диалоги, тестирование;&lt;br /&gt;
&lt;br /&gt;
Движок и стандартная библиотека никогда не выводят текст на английском языке. Всё, что читает игрок, поступает из языкового слоя по идентификатору сообщения; благодаря этому локализация сводится к добавлению языкового пакета, а не к поиску и замене жестко прописанного в коде текста.&lt;br /&gt;
&lt;br /&gt;
Файлы .story не «печатают» готовый текст, а «собирают» его. Файл с игрой отправляет данные по именованным каналам, а некий внешний механизм решает, как именно они превратятся в интерфейс. Именно поэтому одна и та же история может работать в терминале, в браузере или в интерфейсе, созданном самостоятельно автором игры, и можно изменить стиль или заменить любой элемент представления, не затрагивая логику самой игры.&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://sharpee.net/ Официальный сайт] &lt;br /&gt;
* [https://sharpee.net/sharpee Официальная документация на английском]&lt;br /&gt;
* [https://github.com/ChicagoDave/sharpee Официальный репозиторий]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%98%D0%B3%D1%80%D1%8B_%D0%BD%D0%B0_PowerPoint&amp;diff=36509</id>
		<title>Категория:Игры на PowerPoint</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%98%D0%B3%D1%80%D1%8B_%D0%BD%D0%B0_PowerPoint&amp;diff=36509"/>
		<updated>2026-10-03T13:05:10Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Новая страница: «Категория:Игры по платформам»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Игры по платформам]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9F%D0%BE%D1%82%D0%BE%D0%BF_%D0%B8%D0%BB%D0%BB%D1%8E%D0%B7%D0%B8%D0%B9&amp;diff=36508</id>
		<title>Потоп иллюзий</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9F%D0%BE%D1%82%D0%BE%D0%BF_%D0%B8%D0%BB%D0%BB%D1%8E%D0%B7%D0%B8%D0%B9&amp;diff=36508"/>
		<updated>2026-10-03T13:03:40Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Отмена версии 35406, сделанной Loengrin (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название={{PAGENAME}}&lt;br /&gt;
 |обложка=DelusionDeluge.png&lt;br /&gt;
 |автор=[[Автор::kei]], перевод [[Переводчик::Кривчиков, Владислав]]&lt;br /&gt;
 |вышла=24.09.2024&lt;br /&gt;
 |платформа=PowerPoint&lt;br /&gt;
 |язык=английский,русский&lt;br /&gt;
 |темы=Визуальная новелла, Мистика, Праздник, Сказка, Фэнтези&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Как всё начинается==&lt;br /&gt;
Сегодня наступил день идеального баланса дня и ночи. Это день между солнечными летними днями и морозными зимними ночами, - осеннее равноденствие.&lt;br /&gt;
Ваши друзья пригласили вас на празднование Потопа иллюзий и требуют, чтобы вы незамедлительно явились. Все готовы приятно провести вечер, предвкушая осуществления ежегодного желания.&lt;br /&gt;
&lt;br /&gt;
==Особенности==&lt;br /&gt;
Визуальная новелла разработана в рамках Анти-Продуктивного Джема 2024, по условиям которого было необходимо разработать игру на софте, не предназначенном для этого. Пользователь itch.io под ником kei создал игру на базе PowerPoint.&lt;br /&gt;
&lt;br /&gt;
==Версии==&lt;br /&gt;
* [https://disk.yandex.ru/d/wMpRkS1JSTjSSg Потоп иллюзий. Часть 1 на русском языке]&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://abyss-presence.itch.io/delusion-deluge Страница Delusion Deluge на itch.io]&lt;br /&gt;
* [https://sites.google.com/view/abyss-presence/home Сайт автора]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_URQ_DOS&amp;diff=36507</id>
		<title>Категория:Документация URQ DOS</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_URQ_DOS&amp;diff=36507"/>
		<updated>2026-10-03T13:02:49Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Новая страница: «Категория:Документация»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория:Документация]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_URQL&amp;diff=36506</id>
		<title>Описание URQL</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_URQL&amp;diff=36506"/>
		<updated>2026-10-03T13:02:31Z</updated>

		<summary type="html">&lt;p&gt;Nikita: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Описание URQL для URQ_DOS версии 1.35 от 23.11.2006 года&lt;br /&gt;
&lt;br /&gt;
Автор: [[Korwin]] (Евгений Туголуков)&lt;br /&gt;
&lt;br /&gt;
Данное описание состоит из трех частей:&lt;br /&gt;
&lt;br /&gt;
# Введение&lt;br /&gt;
# Учебник&lt;br /&gt;
# Справочник&lt;br /&gt;
&lt;br /&gt;
== Полезная информация ==&lt;br /&gt;
&lt;br /&gt;
URQ (Universal RipSoft Quest) – обобщенное название нескольких платформ для разработки «консольной» ИЛ (интерактивной литературы) отечественного происхождения, основанных на URQL – соответственно Universal Ripsoft Quest Language.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Известные версии программы-интерпретатора (по материалам WalkyTalky и Korwina):&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
URQ - интерпретатор, написанный человеком, придумавшим сам URQL - RipOS&#039;ом. URQ запускается в среде Windows (винурка, &#039;&#039;&#039;&#039;&#039;рипурка&#039;&#039;&#039;&#039;&#039;). К сожалению, Рип, похоже, прекратил работу над уркой. Последняя стабильная версия - 1.4, а последняя тестируемая - 2.03a. Сайт всех программ РипОса - [http://ripsoft.narod.ru/ ripsoft.narod.ru] давно не обновляется.&amp;lt;br /&amp;gt;&lt;br /&gt;
От остальных интерпретаторов URQ отличается возможностью использовать графику и музыку в играх. Нельзя использовать выделение кусков текста цветом, но можно менять внешний вид окна интерпретатора.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
URQ_DOS - интерпретатор, работающий в среде DOS (&#039;&#039;&#039;&#039;&#039;досурка&#039;&#039;&#039;&#039;&#039;) Создана Виктором Коряновым по следам рипурки. (Развивается, в отличие от винурки, но ме-е-е-дленно... :) Например, мы пинали Вика не меньше года, прежде чем в досурке появилась возможность цветового выделения текста и кнопок, и, помнится, года полтора, прежде чем появились строковые переменные. Но лучше поздно, чем никогда.)&amp;lt;br /&amp;gt;&lt;br /&gt;
Оперативная страничка досурки - [http://vkoranov.newmail.ru/ vkoranov.newmail.ru] Последняя версия выпущена 30.11.2004, фактически является стандартом языка URQL, поддерживает функции недоступные в URQ, уступает только невозможностью вывести картинки и звук, и необходимостью пользоваться ДОС-русификаторами для текстового ввода через input по-русски (либо ухищрениями со стороны автора квеста, обходящего этот недостаток прямым сканированием клавиатуры, см. процедуру rus_input в Учебнике)&lt;br /&gt;
&lt;br /&gt;
URQ_WCL – (windows command line) вин-версия (урка-висюль) интерпретатора от Вика Корянова. Странички те же, что и у досурки. Поддерживает звук, но не картинки, проблемы с русским вводом отсутствуют как класс, к тому же имеет меньший размер. Оперативная страничка - [http://vkoranov.newmail.ru/ vkoranov.newmail.ru]&lt;br /&gt;
&lt;br /&gt;
URQ_GUI – сырая вин-версия, работающая в окне. По неизвестным причинам разработка остановлена Виктором Коряновым. Оперативная страничка - [http://vkoranov.newmail.ru/ vkoranov.newmail.ru]&lt;br /&gt;
&lt;br /&gt;
BestURQ 1.0 бета - уж и не помню, кем написано... Написано на qbasic. Выглядит симпатично, но 16-разрядная система поддерживает далеко не все возможности URQL и обеспечивает корректную работу лишь ранних квестов. (Случайно увидел Вик на одном софтовом сайте. Как было сказано автором, работает и на 286 - ДОС-версия. Народ не принял. Досурка от Корянова осталась любимицей. Заслуженно.)&lt;br /&gt;
&lt;br /&gt;
Сайт - [http://besturq.boom.ru/ besturq.boom.ru]&lt;br /&gt;
&lt;br /&gt;
Akurka (&#039;&#039;&#039;&#039;&#039;акурка&#039;&#039;&#039;&#039;&#039;)- перспективная разработка от Akela на Visual Basic. Должна поддерживать все возможности досурки и рипурки, переключаясь при необходимости с одного интерфейса на другой. Последняя известная версия на момент написания данного документа AkURQ 1.27 b2, поддерживает html-оформление квестов, математические функции, имеет красивый внешний вид и довольно удобный интерфейс. Разработка продолжается.&lt;br /&gt;
&lt;br /&gt;
OverUrka (Явурка, Оверурка – название пока не устоялось) – интерпретатор URQL на java. Разработчик - OverLord&lt;br /&gt;
&lt;br /&gt;
Разработчик редактора URQ-квестов под названием SMSQ (сам можешь сотворить квест) - Евгений Бычков&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Доступность интерпретаторов&amp;lt;/u&amp;gt;: freeware.&lt;br /&gt;
&lt;br /&gt;
Переносимость: Win/9x, Win2000/XP и DOS. Существуют отдельные проблемы совместимости между разными версиями интерпретатора (в частности, версиями под Win и DOS). (Для Win-версии, написанной на VB, также должны быть установлены некоторые нестандартные OCX-компоненты.)&lt;br /&gt;
&lt;br /&gt;
Основные возможности. На основе URQ можно создавать простые квесты, напоминающие книгу с ветвящимся сюжетом. Управление осуществляется не традиционным командным путем, а путем выбора пользователем одного из нескольких доступных вариантов действий (например, нажатием на соответствующую кнопку). Конечно, это существенно ограничивает интерактивность (зато сам процесс игры требует минимум усилий со стороны пользователя).&lt;br /&gt;
&lt;br /&gt;
Программы пишутся на простом Бейсик-подобном языке программирования. Базовые средства языка позволяют (разумеется) выводить текст и управляющие кнопки, выполнять ветвление в зависимости от определенных условий, вызывать подпрограммы. В последних версиях допускается шифрование кода.&lt;br /&gt;
&lt;br /&gt;
Ссылки:&lt;br /&gt;
&lt;br /&gt;
http://ripsoft.narod.ru/Ripsoft.htm: RipSoft, старый официальный сайт.&lt;br /&gt;
&lt;br /&gt;
http://urq.fastbb.ru/ - форум по URQ&lt;br /&gt;
&lt;br /&gt;
http://www.urq.allquests.ru: - официальный сайт по URQ&lt;br /&gt;
&lt;br /&gt;
http://urq.allquests.ru/download/quests.shtml - большой выбор URQ-квестов.&lt;br /&gt;
&lt;br /&gt;
http://[http://vkoranov.newmail.ru/ vkoranov.newmail.ru]- страничка, откуда можно скачать последнюю версию urq_dos.exe - наиболее популярного интерпретатора urq-квестов&lt;br /&gt;
&lt;br /&gt;
== ВВЕДЕНИЕ ==&lt;br /&gt;
&lt;br /&gt;
Давным-давно, когда скорость работы компьютеров измерялась килогерцами (даже не десятками килогерц!), а оперативная память байтами и, если повезет, килобайтами, (внешней памятью тогда служили громоздкие шкафы цифровых магнитофонов), так вот, в те незапамятные времена программисты тоже играли в игры! Самыми первыми играми были адвентюры (текстовые квесты), которые появились, похоже в 60-е – 70-е годы, когда еще и не пахло никакой графикой, и даже вывод иногда осуществлялся не на дисплей монитора, а на принтер! Самое удивительное заключается в том, что по мере развития технологий интерес к текстовым играм не только не сократился, а вырос, возросло и количество энтузиастов IF – Interactive Fiction (интерактивной литературы). Просто на фоне громадного числа любителей 3D-шутеров и стратегий сравнительно малочисленные интеллигентные любители квестов не так заметны. Если Вы уже играли в текстовые квесты и хотите попробовать себя в качестве их разработчика, можете читать дальше. Если же Вы хотите узнать побольше об адвентюрах и квестах – отошлю вас к великолепной статье С.Симоновича «Уроки Адвентюры» и другим хорошим статьям на www.taplap.ru и www.urq.allquests.ru.&lt;br /&gt;
&lt;br /&gt;
=== Назначение программы ===&lt;br /&gt;
&lt;br /&gt;
URQ - несложная в освоении платформа для проигрывания текстовых квестов преимущественно с менюшным вводом, то есть через систему меню и кнопок. Программа urq_dos.exe представляет собой интерпретатор файлов квестов: она проигрывает файлы .qst(текстовые) и .qs1, .qs2 (шифрованные) формат которых (язык Universal Ripsoft Quest Language, - далее URQL) и будет обсуждаться в дальнейшем.&lt;br /&gt;
&lt;br /&gt;
В текущей версии URQ_DOS (Далее urq_dos или просто &amp;amp;quot;досурка&amp;amp;quot;), как и в Win URQ(от RipOs`a - в дальнейшем просто Win URQ или &amp;amp;quot;винурка&amp;amp;quot;) нет встроенного механизма создания квестов - их надо будет писать самому, в каком либо текстовом редакторе или в специально созданном для этого редакторе SMSQ.&lt;br /&gt;
&lt;br /&gt;
=== Благодарности: ===&lt;br /&gt;
&lt;br /&gt;
Прежде всего, хотелось бы поблагодарить RipOs`a за создание его программы, его вклад в дело развития уркунизма навсегда отмечен буквой &#039;R&#039; в названии интерпретатора; во-вторых, Виктора Корянова, за труд его и вдохновение, позволившие нам работать с дос-версией URQ; в третьих, всех авторов замечательных квестов, которые научили меня, - на примере своих творений, - создавать свои произведения, и, наконец, в четвертых, всех авторов документаций по URQL, из которых я беззастенчиво и нагло брал понравившиеся мне фрагменты. Меня лишь отчасти может извинить то, что я честно, (в отличие от авторов многих рефератов, курсовых и дипломных работ, диссертаций и монографий) признаюсь в этом грехе! Кроме того, утверждения авторов документаций были проверены на практике, и исправлены в тех местах, где это было необходимо для приведения в соответствие с текущей версией программы. Я упомяну этих авторов и, надеюсь также, что слово RipOs`a, Etev`a, В.Корянова и WalkyTalky не будет забыто отчасти благодаря мне...&lt;br /&gt;
&lt;br /&gt;
Отдельно благодарю:&lt;br /&gt;
&lt;br /&gt;
Евга - за ценные консультации по досурке и создание SMSQ-редактора;&lt;br /&gt;
&lt;br /&gt;
Krol&#039;a - за новаторские идеи и опыты по созданию объектно-ориентированного кода на URQL;&lt;br /&gt;
&lt;br /&gt;
Terracon&#039;a - за неутомимое создание огромного квеста TRION, вдохновляющее меня на работу, и примеры эффективного кода;&lt;br /&gt;
&lt;br /&gt;
WalkyTalky - за то, что он скромный и просто умница;&lt;br /&gt;
&lt;br /&gt;
Fighter&#039;a - за его умные вопросы, которые многое проясняли.&lt;br /&gt;
&lt;br /&gt;
Byte&#039;у - спасибо за знакомство с QSP, после которого я взглянул на URQ по-другому;&lt;br /&gt;
&lt;br /&gt;
GrAnd&#039;у - спасибо за сотрудничество при изучении RTADS, - лучшей на сегодняшний день русскоязычной платформы для создания текстовых адвентюр;&lt;br /&gt;
&lt;br /&gt;
Стасу Старкову - низко кланяюсь за высокую требовательность к моим квестам, благодаря которой они получились неплохими.&lt;br /&gt;
&lt;br /&gt;
Akela – за то, что он не «флудер», а трудоголик и делает то, что нужно всем – новую версию URQ!&lt;br /&gt;
&lt;br /&gt;
И всех тех, кого я не назвал, но всё равно помнил, создавая этот документ, - тоже благодарю.&lt;br /&gt;
&lt;br /&gt;
=== Краткая история URQL ===&lt;br /&gt;
&lt;br /&gt;
URQ была cоздана вскоре после одной из первых известных в Рунете русских программ для написания квестов OrcZero примерно в 1999 году, автор URQ скрывается под псевдонимом RipOs. Первоначально URQ была сделана на Visual Basic, и предназначалась для создания книг-игр и простых менюшных квестов, то есть предоставляла возможность описать локацию и, по нажатию кнопки выбора, перейти на другую локацию. Была возможность работы с инвентарем – числовыми переменными. Простота платформы привлекла внимание создателей квестов, первой серьезной разработкой по воспоминаниям тех, кто присутствовал при рождении URQ стал &amp;amp;quot;Древний кинжал&amp;amp;quot; - большой и интересный квест от Кащея, написанный по мотивам произведений Д.Р.Р.Толкиена. Другими ранними квестами, очаровавшими игроков, были коротенькие &amp;amp;quot;Приключения хомяка Семена&amp;amp;quot; в двух частях (третья появилась намного позднее и была написна уже другим автором). Чуть позже Кащей выпускает вторую часть &amp;amp;quot;Древнего кинжала&amp;amp;quot;, которая, как и первая, отличалась от прочих квестов трудностью прохождения в связи с многочисленными вариантами смерти главного героя. Да, кроме Кинжалов, в начале был еще Странник - по содержанию квест объективно слабоватый, но там Смайлик впервые показал приемы, которые потом использовались во многих разработках того времени. Эпохальным событием был выход демо-версии очень большого квеста от Etev&#039;a, - &amp;amp;quot;Без права на надежду&amp;amp;quot;, который многие до сих пор, - и не без оснований, - считают лучшим квестом на URQ. Это был квест с использованием практически всех тогдашних мультимедийных возможностей Win URQ: музыки, картинок, - и при этом отличался очень хорошим литературным стилем, в сравнении с прочими &amp;amp;quot;Бананами&amp;amp;quot; и &amp;amp;quot;Петровичами&amp;amp;quot;. Платформа развивалась, RipOs вносил изменения и новые возможности, дошел до версии 2.0 альфа 3, - очень интересной, но совершенно неудовлетворительной в плане устойчивости в работе, - и внезапно прекратил работу над URQ. Последняя относительно устойчиво работающая версия - 1.4 позволяет вставлять в квест картинки (в 6 разных форматах) и отслеживать клики мышкой по этим картинкам, использовать звуки и музыку (wav и mid), делать квесты, состоящие из нескольких файлов, и многое другое, в том числе ввод чисел и строк пользователем (но это еще не парсер). Параллельно RipOsу разработку урки вел серьезный программист, скрывающийся под именем Виктор Корянов :). Он писал (и продолжает писать) на Си Dos-версию URQ, которая так и называется URQ_DOS. Вот что он сам пишет о создании досурки:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;quot;Почти все здесь, наверное, знают как я пришел к Урке, но поскольку соответствующие посты и текстовые файлы имеют обыкновение теряться и закапываться :) ...&lt;br /&gt;
&lt;br /&gt;
Это был самый конец 2000 года, буквально несколько дней до праздника. Так получилось, что у меня в то время на «домашней» машине не было хоть сколько-нибудь нормального монитора, приходилось как-то жить на переделанной советской Электронике (модель уже не помню). Более или менее приемлемо этот агрегат работал только в текстовом монохромном режиме EGA, графический EGA теоретически был, но постоянно в нем находиться было трудно из-за проблем с частотой - быстро уставали глаза (теоретически был и VGA, но только для быстрого просмотра графики - что-то читать в нем было невозможно совсем). Жил я, в общем, полностью в мире текстового Доса - много читал с экрана в Дос Навигаторе, играл в Адом, программил в bc++ 3.1 ... Естественно, иногда искал в Инете на университетской машине что-нибудь соответствующее и как-то раз по запросу «текстовые квесты» (или, может, «текстовые игры») нашел сайт Кащея (текстовыми играми интересуюсь давно, еще с до-PCшных времен). Там я сразу обратил внимание на Древний кинжал, Урка Рипа не запустилась из-за традиционного для старых версий Windows отсутствия ВБ-библиотек, да даже если и запустилась бы, все равно я тогда грузил его только в случае совсем уж крайней необходимости (кстати, в 95-ом нет штатной поддержки EGA). Самая первая версия Досурки была написана буквально в Новый Год за два дня.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Так что, если бы у В.Корянова тогда под рукой была монитор получше, мы бы, возможно, и не увидели этого великого творения, которое обеспечило URQ-квестам распространенность, популярность и дальнейшее развитие. А может быть, и увидели бы, так как текстовыми квестами он интересовался давно, и, как говорили еще древние римляне, &amp;amp;quot;истина побеждает всё&amp;amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Ввиду того, что Досурка была:&lt;br /&gt;
&lt;br /&gt;
а) гораздо устойчивее и быстрее в работе;&lt;br /&gt;
&lt;br /&gt;
б) требовала меньше ресурсов;&lt;br /&gt;
&lt;br /&gt;
в) имела интерфейс, до ностальгической боли напоминавший старую добрую DOS (серые буквы на черном фоне - наследие монохромного монитора В.Корянова), под которой работали классические текстовые квесты 80-х годов;&lt;br /&gt;
&lt;br /&gt;
г) имела полезные функции и свойства, отсутствующие в URQ-Win,&lt;br /&gt;
&lt;br /&gt;
- она получила большее распространение и в настоящее время является &#039;&#039;&amp;lt;u&amp;gt;стандартным проигрывателем urq-квестов.&amp;lt;/u&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В версии 1.22 даже была реализована возможность создания exe-файла квеста, к сожалению, утерянная в последующих версиях (будем надеяться, что автор платформы вернется к этой возможности).&lt;br /&gt;
&lt;br /&gt;
Комментарий разработчика:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;quot;Тут есть свои &amp;amp;quot;за&amp;amp;quot; и &amp;amp;quot;против&amp;amp;quot;. Доводы &amp;amp;quot;за&amp;amp;quot; вполне очевидны - exe&#039;шник удобнее распространять на просторах общей Сети (например, выложить свой квест на сервер типа download.ru) и фиксированная версия Досурки страхует от возможных будущих проблем с совместимостью из-за изменений в языке, но и доводы &amp;amp;quot;против&amp;amp;quot; достаточно веские - все улучшения в интерфейсе и возможный выход нормального GUI-варианта напрямую не коснутся уже скомпилированного exe&#039;шника ... Когда возможность линковки работала для текущих версий Досурки, ей пользовались крайне редко - чуть ли ни один-два раза за все время.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Квесты пишутся в любом текстовом редакторе, - что также очень приятно, - хотя существует специальный текстовый редактор SMSQ, расшифровывающийся, как &amp;amp;quot;Сам Можешь Сотворить Квест&amp;amp;quot;. Он первоначально предназначался для написания квестов для проигрывания на сотовых телефонах, то есть SMS-игр. Редактор сделан Евгением Бычковым (партийные клички &amp;amp;quot;Евг&amp;amp;quot; и &amp;amp;quot;brevno&amp;amp;quot;), и очень облегчает работу с большими квестами. Встроенная в версию 8 редактора возможность определить СК (вероятно, суммарный коэффициент?) квеста на некоторое время вызвала ажиотаж и гонку среди авторов квестов в попытках достичь максимального рейтинга. После появления ТРИОН’а – гигантского квеста от Terracon’a который набрал СК 20+++ ажиотаж утих :).&lt;br /&gt;
&lt;br /&gt;
=== Идеология URQL. ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Достоинства языка URQL (Universal Ripsoft Quest Language) для новичка:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Простота освоения. Достаточно выучить знак метки-начала локации и 3 оператора (END - конец локации, РLN - вывод текста и BTN – кнопка перехода), чтобы уже сделать книгу-игру. Смотри пример в учебнике.&lt;br /&gt;
&lt;br /&gt;
2. Неплохая документация, которую можно найти на сайтах создателей URQ. Данный текст тоже является документацией, причем, по моим данным, самой полной.&lt;br /&gt;
&lt;br /&gt;
3. Огромное количество примеров в виде уже созданных квестов. Все ссылки не привожу, ибо их очень много. Основное собрание на www.urq.allquests.ru, оттуда можно перейти на другие сайты. Квесты могут быть зашифрованы от просмотра, но обычно это не делается - кому же интересно смотреть сначала внутрь игры, а потом играть - всё удовольствие пропадет. Таким образом, обычная практика такова: сначала в квест играют, потом смотрят, как он устроен внутри. Потом делают свой. Благодаря этой &amp;amp;quot;открытости кода&amp;amp;quot; количество квестов на URQ превосходит все другие русские платформы вместе взятые. Смею надеяться, что так оно будет и далее.&lt;br /&gt;
&lt;br /&gt;
4. Эта платформа – «живая», то есть на ней уже написаны квесты, она продолжает развиваться, активно обсуждаться и т.д. Следовательно, пока она не собирается тихо умереть в забвении, подобно десятку других платформ. Кстати, к числу &amp;amp;quot;живых&amp;amp;quot; в настоящее время относятся, по моему мнению: URQ, QSP - менюшные, RTADS, Adrift, RINFORM - с текстовым вводом команд. Если я кого-то забыл - поправьте меня. Новичку легко получить консультацию по любому вопросу у мэтров на форуме www.urq.fastbb.ru или у многочисленных сторонников этой платформы. Для других «живых» платформ это, разумеется, также возможно - на www.taplap.ru и соответствующих сайтах. (QSP - [http://www.qsp.org.ru/ www.qsp.org.ru], RTADS - [http://www.rtads.org/ www.rtads.org], и т.д.)&lt;br /&gt;
&lt;br /&gt;
5. URQ имеет богатые возможности для создания квестов*, а создание квеста требует НА ПОРЯДОК меньше времени, чем создание текстовой адвентюры. Это ОЧЕНЬ ВАЖНО, особенно для начинающих «квестописателей», которые таким образом получают возможность начать с небольших, но вполне работоспособных квестов, а потом подняться к вершинам мастерства.&lt;br /&gt;
&lt;br /&gt;
Глоссарий&lt;br /&gt;
&lt;br /&gt;
*Текстовые квесты - это жанр менюшных игр, в отличие от текстовых адвентюр, имеющих парсер - синтаксический анализатор для распознавания введенных пользователем с клавиатуры команд.&lt;br /&gt;
&lt;br /&gt;
=== Достоинства языка URQL (Universal Ripsoft Quest Language) для профессионала: ===&lt;br /&gt;
&lt;br /&gt;
1. Работа с предметами инвентаря (путем некоторых ухищрений, их даже можно выложить в любом месте, снова взять или передать другому персонажу) - любителей систем RTADS, Adrift, RINFORM - прошу не смеяться. Мы создаем этот механизм сами и там, где это нам нужно. А вы пользуетесь уже готовым. Это не упрек, а просто констатация факта;&lt;br /&gt;
&lt;br /&gt;
2. Наличие переменных (числовых и строковых, в том числе, системных), позволяет создавать как угодно много флагов, счетчиков;&lt;br /&gt;
&lt;br /&gt;
3. Управление цветом фона и текста, причем даже в одной строке;&lt;br /&gt;
&lt;br /&gt;
4. Возможность ввода числа или строки пользователем;&lt;br /&gt;
&lt;br /&gt;
5. Наличие локации common, исполняющейся автоматически при переходах из локации в локацию и позволяющей организовать смену дня и ночи, подсчет ходов, голод, &amp;amp;quot;запалы&amp;amp;quot;, &amp;amp;quot;демоны&amp;amp;quot; и т.п.;&lt;br /&gt;
&lt;br /&gt;
6. Подстановка значения переменной в код квеста во время исполнения программы (!), обеспечивающее невероятную гибкость по сравнению с другими платформами. Этот специфический инструмент урки требует определенной привычки, но зато позволяет с легкостью манипулировать не только выводом текста на экран, но и логикой выполнения самой программы, например, организовать массивы, добавить во время выполнения новые кнопки или переименовать их как угодно, осуществить арифметические и строковые функции и т.д.;&lt;br /&gt;
&lt;br /&gt;
7. С 2003 года urq_dos.exe является 32-битным приложением, что обеспечивает довольно быструю работу с квестами*;&lt;br /&gt;
&lt;br /&gt;
8. В последней версии появились функции работы со строками, благодаря которым на досурке уже можно сделать простой парсер(!) (синтаксический анализатор);&lt;br /&gt;
&lt;br /&gt;
9. Процедуры позволяют сократить размер квеста при многократном использовании одного и того же фрагмента;&lt;br /&gt;
&lt;br /&gt;
10. Конструкция if then else и логические операторы not, or, and позволяют несложно запрограммировать сколь угодно сложные условия в квесте и реализовать циклы;&lt;br /&gt;
&lt;br /&gt;
11. Реализована, хотя пока еще не слишком совершенно, поддержка музыки (wcl-версия);&lt;br /&gt;
&lt;br /&gt;
12. Отсутствие ограничений на размер квеста, количество переменных, персонажей, локаций и т.д. Если быть точным, длина строковой переменной в досурке может достигать 2 Гб, количество локаций измеряться сотнями тысяч, количество переменных ограничено только размером виртуальной памяти Вашего компьютера…&lt;br /&gt;
&lt;br /&gt;
13. Скорость вывода текста на экран можно задавать самому в самом квесте - от медленного построчного, - а при помощи оператора pause хоть побуквенного! - вывода в напряженных моментах, до, пусть примитивной, анимации;&lt;br /&gt;
&lt;br /&gt;
14. Появилась возможность использования нескольких действий в одной кнопке – xbtn.&lt;br /&gt;
&lt;br /&gt;
Разработка продолжается, так что если Вам чего-то не хватает в работе, можно обратиться к автору интерпретатора - и, вполне возможно, недостающая функция появится.&lt;br /&gt;
&lt;br /&gt;
*Комментарий разработчика:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;quot;Основное простое ощутимое преимущество 32-х разрядного мира – легкая доступность по умолчанию всей памяти машины - RAM и виртуальной. 16и-битная версия работала только в пределах 640 Kb Доса, так что там были заморочки с допустимым размером квеста и сейвов (сейвы не больше 64 Kb), теоретически могли быть проблемы с нехваткой памяти когда переменных и меток очень много и т.п. На счет скорости - да, - 32-х разрядные приложения быстрее выполняются на современных процессорах,&lt;br /&gt;
&lt;br /&gt;
но тут разница не такая критическая и ощутимая. Еще длинные имена - в 16-битной версии не было их поддержки.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Недостатки URQ: ===&lt;br /&gt;
&lt;br /&gt;
1. Это НЕ ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ ПЛАТФОРМА. (Впрочем, профи, - поклон Krol`у, - могут писать структурные программы на неструктурных языках и даже самостоятельно создавать классы и объекты на языках программирования к этому изначально не предназначенных.) Поэтому создание по настоящему БОЛЬШИХ ИГР на URQ непросто, так как требует значительной самодисциплины, чтобы писать комментарии, необходимые для предотвращения путаницы в голове!&lt;br /&gt;
&lt;br /&gt;
2. Профессиональное программирование на урке требует опыта и терпения (интересно, существует ли хоть один язык программирования, у которого нет этого недостатка?).&lt;br /&gt;
&lt;br /&gt;
3. Windows-версия URQ в настоящее время уступает ее DOS-версии по всем параметрам (возможно, с появлением акурки или URQ_GUI это будет исправлено), за исключением возможности работы с картинками, и при этом существует проблема их совместимости, то есть, квесты, понимаемые досуркой, могут не работать на Win URQ. Правда, сама досурка, без проблем понимает все квесты написанные для ее Windows-сестрички, только не выводит пока картинки и, соответственно, не поддерживает операций с ними; не понимает, - увы, - настроек интерфейса для Windows; и требует при проигрывании некоторых квестов, использующих переменные-счетчики посещений локаций ввода специального ключа при запуске.&lt;br /&gt;
&lt;br /&gt;
4. Иногда возникают проблемы при вводе русского текста под разными версиями Windows в URQ_DOS32-версии. Они преодолимы при запуске программы из под FAR с внешним русификатором, или же использовании urq_dos.exe wcl-версии (которая, похоже, сейчас становится основной, WCL - Windows Command Line).&lt;br /&gt;
&lt;br /&gt;
5. Написать на URQL не примитивный парсер типа «глагол+существительное», но полноценный синтаксический анализатор (с учётом падежей и большим словарём синонимов) в настоящее время настолько сложно и тяжело, что возможно только теоретически. Если вы сторонник текстовых адвентюр с чисто текстовым вводом комманд, советую использовать прекрасные программы RTADS, Adrift, RINFORM подробную информацию о которых можно получить на сайте www.taplap.ru. Через пару недель освоения вы сможете создавать на них учебные квесты из 5-10 локаций (на URQL - за два дня), а за полгода трудов сделаете что-нибудь действительно интересное, красивое и, возможно, вечное.&lt;br /&gt;
&lt;br /&gt;
А если Вы хотите писать квесты легко и просто - милости прошу к нам, на www.urq.ru и используйте замечательную программу URQ_DOS.EXE.&lt;br /&gt;
&lt;br /&gt;
== УЧЕБНИК ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Предисловие к учебнику.&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Язык URQL несложен для освоения даже тех авторов квестов, которые не имеют никаких навыков в программировании. Поверьте мне, освоить русский язык гораздо сложнее! А это руководство без большого труда позволит вам овладеть всеми хитростями квестописания, самым логичным и естественным путем - от простого к сложному. Итак, начнем.&lt;br /&gt;
&lt;br /&gt;
В любом текстовом редакторе, - я, например, в обычном Notepad&#039;е часто пишу, - создайте в меню Файл(File) новый файл, и в самом начале напишите&lt;br /&gt;
&lt;br /&gt;
; Это будет мой первый квест&lt;br /&gt;
&lt;br /&gt;
То что вы написали - комментарий, который игнорируется интерпретатором и служит в качестве напоминания или пояснения автору квеста, а также тем, кто этот квест потом будет просматривать в учебных целях.&lt;br /&gt;
&lt;br /&gt;
Нажмите Enter и перейдите на следующую строку. Дело в том, что комментарий после ; продолжается до конца строки, а конец строки это такой невидимый символ, который вводится как раз нажатием клавиши Enter. На новой строке поставьте двоеточие и без всякого пробела за двоеточием напишите название локации, например вот так&lt;br /&gt;
&lt;br /&gt;
:начало ; Двоеточие+название это метка.&lt;br /&gt;
&lt;br /&gt;
Интерпретатор начинает работу с первой метки, после нее он ищет и выполняет операторы, пока не встретит оператор останова end. Встретив end интерпретатор выводит на экран все встреченные ранее кнопки и приостанавливает работу, ожидая команды пользователя. Объяснить всё это несколько труднее, чем показать, поэтому просто напишите пример, который я вам приведу ниже и сохраните ваш квест под именем L.qst. Затем запустите его на выполнение из командной строки urq_dos.exe L.qst и посмотрите, что получилось.&lt;br /&gt;
&lt;br /&gt;
=== Соглашения ===&lt;br /&gt;
&lt;br /&gt;
Это руководство написано на основе URQ_DOS версия 1.35 от 30.11.2004 года. Поэтому применение его к более ранним версиям, да и использование их, не имеет смысла, а возможности более поздних версий, наверное, будут несколько шире. Однако, к чести разработчика, В.Корянов прилагает просто героические усилия по сохранению совместимости программ снизу, поэтому, смею надеяться, то, что здесь написано, останется достоверным и для поздних версий.&lt;br /&gt;
&lt;br /&gt;
В документации встречаются специальные символы - квадратные скобки - то, что содержится между ними, - необязательная часть.&lt;br /&gt;
&lt;br /&gt;
Пример: [Имя]Фамилия можно писать как ИмяФамилия, так и Фамилия. Если опустить Имя, то вместо него будет подставлено значение по умолчанию.&lt;br /&gt;
&lt;br /&gt;
После такого знака [new!] идут нововведения, которых не было до июля 2004 года.&lt;br /&gt;
&lt;br /&gt;
===Общие сведения.===&lt;br /&gt;
&lt;br /&gt;
urq_dos.exe - интерпретатор квестов, которые существуют в виде текстового файла в windows(CP 1251)- или dos(866)- кодировке и имеют расширение qst, qs1, qs2. Первое расширение qst - просто текстовый файл, второе и третье - зашифрованные т.е. закрытые от просмотра квесты. .qs1-шифровка как у RipOs`a, .qs2 - шифровка В.Корянова (более надежная). В отличие от Win URQ, шифрованные квесты работают в urq_dos с такой же скоростью, как и не шифрованные. (Способ шифровки см. главу Шифрование квеста.)&lt;br /&gt;
&lt;br /&gt;
Urq_dos.exe существует в настоящее время в двух равноправных вариантах: dos32-версия и wcl-версия, которые отличаются во-первых размером (первая около 64 кб, вторая около 20 кб), во-вторых, скоростью работы на различных версиях Windows (первая, по наблюдениям пользователей шустрее на Win9x, а вторая на Win2000 – XP). И та, и другая программа, тем не менее, работает на любой версии Windows от 95-й до Windows XP (на 3.11 не тестировалась). При запуске wcl-версии под Win2000, WinXP &#039;&#039;&#039;&#039;&#039;очень рекомендуется&#039;&#039;&#039;&#039;&#039; заглянуть по правому клику мышки в свойства окна и установить там количество строк на экране 25 вместо 300. Длина квеста до 2 Гб, применяется три вида переменных: переменная инвентаря – вещественная, беззнаковая (то есть не может быть меньше нуля), более того, если равна нулю – исчезает; числовая переменная real long от – 2 до +2; и строковая длиной до 2 Гб. Как уже говорилось выше, размер квеста практически ограничен лишь используемой виртуальной памятью.&lt;br /&gt;
&lt;br /&gt;
Для создания квестов может использоваться любой тестовый редактор, позволяющий работать с файлами формата .txt в кодировке Windows(CP-1251) или DOS-866. Самым распространенным из них считается редактор notepad (блокнот), поставляющийся вместе с операционной системой Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
Созданный текстовый файл сохраняется с расширением qst, например my.qst кладется в папку с программой urq_dos.exe и запускается из командной строки командой urq_dos.exe my.qst (в самом простом варианте). Возможно использование бат-файла. Формат запуска программы следующий:&lt;br /&gt;
&lt;br /&gt;
urq_dos [-acrdl] &amp;amp;lt;путь к qst-файлу&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ключи: ===&lt;br /&gt;
&lt;br /&gt;
-a использовать кодировку DOS. Используйте, если запускаемый qst-файл написан в кодировке DOS. Работа с save-файлом в этом режиме происходит в этой же кодировке.&lt;br /&gt;
&lt;br /&gt;
-c загружаемый qst-файл зашифрован методом из URQ 1.22 . Для создания зашифрованных qst-файлов можно использовать либо непосредственно URQ, либо утилиту urq_code.&lt;br /&gt;
&lt;br /&gt;
-r восстановить игру из qsv-файла (имя отличается от имени qst-файла только расширением)&lt;br /&gt;
&lt;br /&gt;
Комментарий разработчика: &amp;amp;quot;Опыт показывает, что в существующих квестах для URQ редко возникает необходимость в более чем одном qsv-файле, поэтому задача поддержки qsv-файлов с произвольными именами имеет для меня довольно низкий приоритет по сравнению с другими направлениями доработок. Пока что qsv-файл, с которым работает программа, должен иметь тоже имя, что и квест, но отличаться от него расширением .qsv (например, если квест - stranger.qst, то qsv-файл - stranger.qsv). Запись по ходу игры будет производиться в него же.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
-d Режим отладки: интерпретатор выдает при каждом ходе массу информации о состояни переменных, сделанных действиях и т.д.&lt;br /&gt;
&lt;br /&gt;
-l В этом режиме urq_dos.exe при прохождении квеста создает лог-файл игры с тем же именем, что и у квеста, но с расширением 000, 001 и т.д. Весьма полезный режим, как для сохранения истории Вашей героической борьбы с загадками квеста, так и для поиска орфографических ошибок - если загрузить лог-файл в Word и проверить орфографию, многие ляпы, опечатки и грамматические ошибки будут легко обнаружены.&lt;br /&gt;
&lt;br /&gt;
-nocp В этом режиме переменные-счетчики &#039;count_имя-локации&#039; переименовываются в просто имя_локации&#039; (для совместимости с Win URQ).&lt;br /&gt;
&lt;br /&gt;
=== Игра ===&lt;br /&gt;
Во время игры Ваши действия аналогичны действиям, которые бы Вы совершали, играя под URQ для Windows. Окно информации здесь представляет из себя весь экран, а кнопки - пункты меню, один из которых нужно выбрать для совершения перехода. Выбор осуществляется курсорными клавишами на клавиатуре и Enter.&lt;br /&gt;
&lt;br /&gt;
Кроме стрелок управления курсором доступны следующие клавиши:&lt;br /&gt;
&lt;br /&gt;
* i от inventory - посмотреть инвентарь&amp;lt;br&amp;gt;Просмотр инвентаря реализован в виде системной локации. &lt;br /&gt;
* u от use - использовать инвентарь. Если в квесте предусмотрены соответствующие USE-локации, будут доступны действия с предметами.&lt;br /&gt;
* ` выход в DOS&amp;lt;br&amp;gt;На клавиатуре эта клавиша находится непосредственно под клавишей ESC. После ее нажатия программа немедленно прекратит свою работу, без дополнительных вопросов и подтверждений.&lt;br /&gt;
* ESC выход из игры&amp;lt;br&amp;gt;Текущая игра прекращается и игроку предоставляется три возможности: начать игру с начала, загрузить ее из qsv-файла,или выйти из URQ_DOS. В случае, если очередная локация не содержит кнопок (как правило это означает смерть игрока), программа ведет себя так же, как и при обработке клавиши ESC.&lt;br /&gt;
* a Полностью &amp;amp;quot;рассекречены&amp;amp;quot; средства отладки в связи с активным тестированием программы. В режиме просмотра диагностики можно проследить за работой двух анализаторов, и, если вдумчиво проанализировать эту информацию, то можно разобраться в причинах практически любого случая некорректной работы Урки. Включается пока просто клавишей a - для удобства - мне сейчас самому часто нужно переключать этот режим.&lt;br /&gt;
&lt;br /&gt;
*Режим разработчика:&lt;br /&gt;
&lt;br /&gt;
Чтобы активизировать режим разработчика, нужно во время выбора очередного перехода набрать (просто на клавиатуре) слово fullvi. Теперь при просмотре инвентаря (по клавише i - как и раньше) будет отображаться несколько более полная информация о текущем состоянии, а именно значения всех переменных и содержимое инвентаря - как обычно. Такие сведения могут быть очень полезными при отладке квеста, содержащего большое количество взаимосвязанных переменных.&lt;br /&gt;
&lt;br /&gt;
===Основы URQL.===&lt;br /&gt;
&lt;br /&gt;
Язык URQL является процедурным, как Pascal, C++, Basic. Файл квеста представляет собой набор операторов, меток и комментариев.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Работа интерпретатора (важно!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Интерпретатор начинает обрабатывать файл квеста с самого начала, пропуская комментарии и последовательно читая фрагменты кода оператор за оператором, (Разделителем операторов является символ конца строки или &#039;&amp;amp;amp;&#039;) до тех пор, пока не будут встречены операторы&lt;br /&gt;
&lt;br /&gt;
end,&lt;br /&gt;
&lt;br /&gt;
input,&lt;br /&gt;
&lt;br /&gt;
pause,&lt;br /&gt;
&lt;br /&gt;
[new!] anykey&lt;br /&gt;
&lt;br /&gt;
- и в это время не позволяет пользователю работать с переходами на другие локации и инвентарем. Встретив один из операторов остановки, интерпретатор останавливается, и ждет ввода команды пользователя-игрока. Потом выполнение квеста продолжается. Дополнительно, для удобства игрока, запоминается позиция курсора в пройденных локациях. После вывода каждой строчки текста делается задержка заданного количества миллисекунд. Количество это содержится в системной переменной urq_delay (по умолчанию 10, чем меньше, тем быстрее), и может быть заменено пользователем. Преимущества: текст более естественно (и приятно для глаз) появляется на экране, примерно как при прокрутке длинного документа.&lt;br /&gt;
&lt;br /&gt;
Файлы, обрабатываемые движком должны иметь расширением qst или qs1. Файлы qst являются обычными текстовыми документами, а файлы qs1 являются зашифрованной копией файлов qst. Опишем подробнее формат файлов qst: это текстовый скриптовый документ, который выполняется построчно:&lt;br /&gt;
&lt;br /&gt;
1. Вначале отбрасываются комментарии (символы после служебного знака &amp;amp;quot;;&amp;amp;quot;).&lt;br /&gt;
&lt;br /&gt;
2. Строка разбивается на части служебным знаком &amp;amp;quot;&amp;amp;amp;&amp;amp;quot; и для каждой части выполняются следующие операции.&lt;br /&gt;
&lt;br /&gt;
Исключение: если встречается оператор &amp;amp;quot;if&amp;amp;quot;, то последующая за ним строка на предмет &amp;amp;quot;&amp;amp;amp;&amp;amp;quot; не обрабатывается, эти операторы будут обрабатываться как &amp;amp;quot;then&amp;amp;quot; часть.&lt;br /&gt;
&lt;br /&gt;
3. В выводе информации на экран сочетание символов &amp;amp;quot;#$&amp;amp;quot; заменяется на пробел. Сочетания &amp;amp;quot;#&amp;amp;lt;имя числовой переменной&amp;amp;gt;$&amp;amp;quot; заменяется на их целое значение без дробной части. Сочетание &amp;amp;quot;#%&amp;amp;lt;имя строковой переменной&amp;amp;gt;$&amp;amp;quot; заменяется на текст. Все сочетания символов &amp;amp;quot;#/$&amp;amp;quot; заменяются на перенос строки.&lt;br /&gt;
&lt;br /&gt;
Примечание: предметы инвентаря прямо не выводятся на экран в позициях #$ и не участвуют в арифметических операциях. При необходимости используйте, доступную в версии 1.3, системную переменную Inv_&amp;amp;lt;Target&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Комментарии&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Комментарий - несколько строк, строка или ее часть, не анализируемая интерпретатором. Используется при разработке квеста для пояснения отдельных фрагментов текста. Существует два типа комметария:&lt;br /&gt;
&lt;br /&gt;
1. Отделяется при помощи точки с запятой. Все, что правее этого символа, до конца строки - комментарий:&lt;br /&gt;
&lt;br /&gt;
; Комментарий&lt;br /&gt;
&lt;br /&gt;
pln Здесь какой-нибудь текст ; А после знака точка с запятой - комментарий.&lt;br /&gt;
&lt;br /&gt;
2. [new!] Можно заключить часть текста между пар символов /* и */ и эта часть будет игнорироваться интерпретатором.&lt;br /&gt;
&lt;br /&gt;
/* Тоже комментарий*/&lt;br /&gt;
&lt;br /&gt;
/* И&lt;br /&gt;
&lt;br /&gt;
это тоже&lt;br /&gt;
&lt;br /&gt;
комментарий*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метка&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Метка - одно из важнейших понятий URQL. Она служит для выделения места в квесте, куда затем предстоит перейти командой вроде btn, goto, proc. Любые перемещения в квесте могут быть либо на следующий оператор, либо на метку. Все метки имеют имена, чтобы потом можно было указывать, куда вы хотите перейти.&lt;br /&gt;
&lt;br /&gt;
Определяется при помощи двоеточия. Все, что правее этого символа, до разделителя, которым является символ конец абзаца (Enter) или &#039;&amp;amp;amp;&#039; - имя метки:&lt;br /&gt;
&lt;br /&gt;
:Имя_метки&lt;br /&gt;
&lt;br /&gt;
Например, допустимыми именами меток являются&lt;br /&gt;
&lt;br /&gt;
:1&lt;br /&gt;
&lt;br /&gt;
:01&lt;br /&gt;
&lt;br /&gt;
:а&lt;br /&gt;
&lt;br /&gt;
:кот1&lt;br /&gt;
&lt;br /&gt;
:Название метки с пробелом&lt;br /&gt;
&lt;br /&gt;
:@(a)%^Очень_Длинная_и_Запутанная_метка_какими-лучше-не-пользоваться!!!!!_horror_так_как_сами_потом_забудете_как_она_называется!Или_сделаете_ошибку!Вы_же_можете_сделать_маленькую_ошибку_в таком_длинном_названии?&lt;br /&gt;
&lt;br /&gt;
:house_flat1&lt;br /&gt;
&lt;br /&gt;
Примечание: метка должна начинаться с начала строки и отделяться от других операторов (Enter) или &#039;&amp;amp;amp;&#039;, регистр имени метки не важен.&lt;br /&gt;
&lt;br /&gt;
:BIG&lt;br /&gt;
&lt;br /&gt;
:bIG&lt;br /&gt;
&lt;br /&gt;
:Big&lt;br /&gt;
&lt;br /&gt;
:big&lt;br /&gt;
&lt;br /&gt;
- все эти метки для интерпретатора совершенно одинаковы. Кстати, регистр операторов тоже значения не имеет, можно писать как PLN, так и pln, и Pln и даже pLn - urq_dos - поймет. Но лучше, в целях собственного удобства, придерживаться единого стиля.&lt;br /&gt;
&lt;br /&gt;
В метке лучше не делать пробелов, так как, хотя существующий интерпретатор их поддерживает, это необязательно для следующих версий. Длина метки не ограничена, но для удобства автора квеста лучше не делать меток длиннее строки. В метке допускаются символы, обозначающие буквы русского и латинского алфавита, цифры, знак подчеркивания и знаки арифметических операций + и - (лучше не злоупотреблять странными названиями). Недопустимы символы &#039;;&#039; &#039;/*&#039;, &#039;*/&#039;, &#039;&amp;amp;amp;&#039;, &#039;,&#039;.&lt;br /&gt;
&lt;br /&gt;
Грамотное использование имен меток способно серьезно облегчить работу автора.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Операторы&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;quot;Цепочку команд описать легко, структуру отклика на них - нет.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Урсула ле Гуин,&amp;amp;quot;История шобиков&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Основная часть квеста - операторы, обычно это конструкции вида:&lt;br /&gt;
&lt;br /&gt;
Имя_оператора параметр_оператора[,другой_параметр]&lt;br /&gt;
&lt;br /&gt;
В качестве параметров можно брать любые строки, но если параметров несколько, то только в последнем можно использовать запятые. Операторы могут быть разделены либо переносом строки, либо символом &amp;amp;quot;&amp;amp;amp;&#039;.&lt;br /&gt;
&lt;br /&gt;
Примечание: &#039;&#039;регистр операторов не важен, т.е. о&#039;&#039;ператоры print, Print, PRINT, pRiNt – выполняют одно и то же действие.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важнейшие операторы. Создание книги-игры.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ниже будут описаны наиболее часто используемые в квесте операторы, среди них особенно важны операторы вывода текста, перехода на метку, а также оператор остановки.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вывод текста&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Самое главное в квесте - вывод текста. Таким образом, в вашем квесте обязательно должен быть, по крайней мере, один оператор P или PLN.&lt;br /&gt;
&lt;br /&gt;
P Текст&lt;br /&gt;
&lt;br /&gt;
После его выполнения будет выведен текст &amp;amp;quot;Текст&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Существуют модификации этого оператора: PLn, Print, PrintLn. Делают они одно и то же, но операторы с Ln на конце делают дополнительно перенос строки. Операторы print и println в настоящее время практически не используются. Возможно, их поддержка будет отключена в следующих версиях досурки.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Переход между локациями&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Любой текстовый квест можно разбить на локации с текстом и переходы между ними. Из каждой локации к другим локациям обычно ведет несколько переходов, которые обозначают некоторые альтернативные варианты действий. В URQ переходы осуществляются путем перемещения на указанную метку с помощью операторов Btn и GoTo.&lt;br /&gt;
&lt;br /&gt;
btn Метка, Текст&lt;br /&gt;
&lt;br /&gt;
Примечание 1: пробелы до и после &#039;Текста&#039; игнорируются. Возможно,&lt;br /&gt;
&lt;br /&gt;
будет введен очередной флаг - системная переменная для переключения этого.&lt;br /&gt;
&lt;br /&gt;
Примечание 2: Если длина &#039;Текста&#039; - надписи на кнопке превышает 77 символов, то выводится помещающаяся часть, дополненная символами &amp;amp;quot; &amp;amp;gt;&amp;amp;quot;. В следующих версиях в таком случае надпись можно будет скроллировать.&lt;br /&gt;
&lt;br /&gt;
Примечание 3: если Метка не найдена, то кнопка выводится с пометкой // phantom,&lt;br /&gt;
&lt;br /&gt;
отображение кнопок-&amp;amp;quot;фантомов&amp;amp;quot; можно отключить, присвоив системной переменной hide_phantoms значение 1. (hide_phantoms=1)&lt;br /&gt;
&lt;br /&gt;
После выполнения оператора&lt;br /&gt;
&lt;br /&gt;
Btn Метка, Текст&lt;br /&gt;
&lt;br /&gt;
интерпретатором создается кнопка - переход на другую локацию. К примеру, в версии urq_dos создается кнопка-строка с текстом &amp;amp;quot;Текст&amp;amp;quot;, при нажатии на которую (выбрать ее клавишами курсора вверх-вниз и нажать Enter на клавиатуре), произойдет переход на другую локацию, то есть на метку, носящую имя &amp;amp;quot;Метка&amp;amp;quot;. При наличии локации common (см. ниже) сначала выполняются операторы на локации common, потом осуществляется переход на метку &amp;amp;quot;Метка&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
GoTo Метка&lt;br /&gt;
&lt;br /&gt;
После выполнения оператора goto метка происходит мгновенное перемещение на указанную метку. При наличии локации common (см. ниже) операторы на локации common при переходе по goto НЕ ВЫПОЛНЯЮТСЯ. Это сделано специально и умышленно - чтобы можно было делать переходы внутри локации.&lt;br /&gt;
&lt;br /&gt;
Примечание: в случае не нахождения метки, goto просто игнорируется. У Рипа в документации есть такое правило - если оператор по каким-то причинам обработать не удалось, он игнорируется, как бы считается комментарием.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Остановка&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Оператор остановки End приостанавливает работу интерпретатора, чтобы пользователь мог сделать выбор между предложенными ему вариантами действий. Если меткой локация открывается, то оператором остановки завершается.&lt;br /&gt;
&lt;br /&gt;
End&lt;br /&gt;
&lt;br /&gt;
- после этого оператора интерпретатор выведет все &amp;amp;quot;собранные&amp;amp;quot; кнопки, остановится и будет ждать выбора пользователем перехода к другой локации.&lt;br /&gt;
&lt;br /&gt;
Используя только вышеперечисленные операторы уже можно написать простой квест - книгу-игру, например такой:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример 1&#039;&#039;&#039;&lt;br /&gt;
 :Начало&lt;br /&gt;
 &lt;br /&gt;
 pln Летний вечер. Смеркается, но фонари зажгутся еще не скоро. Вы идете по улице и вдруг слышите за кустами какую-то возню, короткий возглас &amp;amp;quot;Помо..&amp;amp;quot;, оборвавшийся сдавленным стоном и, произносимый шепотом грязный мат...&lt;br /&gt;
 &lt;br /&gt;
 btn мимо,Пройти мимо, ускорив шаг.&lt;br /&gt;
 btn вопрос,Спросить: &amp;amp;quot;Эй, кто там!&amp;amp;quot;&lt;br /&gt;
 btn герой,Обойти куст и разобраться в чем дело.&lt;br /&gt;
 btn нормальный_трус,Добежать до телефона-автомата и позвонить в милицию.&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 :мимо&lt;br /&gt;
 pln Ты благополучно добрался до дома.&lt;br /&gt;
 &lt;br /&gt;
 btn конец,Конец&lt;br /&gt;
 btn начало,Еще раз?&lt;br /&gt;
 end&lt;br /&gt;
  &lt;br /&gt;
 :нормальный_трус&lt;br /&gt;
 &lt;br /&gt;
 pln Ты добрался до телефона, но он как всегда, не работал - кто-то оборвал трубку... Грустный, ты поплелся домой...&lt;br /&gt;
 goto мимо&lt;br /&gt;
 &lt;br /&gt;
 :вопрос&lt;br /&gt;
  &lt;br /&gt;
 pln В ответ слышится громкий грязный мат, обращенный к тебе. По смыслу - тебе советуют для сохранения здоровья отсюда уйти.&lt;br /&gt;
  &lt;br /&gt;
 btn мимо,Пройти мимо, ускорив шаг.&lt;br /&gt;
 btn герой,Обойти куст и разобраться в чем дело.&lt;br /&gt;
 btn нормальный_трус,Добежать до телефона-автомата и позвонить в милицию.&lt;br /&gt;
  &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :герой&lt;br /&gt;
 &lt;br /&gt;
 pln Ты обошел кусты и увидел, как двое каких-то молодых парней прижали к земле девушку и пытаются ее изнасиловать! Она отбивается, но силы явно неравны!&lt;br /&gt;
 &lt;br /&gt;
 btn мимо,Убежать потихоньку&lt;br /&gt;
 btn идиот,Крикнуть: &amp;amp;quot;Эй, вы! немедленно отпустите ее!&amp;amp;quot;&lt;br /&gt;
 btn идиот,Спросить: &amp;amp;quot;А что это вы тут делаете?&amp;amp;quot;&lt;br /&gt;
 btn каратэ,С разбегу пнуть того, который поближе.&lt;br /&gt;
  &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :каратэ&lt;br /&gt;
 &lt;br /&gt;
 pln Ловким пинком в голову ты опрокидываешь одного подонка на землю, второй, который лежал сверху на девушке, пытается подняться, но она вовремя хватает его за руку и ты двумя мощными ударами лишаешь его всякой боеспособности! Потом добавляешь обоим для верности еще по пинку, помогаешь девушке подняться и вы убегаете, держась за руку, за угол. Чуть-чуть отдышавшись, вы рассматриваете друг друга: она, несмотря на заплаканное лицо, выглядит очень симпатичной. Ее большие темные глаза полны восхищения. Внезапно улыбнувшись, она высвобождает свою руку из твоей, и удивительно звонким голосом спрашивает: &amp;amp;quot;Как же зовут моего благородного спасителя?&amp;amp;quot;&lt;br /&gt;
 btn конец,Представиться&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :идиот&lt;br /&gt;
 &lt;br /&gt;
 pln Парни оставили девушку в покое и набросились на тебя! Ты бился как мог, но их было двое, они поднаторели в уличных драках и скоро ты пропустил удар в голову!... Очнулся ты в больнице. Утешало одно - ты поступил как честный человек и девушка, кажется, успела убежать. Жаль, что ты никогда не узнаешь ее имени...&lt;br /&gt;
 btn конец,А дальше?&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :конец&lt;br /&gt;
 &lt;br /&gt;
 pln Собственно, всё. Это маленький квест. Если есть желание - допишите его сами...&lt;br /&gt;
&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Инвентарь. Создание нормального квеста. ===&lt;br /&gt;
&lt;br /&gt;
Есть прекрасные сложные квесты, состоящие только из локаций и переходов, но, как правило, создатели квестов предпочитают еще и добавлять в игру предметы, заставляя играющих активно работать с ними. При грамотном использовании этой возможности можно значительно разнообразить игровой процесс, есть интересные квесты, которые построены исключительно на манипулировании предметами.&lt;br /&gt;
&lt;br /&gt;
Числовые константы это число вида х[.х] - где каждый х может быть заменен на произвольное количество цифр (Не совсем произвольное, но ограничения сейчас долго искать - длина мантиссы вещественных чисел двойной точности достаточно велика). В отличие от Windows URQ в досурке количество предметов инвентаря может быть и дробным, имейте в виду! Сделано специально, например, ежу понятно, что в кармане может быть 5.67 рублей, то есть 5 рублей 67 копеек.&lt;br /&gt;
&lt;br /&gt;
*Комментарий разработчика:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;quot;Не помню, насколько умышленной была эта особенность. И ежу не совсем все понятно - если инвентарные переменные там действительно целые, а не только выводятся как целые (надо будет посмотреть, так это или нет), то это можно использовать для округления чисел, а в Досурке такой прием не сработает. Возможно, будет очередной флаг для переключения типа инвентаря.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
 Inv+ [Количество,]Предмет&lt;br /&gt;
&lt;br /&gt;
После выполнения этого оператора игроку дается Количество (1 по умолчанию) предметов Предмет. Можно прибавить и отрицательное количество предметов - это все равно, что вычесть их из инвентаря. Помните только, что число предматов в инвентаре не может быть меньше нуля - если количество предметов инвентаря после выполнения оператора меньше либо равно нуля, тогда соответствующий предмет из инвентаря убирается.&lt;br /&gt;
&lt;br /&gt;
 Inv- [Количество,]Предмет&lt;br /&gt;
&lt;br /&gt;
После выполнения этого оператора у игрока убирается Количество (1 по умолчанию) предметов Предмет. Если количество предметов инвентаря после выполнения оператора меньше либо равно нуля, тогда соответствующий предмет из инвентаря убирается. Убирается - это касается и inv+. Там просто общая проверка стоит - если в результате inv+ или inv- значение стало &amp;amp;lt;=0, то удаляется. На&lt;br /&gt;
&lt;br /&gt;
Количество ограничений и проверок нет.&lt;br /&gt;
&lt;br /&gt;
Проверить наличие (но не количество!) конкретного предмета в инвентаре можно условным оператором if then else, то есть допустимо после оператора&lt;br /&gt;
&lt;br /&gt;
 inv+ 10,Рублей&lt;br /&gt;
&lt;br /&gt;
проверить&lt;br /&gt;
&lt;br /&gt;
 if Рублей then pln У тебя есть деньги! else pln Так денег-то нет!&lt;br /&gt;
&lt;br /&gt;
Но выражение&lt;br /&gt;
&lt;br /&gt;
 if Рублей&amp;amp;gt;5 then pln У тебя больше 5 рублей!&lt;br /&gt;
&lt;br /&gt;
- не работает! Чтобы проверить количество предметов в инвентаре надо или использовать специальную переменную inv_имя предмета, которая равна количеству предметов с названием имя предмета, или старый формат if 5 Рублей then ...,&lt;br /&gt;
&lt;br /&gt;
это эквивалентно if Inv_Рублей&amp;amp;gt;=5 then ... Inv_имя можно использовать не только для проверки, но и в арифметических выражениях.&lt;br /&gt;
&lt;br /&gt;
 if inv_Рублей&amp;amp;gt;5 then pln У тебя больше 5 рублей!&lt;br /&gt;
&lt;br /&gt;
 if 5 Рублей then pln У тебя 5 рублей или больше!&lt;br /&gt;
&lt;br /&gt;
- обратите внимание на разницу в результате при количестве рублей равном именно 5! Для примера, можно было бы переписать предыдущий маленький квест, вооружив главного героя кирпичом.&lt;br /&gt;
&lt;br /&gt;
=== Пример 2 ===&lt;br /&gt;
&lt;br /&gt;
 :Начало&lt;br /&gt;
 &lt;br /&gt;
 pln Летний вечер. Смеркается, но фонари зажгутся еще не скоро. Вы идете по улице и вдруг слышите за кустами какую-то возню, короткий возглас &amp;amp;quot;Помо..&amp;amp;quot;, оборвавшийся сдавленным стоном и, произносимый шёпотом, грязный мат...&lt;br /&gt;
 &lt;br /&gt;
 btn мимо,Пройти мимо, ускорив шаг.&lt;br /&gt;
 &lt;br /&gt;
 btn вопрос,Спросить: &amp;amp;quot;Эй, кто там!&amp;amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 btn герой,Обойти куст и разобраться в чем дело.&lt;br /&gt;
 &lt;br /&gt;
 btn нормальный_трус,Добежать до телефона-автомата и позвонить в милицию.&lt;br /&gt;
 &lt;br /&gt;
 btn осмотр,Осмотреться вокруг&lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :осмотр&lt;br /&gt;
 &lt;br /&gt;
 pln Ты оглядываешься вокруг. Как назло, рядом нет прохожих, позвать на помощь некого... Возня за кустами продолжается...&lt;br /&gt;
 &lt;br /&gt;
 if not Кирпич then pln У самых ног лежит обломок кирпича.&lt;br /&gt;
 &lt;br /&gt;
 if not Кирпич then btn кирпич,Схватить кирпич&lt;br /&gt;
 &lt;br /&gt;
 if Кирпич then btn окно,Разбить кирпичом окно в доме напротив!&lt;br /&gt;
 &lt;br /&gt;
 btn мимо,Пройти мимо, ускорив шаг.&lt;br /&gt;
 &lt;br /&gt;
 btn вопрос,Спросить: &amp;amp;quot;Эй, кто там!&amp;amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 btn герой,Обойти куст и разобраться в чем дело.&lt;br /&gt;
 &lt;br /&gt;
 btn нормальный_трус,Добежать до телефона-автомата и позвонить в милицию.&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 :кирпич&lt;br /&gt;
 &lt;br /&gt;
 pln Кусок кирпича удобно лежит в руке!&lt;br /&gt;
 &lt;br /&gt;
 inv+ Кирпич&lt;br /&gt;
 &lt;br /&gt;
 goto осмотр&lt;br /&gt;
 &lt;br /&gt;
 :окно&lt;br /&gt;
 &lt;br /&gt;
 pln Ты швыряешь обломок кирпича в окно - раздается серебристый звон разбитого стекла и, через несколько секунд, возмущенный вопль: &amp;amp;quot;Хулиганы! Я милицию вызову!&amp;amp;quot; Возня за кустами прекратилась, затем кто-то крикнул: &amp;amp;quot;Бежим отсюда!&amp;amp;quot; и послышался дробный стук каблуков.&lt;br /&gt;
 &lt;br /&gt;
 inv- Кирпич&lt;br /&gt;
 &lt;br /&gt;
 btn ждать,Ждать, что будет дальше&lt;br /&gt;
 &lt;br /&gt;
 btn обойти_куст,Обойти куст&lt;br /&gt;
 &lt;br /&gt;
 btn мимо,Убежать&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :обойти_куст&lt;br /&gt;
 &lt;br /&gt;
 pln Ты обошел куст и увидел встающую с земли девушку, в разорванной кофточке. Заметив тебя, она видимо приняла тебя за насильника, выхватила из сумочки баллончик и прыснула тебе в лицо! Пока ты протирал слезящиеся от дезодоранта глаза, она врезала тебе чем-то очень твердым между ног и добавила сумочкой по голове! Пока ты загибался от боли, подъехала милиция... Бравые ребята добавили тебе еще несколько раз. В камере предварительного заключения тебя долго выпытывали насчет имен твоих сообщников... Потом отпустили под подписку о невыезде. Потом был суд. И срок. Условно.&lt;br /&gt;
 &lt;br /&gt;
 btn конец,А что дальше?&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :ждать&lt;br /&gt;
 &lt;br /&gt;
 pln Ты подождал. Вскоре, действительно, подъехала машина ППС, оттуда выскочили два амбала в форме и задержали тебя. &amp;amp;quot;Это он, он стекло разбил!&amp;amp;quot; - голосила внезапно возникшая откуда-то старушка. Тебя задержали за мелкое хулиганство. Стекло пришлось вставить за свой счет.&lt;br /&gt;
 &lt;br /&gt;
 btn конец,И что?&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :мимо&lt;br /&gt;
 &lt;br /&gt;
 pln Ты благополучно добрался до дома.&lt;br /&gt;
 &lt;br /&gt;
 btn конец,Конец&lt;br /&gt;
 &lt;br /&gt;
 btn начало,Еще раз?&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :нормальный_трус&lt;br /&gt;
 &lt;br /&gt;
 pln Ты добрался до телефона, но он как всегда, не работал - кто-то оборвал трубку... Грустный, ты поплелся домой...&lt;br /&gt;
 &lt;br /&gt;
 goto мимо&lt;br /&gt;
 &lt;br /&gt;
 :вопрос&lt;br /&gt;
 &lt;br /&gt;
 pln В ответ слышится уже громкий грязный мат, обращенный к тебе. По смыслу - тебе советуют для сохранения здоровья отсюда уйти.&lt;br /&gt;
 &lt;br /&gt;
 btn мимо,Пройти мимо, ускорив шаг.&lt;br /&gt;
 &lt;br /&gt;
 btn герой,Обойти куст и разобраться в чем дело.&lt;br /&gt;
 &lt;br /&gt;
 btn нормальный_трус,Добежать до телефона-автомата и позвонить в милицию.&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :герой&lt;br /&gt;
 &lt;br /&gt;
 pln Ты обошел кусты и увидел, как двое каких-то молодых парней прижали к земле девушку и пытаются ее изнасиловать! Она отбивается, но силы явно неравны!&lt;br /&gt;
 &lt;br /&gt;
 btn мимо,Убежать потихоньку&lt;br /&gt;
 &lt;br /&gt;
 btn идиот,Крикнуть: &amp;amp;quot;Эй, вы! немедленно отпустите ее!&amp;amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 btn идиот,Спросить: &amp;amp;quot;А что это вы тут делаете?&amp;amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 if Кирпич then btn удар_кирпичом,Врезать кирпичом по башке тому, который держит девушку.&lt;br /&gt;
 &lt;br /&gt;
 btn каратэ,С разбегу пнуть того, который поближе.&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :удар_кирпичом&lt;br /&gt;
 &lt;br /&gt;
 pln Ты подбегаешь к негодяю и бьешь его кирпичом по голове! Второй, который лежал сверху на девушке, пытается подняться, но она вовремя хватает его за руку и ты ударом кирпича по уху лишаешь его всякой боеспособности! Потом добавляешь обоим для верности еще по пинку, помогаешь девушке подняться и вы убегаете, держась за руку, за угол. Чуть-чуть отдышавшись, вы рассматриваете друг друга: она, несмотря на заплаканное лицо, выглядит очень симпатичной. Ее большие темные глаза полны восхищения. Внезапно улыбнувшись, она высвобождает свою руку из твоей, и удивительно звонким голосом спрашивает: &amp;amp;quot;Как же зовут моего благородного спасителя?&amp;amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 inv- Кирпич&lt;br /&gt;
 &lt;br /&gt;
 btn конец,Представиться&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :каратэ&lt;br /&gt;
 &lt;br /&gt;
 pln Ловким пинком в голову ты опрокидываешь одного подонка на землю, второй, который лежал сверху на девушке, пытается подняться, но она вовремя хватает его за руку и ты двумя мощными ударами лишаешь его всякой боеспособности! Потом добавляешь обоим для верности еще по пинку, помогаешь девушке подняться и вы убегаете, держась за руку, за угол. Чуть-чуть отдышавшись, вы рассматриваете друг друга: она, несмотря на заплаканное лицо, выглядит очень симпатичной. Ее большие темные глаза полны восхищения. Внезапно улыбнувшись, она высвобождает свою руку из твоей, и удивительно звонким голосом спрашивает: &amp;amp;quot;Как же зовут моего благородного спасителя?&amp;amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 btn конец,Представиться&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :идиот&lt;br /&gt;
 &lt;br /&gt;
 pln Парни оставили девушку в покое и набросились на тебя! Ты бился как мог, но их было двое, они поднаторели в уличных драках и скоро ты пропустил удар в голову!... Очнулся ты в больнице. Утешало одно - ты поступил как честный человек и девушка, кажется, успела убежать. Жаль, что ты никогда не узнаешь ее имени...&lt;br /&gt;
 &lt;br /&gt;
 btn конец,А дальше?&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :конец&lt;br /&gt;
 &lt;br /&gt;
 pln Собственно, всё. Это маленький квест. Если есть желание - допишите его сами...&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Расширенная работа с инвентарем ===&lt;br /&gt;
&lt;br /&gt;
Чтобы упростить доступ к предметам инвентаря и одновременно сделать доступ к ним из выражений есть специальная группа переменных: Inv_предмет1 для работы с инвентарем. Значение переменной Inv_предмет1 равно кол-ву предмет1&#039;ов в вашем инвентаре. Возможна как запись, так и чтение.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Активный инвентарь&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Есть возможность организовать обработку действий игрока над предметами. Поэтому введена группа локаций, для обеспечения этого интерфейса.&lt;br /&gt;
&lt;br /&gt;
 :Use_Inv - действие Инвентарь/Осмотреть&lt;br /&gt;
&lt;br /&gt;
 :Use_Inv_действие1 - действие Инвентарь/действие1&lt;br /&gt;
&lt;br /&gt;
 :Use_предмет1 - действие предмет1/Осмотреть&lt;br /&gt;
&lt;br /&gt;
 :Use_предмет1_действие1 - действие предмет1/действие1&lt;br /&gt;
&lt;br /&gt;
Примечание: при создании локаций с такими именами действия над предметами добавляются автоматически. Просмотр инвентаря осуществляется по клавише &#039;I&#039;, использование по &#039;U&#039;. Использование предмета - это подпрограмма из которой идет возврат в ту же локацию, где вы были. Еще при возврате из I и U на время выполнения одной локации устанавливается режим только чтение для всех переменных, если бы этого не было и в локации, например, есть что-нибудь вроде inv+ 10,патронов, то путем просмотра инвентаря можно было бы накрутить себе гораздо больше боеприпасов. Для примера можете добавить в пример две локации и проверить результат по клавише U.&lt;br /&gt;
&lt;br /&gt;
 :Use_кирпич&lt;br /&gt;
 &lt;br /&gt;
 pln Обыкновенная половинка красного строительного кирпича.&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 :Use_кирпич_выбросить&lt;br /&gt;
 &lt;br /&gt;
 inv- Кирпич&lt;br /&gt;
 &lt;br /&gt;
 pln Ты выбрасываешь кирпич прочь. И что дальше?&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=== Переменные ===&lt;br /&gt;
&lt;br /&gt;
Но даже при использовании всех перечисленных выше возможностей иногда возникает проблема - как сохранить то, что игрок где-то был, или создать изменяющийся параметр, который игроку показываться не должен? Это делается с помощью переменных. Переменные, это автоматически создающиеся структуры, которые могут хранить вещественное десятичное число в большом диапазоне:&lt;br /&gt;
&lt;br /&gt;
- переменные создаются при обращении к ним, если переменная не создана, то при обращении к ней она равна нулю.&lt;br /&gt;
&lt;br /&gt;
- никакие альтернативные формы записи (2e+5, другие системы счисления ...) пока не поддерживаются.&lt;br /&gt;
&lt;br /&gt;
- имя числовой переменной подчиняется общим требованиям к строке (то есть допустимы пробелы и практически любые символы, кроме &#039;#&#039; &#039;$&#039; &#039;,&#039; &#039;;&#039; &#039;/*&#039; &#039;*/&#039; &#039;&amp;amp;amp;&#039; но для совместимости со следующими версиями лучше не использовать других знаков, кроме букв русского или латинского алфавита, знака подчеркивания, цифр. Еще переменные нельзя называть ключевыми словами типа if, then, not, and, or и др. так как в выражениях такие имена будут распознаваться как ключевые слова.&lt;br /&gt;
&lt;br /&gt;
Работать с переменными можно при помощи следующего оператора:&lt;br /&gt;
&lt;br /&gt;
Переменная=Выражение&lt;br /&gt;
&lt;br /&gt;
При этом переменной присваивается значение выражения.&lt;br /&gt;
&lt;br /&gt;
Выражение это комбинация знаков действий (+ - * /), скобок, переменных и числовых констант. Приоритеты действий соответствуют обычно принимаемым в алгебре.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
окно_разбито=1&lt;br /&gt;
&lt;br /&gt;
деньги=деньги+взятка&lt;br /&gt;
&lt;br /&gt;
pi=3.1415926&lt;br /&gt;
&lt;br /&gt;
окружность=2*pi*радиус&lt;br /&gt;
&lt;br /&gt;
сложное_выражение=pi*(радиус*радиус)/2*высота_трубы&lt;br /&gt;
&lt;br /&gt;
[new!]В выражениях полностью поддерживаются операции, в том числе и логические, (в порядке возрастания приоритета):&lt;br /&gt;
&lt;br /&gt;
not, унарные + и - , *, /, +, -, &amp;amp;lt;, &amp;amp;lt;=, [n] предмет, &amp;amp;gt;, &amp;amp;gt;=, = (==), &amp;amp;lt;&amp;amp;gt;, and, or, скобки ( )&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
pln #5*((2&amp;amp;lt;3)and(3&amp;amp;lt;4))+2$ ; выдаст 7&lt;br /&gt;
&lt;br /&gt;
Примечание: Условия вида if not a=b ... обрабатываются как if &#039;not a&#039;=b ... Для записи условия &amp;amp;quot;если не a=b&amp;amp;quot; следует использовать скобки: if not (a=b) ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Условия&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Предметы инвентаря и переменные создаются для активного влияния на ход игры, чтобы реализовать эту возможность существует оператор условия, в двух вариантах:&lt;br /&gt;
&lt;br /&gt;
If Условие then Действия&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
[new!] if Условие then Действия1 else Действия2&lt;br /&gt;
&lt;br /&gt;
Если выполняется Условие, то производятся Действия.&lt;br /&gt;
&lt;br /&gt;
Условие - комбинация условий предметов ([Количество] Предмет ), условий выражений (Выражение1~Выражение2, где ~ это = &amp;amp;gt; &amp;amp;gt;= &amp;amp;lt; &amp;amp;lt;= &amp;amp;lt;&amp;amp;gt;) и логических операндов (Not And Or). еще поддерживается == (оператор неполного совпадения строк), в случае вещественных переменных == пока просто аналог = (это с мыслью о Сишных = и ==: = присваивание, == сравнение. В Си, таким образом, можно включать присваивания в выражения, но в Досурке этого пока нет)&lt;br /&gt;
&lt;br /&gt;
Действия - несколько операторов в одной строке, разделенных &amp;amp;amp;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
if Дубина then btn шмяк,Ударить зеленого гоблина дубиной по башке! else btn драп,Драпать!&lt;br /&gt;
&lt;br /&gt;
if Спички and Факел then pln Ты можешь зажечь факел.&amp;amp;amp;btn зажечь_факел,Осветить пещеру.&lt;br /&gt;
&lt;br /&gt;
if not (головная_боль=1 or музыка_звучит=1) then pln Ты наконец-то вспомнил нужный телефон!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вставка выражений&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Часто возникает необходимость, например вывести значение какой-нибудь переменной на экран. Но если просто включить имя переменной после оператора печати p или pln - будет выведено именно это имя, но никак не значение переменной! Для вывода значений был сделан механизм предобработки операторов: если в строке встречаются символы # и $, то они обрабатываются особо. А именно: #Выражение$ в коде заменяется на значение Выражения.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Примеры 5:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
a=1&lt;br /&gt;
&lt;br /&gt;
pln Текст#a$Текст2&lt;br /&gt;
&lt;br /&gt;
Будет напечатано: Текст1Текст2.&lt;br /&gt;
&lt;br /&gt;
if inv_Рублей&amp;amp;gt;70 then inv- 70,Рублей&amp;amp;amp;inv+ Курица&amp;amp;amp;p Ты платишь деньги, продавщица подает тебе замороженную курицу и #inv_Рублей$ рублей сдачи. else pln Курица стоит 70 рублей! У тебя есть только #inv_Рублей$ рублей!&lt;br /&gt;
&lt;br /&gt;
Примечание: если число не целое, то число выведенных после запятой знаков будет равно значению системной переменной fp_prec; обратите внимание, что конструкция #...$ может быть вставлена не только в оператор PLn, например btn a#a$,Пошли вполне уместно. А также во многие другие места квеста!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример 6: Вычисление целой и дробной части числа.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:1&lt;br /&gt;
&lt;br /&gt;
pln Введите число в формате ххх.ххх&lt;br /&gt;
&lt;br /&gt;
input x ;Вводим произвольное число.&lt;br /&gt;
&lt;br /&gt;
fp_prec=0 ;Задаем число знаков после запятой равное нулю&lt;br /&gt;
&lt;br /&gt;
int_x=#x$ ;Присваиваем переменной int_x целое число.&lt;br /&gt;
&lt;br /&gt;
;Две строчки ниже позволяют сейчас решить проблему с округлением числа вверх.&lt;br /&gt;
&lt;br /&gt;
if x&amp;amp;gt;0 and int_x&amp;amp;gt;x then int_x=int_x-1 ;Для положительных чисел&lt;br /&gt;
&lt;br /&gt;
if x&amp;amp;lt;0 and int_x&amp;amp;lt;x then int_x=int_x+1 ;Для отрицательных чисел&lt;br /&gt;
&lt;br /&gt;
fp_prec=5 ;Возвращаем точность вычислений до 5-го знака после запятой.&lt;br /&gt;
&lt;br /&gt;
frac_x=x-#int_x$ ;Вычисляем дробную часть.&lt;br /&gt;
&lt;br /&gt;
pln Вы ввели #x$ ;Выводим результаты вычислений на печать.&lt;br /&gt;
&lt;br /&gt;
pln Int x=#int_x$&lt;br /&gt;
&lt;br /&gt;
pln Frac x=#frac_x$&lt;br /&gt;
&lt;br /&gt;
btn 1,Еще раз?&lt;br /&gt;
&lt;br /&gt;
btn 2,Хватит&lt;br /&gt;
&lt;br /&gt;
End&lt;br /&gt;
&lt;br /&gt;
:2&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Звуки и музыка.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Итак, мы уже можем писать несложные квесты. Но некоторым особо привередливым игрокам хочется, чтобы во время квеста что-то звучало: в пещере капала вода, в бою гремел марш, звенели сабли, и стреляли пушки, а при свидании с любимой девушкой играла &amp;amp;quot;Апассионата&amp;amp;quot;. Как это сделать? URQ_dos (пока, - увы, - только в WCL-версии) поддерживает проигрывание звуков в оператором play&lt;br /&gt;
&lt;br /&gt;
Play имя_файла.расширение_файла&lt;br /&gt;
&lt;br /&gt;
Например: play intro.mid&lt;br /&gt;
&lt;br /&gt;
Поддерживается не только .mid, так можно запустить файл любого медиа-формата, поддержка которого есть на системном уровне Windows - например, .wav, .mp3 (возможно, есть зависимость от версии Windows), .avi (будет загружен проигрыватель с указанным файлом). Оператор play может проигрывать файлы из других директорий - надо только указать в имени файла - путь.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример 7: Использование звуков и музыки&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
play sound\intro.wav ; Проигрывает файл с именем intro.wav, лежащий во вложенной по отношению к файлу квеста папке с именем sound.&lt;br /&gt;
&lt;br /&gt;
Многие авторы квестов для экономии места используют именно формат mid (миди-файлы), являющиеся самым компактным способом записи музыки. Их можно проигрывать также при помощи числовой системной переменной music. Она не сможет проиграть mid-файл с именем intro.mid, но зато ей достаточно присвоить не полное имя файла с расширением, а только номер mid-файла. Условие - музыкальный файл должен быть в той же директории, что и файл квеста.&lt;br /&gt;
&lt;br /&gt;
music=1 ; Проигрывает файл с именем 1.mid&lt;br /&gt;
&lt;br /&gt;
После загрузки файла работа квеста продолжается, новый звуковой файл останавливает предыдущий. music=0 - выключает музыку.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Цвет текста, фона и кнопок.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Цвет текста, фона и кнопок зависит от системных переменных:&lt;br /&gt;
&lt;br /&gt;
Style_DOS_FillEol=1 ;эта переменная определяет стиль закрашивания фона цветом, если она равна нулю, закрашивается только фон под буквами текста, если она равна 1, то закрашивание идет по всей длине строки.&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=7 ; цвет текста и фона за текстом.&lt;br /&gt;
&lt;br /&gt;
Style_DOS_ButtonColor=15 ; цвет кнопок&lt;br /&gt;
&lt;br /&gt;
Style_DOS_CursorColor=112 ;цвет активной кнопки-курсора.&lt;br /&gt;
&lt;br /&gt;
Названия выглядят достаточно &amp;amp;quot;страшно&amp;amp;quot;, но они возникли как &amp;amp;quot;наследие&amp;amp;quot; WinURQ от RipOs&#039;a, у которого соответствующие переменные начинались просто Style_* - Виктор Корянов вынужден был ввести свои системные переменные (количество цветов под Windows и под DOS отличаются), но для единообразия добавил префикс DOS после Style: Style_DOS&lt;br /&gt;
&lt;br /&gt;
В примере приведены значения по умолчанию, соответствующие серому тексту на черном фоне, белым кнопкам, инвертированному курсору. Кодировка цвета идет по следующему принципу: в младших 4-х битах цвет, дальше в 3-х фон - это эквивалентно, цвет+16*фон. То есть Style_DOS_TextColor=7 означает 7+16*0 - серый цвет на черном фоне,Style_DOS_TextColor=31 - 15+16*1 - белый цвет на темно синем фоне. Все цвета можно посмотреть в квесте-примере colors.qst.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вот фрагмент из этого примера&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:0&lt;br /&gt;
&lt;br /&gt;
Style_DOS_FillEol=0&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=7&lt;br /&gt;
&lt;br /&gt;
pln == Палитра ==&lt;br /&gt;
&lt;br /&gt;
pln &amp;amp;lt;цвет&amp;amp;gt;+16*&amp;amp;lt;фон&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
i=0&lt;br /&gt;
&lt;br /&gt;
:loopi&lt;br /&gt;
&lt;br /&gt;
j=0&lt;br /&gt;
&lt;br /&gt;
:loopj&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=i+16*j&lt;br /&gt;
&lt;br /&gt;
;p #i$,#j$&lt;br /&gt;
&lt;br /&gt;
if Style_DOS_TextColor&amp;amp;lt;10 then p ##32$&lt;br /&gt;
&lt;br /&gt;
if Style_DOS_TextColor&amp;amp;lt;100 then p ##32$&lt;br /&gt;
&lt;br /&gt;
p ##32$#Style_DOS_TextColor$;&lt;br /&gt;
&lt;br /&gt;
j=j+1&lt;br /&gt;
&lt;br /&gt;
if j&amp;amp;lt;16 then goto loopj&lt;br /&gt;
&lt;br /&gt;
i=i+1&lt;br /&gt;
&lt;br /&gt;
pln&lt;br /&gt;
&lt;br /&gt;
if i&amp;amp;lt;16 then goto loopi&lt;br /&gt;
&lt;br /&gt;
;Style_DOS_ButtonColor=25&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=7&lt;br /&gt;
&lt;br /&gt;
Style_DOS_ButtonColor=8&lt;br /&gt;
&lt;br /&gt;
Style_DOS_CursorColor=11&lt;br /&gt;
&lt;br /&gt;
btn 0,палитра&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Процедуры.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Если надо несколько раз повторять одну и ту же последовательность действий, то можно воспользоваться процедурой - оператором Proc имя.&lt;br /&gt;
&lt;br /&gt;
при вызове данного оператора происходит переход на метку :имя и выполнение программы, до встречи первого end, потом управление передается оператору, следующему непосредственно за proc, откуда процедура была вызвана. Допустима любая вложенность proc-вызовов (вплоть до использования рекурсии!). Нормально обрабатываются последовательные переходы по proc&#039;у - цепочка ведется до тех пор, пока не встретится первый end. При этом кнопки во всех пройденных локациях накапливаются(!), но при обнаружении end&#039;а происходит не опрос пользователя, а возврат к предыдущему proc&#039;у и так до самого начала цепочки.&lt;br /&gt;
&lt;br /&gt;
Локация &#039;&#039;&#039;common&#039;&#039;&#039; обрабатывается именно так, как должна, то есть как процедура. Это означает, что сняты имевшиеся ранее ограничения на использование переходов в common-локации - теперь из нее, как из процедуры, можно строить сколь угодно длинные цепочки вызовов и они будут правильно обработаны - по окончании цепочки управление вернется в текущую локацию common, а из нее в локацию-метку.&lt;br /&gt;
&lt;br /&gt;
Например, для того, чтобы не писать каждый раз эти &amp;amp;quot;страшные длинные названия&amp;amp;quot; переменных установки цвета, можно использовать их через процедуры:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример 9: переключение цвета текста&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;----------------Процедуры установки цветов--------------------&lt;br /&gt;
&lt;br /&gt;
:grey&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=7&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:darkblue&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=9&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:darkgrey&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=8&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:green&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=10&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:blue&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=11&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:red&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=12&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:violet&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=13&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:yellow&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=14&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:white&lt;br /&gt;
&lt;br /&gt;
Style_DOS_TextColor=15&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
;--------Конец процедур установки цвета-----------&lt;br /&gt;
&lt;br /&gt;
А дальше вызывать их в квесте&lt;br /&gt;
&lt;br /&gt;
proc yellow&lt;br /&gt;
&lt;br /&gt;
pln Жетый текст&lt;br /&gt;
&lt;br /&gt;
proc green&lt;br /&gt;
&lt;br /&gt;
pln Зеленый текст&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
proc yellow&amp;amp;amp;pln &#039;&#039;&#039;Желтый текст&#039;&#039;&#039;&amp;amp;amp;proc green&amp;amp;amp;pln &#039;&#039;&#039;Зеленый текст&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вставка значения во время исполнения квеста&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Предобработка квеста позволяет интерпретатору менять содержание квеста прямо во время выполнения, и эта возможность уникальна, то есть не встречается, насколько мне известно в других языках программирования. Итак:&lt;br /&gt;
&lt;br /&gt;
- Выражение #переменная_x$ заменяется на значение числовой переменной &#039;переменная_x&#039;(с учетом значения системной переменной fp_prec);&lt;br /&gt;
&lt;br /&gt;
- При обработке строки #$ заменяется на пробел (это было сделано, чтобы была возможность вставить в текст жесткий пробел, который точно будет выведен);&lt;br /&gt;
&lt;br /&gt;
- При обработке строки #/$ заменяется на перенос строки, что позволяет обойтись в локации одним оператором печати, даже при печати стихов;&lt;br /&gt;
&lt;br /&gt;
- После оператора печати выражение ##код$ заменяется на символ с этим кодом, где код - число, а не выражение. ##$ работает пока только в операторах печати, недопустима вложенность ##$. Конструкция введена чтобы была возможность включить в текст &amp;amp;quot;системные&amp;amp;quot; символы ;&amp;amp;amp;#$. Код может быть от 0 до 255. Пока нельзя использовать переменную вместо числового значения код!&lt;br /&gt;
&lt;br /&gt;
- Выражение #%строковая_переменная$ заменяется на значение строковой переменной с именем &#039;строковая_переменная&#039;, но об этом более подробно будет рассказано ниже.&lt;br /&gt;
&lt;br /&gt;
Примечание: процесс обработки строки квеста идет следующим образом - слева направо ищется пара # и $, их содержимое обрабатывается и строка обрабатывается снова, до тех пор, пока не кончатся #. Возможно вложение, то есть такая строка считается допустимой: #var#x$$. Кстати, это очень полезная конструкция, см. главу Массивы.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Строковые переменные и работа с ними&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Строковые переменные (&amp;amp;lt;стр&amp;amp;gt; - имя стр. переменной, угловые скобки - не нужны):&lt;br /&gt;
&lt;br /&gt;
создание: instr &amp;amp;lt;стр&amp;amp;gt;=&amp;amp;lt;текст&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
вставка значения: #%&amp;amp;lt;стр&amp;amp;gt;$&lt;br /&gt;
&lt;br /&gt;
присваивание: пока только &amp;amp;lt;стр1&amp;amp;gt;=&amp;amp;lt;стр2&amp;amp;gt; т.е. сравнивается только одна строковая переменная с другой!&lt;br /&gt;
&lt;br /&gt;
равносильно instr &amp;amp;lt;стр1&amp;amp;gt;=#%&amp;amp;lt;стр2&amp;amp;gt;$&lt;br /&gt;
&lt;br /&gt;
сравнение: пока только if &amp;amp;lt;стр1&amp;amp;gt;=&amp;amp;lt;стр2&amp;amp;gt;, но возможно еще&lt;br /&gt;
&lt;br /&gt;
[new!]: if &amp;amp;lt;стр1&amp;amp;gt;=&amp;amp;quot;текст&amp;amp;quot; - при этом создается строковая переменная содержащая &amp;amp;quot;текст&amp;amp;quot; (без кавычек!) с именем &amp;amp;quot;текст&amp;amp;quot; (без кавычек!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;: if &amp;amp;lt;стр1&amp;amp;gt;==&amp;amp;quot;текст&amp;amp;quot; - оператор неточного сравнения.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Работает так:&lt;br /&gt;
&lt;br /&gt;
instr k= ;обратите внимание на &#039;=&#039; после instr k!!!&lt;br /&gt;
&lt;br /&gt;
pln Напишите в каком направлении должен идти герой:&lt;br /&gt;
&lt;br /&gt;
input k&lt;br /&gt;
&lt;br /&gt;
if k==&amp;amp;quot;*север*&amp;amp;quot; then pln Герой очутился среди белых медведей else pln Куда-куда ты меня послал?&lt;br /&gt;
&lt;br /&gt;
Интересно, что в данном примере, распознаются по условию then фразы &amp;amp;quot;идти на север&amp;amp;quot;, &amp;amp;quot;север&amp;amp;quot;, &amp;amp;quot;765783север3424юг&amp;amp;quot; и даже &amp;amp;quot;куда угодно, только не на север!&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Возможно и распознавание целой фразы&lt;br /&gt;
&lt;br /&gt;
if k==&amp;amp;quot;*идти*север*&amp;amp;quot; then pln Герой очутился среди белых медведей else pln Куда-куда ты меня послал?&lt;br /&gt;
&lt;br /&gt;
правильно распознает фразы &amp;amp;quot;идти на север&amp;amp;quot;,&amp;amp;quot;идти в северном направлении&amp;amp;quot; (и неправильно, -увы,- &amp;amp;quot;идти подальше от всех северных медведей!&amp;amp;quot;) Кавычки обязательны, так как они в операторе if then служат для формирования из строки текста - текстовой переменной.&lt;br /&gt;
&lt;br /&gt;
Кроме символа &#039;*&#039; заменяющего произвольное количество других символов (в том числе и их отсутствие) возможно применение символа &#039;?&#039;, который заменяет ОДИН произвольный символ (или его отсутствие).&lt;br /&gt;
&lt;br /&gt;
instr k=&lt;br /&gt;
&lt;br /&gt;
pln Напишите ваше любимое оружие&lt;br /&gt;
&lt;br /&gt;
input k&lt;br /&gt;
&lt;br /&gt;
if k==&amp;amp;quot;меч?&amp;amp;quot; then pln Вы получаете волшебный меч! else pln Вы получаете по физиономии!&lt;br /&gt;
&lt;br /&gt;
- правильно распознает и &amp;amp;quot;меч&amp;amp;quot; и &amp;amp;quot;мечи&amp;amp;quot; и правильно ‘не распознает’ &amp;amp;quot;мечту легионера - М-16&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Примечание: в instr&#039;е кавычки пока не обрабатываются, то есть instr v=&amp;amp;quot;строка&amp;amp;quot; - так и заносится в переменную v - &amp;amp;quot;строка&amp;amp;quot;, с кавычками.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Оператор разбиения строки - tokens&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Для удобства работы с длинными строками введен оператор разбиения строки на отдельные части. Разбиение проводится по разделителям, хранящимся в строковой системной переменной tokens_delim (по умолчанию в ней хранится пробел и четыре знака препинания: точка, запятая, вопрос и восклицальный знак, то есть она разбивает предложение на отдельные слова)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Массивы&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Используя #$ и #%$ легко организовать работу с массивами. Массив - это множество переменных, имеющих кроме имени еще и число-индекс, например a1,a2,a3 и т.д. Для двух-, трех-, n-мерных массивов нужно просто 2,3,n индексов разделенных каким-либо разделителем, например a1_1, клетка2|5, кубик4x67y0z.&lt;br /&gt;
&lt;br /&gt;
Вывод значений таких переменных - элементов массива осуществляется при помощи #$:&lt;br /&gt;
&lt;br /&gt;
кубик4x67y0z=56&lt;br /&gt;
&lt;br /&gt;
x=4&lt;br /&gt;
&lt;br /&gt;
y=67&lt;br /&gt;
&lt;br /&gt;
z=0&lt;br /&gt;
&lt;br /&gt;
pln #кубик#x$x#y$y#z$z$.&lt;br /&gt;
&lt;br /&gt;
- Будет напечатано 67. Если вы поняли, как это работает, можете считать, что с самым сложным моментом в досурке вы разобрались!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Циклы&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Присваивать и выводить значения массивам можно в цикле. Циклы также применяются вообще для каких-либо повторяющихся действий. В настоящее время циклы реализованы посредством рекурсии.&lt;br /&gt;
&lt;br /&gt;
i=0&lt;br /&gt;
&lt;br /&gt;
imax=25 ;Инициализация счетчика цикла&lt;br /&gt;
&lt;br /&gt;
:loop1 ;Метка - начало цикла&lt;br /&gt;
&lt;br /&gt;
i=i+1 ;Увеличение счетчика на 1&lt;br /&gt;
&lt;br /&gt;
if i&amp;amp;lt;imax then p #i$#$&amp;amp;amp;goto loop1 else pln #/$Конец цикла! ; это &amp;amp;quot;страшное&amp;amp;quot; выражение мы разберем по частям, чтобы было понятно (те, кому понятно и так, могут пропустить это пояснение, учебник пишется для начинающих авторов!)&lt;br /&gt;
&lt;br /&gt;
if i&amp;amp;lt;imax ;проверяется, что i пока меньше imax, то есть 25&lt;br /&gt;
&lt;br /&gt;
then p #i$#$&amp;amp;amp;goto loop1 ; если да, то печатаем в одну строку числовое значение переменной i (#i$), потом вставляем пробел (#$), потом идет разделитель операторов &amp;amp;amp; и оператор безусловного перехода goto на метку loop1, после которой снова увеличивается i и опять всё по кругу, пока значение переменной i не достигнет 25. Тогда сработает ветка&lt;br /&gt;
&lt;br /&gt;
else pln #/$Конец цикла! ; которая напечатает перенос строки (#/$) и фразу &amp;amp;quot;Конец цикла!&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
Циклы можно вкладывать друг в друга - только применяйте разные названия меток начала циклов, помните, что &#039;&#039;из двух одинаковых меток в досурке выполняется только первая&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Дополнительный ввод&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
При обработке квестов иногда надо запросить число. Сделать это стандартными методами - через кнопки, - трудно, поэтому есть оператор&lt;br /&gt;
&lt;br /&gt;
Input x&lt;br /&gt;
&lt;br /&gt;
он добивается от пользователя числового(!) значения и помещает его в переменную &#039;x&#039;. Если же до ввода определить переменную X как строковую,&lt;br /&gt;
&lt;br /&gt;
instr X=&lt;br /&gt;
&lt;br /&gt;
input X&lt;br /&gt;
&lt;br /&gt;
- то в переменную X, даже если вы напишите 3.14 будет введено не число 3.14, а строка &amp;amp;quot;3.14&amp;amp;quot;. Если же до ввода переменная не определена, то (возм. пока) считается, что вводится число.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Случайность&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Иногда полезно - особенно, если не злоупотреблять этим, ввести в квест элемент случайности, непредсказуемости. Именно для этого был введен механизм случайности: Rnd[x] - системная переменная (только для чтения) которая при &#039;&#039;пустом значении x хранит в себе случайное значение от 0 до 1&#039;&#039;, включая 1, а при &#039;&#039;целом x (к примеру, X=6) выдает выдает целые значения (от 1 до 6 включительно в нашем случае).&#039;&#039; При каждом обращении к переменной она принимает другое значение.&lt;br /&gt;
&lt;br /&gt;
случай1=rnd ;В результате переменная случай1 равна, например, 0.78&lt;br /&gt;
&lt;br /&gt;
случай2=rnd4 ;В результате переменная случай2 равна, например, 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Время&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Иногда для работы квеста требуется системное время, для этого предназначена переменная (только для чтения) Time, она теоретически хранит число секунд прошедших с полуночи. Что она там на самом деле хранит - это вопрос пока сложный и загадочный :) - учитывая разницу в версиях dos32 и wcl. Пока к использованию не рекомендуется.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Многофайловые квесты&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Есть возможность создавать квесты состоящие из нескольких qst файлов, для этого&lt;br /&gt;
&lt;br /&gt;
используется оператор include:&lt;br /&gt;
&lt;br /&gt;
include путь_к_файлу_&amp;amp;quot;квест_вставка.qst&amp;amp;quot; ;имя файла надо брать в кавычки!&lt;br /&gt;
&lt;br /&gt;
который вставит в ваш квест в это место квест_вставка.qst Пока что, следует быть внимательным с использованием вставок - во вставленных квестах, пока не работает вставка значения во время выполнения через #$.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Операторы задержки выполнения интерпретатора&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Существует два очень полезных оператора, способных сделать ваш квест по-настоящему интерактивным: pause [время] и anykey [переменная]&lt;br /&gt;
&lt;br /&gt;
pause &amp;amp;lt;время&amp;amp;gt; - прекращение выполнения инструкций на &amp;amp;lt;время&amp;amp;gt; в миллисекундах (1 миллисекунда=1/1000 доли секунды), причем пользователь в это время может выбирать варианты с помощью кнопок выбора и квест будет работать дальше, но по истечении &amp;amp;lt;время&amp;amp;gt; выполнение квеста продолжиться, одновременно двух работающих &amp;amp;quot;pause&amp;amp;quot; не может быть, новая затирает старую - движок о ней &amp;amp;quot;забывает&amp;amp;quot;, забывает также он о паузе при нажатии кнопки действия.&lt;br /&gt;
&lt;br /&gt;
:1&lt;br /&gt;
&lt;br /&gt;
pln Сигнал тревоги разнесся по коридору. Надо спешить, скоро здесь будет охрана.&lt;br /&gt;
&lt;br /&gt;
btn LeftDoor,левая дверь&lt;br /&gt;
&lt;br /&gt;
btn RightDoor,правая дверь&lt;br /&gt;
&lt;br /&gt;
pause 3000 ;Пауза на три секунды&lt;br /&gt;
&lt;br /&gt;
goto LeftDoor&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:LeftDoor&lt;br /&gt;
&lt;br /&gt;
pln Поздравляем! Вы выскочили прямо навстречу бегущей охране...&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:RightDoor&lt;br /&gt;
&lt;br /&gt;
pln Спасены! Охрана пробегает мимо.&lt;br /&gt;
&lt;br /&gt;
save&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
anykey [числовая_переменная]&lt;br /&gt;
&lt;br /&gt;
Этот оператор останавливает выполнение квеста до нажатия любой клавиши на клавиатуре, значение ASCII кода клавиши заносится в переменную &amp;amp;quot;числовая_переменная&amp;amp;quot; и может быть использовано впоследствии. При помощи этого оператора на досурке можно реализовать даже простейшую текстовую аркаду!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вход на локацию&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Очень интересной особенностью является то, что при входе на локацию после перехода (Btn, Goto, Proc) происходит увеличение переменной с именем count_имя-локации на 1. Пример:&lt;br /&gt;
&lt;br /&gt;
proc abs &amp;amp;amp; proc abs &amp;amp;amp; proc abs&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
:abs&lt;br /&gt;
&lt;br /&gt;
pln #count_abs$&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
При этом после выполнения кода (интересно, что впримере 1ый end можно не писать) переменная count_abs примет значение 3 (если до этого не вызывалась abs). Учитывая, что после возврата из просмотра инвентаря или работы с действиями count_имя локации увеличивается также, не рекомендуется применять переменные-счетчики для действительного определения числа посещений локации - лучше использовать обычные переменные.&lt;br /&gt;
&lt;br /&gt;
Вот некоторые вопросы, остающиеся после просмотра учебника:&lt;br /&gt;
&lt;br /&gt;
Q: Что будет, если сделать ссылку на несуществующую метку?&lt;br /&gt;
&lt;br /&gt;
A: В досурке кнопка-переход на несуществующую метку либо не действует, помечаясь при этом словом phantom (если системная переменная Hide_phantom=0), либо вообще невидимы (если системная переменная Hide_phantom=1), goto и proc на несуществующую метку просто не выполняется.&lt;br /&gt;
&lt;br /&gt;
Q: Что будет, если создать несколько меток с одинаковым именем?&lt;br /&gt;
&lt;br /&gt;
A: Сделать их можно, но переход будет происходить только на первую из них.&lt;br /&gt;
&lt;br /&gt;
Q: Рассказать о метках Common, упомянуть переменную common, пояснить, что будет, если присвоить переменной нулевое или отрицательное значение, а также значение, для которого нет соответствующей метки Common_Номер. Что будет, если создать метку с именем Common_-128, когда их всего две (Common и Common_-128), то есть, во-первых, корректно ли такое имя, а во-вторых, возможно ли создавать метки вида Common, перескакивая через номера (Common, Common_5, Common_12, Common23), или следует создавать их в строгой последовательности (Common, Common_1, Common_2, Common_3 и так далее)? Что будет, если создать несколько меток Common с одинаковым номером? Неплохо бы также упомянуть альтернативу локациям Common и переменной common: можно ведь создать переменную НомерМетки, присвоив ей значение 0, несколько меток (скажем, Метка_0 Метка_1, Метка_2, Метка_3 и так далее), а потом в начале каждой локации писать строчку &amp;amp;quot;proc Метка_#НомерМетки$&amp;amp;quot; (без кавычек, разумеется). Пояснить, как RipOs и Корянов облагодетельствовали всех квестописателей, избавив их от этой нудной работы :)&lt;br /&gt;
&lt;br /&gt;
A: Подробнее о Common метках:&lt;br /&gt;
&lt;br /&gt;
Часто необходимо выполнять некую общую последовательность действий для всех локаций... Именно для этого есть&lt;br /&gt;
&lt;br /&gt;
:Common метка - при вызове btn метка,Название метки на самом делается следующее: proc Common &amp;amp;amp; GoTo метка к примеру, то есть вызывается Common и при встрече end идет выход из процедуры и только после этого уже переход на требуемую метку.&lt;br /&gt;
&lt;br /&gt;
Но ведь для разных частей квеста порой требуется разные Common локации, поэтому системная числовая переменная Common отвечает за имя вызываемой локации: :Common_номер к примеру при Common=5 будет вызов :Common_5. Никаких ограничений по номерам (подряд или нет) не накладывается, для простоты рекомендуется использовать только целые числа. Если Common=-5, то вызов будет соотвественно :Common_-5.&lt;br /&gt;
&lt;br /&gt;
Можно также обойтись и без использования локации Common вообще, например в КАЖДОЙ локации писать proc CommonLoc_#CommonLoc_N$, при этом будет происходить подобный же механизм(только имя Common локации будет :CommonLoc). Использование локации common сильно упрощает написание квестов, в которых надо вести учет ходов игрока (например, для введения игрового времени, голода, запаса энергии в лампе и т.п.)&lt;br /&gt;
&lt;br /&gt;
Q: Как нормально сделать голод в квесте?&lt;br /&gt;
&lt;br /&gt;
A: Используйте локацию Common, например, так:&lt;br /&gt;
&lt;br /&gt;
:Common&lt;br /&gt;
&lt;br /&gt;
Сытость=Сытость-1&lt;br /&gt;
&lt;br /&gt;
if Сытость&amp;amp;lt;=0 then PrintLn Вы голодны!!!&lt;br /&gt;
&lt;br /&gt;
if Хлеб then Сытость=Сытость+10 &amp;amp;amp; Inv- Хлеб&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Q: Равнозначны ли k=5 и k = 5 ? То есть пробелы как-то убираются?&lt;br /&gt;
&lt;br /&gt;
A: При вещественных присваиваниях – да, убираются. При строковых (если k объявлена через instr k= как строковая переменная) можно включить сохранение пробелов через системную переменную &#039;&#039;&#039;Instr_leave_spc&#039;&#039;&#039; - если отлична от нуля, то в instr-присваиваниях сохраняются пробелы, иначе нет.&lt;br /&gt;
&lt;br /&gt;
Q: Пишу instr text=Пароль&lt;br /&gt;
&lt;br /&gt;
If text=Пароль then … - и не работает! Почему?&lt;br /&gt;
&lt;br /&gt;
А: if сравнение чего-то=текст может быть только if чего-то=&amp;amp;quot;текст&amp;amp;quot;, так как сравнивается только содержимое текстовых переменных, а в последнем случае как раз создается переменная с именем и содержанием text.&lt;br /&gt;
&lt;br /&gt;
Q: Пишу сравнение двух строковых переменных if stroka1&amp;amp;lt;&amp;amp;gt;stroka2 then … - но работает неправильно!&lt;br /&gt;
&lt;br /&gt;
A: Правильно писать if not (stroka1=stroka2) then … так как неравенство для строковых переменных не поддерживается!&lt;br /&gt;
&lt;br /&gt;
Q: Как узнать длину строковой переменной?&lt;br /&gt;
&lt;br /&gt;
А:. Длина строки заносится в числовую переменную с тем же именем! Таким образом если instr слово=Пароль, то Длина_слово=#слово$&lt;br /&gt;
&lt;br /&gt;
Кстати, при сравнении строки с числом сравнивается именно ее длина.&lt;br /&gt;
&lt;br /&gt;
Q: И еще вопрос: есть ли в УРК команды для работы со строками? Т.е. ты input строчку, а потом, скажем, рассматриваешь ее n-ный символ (парсер хотел сделать)? Или все придется делать способом дровосека?:&lt;br /&gt;
&lt;br /&gt;
:main&lt;br /&gt;
&lt;br /&gt;
i=0&lt;br /&gt;
&lt;br /&gt;
:cycle&lt;br /&gt;
&lt;br /&gt;
i=i+1&lt;br /&gt;
&lt;br /&gt;
anykey l#i$&lt;br /&gt;
&lt;br /&gt;
a=l#i$&lt;br /&gt;
&lt;br /&gt;
if a=13 then goto vvod&lt;br /&gt;
&lt;br /&gt;
if a=97 or a=65 then p ф&lt;br /&gt;
&lt;br /&gt;
if a=98 or a=66 then p и&lt;br /&gt;
&lt;br /&gt;
if a=99 or a=67 then p с&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
goto cycle&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
А(Walky Talky):&lt;br /&gt;
&lt;br /&gt;
Это можно сделать при помощи операции расщепления на подстроки (токены).&lt;br /&gt;
&lt;br /&gt;
tokens_delim - строковая переменная, по которой делится строка. Если равна char, то строка делится на отдельные символы.&lt;br /&gt;
&lt;br /&gt;
tokens - команда делит строку на подстроки (разделитель - tokens_delim) Результаты сохраняются в строках вида tokenN, где N - номер подстроки. (очевидно, что если tokens_delim равно char, то в этих строках содержатся отдельные символы)&lt;br /&gt;
&lt;br /&gt;
tokens_num - содержит число подстрок в результате расщепления строки.&lt;br /&gt;
&lt;br /&gt;
Операция разделения на подстроки никак не сказывается на исходной текстовой переменной.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
:1&lt;br /&gt;
&lt;br /&gt;
instr string=&lt;br /&gt;
&lt;br /&gt;
pln Введите строку:&lt;br /&gt;
&lt;br /&gt;
input string&lt;br /&gt;
&lt;br /&gt;
instr tokens_delim=char&lt;br /&gt;
&lt;br /&gt;
pln Введите позицию символа:&lt;br /&gt;
&lt;br /&gt;
input n&lt;br /&gt;
&lt;br /&gt;
tokens string&lt;br /&gt;
&lt;br /&gt;
if tokens_num&amp;amp;gt;=n then pln #%token#n$$ - #n$-й символ строки &amp;amp;quot;#%string$&amp;amp;quot; else pln Такого символа нет.&lt;br /&gt;
&lt;br /&gt;
pln #/$В строке #tokens_num$ символов.&lt;br /&gt;
&lt;br /&gt;
btn 1,еще&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Q: Фиксирует ли anykey код нажимаемой кнопки или для этого используется другая команда?&lt;br /&gt;
&lt;br /&gt;
A(Victor): Да, фиксирует. Простой пример:&lt;br /&gt;
&lt;br /&gt;
:0&lt;br /&gt;
&lt;br /&gt;
anykey x&lt;br /&gt;
&lt;br /&gt;
p #x$ ;&lt;br /&gt;
&lt;br /&gt;
if x&amp;amp;lt;&amp;amp;gt;27 then goto 0&lt;br /&gt;
&lt;br /&gt;
выводятся коды нажатых клавиш, пока не нажмешь Esc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Полезные алгоритмы URQL для написания квестов от «мэтров»:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Etev&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
я теряюсь... вы наверное и сами всё знаете&lt;br /&gt;
&lt;br /&gt;
ну, из последнего, что я сам реализовывал и запомнилось: «как сделать подобие ссылки»&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;HealthEnemy1=30;жизнь первого врага&amp;lt;br /&amp;gt;&lt;br /&gt;
HealthEnemy2=30;жизнь второго врага&amp;lt;br /&amp;gt;&lt;br /&gt;
instr HealthTarget=.;якобы ссылка&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
потом запрашиваете у юзера (или через цикл) порядковый номер врага, здесь описывать не буду - элементарно (например input target), и присваиваете&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;instr HealthTarget=HealthEnemy#target$&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
а затем можно оперировать напрямую через ссылку в любом выражении, например:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;if toHitHero&amp;amp;gt;armorEnemy then #%HealthTarget$=#%HealthTarget$-5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Victor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Распечатка токенов:&amp;lt;br /&amp;gt;&lt;br /&gt;
:0&amp;lt;br /&amp;gt;&lt;br /&gt;
instr a=&amp;lt;br /&amp;gt;&lt;br /&gt;
input a&amp;lt;br /&amp;gt;&lt;br /&gt;
tokens a&amp;lt;br /&amp;gt;&lt;br /&gt;
pln #tokens_num$ tokens:&amp;lt;br /&amp;gt;&lt;br /&gt;
i=1&amp;lt;br /&amp;gt;&lt;br /&gt;
:loop&amp;lt;br /&amp;gt;&lt;br /&gt;
if i‹=tokens_num then pln #i$: #%token#i$$ &amp;amp;amp; i=i+1 &amp;amp;amp; goto loop else ;&amp;lt;br /&amp;gt;&lt;br /&gt;
_if not(a=«bye») then goto 0 else end&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Поиск в токенах слова «гоблин»:&amp;lt;br /&amp;gt;&lt;br /&gt;
:1&amp;lt;br /&amp;gt;&lt;br /&gt;
instr pars=.&amp;lt;br /&amp;gt;&lt;br /&gt;
input pars&amp;lt;br /&amp;gt;&lt;br /&gt;
tokens pars&amp;lt;br /&amp;gt;&lt;br /&gt;
i=1&amp;lt;br /&amp;gt;&lt;br /&gt;
:loop&amp;lt;br /&amp;gt;&lt;br /&gt;
if token#i$=«гоблин» then pln Я не гоблин! - истерически кричит урук-хай &amp;amp;amp; goto 1&amp;lt;br /&amp;gt;&lt;br /&gt;
if token#i$=«пока» then quit&amp;lt;br /&amp;gt;&lt;br /&gt;
if i‹tokens_num then i=i+1 &amp;amp;amp; goto loop&amp;lt;br /&amp;gt;&lt;br /&gt;
pln Не понимаю&amp;lt;br /&amp;gt;&lt;br /&gt;
goto 1&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Пример из 2kw, с которого все началось:&amp;lt;br /&amp;gt;&lt;br /&gt;
:0&amp;lt;br /&amp;gt;&lt;br /&gt;
instr a=&amp;lt;br /&amp;gt;&lt;br /&gt;
input a&amp;lt;br /&amp;gt;&lt;br /&gt;
if a==«*проси*гоблин*золот*» then pln гоблин: золота нет else ;&amp;lt;br /&amp;gt;&lt;br /&gt;
_if a=«bye» then quit else pln гоблин ничего не ответил&amp;lt;br /&amp;gt;&lt;br /&gt;
goto 0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Евгений&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;данный пример делает кое-что с введенной строкой.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
instr_leave_spc=1&amp;lt;br /&amp;gt;&lt;br /&gt;
instr k=&amp;lt;br /&amp;gt;&lt;br /&gt;
input k&lt;br /&gt;
&lt;br /&gt;
instr tokens_delim=char&amp;lt;br /&amp;gt;&lt;br /&gt;
tokens k&amp;lt;br /&amp;gt;&lt;br /&gt;
i=0&amp;lt;br /&amp;gt;&lt;br /&gt;
:1&amp;lt;br /&amp;gt;&lt;br /&gt;
i=i+1&amp;lt;br /&amp;gt;&lt;br /&gt;
instr z=#%z$#%token#i$$&amp;lt;br /&amp;gt;&lt;br /&gt;
if i‹=tokens_num then goto 1&amp;lt;br /&amp;gt;&lt;br /&gt;
pln #%z$&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Этот кусочек кода изменяет цвет всего фона на(в данном случае) синий.&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
clrscr=1&amp;lt;br /&amp;gt;&lt;br /&gt;
Style_DOS_TextColor=27&amp;lt;br /&amp;gt;&lt;br /&gt;
Style_DOS_FillEol=1&amp;lt;br /&amp;gt;&lt;br /&gt;
pln ##0$&amp;lt;br /&amp;gt;&lt;br /&gt;
cls&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Эффект забавен тем, что выводит подобие сосулек или чего-то подобного по рнд... Код сумбурный, недоработанный, но может кому пригодится :)&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
:0&amp;lt;br /&amp;gt;&lt;br /&gt;
old_style_dos_textcolor=style_dos_textcolor&amp;lt;br /&amp;gt;&lt;br /&gt;
style_dos_textcolor=15&amp;lt;br /&amp;gt;&lt;br /&gt;
proc эффект6/*применение эффекта*/&amp;lt;br /&amp;gt;&lt;br /&gt;
style_dos_textcolor=old_style_dos_textcolor&amp;lt;br /&amp;gt;&lt;br /&gt;
end&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:эффект6&amp;lt;br /&amp;gt;&lt;br /&gt;
clrscr=4096&amp;lt;br /&amp;gt;&lt;br /&gt;
instr_leave_spc=1&amp;lt;br /&amp;gt;&lt;br /&gt;
z=78&amp;lt;br /&amp;gt;&lt;br /&gt;
i=1&amp;lt;br /&amp;gt;&lt;br /&gt;
:эффект6_loop0&amp;lt;br /&amp;gt;&lt;br /&gt;
b#i$=i&amp;lt;br /&amp;gt;&lt;br /&gt;
if i‹z then i=i+1 &amp;amp;amp; goto эффект6_loop0&amp;lt;br /&amp;gt;&lt;br /&gt;
i=1&amp;lt;br /&amp;gt;&lt;br /&gt;
:эффект6_loop1&amp;lt;br /&amp;gt;&lt;br /&gt;
a#i$=#rnd#z$$&amp;lt;br /&amp;gt;&lt;br /&gt;
if b#a#i$$=0 then goto эффект6_loop1 else b#a#i$$=0&amp;lt;br /&amp;gt;&lt;br /&gt;
if i‹z then i=i+1 &amp;amp;amp; goto эффект6_loop1&amp;lt;br /&amp;gt;&lt;br /&gt;
i=1&amp;lt;br /&amp;gt;&lt;br /&gt;
:эффект6_loop2&amp;lt;br /&amp;gt;&lt;br /&gt;
simb#a#i$$=1&amp;lt;br /&amp;gt;&lt;br /&gt;
simb#a#i+1$$=1&amp;amp;amp;simb#a#i+2$$=1&amp;amp;amp;simb#a#i+3$$=1&amp;lt;br /&amp;gt;&lt;br /&gt;
j=1&amp;amp;amp;instr pl=;&amp;lt;br /&amp;gt;&lt;br /&gt;
:эффект6_loop3&amp;lt;br /&amp;gt;&lt;br /&gt;
if simb#j$=0 then instr pl=#%pl$##15$else instr pl=#%pl$ ;&amp;lt;br /&amp;gt;&lt;br /&gt;
if j‹z then j=j+1&amp;amp;amp;goto эффект6_loop3&amp;lt;br /&amp;gt;&lt;br /&gt;
pln #%pl$&amp;lt;br /&amp;gt;&lt;br /&gt;
if i‹z then i=i+4 &amp;amp;amp; goto эффект6_loop2&amp;lt;br /&amp;gt;&lt;br /&gt;
;if i‹z then i=i+1 &amp;amp;amp; cls&amp;amp;amp; goto эффект6_loop2&amp;lt;br /&amp;gt;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Korwin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Для начала предлагаю свою процедуру выведения времени с часами и минутами:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:common&amp;lt;br /&amp;gt;&lt;br /&gt;
m=m+rnd30 ;Каждый ход прибавляется случайное количество минут от одной до 30&amp;lt;br /&amp;gt;&lt;br /&gt;
proc minute ;Подсчитывается прибавка минут и часов&amp;lt;br /&amp;gt;&lt;br /&gt;
if h›23 then h=h-24&amp;amp;amp;d=d+1 ;Подсчитывается прибавка часов и дней&amp;lt;br /&amp;gt;&lt;br /&gt;
p #d$-й день. Время #h$:&amp;amp;amp;if m‹10 then p 0&amp;amp;amp;p #m$.#/$ else p #m$.#/$ ;Осуществляется вывод дней, часов и минут. Обратите внимание - корректно выводится количество минут, меньшее 10! Аналогично можно сделать и с часами, если нужно делать вид «электронных часов».&amp;lt;br /&amp;gt;&lt;br /&gt;
end&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:minute&amp;lt;br /&amp;gt;&lt;br /&gt;
if m›59 then h=h+1&amp;amp;amp;m=m-60&amp;lt;br /&amp;gt;&lt;br /&gt;
if m›59 then goto minute ;Если прибавили более 60 минут, то нужна проверка.&amp;lt;br /&amp;gt;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Переключение цветов.&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Чтобы не писать каждый раз: Style_Dos_TextColor=11 (лиловый, к примеру)&amp;lt;br /&amp;gt;&lt;br /&gt;
можно создать строковую переменную в которую ввести весь этот текст и вставлять ее вызов по мере необходимости в нужное место.&amp;lt;br /&amp;gt;&lt;br /&gt;
:Инициализация переменных квеста&amp;lt;br /&amp;gt;&lt;br /&gt;
...&amp;lt;br /&amp;gt;&lt;br /&gt;
instr vio=Style_Dos_TextColor=11 ;Лиловый&amp;lt;br /&amp;gt;&lt;br /&gt;
instr yel=Style_Dos_TextColor=14 ;Желтый&amp;lt;br /&amp;gt;&lt;br /&gt;
...&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:Локация желтого цвета&amp;lt;br /&amp;gt;&lt;br /&gt;
#%yel$&amp;lt;br /&amp;gt;&lt;br /&gt;
p Этот текст будет желтым &amp;amp;amp;#%vio$&amp;amp;amp;pln Этот текст будет лиловым&amp;lt;br /&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;как сделать goto в локацию, название которой только что инпут?&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;instr loc=&amp;lt;br /&amp;gt;&lt;br /&gt;
input loc&amp;lt;br /&amp;gt;&lt;br /&gt;
goto #%loc$&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WalkyTalky&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Пример получения значений косинуса и синуса угла (в градусах).&amp;lt;br /&amp;gt;&lt;br /&gt;
(только для URQ_DOS):&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:1&amp;lt;br /&amp;gt;&lt;br /&gt;
perkill&amp;lt;br /&amp;gt;&lt;br /&gt;
fp_prec=4&amp;lt;br /&amp;gt;&lt;br /&gt;
prec=0.00001&amp;lt;br /&amp;gt;&lt;br /&gt;
inval=0&amp;lt;br /&amp;gt;&lt;br /&gt;
pi=3.1415926&amp;lt;br /&amp;gt;&lt;br /&gt;
p Введите угол:&amp;lt;br /&amp;gt;&lt;br /&gt;
input inval&amp;lt;br /&amp;gt;&lt;br /&gt;
smval=#inval$&amp;lt;br /&amp;gt;&lt;br /&gt;
:too_big&amp;lt;br /&amp;gt;&lt;br /&gt;
if smval&amp;amp;gt;=360 then smval=#smval-360$ &amp;amp;amp; goto too_big&amp;lt;br /&amp;gt;&lt;br /&gt;
if smval&amp;amp;lt;=-360 then smval=#smval+360$ &amp;amp;amp; goto too_big&amp;lt;br /&amp;gt;&lt;br /&gt;
proc sinus&amp;lt;br /&amp;gt;&lt;br /&gt;
pln sin #inval$##248$ = #retval_sinus$&amp;lt;br /&amp;gt;&lt;br /&gt;
proc cosinus&amp;lt;br /&amp;gt;&lt;br /&gt;
pln cos #inval$##248$ = #retval_cosinus$&amp;lt;br /&amp;gt;&lt;br /&gt;
btn 1,Еще&amp;lt;br /&amp;gt;&lt;br /&gt;
end&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:sinus&amp;lt;br /&amp;gt;&lt;br /&gt;
x=smval&amp;lt;br /&amp;gt;&lt;br /&gt;
x=x*pi/180&amp;lt;br /&amp;gt;&lt;br /&gt;
n=1&amp;lt;br /&amp;gt;&lt;br /&gt;
u=x&amp;lt;br /&amp;gt;&lt;br /&gt;
s=x&amp;lt;br /&amp;gt;&lt;br /&gt;
if u&amp;amp;gt;=0 then abs=#u$ else abs=#-u$&amp;lt;br /&amp;gt;&lt;br /&gt;
:sinus2&amp;lt;br /&amp;gt;&lt;br /&gt;
if abs&amp;amp;gt;prec then proc trigonom_loop &amp;amp;amp; goto sinus2&amp;lt;br /&amp;gt;&lt;br /&gt;
retval_sinus=s&amp;lt;br /&amp;gt;&lt;br /&gt;
end&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:cosinus&amp;lt;br /&amp;gt;&lt;br /&gt;
x=smval&amp;lt;br /&amp;gt;&lt;br /&gt;
x=x*pi/180&amp;lt;br /&amp;gt;&lt;br /&gt;
n=0&amp;lt;br /&amp;gt;&lt;br /&gt;
u=1&amp;lt;br /&amp;gt;&lt;br /&gt;
s=1&amp;lt;br /&amp;gt;&lt;br /&gt;
if u&amp;amp;gt;=0 then abs=#u$ else abs=#-u$&amp;lt;br /&amp;gt;&lt;br /&gt;
:cosinus2&amp;lt;br /&amp;gt;&lt;br /&gt;
if abs&amp;amp;gt;prec then proc trigonom_loop &amp;amp;amp; goto cosinus2&amp;lt;br /&amp;gt;&lt;br /&gt;
retval_cosinus=s&amp;lt;br /&amp;gt;&lt;br /&gt;
end&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
:trigonom_loop&amp;lt;br /&amp;gt;&lt;br /&gt;
n=n+2&amp;lt;br /&amp;gt;&lt;br /&gt;
u=-u*x*x/((n-1)*n)&amp;lt;br /&amp;gt;&lt;br /&gt;
s=s+u&amp;lt;br /&amp;gt;&lt;br /&gt;
if u&amp;amp;gt;=0 then abs=#u$ else abs=#-u$&amp;lt;br /&amp;gt;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Goraph&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Паузы меньше секунды в урке, как известно, не работают :) Однако есть алгоритм, который позволяет их реализовывать.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
В начале квеста замеряем величину паузы длиной в секунду (лучше взять паузу побольше если вам нужна точность - пауза в 40-60 секунда обеспечит вам лучшую точность чем секундная пауза). Зачем это нужно? Просто досурка и гуи досурка возвращают разные значение времени, плюс оно может быть разным на разных компьютерах - поэтому мы вычилсляем значение для той среды, в которой мы запущены.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
t1=time&amp;lt;br /&amp;gt;&lt;br /&gt;
pause 1000&amp;lt;br /&amp;gt;&lt;br /&gt;
t2=time&amp;lt;br /&amp;gt;&lt;br /&gt;
t_etalon=(t2-t1)/1000&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
;Там где нам нужна пауза, пишем такой код - величина паузы в миллисекундах - в данном случае полсекунды&amp;lt;br /&amp;gt;&lt;br /&gt;
пауза=500 &amp;amp;amp; proc stop&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
; а вот и сама процедура, которая делает нашу паузу длинной меньше секунды&amp;lt;br /&amp;gt;&lt;br /&gt;
:stop&amp;lt;br /&amp;gt;&lt;br /&gt;
стоп_таймер=time&amp;lt;br /&amp;gt;&lt;br /&gt;
пауза=пауза*t_etalon&amp;lt;br /&amp;gt;&lt;br /&gt;
if t_etalon=0 then пауза=1&amp;lt;br /&amp;gt;&lt;br /&gt;
:stop_loop&amp;lt;br /&amp;gt;&lt;br /&gt;
if (time-стоп_таймер)‹пауза then goto stop_loop&amp;lt;br /&amp;gt;&lt;br /&gt;
end&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Данный код придуман и разработан всеми любимым Евгом. Я его лишь несколько уточнил (на этапе временного эталона).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VampirE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Вот еще удобная вещь:&lt;br /&gt;
&lt;br /&gt;
:pk&lt;br /&gt;
&lt;br /&gt;
style_dos_textcolor = style_dos_cursorcolor&lt;br /&gt;
&lt;br /&gt;
p #/$ [ НАЖМИТЕ ПРОБЕЛ ДЛЯ ПРОДОЛЖЕНИЯ ]&lt;br /&gt;
&lt;br /&gt;
style_dos_textcolor = 15&lt;br /&gt;
&lt;br /&gt;
:ak&lt;br /&gt;
&lt;br /&gt;
anykey key&lt;br /&gt;
&lt;br /&gt;
if key = 27 then pln #/$&amp;amp;amp;quit&lt;br /&gt;
&lt;br /&gt;
if key &amp;amp;lt;&amp;amp;gt; 32 then goto ak&lt;br /&gt;
&lt;br /&gt;
cls&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
При нажатии пробела происходит очистка экрана и код выполняется дальше. Код цветов можно опустить. Таким образом, где нужно, что бы пользователь нажал кнопку пишем proc pk и все. ;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Справочник по операторам и системным переменным URQ_DOS версии 1.35&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Составитель - Walky Talky, дополнения Korwin.&lt;br /&gt;
&lt;br /&gt;
Внимание: символы &amp;amp;lt;.[...].&amp;amp;gt; написаны для более легкого понимания текста и файле их нет, причем символы [ ] используются для обозначения текста, который можно опустить. Пример:&lt;br /&gt;
&lt;br /&gt;
print &amp;amp;lt;строка&amp;amp;gt; - напечатает просто строка&lt;br /&gt;
&lt;br /&gt;
Внимание: параметры операторов разделены запятыми, то есть в качестве параметра берется строка от пробела после оператора до запятой, не включительно, а в качестве второго параметра от запятой до конца, кроме последнего пробела. Исключение: &amp;amp;quot;if&amp;amp;quot; имеет особый формат. Пример:&lt;br /&gt;
&lt;br /&gt;
btn странная пещера, Войти в странную пещеру, затаиться, и прислушаться.&lt;br /&gt;
&lt;br /&gt;
0) /* Это длинный&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;многострочный&lt;br /&gt;
&lt;br /&gt;
комментарий*/&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
; Это комментарий в одну строку&lt;br /&gt;
&lt;br /&gt;
_ в начале строки означает, что она является продолжением предыдущей. Перед&lt;br /&gt;
&lt;br /&gt;
_ допустимы пробелы и табуляции.&lt;br /&gt;
&lt;br /&gt;
1). &amp;amp;quot;&#039;&#039;&#039;:&#039;&#039;&#039;&amp;amp;quot; - символ начала локации. * Регистр переменных, предметов, меток и операторов никакой роли не играет. Но мы вам не рекомендуем использовать переменные и предметы инвентаря с пробелами.&lt;br /&gt;
&lt;br /&gt;
Использование: :имя_локации&lt;br /&gt;
&lt;br /&gt;
Пример: :локация&lt;br /&gt;
&lt;br /&gt;
Примечание: Регистр переменных, предметов, меток и операторов никакой роли не играет. Но мы вам не рекомендуем использовать переменные и предметы инвентаря с пробелами.&lt;br /&gt;
&lt;br /&gt;
2). &amp;amp;quot;&#039;&#039;&#039;end&#039;&#039;&#039;&amp;amp;quot; - символ конца локации.&lt;br /&gt;
&lt;br /&gt;
Использование: так и используется, на отдельной строке.&lt;br /&gt;
&lt;br /&gt;
Пример: -&lt;br /&gt;
&lt;br /&gt;
3). &amp;amp;quot;&#039;&#039;&#039;p&#039;&#039;&#039;&amp;amp;quot; - печатает указанную строку на экране.&lt;br /&gt;
&lt;br /&gt;
Использование: p строка&lt;br /&gt;
&lt;br /&gt;
Пример: p Напечатанная строка&lt;br /&gt;
&lt;br /&gt;
Примечание: Для оператора &#039;&#039;&#039;p&#039;&#039;&#039; есть аналог - оператор &#039;&#039;&#039;print&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
4). &amp;amp;quot;&#039;&#039;&#039;pln&#039;&#039;&#039;&amp;amp;quot; - печатает на экране текст, после него&lt;br /&gt;
&lt;br /&gt;
всегда (даже если строка и пустая) ставит&lt;br /&gt;
&lt;br /&gt;
символ перевода строки.&lt;br /&gt;
&lt;br /&gt;
Пример: pln Програмист - узник замка If.&lt;br /&gt;
&lt;br /&gt;
Примечание: Для оператора &#039;&#039;&#039;pln&#039;&#039;&#039; существует аналог - &#039;&#039;&#039;println&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Исключение: символы &amp;amp;quot;#&amp;amp;lt;выражение&amp;amp;gt;$&amp;amp;quot; заменяются на значение этого выражения&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
p У тебя #money+10$ монет напечатает &amp;amp;quot;У тебя 110 монет&amp;amp;quot;, если money=100.&lt;br /&gt;
&lt;br /&gt;
Примечание: если длина введенного текста превышает размер страницы, то вывод приостанавливатеся, появляется надпись «дальше» и интерпретатор ожидает нажатия любой клавиши.&lt;br /&gt;
&lt;br /&gt;
5). &amp;amp;quot;&#039;&#039;&#039;btn &amp;amp;lt;локация&amp;amp;gt;,&amp;amp;lt;надпись&amp;amp;gt;&#039;&#039;&#039;&amp;amp;quot; - создает кнопку для выбора вариантов действия с надписью на ней &amp;amp;lt;надпись&amp;amp;gt;, при клике на ней будет осуществлен переход на локацию &amp;amp;quot;Common&amp;amp;quot; (если такая есть), потом (когда встретиться &amp;amp;quot;end&amp;amp;quot;) на &amp;amp;lt;локация&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Использование: btn имя локации,надпись на кнопке&lt;br /&gt;
&lt;br /&gt;
Пример: btn tower,Взобраться на башню&lt;br /&gt;
&lt;br /&gt;
Примечание: для URQ_DOS существует ограничитель длины надписи на кнопке - 79 символов. В имени локации и названии кнопки допустимо применение #$, #числовая_переменная$, #%строковая_переменная$, ##код$.&lt;br /&gt;
&lt;br /&gt;
6). &amp;amp;quot;&#039;&#039;&#039;inv+&#039;&#039;&#039;&amp;amp;quot; Добавляет в инвентарь предмет(ы).&lt;br /&gt;
&lt;br /&gt;
Использование: inv+ [кол-во], Название предмет[a](ов)&lt;br /&gt;
&lt;br /&gt;
Пример: inv+ 5,Сапог&lt;br /&gt;
&lt;br /&gt;
Примечание: Не обязательно указывать количество предметов для добавления - если не указано, добавляется 1 предмет. Проверяется, что кол-во предметов положительно, то есть если было 15 Рип и&lt;br /&gt;
&lt;br /&gt;
&amp;amp;quot;inv+ -20,Рип&amp;amp;quot; то Рип исчезнет из инвентаря.&lt;br /&gt;
&lt;br /&gt;
7). &amp;amp;quot;&#039;&#039;&#039;inv-&#039;&#039;&#039;&amp;amp;quot; Удалаяет предмет(ы) из инветаря.&lt;br /&gt;
&lt;br /&gt;
Использование: inv- [кол-во], Название предмет[a](ов)&lt;br /&gt;
&lt;br /&gt;
Примечание: Не обязательно указывать количество предметов для добавления - если не указано, добавляется 1 предмет. Проверяется, что кол-во предметов положительно, то есть если было 15 Рип и &amp;amp;quot;inv-20,Рип&amp;amp;quot; то Рип исчезнет из инвентаря.&lt;br /&gt;
&lt;br /&gt;
8). &amp;amp;quot;&#039;&#039;&#039;inv_&#039;&#039;&#039;&amp;amp;quot; Устанавливает и возвращает количество предметов с заданным названием в инвентаре.&lt;br /&gt;
&lt;br /&gt;
Использование: inv_НазваниеПредметов&lt;br /&gt;
&lt;br /&gt;
Пример: slonov=inv_Слонов&lt;br /&gt;
&lt;br /&gt;
inv_Слонов=5&lt;br /&gt;
&lt;br /&gt;
9). &amp;amp;quot;&#039;&#039;&#039;invkill&#039;&#039;&#039;&amp;amp;quot; – без параметров удаляет все предметы из инвентаря.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invkill предмет&#039;&#039;&#039; - удаляет «предмет» из инвентаря.&lt;br /&gt;
&lt;br /&gt;
Удобно использовать в паре с оператором perkill в начале квеста для очищения памяти.&lt;br /&gt;
&lt;br /&gt;
10). &amp;amp;quot;&#039;&#039;&#039;perkill&#039;&#039;&#039;&amp;amp;quot; - уничтожает все переменные.&lt;br /&gt;
&lt;br /&gt;
Примечание: Используется без параметров. Удобно использовать в паре с оператором invkill в начале квеста для очищения памяти.&lt;br /&gt;
&lt;br /&gt;
11). &amp;amp;quot;&#039;&#039;&#039;if&#039;&#039;&#039; условие &#039;&#039;&#039;then&#039;&#039;&#039; оператор&amp;amp;amp;оператор &#039;&#039;&#039;else&#039;&#039;&#039; оператор&amp;amp;amp;оператор&amp;amp;quot; - условная конструкция.&lt;br /&gt;
&lt;br /&gt;
Использование: &#039;&#039;&#039;if&#039;&#039;&#039; условие &#039;&#039;&#039;then&#039;&#039;&#039; операторы или&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;if&#039;&#039;&#039; условие &#039;&#039;&#039;then&#039;&#039;&#039; операторы &#039;&#039;&#039;else&#039;&#039;&#039; операторы&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Пример: if inv_Спичек=50 then btn buildHouse, Построить домик из спичек&lt;br /&gt;
&lt;br /&gt;
Примечание 1: Можно делать сложную конструкцию, используя &amp;amp;amp;, and, or, not и скобки. Допустимость любой степени вложенности if&#039;ов сохраняется, else всегда соответствует последнему незакрытому then&#039;у.&lt;br /&gt;
&lt;br /&gt;
12). &amp;amp;quot;&#039;&#039;&#039;proc &amp;amp;lt;&#039;&#039;&#039;метка&amp;amp;gt; &amp;amp;quot;- передает управление на метку &amp;amp;lt;метка&amp;amp;gt;, то есть инструкции квеста выполняются с метки &amp;amp;lt;метка&amp;amp;gt;, но когда встречается &amp;amp;quot;end&amp;amp;quot; возвращает управление обратно, оператору, следующему за proc, при условии, что не было оператора forget_procs. &#039;&#039;&#039;(forget_procs&#039;&#039;&#039; - &amp;amp;quot;забывает&amp;amp;quot; все переходы по процедурам.) Допустима вложенность.&lt;br /&gt;
&lt;br /&gt;
Использование: proc имя_локации&lt;br /&gt;
&lt;br /&gt;
Пример: proc tower&lt;br /&gt;
&lt;br /&gt;
Примечание: при proc - common не выполняется&lt;br /&gt;
&lt;br /&gt;
13). &amp;amp;quot;&#039;&#039;&#039;goto&#039;&#039;&#039;&amp;amp;quot; - переходит на указанную локацию, но не возвращается обратно.&lt;br /&gt;
&lt;br /&gt;
Использование: goto имя_локации&lt;br /&gt;
&lt;br /&gt;
Пример: goto tower&lt;br /&gt;
&lt;br /&gt;
Примечание: В отличие от WinURQ, в urq_dos - не выполняется заход на локацию common. При отсутствии метки &amp;amp;lt;метка&amp;amp;gt; - goto игнорируется.&lt;br /&gt;
&lt;br /&gt;
14). &amp;amp;quot;&#039;&#039;&#039;save&#039;&#039;&#039;&amp;amp;quot; - оператор, сохраняющий в файл вида имя_квеста.qsv текущие значения переменных&lt;br /&gt;
&lt;br /&gt;
и предметы инвентаря, чтобы потом можно было этот квест с сохраненного места продолжить.&lt;br /&gt;
&lt;br /&gt;
Использование: save локация_для_восстановления&lt;br /&gt;
&lt;br /&gt;
Пример: save tower&lt;br /&gt;
&lt;br /&gt;
15). &amp;amp;quot;&#039;&#039;&#039;input&#039;&#039;&#039;&amp;amp;quot; - просит пользователя ввести строку, значение которой будет потом присвоено указанной&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;переменной. При необходимости ввести с клавиатуры русский текст через оператор input в строковую переменную ее следует предварительно объявить выражением:&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
instr строка= ; Данное выражение создает строковую переменную нулевой длины.&lt;br /&gt;
&lt;br /&gt;
Input строка&lt;br /&gt;
&lt;br /&gt;
Использование input для ввода числовой переменной:&lt;br /&gt;
&lt;br /&gt;
input переменная_для_записи_числа&lt;br /&gt;
&lt;br /&gt;
Пример: input x&lt;br /&gt;
&lt;br /&gt;
16). &amp;amp;quot;&#039;&#039;&#039;instr&#039;&#039;&#039;&amp;amp;quot; – создает текстовую переменную и присваивает ей значение.&lt;br /&gt;
&lt;br /&gt;
Использование: instr имя_переменной=значение&lt;br /&gt;
&lt;br /&gt;
Пример: Instr time=время - 17:42&lt;br /&gt;
&lt;br /&gt;
Instr pusto= ;В этом случае значение текстовой переменной равно пустой строке.&lt;br /&gt;
&lt;br /&gt;
17). &amp;amp;quot;&#039;&#039;&#039;#переменная$&#039;&#039;&#039;&amp;amp;quot; - вставляет значение числовой переменной.&lt;br /&gt;
&lt;br /&gt;
Использование: Обычно так и используется.&lt;br /&gt;
&lt;br /&gt;
Пример: x=5&lt;br /&gt;
&lt;br /&gt;
pln #x$&lt;br /&gt;
&lt;br /&gt;
goto b#x$&lt;br /&gt;
&lt;br /&gt;
btn b#x$,Неизвестная локация&lt;br /&gt;
&lt;br /&gt;
18). &#039;&#039;&#039;#%переменная$&#039;&#039;&#039; - вставляет значение строковой переменой.&lt;br /&gt;
&lt;br /&gt;
Использование: Обычно так и используется.&lt;br /&gt;
&lt;br /&gt;
Пример: instr x=loc&lt;br /&gt;
&lt;br /&gt;
pln #%x$&lt;br /&gt;
&lt;br /&gt;
goto b#%x$&lt;br /&gt;
&lt;br /&gt;
btn b#%x$,Неизвестная локация&lt;br /&gt;
&lt;br /&gt;
19). &amp;amp;quot;&#039;&#039;&#039;pause&#039;&#039;&#039;&amp;amp;quot; - оставливает выполнение квеста на указанное в операторе количество милисекунд.&lt;br /&gt;
&lt;br /&gt;
Использование: &#039;&#039;&#039;pause &amp;amp;lt;время&amp;amp;gt;&#039;&#039;&#039; - прекращение выполнения инструкций на &amp;amp;lt;время&amp;amp;gt; в милисекундах, причем пользователь в это время может выбирать варианты с помощью кнопок выбора и квест будет работать дальше, но по истечении &amp;amp;lt;время&amp;amp;gt; выполнение квеста продолжиться, одновременно двух работающих &amp;amp;quot;pause&amp;amp;quot; не может быть, новая затирает старую - движок о ней &amp;amp;quot;забывает&amp;amp;quot;, забывает также он о паузе при нажатии кнопки действия.&lt;br /&gt;
&lt;br /&gt;
Пример: pause 1000&lt;br /&gt;
&lt;br /&gt;
Примечание: В URQ_DOS интервал задержек пока не может быть меньше 1 секунды (связано с BIOS).&lt;br /&gt;
&lt;br /&gt;
В URQ ограничений нет.&lt;br /&gt;
&lt;br /&gt;
20). &amp;amp;quot;&#039;&#039;&#039;music&#039;&#039;&#039;&amp;amp;quot; - проигрывает циклично .mid файл.&lt;br /&gt;
&lt;br /&gt;
Прогрывает только те файлы, в которых имя состоит лишь из цифр, например – 65.&lt;br /&gt;
&lt;br /&gt;
Использование: music имя_файла_в_директории_квеста&lt;br /&gt;
&lt;br /&gt;
Пример: music 17&lt;br /&gt;
&lt;br /&gt;
Примечание: Конструкция не работает в URQ_DOS. (Не wcl!)&lt;br /&gt;
&lt;br /&gt;
21). &amp;amp;quot;&#039;&#039;&#039;play&#039;&#039;&#039;&amp;amp;quot; - проигрывет однократно файл в формате .wav&lt;br /&gt;
&lt;br /&gt;
В URQ gроигрывает только те файлы, в которых имя состоит лишь из цифр, например - 580.&lt;br /&gt;
&lt;br /&gt;
В URQ_WCL – и файлы с именем в виде строки.&lt;br /&gt;
&lt;br /&gt;
Использование: play имя_файла_в_директории_квеста&lt;br /&gt;
&lt;br /&gt;
Пример: play 2051&lt;br /&gt;
&lt;br /&gt;
Примечание: Конструкция не работает в URQ_DOS. (Не wcl!)&lt;br /&gt;
&lt;br /&gt;
22). &amp;amp;quot;&#039;&#039;&#039;rnd&#039;&#039;&#039;&amp;amp;quot; - генерирует случайное число от 0 до 1, не&lt;br /&gt;
&lt;br /&gt;
включая 1, т.е. от 0 до 0(9). &#039;&#039;&#039;Rnd7&#039;&#039;&#039; дает целые случайные числа от 1 до 7, Rnd1245 – от 1 до 1245&lt;br /&gt;
&lt;br /&gt;
Использование: Можно присвоить переменной, можно вывести в текст, создать кнопку, переход и т.п.&lt;br /&gt;
&lt;br /&gt;
Пример: x=rnd&lt;br /&gt;
&lt;br /&gt;
pln #rnd$&lt;br /&gt;
&lt;br /&gt;
btn #rnd$,Случайная локация.&lt;br /&gt;
&lt;br /&gt;
Примечание: Можно организовать диапазон не до 0(9), а, например, до 10: x=rnd*10. Допустимо использовать Rnd#числовая_переменная$&lt;br /&gt;
&lt;br /&gt;
23). &amp;amp;quot;&#039;&#039;&#039;cls&#039;&#039;&#039;&amp;amp;quot; - очищает экран ото всяческой информации.&lt;br /&gt;
&lt;br /&gt;
Использование: Так и используется.&lt;br /&gt;
&lt;br /&gt;
Примечание: В URQ_DOS есть переменная clrscr, которая&lt;br /&gt;
&lt;br /&gt;
может принимать значения 0 и 1. Если 0 - то очищается&lt;br /&gt;
&lt;br /&gt;
только тест текущей локации, если 1 - то очищается&lt;br /&gt;
&lt;br /&gt;
ВСЕ на экране.&lt;br /&gt;
&lt;br /&gt;
Пример: clrscr=1&lt;br /&gt;
&lt;br /&gt;
cls&lt;br /&gt;
&lt;br /&gt;
24). &amp;amp;quot;&#039;&#039;&#039;&amp;amp;amp;&#039;&#039;&#039;&amp;amp;quot; - конкатекация, aka объединение команд.&lt;br /&gt;
&lt;br /&gt;
Использование: команда1 &amp;amp;amp; команда2 ... &amp;amp;amp; командаN&lt;br /&gt;
&lt;br /&gt;
Пример: pause=1000 &amp;amp;amp; pln Текст &amp;amp;amp; clrscr=0&lt;br /&gt;
&lt;br /&gt;
25). &amp;amp;quot;&#039;&#039;&#039;and&#039;&#039;&#039;&amp;amp;quot; - логическое &amp;amp;quot;и&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Использование: В основном, в условных конструкциях.&lt;br /&gt;
&lt;br /&gt;
Пример: If inv_Slon=5 and inv_Mouse=2 then btn scare, Шугануть слонов мышами&lt;br /&gt;
&lt;br /&gt;
26). &amp;amp;quot;&#039;&#039;&#039;or&#039;&#039;&#039;&amp;amp;quot; - логическое &amp;amp;quot;или&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Использование: В основном, в условных конструкциях.&lt;br /&gt;
&lt;br /&gt;
Пример: if Inv_Slon=1 or inv_Mouse=1 then btn zoo,Да у тебя тут зоопарк!&lt;br /&gt;
&lt;br /&gt;
27). &amp;amp;quot;&#039;&#039;&#039;not&#039;&#039;&#039;&amp;amp;quot; - логическое &amp;amp;quot;нет&amp;amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Использование: В основном, в условных конструкциях.&lt;br /&gt;
&lt;br /&gt;
Пример: if not Coca-Cola then btn coca-cola,Купить&lt;br /&gt;
&lt;br /&gt;
&amp;amp;quot;Кока-Колу&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
28). &amp;amp;quot;&#039;&#039;&#039;count_&#039;&#039;&#039;&amp;amp;quot; - подсчет заходов на указанную локацию.&lt;br /&gt;
&lt;br /&gt;
Использование: count_имя локации&lt;br /&gt;
&lt;br /&gt;
Пример: x=count_tower&lt;br /&gt;
&lt;br /&gt;
29) &amp;amp;quot;&#039;&#039;&#039;quit&#039;&#039;&#039;&amp;amp;quot; - оператор немедленного выхода из квеста.&lt;br /&gt;
&lt;br /&gt;
28) &#039;&#039;&#039;&amp;amp;quot;tokens&amp;amp;quot;&#039;&#039;&#039; - разложение строки на «токены», то есть куски текста, отделенные друг от друга разделителями.&lt;br /&gt;
&lt;br /&gt;
Применение: tokens &amp;amp;lt;стр. перем&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат: числовая переменная tokens_num содержит количество токенов (например, слов в предложении), строковые переменные token1, token2 ... token# tokens_num$ содержат сами токены (например, слова). См. стр. сист. перем. tokens_delim&lt;br /&gt;
&lt;br /&gt;
29) &#039;&#039;&#039;&amp;amp;quot;anykey &amp;amp;lt;переменная&amp;amp;gt;&amp;amp;quot; –&#039;&#039;&#039; оператор приостанавливает работу интерпретатора до нажатия произвольной клавиши, заносит код клавиши в переменную.&lt;br /&gt;
&lt;br /&gt;
30) &#039;&#039;&#039;&amp;amp;quot;include&#039;&#039;&#039; &amp;amp;quot;имя файла&amp;amp;quot; - до выполнения в код вместо этой строки вставляется содержимое указанного файла. Позволяет создавать многофайловые квесты.&lt;br /&gt;
&lt;br /&gt;
31) &#039;&#039;&#039;&amp;amp;quot;==&amp;amp;quot; (два знака равно)&#039;&#039;&#039; – оператор неточного сравнения. Дает истину при сравнении строковой переменной со строкой по правилам сравнения регулярных выражений, т.е. с учетом * и ?&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
Instr фраза=&lt;br /&gt;
&lt;br /&gt;
Input фраза&lt;br /&gt;
&lt;br /&gt;
If фраза==&amp;amp;quot;*парол*&amp;amp;quot; then p Проходи! else p Стоять, руки вверх!&lt;br /&gt;
&lt;br /&gt;
Введенные фразы «Пароль!», «Я знаю пароль!», «Никто не знает пароль» - дадут ответ «Проходи!»&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Системные переменные:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rnd&#039;&#039;&#039; - вещественное случайное число от 0 до 1, меняется при каждом вызове.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rnd[Num]&#039;&#039;&#039; - целое случайное число от 1 до Num, меняется при каждом вызове.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Music&#039;&#039;&#039; - имя фоновой музыки вроде &amp;amp;quot;104.mid&amp;amp;quot; причем проигрываются только Midi файлы.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Common&#039;&#039;&#039; - номер действующей локации Common, если переменная Common=12, то вызывается по btn-переходу Common_12. При Common=0 вызов вызывается просто &amp;amp;quot;Common&amp;amp;quot; (то есть вместо локации :Common используется :Common_номер)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instr_leave_spc&#039;&#039;&#039; - если отлична от нуля, то в instr-присваиваниях сохраняются пробелы, иначе нет&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Urq_delay&#039;&#039;&#039; - та самая задержка при выводе строк. Напомню, что после вывода каждой строки на экран теперь делается задержка некоторого количества миллисекунд. По умолчанию это количество равно 10, а переопределить его можно, установив URQ_DELAY [пример: set URQ_DELAY=0]. Если [как в этом примере] установить значение 0, то вывод текста будет происходить как раньше.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Urq_coding&#039;&#039;&#039; если установить значение DOS [SET URQ_CODING=DOS], то кодировка квестов будет по умолчанию DOS&#039;овской&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Style_dos_textcolor&#039;&#039;&#039; - цвет текста, по умолчанию 7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Style_dos_cursorcolor –&#039;&#039;&#039; цвет курсора, по умолчанию 112 (инвертированный)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Style_dos_buttoncolor&#039;&#039;&#039; – цвет «кнопок», по умолчанию 15&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Style_DOS_FillEol -&#039;&#039;&#039; ха&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;current_loc&#039;&#039;&#039; и &#039;&#039;&#039;previous_loc&#039;&#039;&#039; (строковые системные переменные) хранят имена соответственно текущей и предыдущей посещенной локаций. &#039;&#039;&#039;previous_loc&#039;&#039;&#039; удобно использовать для сохранения игры из любой локации при помощи действия типа use_inv_Запись. Для первой локации &#039;&#039;&#039;previous_loc&#039;&#039;&#039; равна ее имени (чтобы сохранение работало и для нее). &#039;&#039;&#039;current_loc&#039;&#039;&#039; и &#039;&#039;&#039;previous_loc&#039;&#039;&#039; теперь меняются только при btn-переходах.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clrscr=&#039;&#039;&#039;0: cls работает как прежде, очищая текст одной локации;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clrscr=&#039;&#039;&#039;1: cls очищает весь экран, переводя курсор в левый верхний угол;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Clrscr=&#039;&#039;&#039;4096 только переводит курсор, без очистки экрана – полезно для текстовой анимации.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;hide_phantoms&#039;&#039;&#039;=0 – показывает кнопки ведущие в «никуда» с пометкой «phantom»&#039;&#039;&#039;,&#039;&#039;&#039; hide_phantoms=1 – не показывает такие кнопки.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;last_btn_caption&#039;&#039;&#039; – строковая переменная, которая содержит название последней выбранной кнопки.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fp_prec&#039;&#039;&#039; – числовая переменная, которая содержит точность вычислений, число знаков после запятой в #$ и инвентаре. По умолчанию 2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;tokens_delim –&#039;&#039;&#039; строковая переменная, содержащая список символов, являющихся разделителями (по умолчанию пробел, запятая, кавычки, вопрос, восклицательный знак. Если в tokens_delim строка char (возможно, будет изменена), то tokens s разбивает s на отдельные символы.&lt;br /&gt;
&lt;br /&gt;
Если кто-то заметит неточности или пожелает внести добавления в этот документ, прошу сообщить мне на [mailto:tightbow@yandex.ru tightbow@yandex.ru]&lt;br /&gt;
&lt;br /&gt;
С уважением, Korwin.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Документация URQ_DOS]]&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
	<entry>
		<id>https://ifwiki.ru/index.php?title=%D0%9E%D0%B4%D0%BD%D0%B0%D0%B6%D0%B4%D1%8B_%D0%BD%D0%B0_%D1%84%D0%B5%D1%80%D0%BC%D0%B5&amp;diff=36505</id>
		<title>Однажды на ферме</title>
		<link rel="alternate" type="text/html" href="https://ifwiki.ru/index.php?title=%D0%9E%D0%B4%D0%BD%D0%B0%D0%B6%D0%B4%D1%8B_%D0%BD%D0%B0_%D1%84%D0%B5%D1%80%D0%BC%D0%B5&amp;diff=36505"/>
		<updated>2026-10-03T12:59:36Z</updated>

		<summary type="html">&lt;p&gt;Nikita: Отмена версии 35403, сделанной Loengrin (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{game info&lt;br /&gt;
 |название=Однажды на ферме&lt;br /&gt;
 |обложка=TheFarm.png&lt;br /&gt;
 |автор=[[Автор::Кривчиков, Владислав]]&lt;br /&gt;
 |вышла=08.10.2023&lt;br /&gt;
 |платформа=Twine&lt;br /&gt;
 |язык=русский&lt;br /&gt;
 |темы=Драма, Историческое, Профессии&lt;br /&gt;
 |IFID=F9D243DD-F060-4F0D-BD8A-42F515F25D7B&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Как всё начинается ==&lt;br /&gt;
Исполнительный и ответственный работник в имении крупного землевладельца проворачивает махинацию, благодаря которой наживает себе приличный капитал. Денег достаточно, чтобы рискнуть и замахнуться на собственное предприятие: арендовать землю, нанять людей и переехать с семьёй на новое место. И хотя удалось от землевладельца получить отсрочку платежа и возможность стать самостоятельным и успешным фермером, грядут события, которые лягут нелёгким испытанием на плечи новоиспечённого фермера. Удастся ли ему уберечь семью и своих рабочих от несчастий? С чем и с кем он дойдёт до конца?&lt;br /&gt;
&lt;br /&gt;
== Особенности ==&lt;br /&gt;
* Высокая вариативность: каждое прохождение станет неповторимым;&lt;br /&gt;
&#039;&#039;Каждое событие имеет, в среднем, 4 решения, а также положительный и отрицательный исход&#039;&#039;&lt;br /&gt;
* На исход каждого события влияет непосредственный выбор, прошлые действия или бездействия, а также случайность;&lt;br /&gt;
&#039;&#039;Это касается и развязки истории&#039;&#039;&lt;br /&gt;
* Все жители фермы обращают внимание на то, с кем герой советуется и чьим советам следует. Игнорирование тоже не останется незамеченным;&lt;br /&gt;
* Все жители фермы могут уйти из фермы или умереть во время истории: никто не исключение;&lt;br /&gt;
* В игре нельзя проиграть&lt;br /&gt;
&lt;br /&gt;
==Файлы==&lt;br /&gt;
Играть: [[Файл: TheFarm.rar]]&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* Страница игры на itch.io: https://vladislav-k.itch.io/thefarm&lt;/div&gt;</summary>
		<author><name>Nikita</name></author>
	</entry>
</feed>