Echo :: Forum :: Blog :: RSS
Как сделать input в Instead? [1]
Как сделать переход из одной комнаты в две другие? [2]
Re: Как сделать переход из одной комнаты в две другие?
hopkins1988(ping,34) — hugeping
2021-06-24 03:47:47


--$Name:test$
--$Version:0.1$
--$Author:hopkins1988$
function init()
end;
room{
nam='main';
title='выбор';
way={'level1','level2'};
};
room{
nam='level1';
title='уровень1';
way={'main'};
};
room{
nam='level2';
dsc='game over';
};

scene_use в stead3 [1]
Re: scene_use в stead3
hugeping(ping,1) — Dima
2021-01-25 09:28:11


Dima> Вопрос: как реализовать данный метод в стед3 через классы. Например: в сцене есть свободный конец веревки и я хочу привязать его к другому объекту сцены или инвентаря, при этом не добавляя конец веревки в инвентарь.

В stead3 данный метод (use предмета сцены на предмет сцены) был признан ошибочным и упразднён.

Так что, предполагается, что конец верёвки таки добавится в инвентарь (или просто верёвка), а при выходе из сцены писать что-то вроде: ты бросил верёвку.

Если очень хочется, можно пытаться сделать что-то своё (например, меняя форму курсора как сделано в модуле use: https://github.com/instead-hub/stead3-modules/tree/master/use ), но штатного механизма - нет.

Читшит с функциями INSTEAD [0]
Читшит с функциями INSTEAD
hugeping(ping,1) — All
2020-10-11 21:10:23


Lucky_Ook некоторое время назад запилил читшиты с функциями INSTEAD. Чтобы не потерять, оставлю здесь: https://github.com/luckyuk/Instead-cheatsheet
P.S. Edited: 2020-10-11 21:10:56

Unicode строки в Instead [7]
Re: Unicode строки в Instead
hugeping(ping,1) — Frost
2020-09-22 15:00:55


> print(std.game.codepage)

Конечно, так не сработает, в этот момент game ещё нет. Но в моём коде std.game проверяется внутри функции, запуск которой предполагается в момент, когда игра уже запущена. Например, в start() и позже...

еще вопросец (СТИД 2) [10]
Re: еще вопросец (СТИД 2)
Peter(syscall,1) — kolobod
2020-02-01 15:39:12


> Осилить бы это))) Если добью наконец игру (стыдно сказать, 5 лет уже прошло - 5, КАРЛ! ПЯТЬ!!) попробую поразбираться в стид3.

Новый попроще. )

Перемещение через... dsc - в СТИД 2 [7]
Re: Перемещение через... dsc - в СТИД 2
kolobod(syscall,30) — Peter
2019-10-11 21:49:43


Я просто добавил маленькую прослойку: когда создается нужное условие, в становится true событие - которое само по себе переход не дает, но делает его возможным из другого места)))
Вообще, конечно, я изначально пошел по очень неверному пути. Надо было проще эти переходы организовать, как это предусмотрено в инстиде. Но нет, захотелось пооригинальничать, повыпендриваться) И это при отсутствии-то навыков программирования))) Вот и расхлебываю...

Рандом в СТИД 2 [4]
Re: Рандом в СТИД 2
kolobod(syscall,30) — Peter
2019-09-26 09:12:27


Супер! Похоже это вот именно то, что надо было!! Сегодня после работы сяду пробовать в деле)
Большущее спасибо.

Использование аудиозаписей [5]
Re: Использование аудиозаписей
vmg(syscall,52) — Andrew Lobanov
2019-08-28 08:20:21


> У нас тут уютно и лампово
На самом деле, радость, что у нас есть такой добрый гостеприимный дом и люди, которые дали ему появиться.

А как сделать, чтобы... [4]
Re: А как сделать, чтобы...
Peter(syscall,1) — Пэ
2019-06-16 10:34:15


В моей игре есть реализация класса path. https://github.com/gl00my/instead-game-summerday

Но вообще, стороны света - это удобная и абстрактная система перемещений. Ей и пользоваться удобно и в голове карту держать. Так что я бы ей не пренебрегал.

instead-js или instead-em [16]
Re: instead-js или instead-em
lnp3(syscall,35) — techniX
2018-09-04 10:08:39


