<?xml version="1.0" encoding="UTF-8"?>
	<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:georss="http://www.georss.org/georss">
	<channel>
	<title>ping :: echo+topics/std.prog</title>
	<link>https://club.hugeping.ru/echo+topics/std.prog</link>
	<description>
	ping :: echo+topics/std.prog
	</description>
	<language>ru</language>
<item><title>Как сделать input в Instead?</title><guid>NG53AtXx7sFoW0sIXCjS</guid><pubDate>2021-07-11 18:58:08</pubDate><author>hopkins1988</author><link>https://club.hugeping.ru/blog/NG53AtXx7sFoW0sIXCjS#NG53AtXx7sFoW0sIXCjS</link>
		<description>
		Допустим текст :capital city of France (назовите столицу Франции)
надо сделать так чтобы после ввода "Paris" шло переключение на вторую сцену с надписью:"Right!" ("Правильно")
P.S. Edited: 2021-07-11 16:58:16
...
		</description>
		<content:encoded>
<![CDATA[
hopkins1988 -> All<br><br>
Допустим текст :capital city of France (назовите столицу Франции)<br>
надо сделать так чтобы после ввода "Paris" шло переключение на вторую сцену с надписью:"Right!" ("Правильно")<br>
<span class="comment">P.S. Edited: 2021-07-11 16:58:16</span><br>

]]>
</content:encoded></item>
<item><title>Как сделать переход из одной комнаты в две другие?</title><guid>JgrboL0vQErCruVtICAU</guid><pubDate>2021-06-23 17:30:07</pubDate><author>hopkins1988</author><link>https://club.hugeping.ru/blog/JgrboL0vQErCruVtICAU#JgrboL0vQErCruVtICAU</link>
		<description>
		Как сделать?
room{
title='первая комната'
name='первая комната'
way={path{'вторая комната','room2'}}
way={path{третья комната,'room3}}
}
...
		</description>
		<content:encoded>
<![CDATA[
hopkins1988 -> All<br><br>
Как сделать?<br>
room{<br>
title='первая комната'<br>
name='первая комната'<br>
way={path{'вторая комната','room2'}}<br>
way={path{третья комната,'room3}}<br>
}<br>

]]>
</content:encoded></item>
<item><title>scene_use в  stead3</title><guid>WK9oSKYPBzPZO2mZcrQn</guid><pubDate>2021-01-25 11:27:54</pubDate><author>Dima</author><link>https://club.hugeping.ru/blog/WK9oSKYPBzPZO2mZcrQn#WK9oSKYPBzPZO2mZcrQn</link>
		<description>
		В стед2 был атрибут scene_use для действия элементом сцены на другой элемент. Вопрос: как реализовать данный метод в стед3 через классы. Например: в сцене есть свободный конец веревки и я хочу привязать его к другому объекту сцены или инвентаря, при этом не добавляя конец веревки...
		</description>
		<content:encoded>
<![CDATA[
Dima -> All<br><br>
В стед2 был атрибут scene_use для действия элементом сцены на другой элемент. Вопрос: как реализовать данный метод в стед3 через классы. Например: в сцене есть свободный конец веревки и я хочу привязать его к другому объекту сцены или инвентаря, при этом не добавляя конец веревки в инвентарь. <br>

]]>
</content:encoded></item>
<item><title>Читшит с функциями INSTEAD</title><guid>1VFLeRr34bNDmqvlFFwt</guid><pubDate>2020-10-11 23:10:23</pubDate><author>hugeping</author><link>https://club.hugeping.ru/blog/1VFLeRr34bNDmqvlFFwt#1VFLeRr34bNDmqvlFFwt</link>
		<description>
		Lucky_Ook некоторое время назад запилил читшиты с функциями INSTEAD. Чтобы не потерять, оставлю здесь: https://github.com/luckyuk/Instead-cheatsheet
P.S. Edited: 2020-10-11 21:10:56
...
		</description>
		<content:encoded>
<![CDATA[
hugeping -> All<br><br>
Lucky_Ook некоторое время назад запилил читшиты с функциями INSTEAD. Чтобы не потерять, оставлю здесь: <a href="https://github.com/luckyuk/Instead-cheatsheet" class="url">https://github.com/luckyuk/Instead-cheatsheet</a><br>
<span class="comment">P.S. Edited: 2020-10-11 21:10:56</span><br>

]]>
</content:encoded></item>
<item><title>Unicode строки в Instead</title><guid>LVtM5PozMHadZ4gkmJdO</guid><pubDate>2020-09-21 17:14:58</pubDate><author>Frost</author><link>https://club.hugeping.ru/blog/LVtM5PozMHadZ4gkmJdO#LVtM5PozMHadZ4gkmJdO</link>
		<description>
		Приветствую, друзья. Подскажите пожалуйста как можно работать с кириллицей в Instead. Я имею ввиду функции len; sub и другие, работающие с однобайтовой кодировкой символов. Имеет ли ядро движка встроенную поддержку и если да, то как получить доступ к UTF8 функциям. Если нет, подс...
		</description>
		<content:encoded>
<![CDATA[
Frost -> All<br><br>
Приветствую, друзья. Подскажите пожалуйста как можно работать с кириллицей в Instead. Я имею ввиду функции len; sub и другие, работающие с однобайтовой кодировкой символов. Имеет ли ядро движка встроенную поддержку и если да, то как получить доступ к UTF8 функциям. Если нет, подскажите наиболее оптимальную (проверенную) библиотеку для работы с юникодом. Заранее спасибо. <br>
<span class="comment">P.S. Edited: 2020-09-22 12:39:51 [изменено название]</span><br>

]]>
</content:encoded></item>
<item><title>еще вопросец (СТИД 2)</title><guid>to1OExnMKUV5usIz5TVP</guid><pubDate>2020-02-01 00:17:02</pubDate><author>kolobod</author><link>https://club.hugeping.ru/blog/to1OExnMKUV5usIz5TVP#to1OExnMKUV5usIz5TVP</link>
		<description>
		Доброй ночи всем, кто не спит) Есть еще дурацкий вопрос. 
====
БАЗА = room {
       pic = function(s)
             pr 'pic/ГОРЫ.jpg'  --общий фон картинки для этой локации
		
	         if СЛУЧИЛОСЬ_СОБЫТИЕ then 
                    pr ';pic/АЛАРМ.jpg@500,100' --показать поверх об...
		</description>
		<content:encoded>
<![CDATA[
kolobod -> All<br><br>
Доброй ночи всем, кто не спит) Есть еще дурацкий вопрос. <br>
<pre class="code">
БАЗА = room {
       pic = function(s)
             pr 'pic/ГОРЫ.jpg'  --общий фон картинки для этой локации
		
	         if СЛУЧИЛОСЬ_СОБЫТИЕ then 
                    pr ';pic/АЛАРМ.jpg@500,100' --показать поверх общей картинки локации табличку "у нас событие!"
		 end;
       end;
       
       click = function(s, x, y) 
	       if x &gt; 500 and x &lt; 700 and y &gt; 200 and y &lt; 30 and СЛУЧИЛОСЬ_СОБЫТИЕ and ГОТОВ_ДИАЛОГ then --клик на табличку отправляет в диалог
                  walk 'НУЖНЫЙ_ДИАЛОГ';	
	          return true;			   
    	       end;
       end;	
}
</pre>
Собственно, такая штука. Есть комната. Для иллюстрации происходящего в ней - задана картинка. При срабатывании условия СЛУЧИЛОСЬ_СОБЫТИЕ = true; поверх этой картинки появляется другая (табличка с приглашением запустить некое событие). И если при этом включено условие ГОТОВ_ДИАЛОГ = true; то клик на табличку запускать диалог НУЖНЫЙ_ДИАЛОГ.<br>
В заданной конструкции все работает прекрасно. Но вот диалог заканчивается и я выпускаю из него игрока, ставя при выходе [[ СЛУЧИЛОСЬ_СОБЫТИЕ = false; ГОТОВ_ДИАЛОГ = true; walkback(); return true; ]]<br>
То есть, на выходе я полностью убираю все условия и для отображения таблички, и для перехода снова в этот диалог. Но табличка не убирается и висит на месте, а если кликнуть на нее - снова попадаешь в диалог из которого вышел. Не могу понять почему?<br>

]]>
</content:encoded></item>
<item><title>Перемещение через...  dsc - в СТИД 2</title><guid>CxumjDxzkW4rYlCrc0cs</guid><pubDate>2019-10-11 16:19:15</pubDate><author>kolobod</author><link>https://club.hugeping.ru/blog/CxumjDxzkW4rYlCrc0cs#CxumjDxzkW4rYlCrc0cs</link>
		<description>
		Ох, еще такой вопрос. Может знает кто? Заранее прошу прощения)
В общем, загнал я себя в ловушку. Забыл слова Петра о том, что dsc (в отличие от act) не предназначен для внесения каких-то глобальных изменений в игровой процесс, это только описательная часть. В итоге столкнулся с т...
		</description>
		<content:encoded>
<![CDATA[
kolobod -> All<br><br>
Ох, еще такой вопрос. Может знает кто? Заранее прошу прощения)<br>
В общем, загнал я себя в ловушку. Забыл слова Петра о том, что dsc (в отличие от act) не предназначен для внесения каких-то глобальных изменений в игровой процесс, это только описательная часть. В итоге столкнулся с тем, что завязал часть игрового процесса на dsc все-таки. До какого-то момента все исправно работало. До тех пор, пока не понадобилось организовать "переход" в другую комнату нетрадиционным образом. Сделал так: <br>
<pre class="code">
bunker = room {
...
dsc = function(s)
...
      if global_nnn == 10 and global_yyy == 20 then		   
         walk 'action_room_2'; 
         return true;
      end;	
...	
end;
}
</pre>
Суть, если отбросить лишние детали: в комнате bunker можно переключать два параметра (условно nnn и yyy) и когда они доходят до значений "10" и "20" соответственно, игрок автоматически перемещается в другую комнату (происходят еще разные изменения в сюжете, в интерфейсе, но тут это не важно). В нынешнем виде, такая попытка перемещения не работает. Игрок, судя по всему остается в текущей комнате.<br>
<br>
Вопрос: возможен ли в принципе walk из dsc (другие способы перехода именно в этом, конкретном случае не желательны) или про это можно сразу забыть?    <br>

]]>
</content:encoded></item>
<item><title>Рандом в СТИД 2</title><guid>glUygv2esJqxFsskpNAs</guid><pubDate>2019-09-25 13:14:53</pubDate><author>kolobod</author><link>https://club.hugeping.ru/blog/glUygv2esJqxFsskpNAs#glUygv2esJqxFsskpNAs</link>
		<description>
		Всем огромный привет! Сразу приношу извинения, если вдруг пишу не в тот раздел. Давно не заходил, подзабыл что-как. 
Вдруг кто еще помнит свои наработки по стид2?
Запнулся на таком моменте. Надо, что бы при срабатывании условия - в ответ РАНДОМНО включалось ОДНО из нескольких воз...
		</description>
		<content:encoded>
<![CDATA[
kolobod -> All<br><br>
Всем огромный привет! Сразу приношу извинения, если вдруг пишу не в тот раздел. Давно не заходил, подзабыл что-как. <br>
Вдруг кто еще помнит свои наработки по стид2?<br>
Запнулся на таком моменте. Надо, что бы при срабатывании условия - в ответ РАНДОМНО включалось ОДНО из нескольких возможных событий.<br>
Если конкретно: у меня игрок в какой-то момент делает персонажем действие, открывает найденным ключом дверь в бункер.<br>
<pre class="code">
act = function(s)
      if got_bunker_key then 
                        bunker_door_open;        --дверь открывается, если есть нужный ключ
		        random_action_on = true; --включается "разрешение" для запуска 1 из 3 рандомных событий
                        p [[Из темного коридора раздается рычание. В воздухе витает какой-то мерзкий запах.]]; 						
end;
</pre>
И есть три условия для запуска трех разных событий, одно из которых должно включится СЛУЧАЙНЫМ ОБРАЗОМ, после того как сработает random_action_on.<br>
Это:<br>
dead_attack --атака монстрами игрока<br>
dead_blind  --монстры не замечают, как игрок проник в бункер<br>
poison_on   --игрок получает отравление<br>
Как сделать рандомный запуск одного из трех событий?<br>

]]>
</content:encoded></item>
<item><title>Использование аудиозаписей</title><guid>JZIxfgjFJM994VdPq4yu</guid><pubDate>2019-08-27 21:19:50</pubDate><author>vmg</author><link>https://club.hugeping.ru/blog/JZIxfgjFJM994VdPq4yu#JZIxfgjFJM994VdPq4yu</link>
		<description>
		&gt; Если вам не достаточно описанных здесь функций по работе со звуком,используйте полное описание модуля “snd”.

Допустим, надо, чтобы на определённом шаге пользователь услышал запись речи. Есть ли в дополнительном описании модуля "snd" что-нибудь о такой возможности? И подскажите...
		</description>
		<content:encoded>
<![CDATA[
vmg -> All<br><br>
<span class="quote">&gt; Если вам не достаточно описанных здесь функций по работе со звуком,используйте полное описание модуля “snd”.</span><br>
<br>
Допустим, надо, чтобы на определённом шаге пользователь услышал запись речи. Есть ли в дополнительном описании модуля "snd" что-нибудь о такой возможности? И подскажите, пожалуйста (извините за тупёж), где читать описание модулей.<br>
А ещё спрошу, в какой программе лучше преобразовывать разные форматы записи в ogg. Большинство профессиональных диктофонов сохраняет записи в wav.<br>

]]>
</content:encoded></item>
<item><title>А как сделать, чтобы...</title><guid>wVrBtMq8ZGWWBHKk68ze</guid><pubDate>2019-06-13 10:31:13</pubDate><author>Пэ</author><link>https://club.hugeping.ru/blog/wVrBtMq8ZGWWBHKk68ze#wVrBtMq8ZGWWBHKk68ze</link>
		<description>
		Здравствуйте! 
Простите, если я не в ту тему пишу :) 

