Список изменений и нововведений QSP5: 1) Возможность использования HTML в описании локации, в дополнительном описании, в списках действий и предметов, а также в диалоге ввода текста, вызываемого функцией $INPUT. Выводимый текст распознается как HTML в том случае, если значение системной переменной USEHTML отлично от 0. Список поддерживаемых тегов и их атрибутов смотрите в приложении. 2) Новая системная переменная $BACKIMAGE, хранящая путь к файлу изображения локации. Изображение локации показывается в том случае, если значение данной переменной отлично от '' (пусто). 3) Шаблоны строк для функции STRCOMP заменены регулярными выражениями. Подробности смотрите в приложении. 4) Для оператора PLAY расширен синтаксис, и теперь существует возможность задать громкость проигрывания. Новый синтаксис PLAY [$выражение], где [$выражение] имеет вид "путь_к_файлу:громкость". Если громкость не указана, то она принимается равной 100%, т.е. как и раньше. Громкость задается числом от 0 до 100. Примеры: PLAY 'sound/music.mp3' - проигрывает файл с громкостью 100% PLAY 'sound/music.mp3:50' - проигрывает файл в половину возможной громкости PLAY 'sound/music.mp3:0' - проигрывает файл с громкостью 0% (нет звука) PLAY '<<$file>>:<>' - проигрывает файл, имя которого хранится в $file с громкостью, значение которой задано в volume Если файл уже проигрывается, то изменяется громкость звучания без его "перезапуска". Поддерживаются форматы WAV, MID, MP3, OGG (одновременное звучание до 32-х композиций). 5) Для пользовательских меню (оператор MENU) расширен синтаксис записи пунктов меню. Если раньше он был "название_пункта:название_локации", то теперь это "название_пункта:название_локации:путь_к_файлу_иконки". Если путь к файлу иконки не указан, то пункт отображается без иконки. Пример: $usr_menu[0] = 'Взять предмет:take_item' & ! нет иконки ("старый формат") $usr_menu[1] = 'Положить предмет:put_item:images/put_item.gif' & ! иконка задана gif-файлом $usr_menu[2] = 'Осмотреть предмет:look_item:<<$icon_file>>' & ! иконка задана значением $icon_file $usr_menu[3] = '<<$name>>:<<$loc>>:<<$file>>' & ! пункт меню задан 3-мя переменными menu 'usr_menu' - покажет меню из 4-х пунктов 6) Поддержка анимированных GIF-файлов для изображения локации ($BACKIMAGE), для оператора VIEW, а также в основном и дополнительном описаниях локации. 7) Добавлены операторы скрытия / показа окон списка предметов, действий, дополнительного описания, строки ввода. Операторы: SHOWACTS [числовое выражение] - для списка действий SHOWINPUT [числовое выражение] - для строки ввода SHOWOBJS [числовое выражение] - для списка предметов SHOWSTAT [числовое выражение] - для дополнительного описания Если [числовое выражение] отлично от 0, то соответствующее окно показывается, иначе - скрывается. Примеры: SHOWACTS 1 - показывает список действий SHOWACTS 0 - скрывает список действий SHOWINPUT 0 - скрывает строку ввода SHOWSTAT 1 - показывает дополнительное описание SHOWINPUT 1 - показывает строку ввода 8) Удален оператор CMD. 9) Удален оператор FIGHTING и соответствующие ему системные переменные. 10) Удалены операторы SAVE и NOSAVE. Вместо них добавлена системная переменная NOSAVE. Если ее значение отлично от 0, то сохранение состояния игры пользователем невозможно. 11) (с версии 5.0.4) Изменен алгоритм поиска подвыражений (<< ... >>). Теперь поиск осуществляется также внутри скобок и кавычек. К примеру, если раньше значение выражения '(<<3+5>>)' определялось как строка "(<<3+5>>)", то сейчас оно вычисляется как строка "(8)". Обработка подвыражений блокируется / разрешается, как и прежде, с помощью переменной DISABLESUBEX. PS: Выше перечислены лишь основные изменения движка относительно версии QSP3. -------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------- Приложения: 1) Поддерживаемые HTML теги и их атрибуты (для более подробной информации смотрите справочники по HTML): A NAME=[строка] HREF=[ссылка] --------------------------------------------------------------- ADDRESS --------------------------------------------------------------- AREA SHAPE=POLY SHAPE=CIRCLE SHAPE=RECT COORDS=[координаты] HREF=[ссылка] --------------------------------------------------------------- B --------------------------------------------------------------- BIG --------------------------------------------------------------- BLOCKQUOTE --------------------------------------------------------------- BR ALIGN=[выравнивание] --------------------------------------------------------------- CENTER --------------------------------------------------------------- CITE --------------------------------------------------------------- CODE --------------------------------------------------------------- DD --------------------------------------------------------------- DIV ALIGN=[выравнивание] --------------------------------------------------------------- DL --------------------------------------------------------------- DT --------------------------------------------------------------- EM --------------------------------------------------------------- FONT COLOR=[цвет] SIZE=[размер шрифта от -2 до 4] FACE=[список названий шрифтов, разделенных запятыми] --------------------------------------------------------------- HR ALIGN=[выравнивание] SIZE=[пиксели] WIDTH=[проценты|пиксели] NOSHADE --------------------------------------------------------------- H1 --------------------------------------------------------------- H2 --------------------------------------------------------------- H3 --------------------------------------------------------------- H4 --------------------------------------------------------------- H5 --------------------------------------------------------------- H6 --------------------------------------------------------------- I --------------------------------------------------------------- IMG SRC=[ссылка] WIDTH=[пиксели] HEIGHT=[пиксели] ALIGN=TEXTTOP ALIGN=CENTER ALIGN=ABSCENTER ALIGN=BOTTOM USEMAP=[ссылка] --------------------------------------------------------------- KBD --------------------------------------------------------------- LI --------------------------------------------------------------- MAP NAME=[строка] --------------------------------------------------------------- OL --------------------------------------------------------------- P ALIGN=[выравнивание] --------------------------------------------------------------- PRE --------------------------------------------------------------- SAMP --------------------------------------------------------------- SMALL --------------------------------------------------------------- STRIKE --------------------------------------------------------------- STRONG --------------------------------------------------------------- TABLE ALIGN=[выравнивание] WIDTH=[проценты|пиксели] BORDER=[пиксели] VALIGN=[выравнивание] BGCOLOR=[цвет] CELLSPACING=[пиксели] CELLPADDING=[пиксели] --------------------------------------------------------------- TD ALIGN=[выравнивание] VALIGN=[выравнивание] BGCOLOR=[цвет] WIDTH=[проценты|пиксели] COLSPAN=[количество] ROWSPAN=[количество] NOWRAP --------------------------------------------------------------- TH ALIGN=[выравнивание] VALIGN=[выравнивание] BGCOLOR=[цвет] WIDTH=[проценты|пиксели] COLSPAN=[количество] ROWSPAN=[количество] --------------------------------------------------------------- TR ALIGN=[выравнивание] VALIGN=[выравнивание] BGCOLOR=[цвет] --------------------------------------------------------------- TT --------------------------------------------------------------- U --------------------------------------------------------------- UL --------------------------------------------------------------- 2) Допустимые операции при записи регулярных выражений (для более подробной информации смотрите помощь по регулярным выражениям): Метасимволы: \ Экранирующий символ ^ Соответствует началу строки . Соответствует любому символу $ Соответствует концу строки | Выбор из альтернатив () Группировка [] Класс символа Квантификаторы: * 0 или более вхождений + 1 или более вхождений ? 0 или 1 вхождение {n} n вхождений {n,} Как минимум n вхождений {n,m} От n до m вхождений Спецсимволы: \t Табуляция \n Перевод строки \r Возврат каретки \f Разрыв страницы Предопределенные классы символов: \l Символ в нижнем регистре \u Символ в верхнем регистре \a Буква \A Не буква \w Буква или цифра \W Не буква и не цифра \s Пробельный символ \S Не пробельный символ \d Цифра \D Не цифра \x Шестнадцатеричная цифра \X Не шестнадцатеричная цифра \c Управляющий символ \C Не управляющий символ \p Знак препинания \P Не знак препинания