> По скорости загрузки - instead-em загружает около 10 мегабайт при первом запуске, потом чуть быстрее из кэша. А instead-js "весит" меньше 1 мегабайта.
> Кроме того, в instead-js есть два режима загрузки. Можно загружать игру из zip-файла - но тогда нужно ждать пока вся игра целиком загрузится в клиентский браузер. А можно из каталога - тогда она практически мгновенно запускается, а картинки потом в фоне подгрузятся.

Вот это ценнейшая информация, спасибо большое! Положу в копилку.

Работа с текстовой строкой [3]
Re: Работа с текстовой строкой
Peter(syscall,1) — lnp3
2018-07-11 15:22:17


> Спасибо, Пётр! Немного не то, что хотелось, но работает. Я предполагал сделать всплывающие окна для вопросов и ответов или получать ответ сразу в тексте, чем-то вроде <input>.

Такие варианты тоже возможны. Но только готового модуля под STEAD3 нет. А для сейфов традиционно делаются просто ссылки с числами прямо в тексте локации. Нажимая на цифры - щелкаем их.

> Существующий вариант со специальной комнатой пока устраивает, буду ориентироваться на него, но в будущем постараюсь решить иначе ввод текста. Кстати, замечательная буква "Ё" не обрабатывается. Почему? И будет ли модуль работать в Instead-js? Я хочу поместить детектив на своём сайте, там у меня тысяча загадок с обработкой логики на php.

Должен работать на instead-js и нв instead-em. Про ё сходу не скажу, надо смотреть модуль.

EMACS-вопрос [9]
Re: EMACS-вопрос
Andrew Lobanov(tavern,1) — Anotheroneuser
2018-03-29 05:28:32


Anotheroneuser> Смотрел инструкцию по адресу:
>>  https://habrahabr.ru/post/105300/
Anotheroneuser> и нашёл там раздел «Ссылки в другие места», где написано «Для того что бы создать ссылку достаточно использовать такой шаблон — [[ссылка][описание]]»
Anotheroneuser> Одним из главных головных головняков в работе является необходимость связывать данные между собой: лица, факты, даты, различные объекты и прочее. Есть необходимость в устройстве целых перечней (справочников, если угодно) лиц, групп лиц и так далее, чтобы можно было делать ссылки на конкретные части этих справочников. Например, на конкретных людей или объекты.

Если под справочником понимать plain text файл, и нужно встать на определённую его точку, то попробуй [[ссылка::строка][описание]].

Anotheroneuser> Возможно ли это в EMACS или разумнее использовать для этих целей другие решения?

Штука в том, что emacs можно использовать для чего угодно. Вот вопрос удобства это другой разговор, но это дело индивидуальное. Потому затрудняюсь ответить. Как я себе представил реализацию вышеобозначенной штуки, то emacs org-mode прекрасно справится с этой задачей.

>>  Вот с обозреванием Сети не очень ясно.
Anotheroneuser> Слово какое-то.. странное, да? )) Обозрение, может?

Ну у меня как раз образование сугубо техническое, а словесность никогда не была моей сильной стороной. Так разве что, иногда гранями мерцаю %)

Anotheroneuser> Короче, есть одна субъективная теория, согласно которой ограниченный доступ к Сети способствует экономии сил при работе с ней и повышению результативности.

Безусловно. Эту тему поднимали много раз в самых разных местах. Больше всего мешают продуктивности соц. сети и чаты, КМК.

Anotheroneuser> Текстовый обозреватель Сети, встроенный в EMACS, я уже пробовал — очень здорово. Единственно, с помощью него мне не удалось зайти, скажем, в управление яндекс-почты. Но это, видимо, нормально.

Ну он без поддержви JavaScript. Потому может показывать только статичные странички, но шука весьма неплохая.

>>  Для упомянутых целей есть уже готовые решения. Их нужно только установить и настроить...
Anotheroneuser> Сам EMACS уже установил. Приятная среда. Хотя, пока ни черта почти не понятно.

Ну в его поставку уже много чего входит. Просто оно не настроено.

