Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

13.4. Пытаюсь сделать кликабельную картинку с помощью тегов `MAP` и `AREA`, но ничего не получается

В: Пытаюсь сделать кликабельную картинку с помощью тегов `MAP` и `AREA`, но ничего не получается.

Не выводится картинка, не работает область клика, область клика смещена.

О:

Чтобы ответить на этот вопрос, пойдём по порядку.

Во-первых, в вашей игре должна быть включена поддержка HTML, иначе вместо картинки вы увидите много HTML-тегов. Поддержку HTML включаем, прописывая в нужном месте (например, на самой первой локации в игре) следующую команду:

usehtml=1

Во-вторых, все HTML-теги являются частью выводимого на экран текста, поэтому, чтобы выводить их на экран, нужно использовать те же самые операторы, что и для вывода всего остального текста. Таким образом и теги `<MAP>`, `<AREA>` и тег `<img>` нужно выводить с помощью операторов `*p` или `p`.

В-третьих, если вам удобнее записывать каждый тег отдельной строкой, нужно помнить, что QSP не игнорирует переводы строк между тегами, и это может привести к созданию артефактов. Все теги должны выводиться одной строкой, поэтому для записи команд, выводящих теги, используйте именно операторы `*p` и `p`.

Руководствуясь этими тремя правилами, создайте отдельный файл игры, и протестируйте в нём работу вашей картинки-карты.

Вот пример картинки, в центре которой будет создана кликабельная область.

! включаем поддержку HTML
usehtml=1
! задаём разметку карты
*p '<MAP name="KRUG">'
    *p '<AREA shape="circle" coords="200,200,175" href="exec:x=x+1 & pl x">'
*p '</MAP>'
! выводим изображение карты
*p '<img src="путь к файлу изображения/изображение.png" usemap="#KRUG">'

Обратите внимание, при наведении на кликабельную область в классическом плеере курсор не будет менять свой внешний вид.

Более подробно о том, как работать с тегами `MAP` и `AREA` вы можете прочитать в разделе 16.10. Как работать с тегами MAP и AREA?