Вот заинтересовался я МЕТАПАРСЕРОМ3 (за что огромное спасибо Петру) и пробую что-то в нём написать. Кое-что даже получается. Программист с меня никакой и мне нужна помощь. Не откажите в любезности.

Есть задача использовать с...
		</description>
		<content:encoded>
<![CDATA[
Пэ -> All<br><br>
Здравствуйте! <br>
Простите, если я не в ту тему пишу :) <br>
<br>
Вот заинтересовался я МЕТАПАРСЕРОМ3 (за что огромное спасибо Петру) и пробую что-то в нём написать. Кое-что даже получается. Программист с меня никакой и мне нужна помощь. Не откажите в любезности.<br>
<br>
Есть задача использовать счётчик ходов в игре. Чтоб определённое событие случилось в определённый ход. Как этого добиться? <br>
К примеру, на 50-м ходу игры Нео получает срочной бандеролью телефон, а через 10 ходов ему должен позвонить на этот телефон Морфеус. То же должно сработать и если Ное получит телефон на 39-м ходу и тот зазвонит через 10 ходов.<br>
<br>
Спасибо.<br>

]]>
</content:encoded></item>
<item><title>instead-js или instead-em</title><guid>t1tgWdXPvnN5hjCwB8A3</guid><pubDate>2018-09-02 10:25:35</pubDate><author>lnp3</author><link>https://club.hugeping.ru/blog/t1tgWdXPvnN5hjCwB8A3#t1tgWdXPvnN5hjCwB8A3</link>
		<description>
		Друзья, прошу помощи. Подскажите, что лучше использовать в www: instead-js или instead-em? Что надёжнее, перспективнее, менее проблемное?...
		</description>
		<content:encoded>
<![CDATA[
lnp3 -> All<br><br>
Друзья, прошу помощи. Подскажите, что лучше использовать в www: instead-js или instead-em? Что надёжнее, перспективнее, менее проблемное?<br>

]]>
</content:encoded></item>
<item><title>Работа с текстовой строкой</title><guid>7Q5mcSrRE5IJ6HyPCfhA</guid><pubDate>2018-07-10 19:44:36</pubDate><author>lnp3</author><link>https://club.hugeping.ru/blog/7Q5mcSrRE5IJ6HyPCfhA#7Q5mcSrRE5IJ6HyPCfhA</link>
		<description>
		Здравствуйте, прошу помочь новичку. Документацию прочитал, но не могу понять, как мне принять текстовую строку для последующей обработки. У меня есть отличный детективный сценарий, в котором часто надо будет вводить произвольный текст. Например, код сейфа или пароль. Выбор из гот...
		</description>
		<content:encoded>
<![CDATA[
lnp3 -> All<br><br>
Здравствуйте, прошу помочь новичку. Документацию прочитал, но не могу понять, как мне принять текстовую строку для последующей обработки. У меня есть отличный детективный сценарий, в котором часто надо будет вводить произвольный текст. Например, код сейфа или пароль. Выбор из готовых вариантов исключается, играющий сам должен разгадать загадку и ввести верный пароль. В остальное время играть будет мышкой, переходя из комнаты в комнату, манипулируя предметами и т.д. Здорово, если такой текстовый ввод можно сделать стандартными средствами Instead. С Lua я только начал заниматься, а до этого были только ассемблер и Си.<br>
Направьте, пожалуйста, очень хочется написать игру-детектив на этом замечательном движке.<br>

]]>
</content:encoded></item>
<item><title>EMACS-вопрос</title><guid>cYg0A7ofXBn9yxqdNxWh</guid><pubDate>2018-03-29 00:49:01</pubDate><author>Anotheroneuser</author><link>https://club.hugeping.ru/blog/cYg0A7ofXBn9yxqdNxWh#cYg0A7ofXBn9yxqdNxWh</link>
		<description>
		Можно для ясности рассказать подробнее о системе?
Итак, жили мы жили и тут — раз — что-то случилось…