>>  Хорошая штука. Лучше и проще в использовании я системы вёрстки не встречал. Конечно, достаточно сложно создавать шаблоны, очень сложно верстать таблицы, но тексты и формулы набирать в LaTeX одно удовольствие.
Anotheroneuser> Там, если не ошибаюсь, тоже есть возможность связывать материалы и их части перекрёстными ссылками? Но, кажется, для анализа данных по мере вёрстки он не очень подходит. Только для оформления. Шаблон набил и дальше просто вставляй в нужные места этого шаблона новые данные — отлично.
Anotheroneuser> Наконец-то, можно будет забыть про капризные текстовые процессоры.

Пётр тут меня поправил, что возможно для набора текстов использовать markdown. Он более простой в работе, но нужно настроить соответствующее ПО. Ещё можно набирать прямо в org-mode и тоже конвертировать в PDF, кстати =)

Anotheroneuser> А нужно иметь возможность именно для анализа данных.
Anotheroneuser> Чтобы можно было... как бы писать книгу, снабжая её фото- видео- аудио- материалами, увязывая эти материалы и их части между собой и так далее.
Anotheroneuser> Чтобы в пятницу закрыть книгу, а в понедельник — открыть и сразу вспомнить, на чём ты остановился и, главное — куда тебе идти дальше. Но это так, образно ))

Вот тут нужно что-то более мощное. Но в любом случае, поиграться по теме с emacs стоит. Будет более чётко понятно что можно и нужно. По крайней мере мне так кажется.

EMACS-вопрос [0]
EMACS-вопрос
Anotheroneuser(syscall,27) — All
2018-03-28 22:49:01


Можно для ясности рассказать подробнее о системе?
Итак, жили мы жили и тут — раз — что-то случилось…

В безвычислительномашинные годы ты берёшь и начинаешь писать. Настоящей ручкой по настоящей бумаге. Пишешь до усрачки, носишься с этой писаниной, теряешь или забываешь её, стараешься лепить её на стены, доски и так далее. Всё очень романтично (со всеми вытекающими ..здецами), но теперь есть хорошая альтернатива и она называется ЭВМ.

Любая задокументированная (диктофон, рукописи, видео, фото, а в идеале — смс, электронные письма и данные журнала соединений) информация по определённому режиму направляется тобой в машину и начинается самое интересное.

Осматривая фотографии, отсматривая видеозаписи, прослушивая аудио, ты начинаешь думать и приходить к разнообразным выводам. Чтобы не забивать себе голову, ты эти выводы набиваешь в той самой операционной среде, о которой мы говорим.

