Как сделать 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]
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]
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]
Музыка и звуки [5]
Переводы строк в конце dsc/decor и др. методов [1]
Докладываю [1]
Об'екты на сцене и в инвентаре [4]
результваты [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]
События точскрина в INSTEAD [0]
Очистка всего и вся, полный рестарт игры [9]
Re: Очистка всего и вся, полный рестарт игры
Peter(syscall,1) — Wol4ik
2017-08-10 17:57:30
> Пишу ответить (символ повернутой стрелочки) или новое сообщение.
Вот проскроллируй вниз до самого конца. На странице, где пишешь текст. Там подсказка.
Выложить объект из инвентаря в произвольную сцену room [6]
Важный вопрос [5]
Re: Важный вопрос
Peter(syscall,1) — Wol4ik
2017-07-25 20:41:33
> Собственно, да... пора уже переходить к фазе разработки несложной, но законченой игры. Первой игры на Instead.
Удачи! Будем ждать. :)
Возврат из комнаты в ту, из которой мы попадаем при помощи way [2]
Чтобы избежать ошибок [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]
Работа с глобальными переменными [4]
Ссылка на FAQ [0]
Создание контейнера в 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 объектов яблоко и груша будут скрыты.
К сожалению, подробное описание классов выходит за рамки данного руководства, эти вещи будут описаны в другом руководстве для разработчиков модулей. А пока, для вашей первой игры, вам не стоит писать свои классы объектов.