В безвычислительномашинные годы ты берёшь и начинаешь писать. Настоящей ручкой по настоящей бумаге. Пишешь до усрачки, носишься с этой писаниной, теряешь или забываешь её, старае...
		</description>
		<content:encoded>
<![CDATA[
Anotheroneuser -> All<br><br>
Можно для ясности рассказать подробнее о системе?<br>
Итак, жили мы жили и тут — раз — что-то случилось…<br>
<br>
В безвычислительномашинные годы ты берёшь и начинаешь писать. Настоящей ручкой по настоящей бумаге. Пишешь до усрачки, носишься с этой писаниной, теряешь или забываешь её, стараешься лепить её на стены, доски и так далее. Всё очень романтично (со всеми вытекающими ..здецами), но теперь есть хорошая альтернатива и она называется ЭВМ.<br>
<br>
Любая задокументированная (диктофон, рукописи, видео, фото, а в идеале — смс, электронные письма и данные журнала соединений) информация по определённому режиму направляется тобой в машину и начинается самое интересное.<br>
<br>
Осматривая фотографии, отсматривая видеозаписи, прослушивая аудио, ты начинаешь думать и приходить к разнообразным выводам. Чтобы не забивать себе голову, ты эти выводы набиваешь в той самой операционной среде, о которой мы говорим.<br>
<br>
Допустим, у нас в качестве операционной среды выступает среда разработки, вроде Geany. Там есть прикольнейшие функции поиска, сортировки, выделения и всего остального. Чего стоит одна Ctrl+Shift+D по ключевому слову, которая позволяет в окне «Сообщения» видеть перечень вхождений этого слова и фактически получить содержание документа, если такое ключевое слово ставить в начале соответствующих строк (для прикола можете попробовать открыть в Geany какой-нибудь Уголовный Кодекс Российской Федерации и сделать Ctrl+Shift+D на слове «Статья».<br>
<br>
Так вот, материалов немало, мыслей ещё больше и ты не устаёшь набивать их в редакторе, но..<br>
Они следуют друг за другом, требуя всё большей ответственности с твоей стороны. Тебе приходится придумывать и соблюдать всё новые стандарты обращения со своими данными и постепенно ты начинаешь в них путаться.<br>
Всякий раз, обращаясь к своим записям, ты понимаешь, что напрягаешься, пытаясь найти нить.<br>
<br>
Кроме того, было бы неплохо иметь возможность обращаться к дополнительному видео или иному материалу, просто указывая на ссылку в тексте. Хотя, это блажь, конечно... Но, блин, если у нас есть такая возможность, то какого хрена?<br>
<br>
Вот и всё.<br>
И пределов совершенству нет, что подразумевает расширение. Поэтому и пришёл логический вывод о необходимости изучения EMACS. Теперь после ваших советов начинаю понимать, что игра стоит свеч.<br>

]]>
</content:encoded></item>
<item><title>EMACS-вопрос</title><guid>4DvZow12XseAicihaDWG</guid><pubDate>2018-03-27 23:36:13</pubDate><author>Anotheroneuser</author><link>https://club.hugeping.ru/blog/4DvZow12XseAicihaDWG#4DvZow12XseAicihaDWG</link>
		<description>
		Парни, а можно вопрос по поводу EMACS?

== Что надо

Хочется единой информационной среды.

== В чём проблема

Мне, как и многим сегодня, приходится работать с немалым объёмом данных, включая всевозможные нормативно-правовые акты, процессуальные документы и так далее.

Конечно, вс...
		</description>
		<content:encoded>
<![CDATA[
Anotheroneuser -> All<br><br>
Парни, а можно вопрос по поводу EMACS?<br>
<br>
<span class="header">== Что надо</span><br>
<br>
Хочется единой информационной среды.<br>
<br>
<span class="header">== В чём проблема</span><br>
<br>
Мне, как и многим сегодня, приходится работать с немалым объёмом данных, включая всевозможные нормативно-правовые акты, процессуальные документы и так далее.<br>
<br>
Конечно, всё это находится во взаимосвязи между собой, а так же с событиями, описывать которые тоже приходится с помощью десяти пальцев и нескольких десятков механических клавиш.<br>
<br>
Материалы с описанием, НПА, проекты и исходный текст всевозможных документов, обеспечивающих процесс, громоздятся друг на друге в каталогах и, как их ни называй/номеруй, занимают место в голове, мешая думать о прекрасном.<br>
<br>
Уже давно мне повезло/не повезло (нужное подчеркнуть на своё усмотрение) отвернуться от стандартных текстовых процессоров и пользоваться средой разработки (Jeany в настоящее время) для составления любых plain_text-материалов. Быстро, понятно, моноширинно, стерильно, операгенно.<br>
<br>
Но, возвращаясь к работе после перерыва (видишь вкладки с текстом и т.д.), ловишь себя на мысли, что мысль отсутствует, поскольку энергия для её генерирования ушла на процесс вспоминания где-что лежит, чем всё кончилось, как дела и прочее.<br>
<br>
У меня долго не выходила из головы идея забацать что-то такое с помощью локальной DokuWiki, но немного повертев её я понял, что это — тупик.<br>
<br>
<span class="header">== Какие идеи?</span><br>
<br>
Хотелось бы овладеть операционной средой, которая позволила бы:<br>
- единообразие работы с данными;<br>
- операции с plain text, включая возможность создавать перекрёстные ссылки и ссылки на материалы, хранящиеся как на машине, так и за её пределами в Сети;<br>
- обозревание Сети, почты с помощью тех же инструментов;<br>
короче, и так далее.<br>
<br>
Единственная среда, которая показалась пригодной для этих целей — EMACS.<br>
Других не нашёл. Наверное, плохо искал... VIM, возможно, классный, но он только редактор. Тем более, EVIL позволяет VIM-ить и внутри EMACS, если я не ошибаюсь.<br>
<br>
Парни, с которыми мне довелось пообщаться на данную тему, говорили, что LISP — нераспространённый язык и учить его может оказаться тратой времени. Но они говорили с точки зрения программистов, которые стремятся делать деньги, программируя. Меня же подобный заработок не интересует.<br>
<br>
Поэтому, хочу попросить совета у вас.<br>
Вообще, программу изучения языков программирования и п/о наметил такую:<br>
1. LUA — для игр INSTEAD<br>
2. EMACS — для упомянутых целей<br>
3. LATEX — для оформления процессуальных документов (это, возможно, не лучший способ объявить бойкот текстовым процессорам, но мне ужасно хочется это сделать)<br>
4. Да и всё, пожалуй..<br>
<br>
Если есть, что подсказать, буду признателен.<br>

]]>
</content:encoded></item>
<item><title>Модуль fmt в Stead3, внедрение числовых переменных в символьный аргумент отрисовки fmt.img('box:..</title><guid>fTnYvWCfyuP7CcN00cAp</guid><pubDate>2018-01-05 21:24:31</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/fTnYvWCfyuP7CcN00cAp#fTnYvWCfyuP7CcN00cAp</link>
		<description>
		Данная программа готова к запуску, содержит участок кода, данный нашим другом techniX. Демонстрирует создание графической шкалы прогресса для разных параметров в играх (здоровье, тепло, сытость и т.п.).
====
-- $Name: модуль fmt при работе box$

require "fmt"

global {
	sizeX = 1...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Данная программа готова к запуску, содержит участок кода, данный нашим другом techniX. Демонстрирует создание графической шкалы прогресса для разных параметров в играх (здоровье, тепло, сытость и т.п.).<br>
<pre class="code">
-- $Name: модуль fmt при работе box$

require "fmt"

global {
	sizeX = 16;
}
--
room {
	nam = 'main';
	onenter = function ()
		place 'vectes';
		place 'modum';
	end;
}
--
	obj {
	nam = 'modum';
	dsc = '{^^нажать, чтобы изменить шкалу}';
	act = function ()
			sizeX = rnd (16,255);
			return;
		  end;
};
--
	obj {
	nam = 'vectes';
	dsc = function ()
			p (fmt.img('box:' .. tostring(sizeX) .. 'x' .. tostring(32) .. ',red,255'));
			p (fmt.img('box:' .. tostring(256-sizeX) .. 'x' .. tostring(32) .. ',blue,255')); -- внедрение числовой переменной в аргумент, пример данный techniX
			return;
		  end;
};
</pre>

]]>
</content:encoded></item>
<item><title>отсутствие влияния части настроек темы (theme) на активные элементы измененные при помощи модуля fonts</title><guid>eW0cgHcpAx7XcOquJOWq</guid><pubDate>2017-12-30 23:38:20</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/eW0cgHcpAx7XcOquJOWq#eW0cgHcpAx7XcOquJOWq</link>
		<description>
		Модуль fonts на beta-сборке 3.2 работает нормально. Единственно, такие настройки стандартной или собственной темы игры как:
====
win.col.fg = black
win.col.link = #b02c00
win.col.alink = #606060
====
Не влияют на подсветку активных элементов obj, если шрифт их dsc видоизменен при...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Модуль fonts на beta-сборке 3.2 работает нормально. Единственно, такие настройки стандартной или собственной темы игры как:<br>
<pre class="code">
win.col.fg = black
win.col.link = #b02c00
win.col.alink = #606060
</pre>
Не влияют на подсветку активных элементов obj, если шрифт их dsc видоизменен при помощи модуля fonts. Вот пример, на котором проводилось тестирование. Это немного видоизмененный пример из репозитория с модулями для stead3<br>
<pre class="code">
require "fonts"
local fnt = _'$fnt'
fnt:face ('sans', 'sans.ttf', 20)
room {
	nam = 'main';
	decor = [[Текст описания локации.]];
}:with {
	obj {
		nam = 'r1';
		dsc = '{ бутерброд }'; -- стандартный шрифт темы
		act = 'Вы выбрали бутерброд';
	};
	obj {
		nam = 'r2';
		dsc = '{{$fnt sans| кувалда }}'; -- шрифт заданный при помощи модуля fonts, не имеет подсветки, хотя кликабелен.
		act = 'Вы выбрали кувалду';
	};

}
</pre>

]]>
</content:encoded></item>
<item><title>Создание кликабельной картинки, кнопки</title><guid>cO67SFu5zo3cbCOFos1T</guid><pubDate>2017-12-24 00:19:03</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/cO67SFu5zo3cbCOFos1T#cO67SFu5zo3cbCOFos1T</link>
		<description>
		Требуется подключить модуль fmt. Помещаем на сцену объект, имея для него произвольную картинку по заявленному пути