Допустим, у нас в качестве операционной среды выступает среда разработки, вроде Geany. Там есть прикольнейшие функции поиска, сортировки, выделения и всего остального. Чего стоит одна Ctrl+Shift+D по ключевому слову, которая позволяет в окне «Сообщения» видеть перечень вхождений этого слова и фактически получить содержание документа, если такое ключевое слово ставить в начале соответствующих строк (для прикола можете попробовать открыть в Geany какой-нибудь Уголовный Кодекс Российской Федерации и сделать Ctrl+Shift+D на слове «Статья».

Так вот, материалов немало, мыслей ещё больше и ты не устаёшь набивать их в редакторе, но..
Они следуют друг за другом, требуя всё большей ответственности с твоей стороны. Тебе приходится придумывать и соблюдать всё новые стандарты обращения со своими данными и постепенно ты начинаешь в них путаться.
Всякий раз, обращаясь к своим записям, ты понимаешь, что напрягаешься, пытаясь найти нить.

Кроме того, было бы неплохо иметь возможность обращаться к дополнительному видео или иному материалу, просто указывая на ссылку в тексте. Хотя, это блажь, конечно... Но, блин, если у нас есть такая возможность, то какого хрена?

Вот и всё.
И пределов совершенству нет, что подразумевает расширение. Поэтому и пришёл логический вывод о необходимости изучения EMACS. Теперь после ваших советов начинаю понимать, что игра стоит свеч.

отсутствие влияния части настроек темы (theme) на активные элементы измененные при помощи модуля fonts [1]
Re: отсутствие влияния части настроек темы (theme) на активные элементы измененные при помощи модуля fonts
Andrew Lobanov(Go!,1) — Wol4ik
2018-01-10 04:17:24


Wol4ik> Модуль fonts на beta-сборке 3.2 работает нормально. Единственно, такие настройки стандартной или собственной темы игры как:
Wol4ik> ====
Wol4ik> win.col.fg = black
Wol4ik> win.col.link = #b02c00
Wol4ik> win.col.alink = #606060
Wol4ik> ====
Wol4ik> Не влияют на подсветку активных элементов obj, если шрифт их dsc видоизменен при помощи модуля fonts. Вот пример, на котором проводилось тестирование. Это немного видоизмененный пример из репозитория с модулями для stead3
Wol4ik> ====
Wol4ik> require "fonts"
Wol4ik> local fnt = _'$fnt'
Wol4ik> fnt:face ('sans', 'sans.ttf', 20)
Wol4ik> room {
Wol4ik> nam = 'main';
Wol4ik> decor = [[Текст описания локации.]];
Wol4ik> }:with {
Wol4ik> obj {
Wol4ik> nam = 'r1';
Wol4ik> dsc = '{ бутерброд }'; -- стандартный шрифт темы
Wol4ik> act = 'Вы выбрали бутерброд';
Wol4ik> };
Wol4ik> obj {
Wol4ik> nam = 'r2';
Wol4ik> dsc = '{{$fnt sans| кувалда }}'; -- шрифт заданный при помощи модуля fonts, не имеет подсветки, хотя кликабелен.
Wol4ik> act = 'Вы выбрали кувалду';
Wol4ik> };
Wol4ik> }
Wol4ik> ====

Дело в том, что модуль fonts делает картинку с надписью. То есть с точки зрения инстеда это картинка, вставленная в текст. Естественно, она не может хайлайтиться, так как для этого нужна вторая картинка и нетривиальная, в принципе, обёртка для этого.

Модуль fmt в Stead3, внедрение числовых переменных в символьный аргумент отрисовки fmt.img('box:.. [0]
Модуль fmt в Stead3, внедрение числовых переменных в символьный аргумент отрисовки fmt.img('box:..
Wol4ik(syscall,22) — All
2018-01-05 18:24:31


Данная программа готова к запуску, содержит участок кода, данный нашим другом techniX. Демонстрирует создание графической шкалы прогресса для разных параметров в играх (здоровье, тепло, сытость и т.п.).
-- $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;
};

Создание кликабельной картинки, кнопки [0]
Создание кликабельной картинки, кнопки
Wol4ik(syscall,22) — All
2017-12-23 21:19:03


Требуется подключить модуль fmt. Помещаем на сцену объект, имея для него произвольную картинку по заявленному пути
obj {
	nam = 'idti';
	dsc = function ()
		p ('{',fmt.img'data/idti.png','}'); -- кликабельная картинка кнопки.
	end;
	act = function ()
		walk 'e0'; -- переход или любое действие по нажатию на картинку.
	end;
}

Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3 [3]
Re: Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
Wol4ik(syscall,22) — Peter
2017-12-04 03:43:33


При том, хочу отметить, что есть неочевидный нюанс со скобками /ну, для знатоков lua, может быть, очевидный/

1. Если мы приравнивает весь act (use, и т.п.) к пользовательской функции, то пишем ее имя обязательно без скобок: act = fire;

2. А если добавляем в тело другой функции, как дополнение, то обязательно со скобками:
act = function ()
      -- тело текущей функции
         fire() -- имя пользовательской ф-ции со скобками
      end;

Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3 [0]
Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
Wol4ik(syscall,22) — All
2017-12-03 15:07:47


Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};

При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:

obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
 Fire() end; -- применение пользовательской функции.
};

Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3 [0]
Применение ПОЛЬЗОВАТЕЛЬСКОЙ функции в Stead3
Wol4ik(syscall,22) — All
2017-12-03 15:07:46


Рабочий пример, функция fire может быть вызвана в act, use, used объектов и/или в onenter комнат, или в теле других функций.
fire = function () -- пользовательсяка функция для многократного использования
	p 'Вы находитесь рядом с источником тепла.';
	-- еще здесть могут быть помещены формулы, 
	-- меняющие состояние игры
	-- статус игрока, комнат и объектов.
end;
--
room {
	nam = 'main';
	obj = {'лес'};
}
--
obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = fire; -- применение пользовательской функции.
};

