instead-hub / metaparser Goto Github PK
View Code? Open in Web Editor NEWINSTEAD module to create games with text input
License: MIT License
INSTEAD module to create games with text input
License: MIT License
INSTEAD3 METAPARSER MODULE This program is covered by the terms of the MIT license. Check the COPYING file for license. https://instead.hugeping.ru/page/metaparser/
Транскрипт ненавидит загрузку снапшотов. При загрузке он начинает записывать заново всё, что произошло к настоящему моменту, и в логах очень сложно разобраться. Причём в логах оказываются действия, которые были отменены загрузкой снапшота.
Что должно быть:
Прилагаю минимальный пример для проверки. Как проверять:
транскрипт
нажать на кнопку
obj {
-"кейс";
nam = "кейс";
when_closed = "Массивный стальной кейс.";
when_open = "Кейс стоит нараспашку.";
obj = {'предмет'};
with_key = 'ключ';
}:attr 'static, openable, lockable, locked, container';
При открытом кейсе на команду "осмотреть кейс" выводится: "В кейсе находится предмет."
when_open игнорируется.
Если персонаж в контейнере, то он не сможет послушать/понюхать предмет за пределами контейнера.
Например, нельзя послушать дождь из машины.
Ну это просто логично. Потому что если его потом положить, то он «потеряется».
Это для тех объектов, которые можно взять, они присутствуют на сцене, но их надо как-то «проявить» другими действиями игрока.
Варианты улучшений для потенциальной будущей версии Метапарсера. В виде сырых идей.
Расширения существующих глаголов:
Новые глаголы:
Псевдо-события для страдательных объектов:
Похоже, это не описано.
Если предмет светит, статус не отображается вообще, желательно сделать по анологии с "открыт/закрыт", например "лампа (светит)".
Также - если у предмета два статуса (например, открыт и надет), выводится только один. Неплохо бы выводить все, например "сумка (открыта и надета)".
Такая фича есть в RTADS и RInform (команды «п», «еще» в RTADS и «снова» в RInform). В некоторых играх полезно.
Да, в инстеде можно нажать стрелку вверх и Enter. Но это получается зависимость от интерпретатора и не сработает, например, в ботах.
Для команд:
прописаны обработчики для объекта А, но не для объекта Б. Может быть неудобно, если хочется прописать для объекта Б некую реакцию по умолчанию.
Т.е. нужен аналог ThrownAt/Recieve для действий резать/копать/привязать (возможно, и для других, но мне не хватало именно этих).
автоскрипт не позволяет пропускать катсцены
Просто пожелание на подумать.
Например, в комнате есть два яблока. Одно красное — в инвентаре. И одно зелёное — на столе.
Если написать
> взять яблоко со стола
то ответ будет всё равно
Здесь есть красное яблоко и зелёное яблоко.
Мало того, что «взять» можно только то, что у тебя нет в инвентаре. Так ещё ж и игрок явно написал, что нужное ему яблоко — на столе.
В «Разломе» у меня были два баллона, пустой и полный. И игроки регулярно напарывались на то, что когда пишешь
> снять баллон со скафандра
то игра их не понимает.
Я понимаю, что МП оперирует понятием scope, но может как-то сужать этот scope, когда в строке уже есть какие-то уточнения помимо полного названия предмета?
Сейчас команды "осмотреть книгу" и "читать книгу" делают одно и то же. Чтобы вызвать обработчик Consult, нужно вводить "читать в книге про <что-то>", что неудобно, т.к. игрок может не догадаться ввести это.
В принципе, в игре это можно обойти через костыль:
VerbRemove "#Consult"
Verb {
"#Read",
"[|про|по]чита/ть,проч/есть",
"в|во {noun}/пр,2 о|об|обо|про * : Consult",
"~ о|об|обо|про * в|во {noun}/пр,2 : Consult reverse",
"~ {noun}/вн : Consult",
}
function mp:after_Consult(s, o)
if not o then
mp:xaction('Exam', s)
return
end
mp:message 'Consult.CONSULT'
end
Но было бы неплохо, если бы такое было непосредственно в МП.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.