====
obj {
	nam = 'idti';
	dsc = function ()
		p ('{',fmt.img'data/idti.png','}'); -- кликабельная картинка кнопки.
	end;
	act = function ()
		walk 'e0'; -- переход ...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Требуется подключить модуль fmt. Помещаем на сцену объект, имея для него произвольную картинку по заявленному пути<br>
<pre class="code">
obj {
	nam = 'idti';
	dsc = function ()
		p ('{',fmt.img'data/idti.png','}'); -- кликабельная картинка кнопки.
	end;
	act = function ()
		walk 'e0'; -- переход или любое действие по нажатию на картинку.
	end;
}
</pre>

]]>
</content:encoded></item>
<item><title>Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3</title><guid>zrhQE1xV2ReoJC6Da2Ym</guid><pubDate>2017-12-03 18:10:09</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/zrhQE1xV2ReoJC6Da2Ym#zrhQE1xV2ReoJC6Da2Ym</link>
		<description>
		Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
====
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.<br>
<pre class="code">
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};
</pre>
<br>
При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:<br>
<br>
<pre class="code">
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
             fire() -- применение пользовательской функции 
        end; -- в теле другой функции.
};
</pre>

]]>
</content:encoded></item>
<item><title>Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3</title><guid>mDs4CHDgVuH177j1wAQY</guid><pubDate>2017-12-03 18:07:47</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/mDs4CHDgVuH177j1wAQY#mDs4CHDgVuH177j1wAQY</link>
		<description>
		Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
====
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.<br>
<pre class="code">
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};
</pre>
<br>
При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:<br>
<br>
<pre class="code">
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
 Fire() end; -- применение пользовательской функции.
};
</pre>

]]>
</content:encoded></item>
<item><title>Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3</title><guid>lfD6JizYOMex8uBkEsTd</guid><pubDate>2017-12-03 18:07:46</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/lfD6JizYOMex8uBkEsTd#lfD6JizYOMex8uBkEsTd</link>
		<description>
		Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
====
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.<br>
<pre class="code">
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};
</pre>
<br>
При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:<br>
<br>
<pre class="code">
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
 Fire() end; -- применение пользовательской функции.
};
</pre>

]]>
</content:encoded></item>
<item><title>про контейнер</title><guid>lZxi3ZhUwSAG3zovWtoc</guid><pubDate>2017-11-17 22:27:29</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/lZxi3ZhUwSAG3zovWtoc#lZxi3ZhUwSAG3zovWtoc</link>
		<description>
		Вот работоспособный код. При act контейнер закрывается, если открыт, и отрывается, если закрыт. Вопрос в следующем, как заранее задать какой будет контейнер открытый или закрытый? Он про умолчанию изначально открыт. А как это изменить до помещения его на сцену?
====
cont { -- при...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Вот работоспособный код. При act контейнер закрывается, если открыт, и отрывается, если закрыт. Вопрос в следующем, как заранее задать какой будет контейнер открытый или закрытый? Он про умолчанию изначально открыт. А как это изменить до помещения его на сцену?<br>
<pre class="code">
cont { -- пример контейнера
	nam = 'box';
	dsc = [[Тут есть {ящик}.]];
	act = function (s)
				if closed(s) == true then 
						open(s);
						return;
				else
						close(s);
						return;
				end;
		   end;
	cont = 'В ящике: ';
}: with {
	'meal', 'wood', 'fuel';
}
</pre>

]]>
</content:encoded></item>
<item><title>Разделители</title><guid>GQRrpocfIjSfMlzlDsWd</guid><pubDate>2017-10-31 17:12:06</pubDate><author>kolobod</author><link>https://club.hugeping.ru/blog/GQRrpocfIjSfMlzlDsWd#GQRrpocfIjSfMlzlDsWd</link>
		<description>
		А, всё, дошло наконец - как можно их убрать))
===
game.gui = { 
	ways_delim = '';
}
===...
		</description>
		<content:encoded>
<![CDATA[
kolobod -> All<br><br>
А, всё, дошло наконец - как можно их убрать))<br>
===<br>
game.gui = { <br>
	ways_delim = '';<br>
}<br>
===<br>

]]>
</content:encoded></item>
<item><title>Переходы-картинки</title><guid>M7ZHIWEI4p93qQMp5A0L</guid><pubDate>2017-10-31 15:03:12</pubDate><author>kolobod</author><link>https://club.hugeping.ru/blog/M7ZHIWEI4p93qQMp5A0L#M7ZHIWEI4p93qQMp5A0L</link>
		<description>
		Ну вот например, есть такая фишка - убрать в диалогах цифры, заменив их на "-".
===
stead.phrase_prefix = '-';
===
А нет ли такой же: чтобы избавиться от разделителей путей "|"? ...
		</description>
		<content:encoded>
<![CDATA[
kolobod -> All<br><br>
Ну вот например, есть такая фишка - убрать в диалогах цифры, заменив их на "-".<br>
===<br>
stead.phrase_prefix = '-';<br>
===<br>
А нет ли такой же: чтобы избавиться от разделителей путей "|"? <br>

]]>
</content:encoded></item>
<item><title>Переходы-картинки</title><guid>KtuopnczKphPNozT8Ses</guid><pubDate>2017-10-31 11:53:31</pubDate><author>kolobod</author><link>https://club.hugeping.ru/blog/KtuopnczKphPNozT8Ses#KtuopnczKphPNozT8Ses</link>
		<description>
		Нид хелп! Был, кажется, этот ответ в форуме, но я никак не могу найти его, после переноса ветки по STD2 в отдельную.
Нужно в STD2 сделать переходы в другие локации картинками.
Сначала сделал их отдельными объектами в комнате, просто назначив им в dsc 

====
p (txtc ''..img('PIC/Л...
		</description>
		<content:encoded>
<![CDATA[
kolobod -> All<br><br>
Нид хелп! Был, кажется, этот ответ в форуме, но я никак не могу найти его, после переноса ветки по STD2 в отдельную.<br>
Нужно в STD2 сделать переходы в другие локации картинками.<br>
Сначала сделал их отдельными объектами в комнате, просто назначив им в dsc <br>
<br>
<pre class="code">
p (txtc ''..img('PIC/ЛОКАЦИЯ.png'));
</pre>
<br>
и добавив в act<br>
<br>
<pre class="code">
walk 'ЛОКАЦИЯ';
</pre>
<br>
Все работало, жмешь на картинку - уходишь в нужную комнату. Но. Если описание локации большое, при проматывании, картинки локации "уходят" из видимости, вместе с верхним текстом. А надо - чтобы они были всегда оставались сверху, как в традиционном INSTEAD-квесте. То есть, надо картинки как-то вставить в <br>
<br>
<pre class="code">
way = { 
	vroom('ЛОКАЦИЯ', 'loc_name')    
};
</pre>

]]>
</content:encoded></item>
<item><title>Клавиатурный ввод в STEAD3</title><guid>IzEyVnZLQc9nRxIaAly0</guid><pubDate>2017-10-30 08:52:35</pubDate><author>Peter</author><link>https://club.hugeping.ru/blog/IzEyVnZLQc9nRxIaAly0#IzEyVnZLQc9nRxIaAly0</link>
		<description>
		1. В документации описал модуль keys
2. Адаптировал модуль keyboard с STEAD2: https://github.com/instead-hub/instead/tree/master/doc/examples/stead3/keyboard

Единственный нюанс, в модуле keyboard на текущей версии STEAD3 после возврата из клавиатуры в комнату, поле from будет из...
		</description>
		<content:encoded>
<![CDATA[
Peter -> All<br><br>
1. В документации описал модуль keys<br>
2. Адаптировал модуль keyboard с STEAD2: <a href="https://github.com/instead-hub/instead/tree/master/doc/examples/stead3/keyboard" class="url">https://github.com/instead-hub/instead/tree/master/doc/examples/stead3/keyboard</a><br>
<br>
Единственный нюанс, в модуле keyboard на текущей версии STEAD3 после возврата из клавиатуры в комнату, поле from будет изменено у комнаты, а вот в новой версии инстеда это будет не так.<br>
Причина: walkback функция, которая появится только в следующей версии.<br>

]]>
</content:encoded></item>
<item><title>Музыка и звуки</title><guid>nNxAbDj5fhrEvlVHcEWT</guid><pubDate>2017-10-19 22:26:41</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/nNxAbDj5fhrEvlVHcEWT#nNxAbDj5fhrEvlVHcEWT</link>
		<description>
		Прошу прощения, но я не нашел способ воздействия кодом на громкость музыки (music). Делал ее при помощи snd.play. ...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Прошу прощения, но я не нашел способ воздействия кодом на громкость музыки (music). Делал ее при помощи snd.play. <br>

]]>
</content:encoded></item>
<item><title>Докладываю</title><guid>coQDD3W9PiiyzzrxRDG7</guid><pubDate>2017-10-14 19:07:31</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/coQDD3W9PiiyzzrxRDG7#coQDD3W9PiiyzzrxRDG7</link>
		<description>
		Обнаружил вот что. Возможно это баг, а возможно это я нарушаю правила использования объектов типа obj. Вот код.