При смешивании текущей функции с ранее заявленной пользовательской функцией, например в act:

obj {
	nam = 'лес';
	dsc = 'Вы в лесу, на опушке горит {костёр}.';
	act = function() 
             p "Вы приблизились к костру.";
 Fire() end; -- применение пользовательской функции.
};

про контейнер [1]
Re: про контейнер
Wol4ik(syscall,22) — Wol4ik
2017-11-17 20:24:58


ответ: добавить после самой последней фигурной скобки :close()

}: with {
	'meal', 'wood', 'fuel';
}:close()

Разделители [1]
Re: Разделители
Peter(syscall,1) — kolobod
2017-10-31 15:36:38


лучше так:
game.gui.ways_delim = ""

Переходы-картинки [0]
Переходы-картинки
kolobod(syscall,30) — All
2017-10-31 12:03:12


Ну вот например, есть такая фишка - убрать в диалогах цифры, заменив их на "-".
===
stead.phrase_prefix = '-';
===
А нет ли такой же: чтобы избавиться от разделителей путей "|"?

Переходы-картинки [2]
Re: Переходы-картинки
kolobod(syscall,30) — Peter
2017-10-31 11:03:46


ДА!!))
Но, тут же вылезла другая загвоздка. Между картинками вылезают стандартные текстовые разделители "|".
Реально ли их отключить как-то?

Клавиатурный ввод в STEAD3 [0]
Клавиатурный ввод в STEAD3
Peter(syscall,1) — All
2017-10-30 05:52:35


1. В документации описал модуль keys
2. Адаптировал модуль keyboard с STEAD2: https://github.com/instead-hub/instead/tree/master/doc/examples/stead3/keyboard

Единственный нюанс, в модуле keyboard на текущей версии STEAD3 после возврата из клавиатуры в комнату, поле from будет изменено у комнаты, а вот в новой версии инстеда это будет не так.
Причина: walkback функция, которая появится только в следующей версии.

Музыка и звуки [5]
Re: Музыка и звуки
Wol4ik(syscall,22) — Peter
2017-10-20 13:20:21


Ага, понял. Спасибо.

Переводы строк в конце dsc/decor и др. методов [1]
Re: Переводы строк в конце dsc/decor и др. методов
Wol4ik(syscall,22) — Peter
2017-10-15 10:11:30


Понял. Буду иметь в виду. Был не прав.

Докладываю [1]
Re: Докладываю
Peter(syscall,1) — Wol4ik
2017-10-14 19:35:26


> Возможно это баг, а возможно это я нарушаю правила использования объектов

Вот ответ на вопрос:
ii://QV3PP7JKESPHRWCF74RA

Об'екты на сцене и в инвентаре [4]
Re: Об'екты на сцене и в инвентаре
Wol4ik(syscall,22) — Peter
2017-10-11 15:14:18


Спасибо. Теперь мне понятно.

результваты [6]
Re: результваты
Wol4ik(syscall,22) — Peter
2017-10-10 07:30:46


Ага, теперь красиво. Только я пробелы убрал около слэша. То есть есть некие служебные меры
1. %d
2. %.3f
3. еще что-то...
Более мене пончл как их настраивать 3f 2f и тд.

Докладываю [5]
Re: Докладываю
Peter(syscall,1) — Wol4ik
2017-10-10 05:50:06


> Сообщений от ошибке синтаксиса @ walk внутри [[]] не выводилось.
Спасибо. Это разные ситуации с тз инстеда. Обработка dsc объекта и общего вывода. Хорошо, что не виснет. :)
Детектирование незакрытых скобок в данном случае неудобно делать, но буду иметь в виду.

Делюсь [8]
Re: Делюсь
Peter(syscall,1) — Wol4ik
2017-10-09 13:23:34


> Как сделать вывод фиксированного количества знаков после запятой в дроби, даже если там нули?
По идее, так: p(string.format("%.2f", 0.01234))
Вот это и надо как то упростить в след версиях, это lua конструкция форматированного вывода.

Вот. сделал отдельный код для запуска, прошу проверить непосредственно в игровом режиме [1]
Округление чисел в Lua
Peter(syscall,1) — Wol4ik
2017-10-08 08:24:33


Это "фича" Lua. Если нужно отображать с заданной точностью числа, придется их округлять при вычислении, или при выводе.
Примеры функций округления тут:
http://lua-users.org/wiki/SimpleRound

Я взял одну из них и немного поменял код.
function round(num, numDecimalPlaces)
  return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
end
obj {
    nam = 'вычесть';
    dsc = '{Вычесть.}';
    act = function ()
        hot = round(hot - 0.2, 2) -- округляем!
    end;
     }

p.s. еще [1]
Re: p.s. еще
Wol4ik(syscall,22) — Wol4ik
2017-10-08 07:23:21


п.с. При многократном вычитании из целого по 0.5 - Всё отображается корректно и адекватно начинает уходить и отображаться в отрицательных значениях.
2
1.5
1
0.5
0
-0.5
-1
и т.д. всё нормально в общем.
----
Но уже при вычитании 0.4 проблемы (начал последовательно вычитать из двадцати, чтоб к нулю всё было ровно).
20
19.6
19.2
...
...
1.2
0.8
0.4 - далее вычитаю из этой оставшейся 0.4 еще 0.4 и по идее должен получиться чистый ноль, но следующее значение такое...
4.1078251911131

Возможно я не знаю всех свойств переменных и выбрал не тот тип.
У меня она задается так
global {
        hot = 20;
        hotmax = 20;
        ...
        (иные числовые переменные)
        }

Синтаксис работы с way [2]
Re: Синтаксис работы с way
Wol4ik(syscall,22) — Peter
2017-08-15 20:44:36


Спасибо! Ответы исчерпывающи.

События точскрина в INSTEAD [0]
События точскрина в INSTEAD
Peter(syscall,1) — All
2017-08-12 14:39:51


Обновил демку модуля finger. Находится демка тут:
https://github.com/gl00my/stead3/tree/master/tests/fingers

Если что, спрашивайте.
Обычно модуль не нужен, так как нажатия на экран ловятся и модулем click, но для аркад и поддержки одновременного нажатия на экран в нескольких местах -- пригодится модуль finger.

Очистка всего и вся, полный рестарт игры [9]
Re: Очистка всего и вся, полный рестарт игры
Peter(syscall,1) — Wol4ik
2017-08-10 17:57:30


> Пишу ответить (символ повернутой стрелочки) или новое сообщение.
Вот проскроллируй вниз до самого конца. На странице, где пишешь текст. Там подсказка.

Выложить объект из инвентаря в произвольную сцену room [6]
Re: Выложить объект из инвентаря в произвольную сцену room
Wol4ik(syscall,22) — Andrew Lobanov
2017-08-02 15:17:52


Спасибо, друзья. С drop тоже проэкспериментирую. Спасибо Петру за наглядное пояснение, что есть s и w в функциях, а то я часто срисовывал как школьник с доски, без понимания.

Важный вопрос [5]
Re: Важный вопрос
Peter(syscall,1) — Wol4ik
2017-07-25 20:41:33


> Собственно, да... пора уже переходить к фазе разработки несложной, но законченой игры. Первой игры на Instead.
Удачи! Будем ждать. :)

Возврат из комнаты в ту, из которой мы попадаем при помощи way [2]
Re: Возврат из комнаты в ту, из которой мы попадаем при помощи way
Wol4ik(syscall,22) — Peter
2017-07-23 06:13:29


Спасибо, всё заработало!

Чтобы избежать ошибок [5]
Re: Чтобы избежать ошибок
Peter(syscall,1) — Wol4ik
2017-07-19 17:17:49


> Аааа. Прошу прощеня, забыл очевидную вещь)))) если убрать return, но отобразятся сразу оба состояния. А return вернет нас просто в room, где об'ект фигурирует.
Дело в том, что есть такое понятие как метод,
Вот dsc - это метод. Когда движку нужно описание, он вызывает метод dsc у всех объектов комнаты. return тут это не возврат в комнату, а выход из функции. Например (это не инстед, просто lua):

function test()
   return 10
end
print(test()) -- выведет 10

function test2()
   return
end
print() -- выведет пустоту


А в инстеде p -- это просто накопление текста, например:

p "hello"

это то же самое, что return "hello"