====
obj {
	nam = 'искать';
	state = 1;
	dsc = function(s)
			local dsc = {
					'{&gt; Попытаться исследовать лес, несмотря на холод.^}',
					'&gt; Лес исследован.{^}' --- ...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Обнаружил вот что. Возможно это баг, а возможно это я нарушаю правила использования объектов типа obj. Вот код.<br>
<pre class="code">
obj {
	nam = 'искать';
	state = 1;
	dsc = function(s)
			local dsc = {
					'{&gt; Попытаться исследовать лес, несмотря на холод.^}',
					'&gt; Лес исследован.{^}' --- !!! вот эта строчка, про нее доклад.
                                     }; 
					p(dsc[s.state])
			end;
	act = function (s)
			p [[Исследовав лес... (длинное описание найденного)]];
			s.state = 2;
			hot = hot - 5;
			return;
			end;
}
</pre>
Представим, что таких объектов, подобных этому несколько. И если они помещены на сцену, то их dsc располагаются в столбик, так как присутствует символ ^. Почему я сделал '&gt; Лес исследован.{^}' вместо того, чтобы сделать '&gt; Лес исследован.^' ??? Дело в том, что dsc объектов типа obj игнорирует символ ^ если он не помещен в фигурные скобки {}. Возможно, так задумано. Я просто отчитался.<br>

]]>
</content:encoded></item>
<item><title>Об'екты на сцене и в инвентаре</title><guid>M4dWF2wUAe5XtG2AJBZD</guid><pubDate>2017-10-11 15:07:27</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/M4dWF2wUAe5XtG2AJBZD#M4dWF2wUAe5XtG2AJBZD</link>
		<description>
		Добрый день. Возник еще один вопрос. При создании obj есть такой параметр pri. Он работает не только в инвентаре, но и на сцене. Вопрос вот в чем, если у двух и более выложенных на сцену об!ектов (drop или place) совпадают pri, то как происходит их визуальная компановка при добав...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> Peter<br><br>
Добрый день. Возник еще один вопрос. При создании obj есть такой параметр pri. Он работает не только в инвентаре, но и на сцене. Вопрос вот в чем, если у двух и более выложенных на сцену об!ектов (drop или place) совпадают pri, то как происходит их визуальная компановка при добавлении новых? <br>
<br>
То есть например "Лежит {коробка конфет}" (pri = -100) я на нее кликнул и на сцене появляется еще один об!ект "{конфета}" (тоже pri = -100). Вывод динамической части Инстед, что, сдвинет коробку и перед ней слева поставит конфету? Но она вроде позже по времени появилась.... Или как? Мне нужно, чтобы добавляемый об!ект помещался всегда слева перед предыдущими ранее выложенными об!ектами. Возможно ли это?<br>
<br>
Вопрос2. Работает или как сделать чтоб заработал act об!екта, уже лежащего в инвентаре? Это лишает его use и inv, ну и пусть.<br>

]]>
</content:encoded></item>
<item><title>результваты</title><guid>nwMrrQDZx63aLwff6Av8</guid><pubDate>2017-10-09 21:19:20</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/nwMrrQDZx63aLwff6Av8#nwMrrQDZx63aLwff6Av8</link>
		<description>
		====
function round(num, numDecimalPlaces)
	local mult = 10^(numDecimalPlaces or 0)
	return math.floor(num * mult + 0.5) / mult
end
--
obj {
	nam = 'тепло';
	pri = -100;
	disp = function (s)
			p ('тепло ', string.format("%.3f", hot),'/', hotmax);
		   end;
     }
====
Вышеуказан...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
<pre class="code">
function round(num, numDecimalPlaces)
	local mult = 10^(numDecimalPlaces or 0)
	return math.floor(num * mult + 0.5) / mult
end
--
obj {
	nam = 'тепло';
	pri = -100;
	disp = function (s)
			p ('тепло ', string.format("%.3f", hot),'/', hotmax);
		   end;
     }
</pre>
Вышеуказанное при вычитании из 24 чисел по 0.6 - при чистом нуле hot выводит -0.000<br>
Далее, всё то же самое только заменена сторочка:<br>
<pre class="code">
p ('тепло ', string.format("%.3f", round(hot,2)),'/', hotmax);
</pre>
При достижении чистого нуля выводится всё корректно, т.е. 0.000<br>

]]>
</content:encoded></item>
<item><title>Делюсь</title><guid>krDLWsq8twGzYw2ZzQij</guid><pubDate>2017-10-08 21:57:42</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/krDLWsq8twGzYw2ZzQij#krDLWsq8twGzYw2ZzQij</link>
		<description>
		...в продолжение выше опубликованных сообщений. Если идет работа с выводом дробной переменной, то я понял, что лучше ставить округление заведомо больше.
====
p ('тепло ', round(hot,2)); -- округление вывода hot c аргументом 2 по совету Петра.
====
В примере Петра, работало округл...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
...в продолжение выше опубликованных сообщений. Если идет работа с выводом дробной переменной, то я понял, что лучше ставить округление заведомо больше.<br>
<pre class="code">
p ('тепло ', round(hot,2)); -- округление вывода hot c аргументом 2 по совету Петра.
</pre>
В примере Петра, работало округление round (переменная, 2) при шаге вычитания не более 0.2. Но при шаге вычитания 0.4 округление ...,2 выдает при чистом нуле "-0" (минус ноль). Снимается это установкой избыточного округления ...,3 вместо 2.<br>
<pre class="code">
p ('тепло ', round(hot,3)); -- округление вывода hot c аргументом 3. Если результат вычитания 
                            -- равен нулю, то выводится чистый обычный ноль без всяких знаков.
</pre>

]]>
</content:encoded></item>
<item><title>Вот. сделал отдельный код для запуска, прошу проверить непосредственно в игровом режиме</title><guid>22gMzfzAz0w1thz8JbJG</guid><pubDate>2017-10-08 09:46:31</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/22gMzfzAz0w1thz8JbJG#22gMzfzAz0w1thz8JbJG</link>
		<description>
		Нажимать придется подольше, идти с 20 по кусочкам в 0.2, и я бы сделал не с 20, а с 2-х, чтобы облегчить тест программы, но обнаружил, что если изначальное число не 20, а например 2 или 3, то характер некрасивого отображения числа в инвентаре меняется. Даю полный текст файла main...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Нажимать придется подольше, идти с 20 по кусочкам в 0.2, и я бы сделал не с 20, а с 2-х, чтобы облегчить тест программы, но обнаружил, что если изначальное число не 20, а например 2 или 3, то характер некрасивого отображения числа в инвентаре меняется. Даю полный текст файла main3.lua<br>
<pre class="code">
-- $Name:Программа теста дробей$
-- $Version: 0.1$
-- $Author: Wol4ik$

require "fmt";

global {
             hotmax = 20;
             hot = 20;
       }
--
obj {
	nam = 'вычесть';
	dsc = '{Вычесть.}';
	act = function ()
			hot = hot - 0.2;
		  end;
     }
--
obj {
	nam = 'тепло';
	pri = -100;
	disp = function (s)
				p ('тепло ', hot,'/', hotmax);
		   end;
	}
--
room {
		nam = 'main';
		onenter = function (s)
					pl.obj:add 'тепло'; -- помещение в инвентарь статуса тепла.
				  end;
		decor = [[Для уменьшения тепла на 0,2 нажать на "вычесть".]];
		obj = {'вычесть'};
      }