Или так:

p "hello"
p "world"

то же самое, что и return "hello world"

Теперь про пример:

if s.burned then
   p "сгорел"
end
p "не сгорел"

будет "сгорел не сгорел"

а так:

if s.burned then
   p "сгорел"
   return  -- мы вышли из функции
end
p "не сгорел"

только одно состояние

Еще вариант:

if s.burned then
   p "сгорел"
else
   p "не сгорел"
end

Надеюсь, помог.

Работа с об'ектами в сценах, в которые возможно многократное возвращение игрока [3]
Re: Работа с об'ектами в сценах, в которые возможно многократное возвращение игрока
Wol4ik(syscall,22) — Peter
2017-07-14 15:26:15


Спасибо. Теперь я понял, что такое атрибуты-списки. Чита-читал, но не мог понять саму суть и назначение этого. Похоже на динамически меняющиеся массивы, в моем ветхом процедурном лексиконе. В любом случае отчитаюсь с примерами, даже если получится и сцены заработают как надо. Уверен, наше осуждение будет полезно кому-то еще. "Проводник" посмотрю.

Динамическое описание сцены [11]
Re: Динамическое описание сцены
Wol4ik(syscall,22) — Peter
2017-07-13 21:51:29


Пётр, я сделал, как того хотел. Твои доводы убедительны, но, как часто бывает, убедить может только свой опыт))) Посмотрел, как это выглядит - хуже, чем я представлял. Тут еще играет роль устройство внимания человека. Когда шапка не меняется, а внизу под неизменным текстом что-то появляется/меняется, взгляд очень неохотно переходит вниз экрана. Мы, как правило, держим внимание вверху экрана, так как там самая важная информация. Да, хорошо, что текст decor отскакивает вниз/прыгает, есть есть некая живость "картинки", хотя добавляется всего 1-2 строчки реакции вверху. В общем, остаюсь на базовых настройках))) Большое спасибо за примеры и пояснения. Продолжаю медленно, но верно работать над игрой.

Документация по модулям STEAD3 [0]
Документация по модулям STEAD3
Peter(syscall,1) — All
2017-07-06 14:09:15


Начал писать здесь: https://github.com/gl00my/stead3/blob/master/doc/modules3.md
Можно следить за тем, как она наполняется и задавать вопросы. :)

Работа с глобальными переменными [4]
Re: Работа с глобальными переменными
Wol4ik(syscall,22) — Peter
2017-07-05 06:46:21


Пётр, большое спасибо за пояснения. Это очень помогло. Продолжаю читать документацию.

Ссылка на FAQ [0]
Ссылка на FAQ
Peter(syscall,1) — All
2017-05-01 11:34:20


Ссылка на постоянно растущий FAQ будет здесь: http://club.syscall.ru/_faq
Я буду добавлять в него интересные сообщения.

Создание контейнера в STEAD3 [0]
Создание контейнера в STEAD3
Peter(harbor:club.syscall.ru) — All
2017-04-10 11:36:40


Класс объектов

Конструкторы объектов широко использовались в STEAD2. В STEAD3 obj/dlg/room реализованы как классы объектов. Класс объектов удобно создавать для тех случаев, когда поведение создаваемого объекта не укладывается в стандартные объекты obj/room/dlg и вы хотите поменять методы класса. Изменив метод класса, например, вы можете вообще изменить то, как выглядит предмет в сцене. В качестве примера, рассмотрим создание класса "контейнер". Контейнер может хранить в себе другие объекты, быть закрытым и открытым.

-- 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 > 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) -- мы наследуемся от стандартного объекта

После этого, вы можете создавать контейнеры так:

cont {
    nam = 'ящик';
    dsc = [[Тут есть {ящик}.]];
    cont = 'В ящике: ';
}: with {
    'яблоко', 'груша';
}

Когда контейнер будет открыт, вы увидите описание ящика, а также содержимое ящика в виде строки ссылок: В ящике: яблоко, груша. dsc объектов яблоко и груша будут скрыты.

К сожалению, подробное описание классов выходит за рамки данного руководства, эти вещи будут описаны в другом руководстве для разработчиков модулей. А пока, для вашей первой игры, вам не стоит писать свои классы объектов.