-- конец кода.
</pre>

]]>
</content:encoded></item>
<item><title>p.s. еще</title><guid>fEXeLMybpzrwoXNMzb1D</guid><pubDate>2017-10-08 09:06:30</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/fEXeLMybpzrwoXNMzb1D#fEXeLMybpzrwoXNMzb1D</link>
		<description>
		Вопрос вот в чём, что я делаю не так во здесь. У меня есть глобальная переменная, которая меняется от событий с объектами и на сценах - hot. hotmax - тоже глобальная переменная, но проблема не в ней. Изначальное значение hot задается перед игрой и оно не равно нулю. Допустим, = 2...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Вопрос вот в чём, что я делаю не так во здесь. У меня есть глобальная переменная, которая меняется от событий с объектами и на сценах - hot. hotmax - тоже глобальная переменная, но проблема не в ней. Изначальное значение hot задается перед игрой и оно не равно нулю. Допустим, = 20. hotmax тоже 20. Их значение отображается постоянно в инвентаре при помощи объекта Статуса тепла.<br>
<br>
<pre class="code">
obj {
	nam = 'тепло';
	pri = -100;
	disp = function ()
		  p ('тепло ', hot,'/', hotmax);
	       end;
}
</pre>
У меня много что на hot воздействует, но при вычитании десятичных дробей из hot (например hot = hot - 0.2) всё идет и отображается хорошо, но между нулём и единицей, а особенно когда вычитание ведёт к hot к чистому нулю - hot начинает отображаться в инвентаре некорректно. Измучившись в поисках своей ошибки, я создал объект который КОНТРОЛИРУЕМО и прозрачно вычитает из hot дробные значения. И положил его на сцену.<br>
<pre class="code">
obj {
	nam = 'вычесть';
	dsc = '{^&gt; Вычесть.}';
	act = function ()
			hot = hot - 0.2;
		  end;
}
</pre>
Он имитирует падение тепла персонажа по нажатию. Вычитание и отображение hot в инвентаре происходит корректно пока не достигает единицы. Т.е. (19.8 ... 19.6 ...  19.4 ... ... 1.2 ...). Далее, при вычитании из единицы отображается уже число в каком-то некрасивом длинном виде и неточно. пишу в порядке убывания:<br>
1.2 - норм. вычитаю еще 0.2<br>
1 - норм. вычитаю еще 0.2<br>
0.80000000000004- уже не норм. вычитаю еще 0.2<br>
0.60000000000004- уже не норм. вычитаю еще 0.2<br>
0.40000000000004- уже не норм. вычитаю еще 0.2<br>
0.20000000000004- уже не норм. вычитаю еще 0.2<br>
3.7581049383562e-014 - не норм.<br>
<br>
Это касается случаев не только с десятыми, но и с сотыми (то есть при вычитании 0.02). В чём моя ошибка, что я сделал не так? Я хочу, чтобы, когда вес предметов (при их отсутствии) был равен нулю, то и объект статуса выводил ноль.<br>

]]>
</content:encoded></item>
<item><title>Докладываю</title><guid>z0FUzf4nmv7OUDL4ficH</guid><pubDate>2017-10-07 23:55:26</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/z0FUzf4nmv7OUDL4ficH#z0FUzf4nmv7OUDL4ficH</link>
		<description>
		v 3.1.2
При ошибках в расстановке круглых скобок синтаксис сыпется не только в случае с "наружным" кодом типа room {}, но и когда забыта вторая скобка в строковом значении, правильно выделенном знаками '' . Пример
====
obj {
	nam = 'уйти1';
	dsc = '{^&gt; Выбраться наружу.'; -- втор...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
v 3.1.2<br>
При ошибках в расстановке круглых скобок синтаксис сыпется не только в случае с "наружным" кодом типа room {}, но и когда забыта вторая скобка в строковом значении, правильно выделенном знаками '' . Пример<br>
<pre class="code">
obj {
	nam = 'уйти1';
	dsc = '{^&gt; Выбраться наружу.'; -- вторая фигурная скобка отсутствует.
...
... }
</pre>
При запуске игры сообщений об ошибке синтаксиса нет, как если бы это было в наружном коде (описание room или obj), но сам факт перехода на сцену, куда помещен такой объект приводит к зависанию игры (под Windows). Что снимается только закрытием этого окна.<br>

]]>
</content:encoded></item>
<item><title>Синтаксис работы с way</title><guid>6xJViZV7bkBlVDdAuIf6</guid><pubDate>2017-08-15 18:38:00</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/6xJViZV7bkBlVDdAuIf6#6xJViZV7bkBlVDdAuIf6</link>
		<description>
		Вопрос про то, как кодом добавлять и убирать со сцены переходы в зависимости от условий. Вот есть прямое добавление в инвентарь предмета
====
pl.obj:add ’нож’
====
А как добавлять way на сцену? Так?:
====
way():add 'локация5'
====

p.s. и еще вопрос, из учебника не совсем понял, ...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Вопрос про то, как кодом добавлять и убирать со сцены переходы в зависимости от условий. Вот есть прямое добавление в инвентарь предмета<br>
<pre class="code">
pl.obj:add ’нож’
</pre>
А как добавлять way на сцену? Так?:<br>
<pre class="code">
way():add 'локация5'
</pre>
<br>
p.s. и еще вопрос, из учебника не совсем понял, как любое прямое стоковое значение dsc/way представлять в виде переменной? Например<br>
<pre class="code">
global {
        rrt = 'локация5';
        }

room   {
        nam = 'локация4';
        way = { ..... здесь как-то должно быть значение переменной rrt....?????}
        }
========
</pre>

]]>
</content:encoded></item>
<item><title>События точскрина в INSTEAD</title><guid>3zfe6lBgb4hZ0hvprylv</guid><pubDate>2017-08-12 16:39:51</pubDate><author>Peter</author><link>https://club.hugeping.ru/blog/3zfe6lBgb4hZ0hvprylv#3zfe6lBgb4hZ0hvprylv</link>
		<description>
		Обновил демку модуля finger. Находится демка тут: 
https://github.com/gl00my/stead3/tree/master/tests/fingers

Если что, спрашивайте.
Обычно модуль не нужен, так как нажатия на экран ловятся и модулем click, но для аркад и поддержки одновременного нажатия на экран в нескольких ме...
		</description>
		<content:encoded>
<![CDATA[
Peter -> All<br><br>
Обновил демку модуля finger. Находится демка тут: <br>
<a href="https://github.com/gl00my/stead3/tree/master/tests/fingers" class="url">https://github.com/gl00my/stead3/tree/master/tests/fingers</a><br>
<br>
Если что, спрашивайте.<br>
Обычно модуль не нужен, так как нажатия на экран ловятся и модулем click, но для аркад и поддержки одновременного нажатия на экран в нескольких местах -- пригодится модуль finger.<br>

]]>
</content:encoded></item>
<item><title>Очистка всего и вся, полный рестарт игры</title><guid>urAlrR3dYUSGf2Kn1Nqn</guid><pubDate>2017-08-10 08:14:42</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/urAlrR3dYUSGf2Kn1Nqn#urAlrR3dYUSGf2Kn1Nqn</link>
		<description>
		Добрый день. При создании фатальных концовок возникла необходимость приведения игры к "нулевому состоянию", то есть перегенерации всего игрового мира, возвращения об'ектов на свои места, инициализации всех переменных и т.д. Прошу подсказать, как это сделать в теле описания сцены ...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Добрый день. При создании фатальных концовок возникла необходимость приведения игры к "нулевому состоянию", то есть перегенерации всего игрового мира, возвращения об'ектов на свои места, инициализации всех переменных и т.д. Прошу подсказать, как это сделать в теле описания сцены или иным образом. Может быть есть функция или команда, которая имитирует пункт с меню Stead3 "начать заново"?<br>

]]>
</content:encoded></item>
<item><title>Выложить объект из инвентаря в произвольную сцену room</title><guid>V0vHMpx3L1Z5cG7l3gc3</guid><pubDate>2017-08-02 14:08:36</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/V0vHMpx3L1Z5cG7l3gc3#V0vHMpx3L1Z5cG7l3gc3</link>
		<description>
		Добрый день. Вопрос в следующем, как работать с функциями place, put или иными, если я не готов конкретно назвать имя комнаты куда хочу положить объект (переместить из инвентаря)? Что я имею - служебный объект инвентаря, который выполняет роль одного из действий (починить, сломат...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Добрый день. Вопрос в следующем, как работать с функциями place, put или иными, если я не готов конкретно назвать имя комнаты куда хочу положить объект (переместить из инвентаря)? Что я имею - служебный объект инвентаря, который выполняет роль одного из действий (починить, сломать, говорить и т.п.) конкретно "выложить".<br>
<br>
obj {-- служебный объект выложить, действие<br>
nam = '-выложить';<br>
pri = -99;<br>
inv = [[Хелен может выкладывать предметы, которые пока ей не нужны. <br>
Следует один раз кликнуть на действии "выложить", <br>
и второй раз кликнуть на нужный предмет в инвентаре.]];<br>
}<br>
<br>
В него я специально не вписываю use/used, так как это все впишу в объекты-цели. Однако, вот есть условно 'кувалда', и нужно, чтобы ее used при соединении и 'выложить', помещал эту кувалду в ту комнату, где находится ГГ, независимо из какой комнаты эта конструкция вызывается.<br>
<br>
obj {-- кувалда, физический объект<br>
nam = 'кувалда';<br>
used = function(s)<br>
if s^'выложить' then<br>
place (s, ???????????);<br>
remove(s);<br>
end;<br>
}<br>
<br>
То есть вопрос, как вписать в функцию отсылку к ТЕКУЩЕЙ комнате, название которое тоже есть функция? <br>

]]>
</content:encoded></item>
<item><title>Важный вопрос</title><guid>7fPDNANVIu4tAO2xNGFW</guid><pubDate>2017-07-25 16:40:35</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/7fPDNANVIu4tAO2xNGFW#7fPDNANVIu4tAO2xNGFW</link>
		<description>
		Пётр, к тебе вопрос. Он может показаться банальным и даже странным. Мне это важно для продумывания дизайна игры и игровой механики. Пытаюсь не выходить из границ целей создания движка Instead (я читал манифест), с другой стороны мне важно как это будет выглядеть для игрока, ну и ...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Пётр, к тебе вопрос. Он может показаться банальным и даже странным. Мне это важно для продумывания дизайна игры и игровой механики. Пытаюсь не выходить из границ целей создания движка Instead (я читал манифест), с другой стороны мне важно как это будет выглядеть для игрока, ну и себе границы задать. Вопрос вот в чем. Какую игру (игры) на Instead (игры не твоего пера) ты считаешь, что они (она) больше всего и полнее реализуют заложенные тобой в движок идеи? Независимо от того, нравится ли тебе сама игра и сюжет или нет. Ну, есть такие, чтобы ты сказал не просто "качественная игра", а типа того, что "да, вот для таких игр я и создавал Instead, и хотелось бы таких игр видеть больше"?<br>

]]>
</content:encoded></item>
<item><title>Возврат из комнаты в ту, из которой мы попадаем при помощи way</title><guid>55M6zzWEc8nPGCbrtZzl</guid><pubDate>2017-07-22 23:09:58</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/55M6zzWEc8nPGCbrtZzl#55M6zzWEc8nPGCbrtZzl</link>
		<description>
		Ну, собственно в этом и вопрос. У меня есть несколько служебных комнат, в которые нужен доступ из совершенно разных сцен. Как то - Статус (да, я знаю и научился делать статус в инвентаре), текущие задания для ГГ, меню разведения огня, меню сна и т.п. Я это делаю так (лирика сокра...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Ну, собственно в этом и вопрос. У меня есть несколько служебных комнат, в которые нужен доступ из совершенно разных сцен. Как то - Статус (да, я знаю и научился делать статус в инвентаре), текущие задания для ГГ, меню разведения огня, меню сна и т.п. Я это делаю так (лирика сокращена для краткости)<br>
<br>
room {-- место ночёвки<br>
nam = 'loc1.episode1';<br>
title = 'Блок радиоуправления';<br>
way = { 'статус', 'задания' }; -- кнопки статус и задания<br>
decor = [[Комната, где доступны статус и задания]];<br>
}<br>
<br>
И оно работает, пока я не пытаюсь вернуться обратно....<br>
Вот, одна из служебных комнат выглядит так<br>
<br>
room { <br>
nam = 'задания';<br>
title = 'задания';<br>
decor = [[Текущие задания...{@ walkout()|назад}]];<br>
}<br>
<br>
Но оно не работает. Я пытался применять функцию from(), но так и не понял, как ее синтаксически прилепить к "@ walk". Помогите найти дорогу обратно из служебной комнаты в любую произвольную, из которой я пришел в эту служебную при помощи way.<br>

]]>
</content:encoded></item>
<item><title>Чтобы избежать ошибок</title><guid>yDuXn8AxCQMh0DZaGp9R</guid><pubDate>2017-07-19 14:00:21</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/yDuXn8AxCQMh0DZaGp9R#yDuXn8AxCQMh0DZaGp9R</link>
		<description>
		В процессе понял, что уверенных знаний в инстэд пока не хватает. Читаю сообщения об ошибках в сюжетах уже опубликованных инстэд-игр и просьбы к авторам поправить нестыковки. Хочу изначально, большую часть ключевых dsc и вообще текстовок связанных с room и obj вводить в виде перем...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
В процессе понял, что уверенных знаний в инстэд пока не хватает. Читаю сообщения об ошибках в сюжетах уже опубликованных инстэд-игр и просьбы к авторам поправить нестыковки. Хочу изначально, большую часть ключевых dsc и вообще текстовок связанных с room и obj вводить в виде переменных. А не в виде устойчивых (константных) dsc и decor. Просто, чтобы они были управляемы. Ну, к примеру, decor - "Вы пришли на заснеженную поляну и видите {домик}", потом он сгорает, чтобы не делать перетасовок, я лишь в определенный момент заменю значение строковой переменной и будет уже "....и видите {сгоревший домик}". А все движимые об'екты, да, придется тоже задавать заранее и вводить их при помощи кода (place и остальных конструкций). Пока я мыслю себе так.<br>

]]>
</content:encoded></item>
<item><title>Работа с об'ектами в сценах, в которые возможно многократное возвращение игрока</title><guid>HK5PUGW4YCEPY2U6B7K2</guid><pubDate>2017-07-14 15:26:31</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/HK5PUGW4YCEPY2U6B7K2#HK5PUGW4YCEPY2U6B7K2</link>
		<description>
		Чем больше делаешь, тем больше вопросов. Я уже читал о порядке работы интерпетатора, и могу работать с предметами и активными декорациями в пределах одной сцены. Тем более есть хорошая тестовая игра/учебник, которая прилагается к Inst3. Однако, пришлось залезать и в новую и в ста...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Чем больше делаешь, тем больше вопросов. Я уже читал о порядке работы интерпетатора, и могу работать с предметами и активными декорациями в пределах одной сцены. Тем более есть хорошая тестовая игра/учебник, которая прилагается к Inst3. Однако, пришлось залезать и в новую и в старую документацию, чтобы прочитать о теоретических вопросах. Это было вступление)))<br>
<br>
Вопрос в следующем. Могу ли я НЕ внутри описания некой конкретной сцены room {.....} принудительно добавлять и убирать об'екты на эту или иную сцену (room) при помощи или без помощи инвентаря, а одними лишь функциями обработчиков самих об'ектов и декораций?<br>
<br>
На сколько я знаю, если я пришел на сцену "лес", в которую при описании room {....} внутри фигурных скобок добавлены ранее сформированные obj "лежит {топор}" и obj "валяется {чурбак}", то я сейчас могу для каждого об'екта иметь возможность изменить динамическую часть сцены. Взять топор в инвентарь, он исчезнет со сцены. И порубать этим топором чурбак, он заменится на "поленья" и "щепки". Это штатно и понятно, и на других похожих случаях мной отработано. <br>
<br>
Но если я уйду с этой сцены по way или @ walk, а потом вернусь обратно в нее же с уже другими сюжетными задачами, то снова обнаружу не только лежащий топор, но и неразрубленный чурбак. По этому я и спросил про принудительное управление об'ектами инвентаря и любой другой сцены (не только текущей), возможно ли оно. То есть я хочу не только изменить сцену своими действиями, но и вернувшись в нее, застать прошлые изменения и дополнить их новыми, к примеру я притащил еще и спички, которые где-то выменял на топор, которого не должно уже быть ни в этой сцене, ни в инвентаре, ни вообще в игровом мире. <br>
<br>
Это я не к тому, что я хочу многого, просто проще заранее знать, если это невозможно штатными методами, я тогда изловчусь и попытаюсь написать игровую механику, чтобы она обеспечивала всю эту странную песочницу. Пока я могу ходить только в одномерном мире и строить сюжет без возможности вернуться на локации, ранее уже посещенные. Есть игра Шизофрения, где описанное мной реализовано (сохранение изменений в сцене при возвращении) , но я пока не смог разобраться как.<br>

]]>
</content:encoded></item>
<item><title>Динамическое описание сцены</title><guid>FF52IATYWHA4AGGE22NX</guid><pubDate>2017-07-13 11:40:58</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/FF52IATYWHA4AGGE22NX#FF52IATYWHA4AGGE22NX</link>
		<description>
		Вопрос. Но пока пояснение. Как правило, в играх на Instead динамическая часть сцены расположена на экране выше, чем основное описание сцены (dsc, decor). То есть при появлении вообщений в динамической части - текст decor смещается вниз, чтобы освободить место для появившейся надп...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Вопрос. Но пока пояснение. Как правило, в играх на Instead динамическая часть сцены расположена на экране выше, чем основное описание сцены (dsc, decor). То есть при появлении вообщений в динамической части - текст decor смещается вниз, чтобы освободить место для появившейся надписи курсивом. <br>
<br>
Как поменять их местами и возможно ли это? Можно ли при помощи кода игры, модулей или настройки темы (голубая сталь, стандартная и т.п.) сделать, чтобы динамическая часть сцены, точнее сообщения в ней, выводились всегда ниже, чем статичный блок описания сцены decor (и, разумеется, ниже блока описания об'ектов)? <br>

]]>
</content:encoded></item>
<item><title>Документация по модулям STEAD3</title><guid>WI5K5434U2SINSD54BYW</guid><pubDate>2017-07-06 16:09:15</pubDate><author>Peter</author><link>https://club.hugeping.ru/blog/WI5K5434U2SINSD54BYW#WI5K5434U2SINSD54BYW</link>
		<description>
		Начал писать здесь: https://github.com/gl00my/stead3/blob/master/doc/modules3.md
Можно следить за тем, как она наполняется и задавать вопросы. :)...
		</description>
		<content:encoded>
<![CDATA[
Peter -> All<br><br>
Начал писать здесь: <a href="https://github.com/gl00my/stead3/blob/master/doc/modules3.md" class="url">https://github.com/gl00my/stead3/blob/master/doc/modules3.md</a><br>
Можно следить за тем, как она наполняется и задавать вопросы. :)<br>

]]>
</content:encoded></item>
<item><title>Работа с глобальными переменными</title><guid>3JL6P72XQ7RIVP3NIQQP</guid><pubDate>2017-07-05 00:37:17</pubDate><author>Wol4ik</author><link>https://club.hugeping.ru/blog/3JL6P72XQ7RIVP3NIQQP#3JL6P72XQ7RIVP3NIQQP</link>
		<description>
		Прочитал всю документацию про переменные типа global, и все места, где упоминаются переменные. Возможно я недопонимаю, так как раньше работал только с процедурными языками, а не с ООП. Вопрос в следующем. Я в самом начале задаю некие глобальные переменные

global {
hot = 100; -- ...
		</description>
		<content:encoded>
<![CDATA[
Wol4ik -> All<br><br>
Прочитал всю документацию про переменные типа global, и все места, где упоминаются переменные. Возможно я недопонимаю, так как раньше работал только с процедурными языками, а не с ООП. Вопрос в следующем. Я в самом начале задаю некие глобальные переменные<br>
<br>
global {<br>
hot = 100; -- тепло, главный показатель ГГ <br>
power = 100; -- бодрость, главный показатель ГГ<br>
reason = 99; -- рассудок, способность принимать решения, вниманимательность, адекватность<br>
}<br>
<br>
Эти переменные используются для свёрнутого описания статуса ГГ, чтобы они появлялись на экране только при двойном клике на объект инвентаря "статус", таки образом<br>
<br>
obj { -- описание объекта "статуc ГГ"<br>
nam = 'статус';<br>
dsc = 'Это {статус}, просмотр статуса возможен при двойном клике на надписи "статус"';<br>
tak = 'Просмотр статуса возможен при двойном клике на надписи "статус"';<br>
inv = function(s)<br>
p (hot, '% - тепло^');<br>
p (power, '% - бодрость, способность действовать^');<br>
p (reason, '% - рассудок^');<br>
end<br>
} -- конец описания объекта "статуc ГГ"<br>
<br>
И это работает. Однако, часто возникает необходимость, при попадании в какую-либо локацию (room), изменить значения этих переменных. По условию, или принудительно без всяких условий. Я не понял как это делается. Простая запись, типа<br>
<br>
hot = 83; -- тепло изменилось со 100 на 83 <br>
power = 79; -- бодрость изменилась со 100 на 79<br>
reason = 51; -- рассудок изменился с 99 на 51<br>
<br>
Instead3 не выдает ошибки, но и не меняет значения переменных при попадании в эту комнату. Двойной клик на объект инвентаря "статус" выдает на экран первичное значение переменных. Друзья, подскажите, что я делаю не так.<br>

]]>
</content:encoded></item>
<item><title>Ссылка на FAQ</title><guid>BEBVBWXSDDZGL7ZDHJUG</guid><pubDate>2017-05-01 13:34:20</pubDate><author>Peter</author><link>https://club.hugeping.ru/blog/BEBVBWXSDDZGL7ZDHJUG#BEBVBWXSDDZGL7ZDHJUG</link>
		<description>
		Ссылка на постоянно растущий FAQ будет здесь: http://club.syscall.ru/_faq
Я буду добавлять в него интересные сообщения....
		</description>
		<content:encoded>
<![CDATA[
Peter -> All<br><br>
Ссылка на постоянно растущий FAQ будет здесь: <a href="http://club.syscall.ru/_faq" class="url">http://club.syscall.ru/_faq</a><br>
Я буду добавлять в него интересные сообщения.<br>

]]>
</content:encoded></item>
<item><title>Переводы строк в конце dsc/decor и др. методов</title><guid>QV3PP7JKESPHRWCF74RA</guid><pubDate>2017-05-01 13:31:34</pubDate><author>Peter</author><link>https://club.hugeping.ru/blog/QV3PP7JKESPHRWCF74RA#QV3PP7JKESPHRWCF74RA</link>
		<description>
		Частый вопрос, это -- как делать переводы строк в конце dsc/decor и прочих методов?
В STEAD3 все начальные и конечные переводы строк (^) -- режутся принудительно. Так как в 99% случаях, наличие дополнительных ^ это ошибка. Например, pn() в конце обработчика. Если вам действительн...
		</description>
		<content:encoded>
<![CDATA[
Peter -> All<br><br>
Частый вопрос, это -- как делать переводы строк в конце dsc/decor и прочих методов?<br>
В STEAD3 все начальные и конечные переводы строк (^) -- режутся принудительно. Так как в 99% случаях, наличие дополнительных ^ это ошибка. Например, pn() в конце обработчика. Если вам действительно нужно контролировать вывод настолько глубоко, вы можете:<br>
<br>
1) Написать в init() функции std.strip_call = false и тем самым отключить механизм вырезания лишних ^.<br>
2) Использовать подстановки $, например, таким образом:<br>
<pre class="code">
obj {
   nam = '$',
   act = function(s, w)
      return w
   end,
}

obj {
    nam = 'a';
    dsc = '- 1{$|^}';
}

obj {
    nam = 'b';
    dsc = '- 2{$|^}';
}

obj {
    nam = 'c';
    dsc = '- 3{$|^}';
}

room {
   nam = 'main';
   obj = { 'a', 'b', 'c' };
}
</pre>

]]>
</content:encoded></item>
<item><title>Создание контейнера в STEAD3</title><guid>s6F2u1C0gk11gk11gk11</guid><pubDate>2017-04-10 13:36:40</pubDate><author>Peter</author><link>https://club.hugeping.ru/blog/s6F2u1C0gk11gk11gk11#s6F2u1C0gk11gk11gk11</link>
		<description>
		Класс объектов

Конструкторы объектов широко использовались в STEAD2. В STEAD3 obj/dlg/room реализованы как классы объектов. Класс объектов удобно создавать для тех случаев, когда поведение создаваемого объекта не укладывается в стандартные объекты obj/room/dlg и вы хотите поменя...
		</description>
		<content:encoded>
<![CDATA[
Peter -> All<br><br>
Класс объектов<br>
<br>
Конструкторы объектов широко использовались в STEAD2. В STEAD3 obj/dlg/room реализованы как классы объектов. Класс объектов удобно создавать для тех случаев, когда поведение создаваемого объекта не укладывается в стандартные объекты obj/room/dlg и вы хотите поменять методы класса. Изменив метод класса, например, вы можете вообще изменить то, как выглядит предмет в сцене. В качестве примера, рассмотрим создание класса "контейнер". Контейнер может хранить в себе другие объекты, быть закрытым и открытым.<br>
<br>
<pre class="code">
-- create own class container
cont = std.class({ -- создаем класс cont
    display = function(s) -- переопределяем метод показа предмета
	local d = std.obj.display(s)
	if s:closed() or #s.obj == 0 then
	    return d
	end
	local c = s.cont or 'Внутри: ' -- описатель содержимого
	local empty = true
	for i = 1, #s.obj do
	    local o = s.obj[i]
	    if o:visible() then
		empty = false
		if i &gt; 1 then c = c .. ', ' end
		c = c..'{'..std.nameof(o)..'|'..std.dispof(o)..'}'
	    end
	end
	if empty then
	    return d
	end
	c = c .. '.'
	return std.par(std.space_delim, d, c)
    end;
}, std.obj) -- мы наследуемся от стандартного объекта
</pre>
<br>
После этого, вы можете создавать контейнеры так:<br>
<br>
<pre class="code">
cont {
    nam = 'ящик';
    dsc = [[Тут есть {ящик}.]];
    cont = 'В ящике: ';
}: with {
    'яблоко', 'груша';
}
</pre>
<br>
Когда контейнер будет открыт, вы увидите описание ящика, а также содержимое ящика в виде строки ссылок: В ящике: яблоко, груша. dsc объектов яблоко и груша будут скрыты.<br>
<br>
К сожалению, подробное описание классов выходит за рамки данного руководства, эти вещи будут описаны в другом руководстве для разработчиков модулей. А пока, для вашей первой игры, вам не стоит писать свои классы объектов.<br>

]]>
</content:encoded></item>
</channel></rss>
