TGI station



Назад

instead-games.forum :: Бездна вопросов по Метапарсеру от новичка
================================================================

subject: Бездна вопросов по Метапарсеру от новичка
05.06.2024 13:40
RSS-bot (tavern,2)  
 
Veresk: Здравствуйте! Я новичок в разработке. Решил пойти по неправильному пути и взялся за создание достаточно крупной игры, замахнулся на сборку звездолёта с парой гаечных ключей в кармане, хотя меня отговаривали, честно. Идея процесса в том, что я пишу, пока пишется и при возникновении нерешаемой задачи, условно, когда нет подходящей отвёртки, буду бросать вопрос и собирать предложеные решения. Все советы по ходу дела собираются в личный "ящик с инструментами-шаблонами", которые потом можно комбинировать и изменять до появления очередного пробела в знаниях. Я решился на этот долгий путь в надежде на то, что буду получать подсказки.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/792
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
06.06.2024 06:50
RSS-bot (tavern,2)  
 
Veresk: Вот двухкомнатный образец. В стартовой комнате есть дверь и персонаж. В комнате p1 я разместил функцию, которая должна изменить значение переменной персонажа после того, как игрок войдёт в дверь и тем самым переместить того в комнату p2. Функция неработает. Исправьте, пожалуйста её. Кнопки добавленія файла и ссылки выше не работают, поэтому вот ссылка на я-діск. https://disk.yandex.com/d/UjHQnNHknx6lvg

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14109/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
06.06.2024 11:00
RSS-bot (tavern,2)  
 
peter: room { nam = "p1", title = "Первая комната", dsc = "Ты в большой комнате. Отсюда есть проход на север.", ['before_Walk,Enter'] = function(s, w) if w^'dver' and _'nps'.pos==1 then _'nps':next_place() end return false -- не прерывать цепочку end; }

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14113/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
06.06.2024 12:50
RSS-bot (tavern,2)  
 
Veresk: Пётр, большое спасибо! Работает, как надо. Встроил твоё решение в игру. Мне эта функция ещё не раз пригодится.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14114/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
07.06.2024 12:50
RSS-bot (tavern,2)  
 
Veresk: Добрый день! Как модифицировать функцию в стартовой комнате так, чтобы на действие игрока "войти в дверь" во вторую комнату переместились одновременно два персонажа? Пробовал модифицировать функцию так, чтобы при наличии перечисленных условий выполнялось не одно, а сразу два действия. _'nps':next_place() and _'nps2':next_place() Игра ломается, хотя, наверное, это верный путь. Пробовал продублировать функцию целиком, исправив так, чтобы заработал второй персонаж, но две идентичные функции в комнате ломают игру, что довольно очевидно. Вот ссылка на работающую миниатюрку. https://disk.yandex.com/d/elI_i4bgaRGycw

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14115/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
07.06.2024 22:50
RSS-bot (tavern,2)  
 
peter: room { nam = "p1", title = "Первая комната", dsc = "Ты в большой комнате. Отсюда есть проход на север.", ['before_Walk,Enter'] = function(s, w) if w^'dver' and _'nps'.pos==1 then _'nps':next_place() _'nps2':next_place() end return false -- не прерывать цепочку end; } Всё-таки замечу, что без понимания основ программирования, по наитию, никакой игры не получится. Судя по вопросу, игра пишется по принципу "магического" мышления. Я не хочу обидеть! Я хочу предложить другой метод. Учиться немного программировать. Для этого буду задавать тесты, и пока на них не будет ответа правильного, я не буду помогать дальше. Я просто не хочу чтобы моя помощь ушли в стол. Внимание, вопрос. Что такое "and" в lua?

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14116/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
10.06.2024 13:00
RSS-bot (tavern,2)  
 
peter: Ответ на этот вопрос в главе документации: https://github.com/instead-hub/metaparser/blob/master/doc/manual-ru.m…

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14120/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
10.06.2024 13:00
RSS-bot (tavern,2)  
 
Veresk: Понял. Задачу с проводкой неписи почти решил до конца. Появился новый момент. Как преобразовать функцию так, чтобы она срабатывала не на "идти в дверь", а "идти на восток, восток"? ['before_Walk,Enter'] = function(s, w) if w^'dver' and _'nps'.pos==1 then _'nps':next_place() end return false -- не прерывать цепочку end;

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14119/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
10.06.2024 13:00
RSS-bot (tavern,2)  
 
peter: ну вот, когда тебе надо вызвать последовательно несколько функций (без анализа того, что они возвращают), ты просто их последовательно вызываешь.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14118/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
10.06.2024 13:00
RSS-bot (tavern,2)  
 
Veresk: Пётр, спасибо за совет. "Внимание, вопрос. Что такое "and" в lua?" and, это логическое "и" - оператор, который наряду с or )или), not (отрицание)применяется в функциях для перечисления нескольких условий для достижения определённого результата (или одного результата из заданного списка).

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14117/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
10.06.2024 15:20
RSS-bot (tavern,2)  
 
peter: Конкретное место около "Как уже было сказано, при обработке события вызывается в том числе свойства комнат". Когда/если свой вариант функции не будет работать, можно его обсудить.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14121/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
10.06.2024 16:00
RSS-bot (tavern,2)  
 
Veresk: Я нашёл в доке место, где предлагается добавлять компасные направления к дверям и им подобным объектам. Подумал, подумал и добавил объект-псевдодверь. Ну и повёл непись дальше по маршруту. Уже довёл до конца. Всё хорошо. Заодно открытие про компасные направления пошло на пользу игре в целом. У меня многие комнаты имеют, как минимум по две двери и ранее приходилось для продвижения писать "идти в" и добавлять что-то уникальное, присущее конкретной двери. Теперь везде добавил возможность идти просто компасными командами.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14122/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
10.06.2024 16:10
RSS-bot (tavern,2)  
 
Veresk: мне нужно научиться более конкретно задавать вопросы. С этим есть проблема. У меня была такая ситуация. Из стартовой комнаты есть компасный проход в другую комнату. Есть идущая непись и стационарный объект. Не дверь, а так, просто мебель. Ранее в управляющей функции использовалась дверь между комнатами и переменная в неписи. Но двери мы сейчас не умеем. Функция в текущем виде отказалась работать. Я добавил объект "проход" класса door, сделал его скрытым с атрибутом open и без openable, привязал направление. В результате игрок двигается, как и раньше, но перемещение уже реализовано другим способом, с применением "прохода". И функция в привычном мне виде заработала.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14123/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
20.06.2024 22:30
RSS-bot (tavern,2)  
 
Veresk: Здравствуйте! Игрок находится в комнате. Здесь ему нужно выложить предметы из инвентаря и после этого придёт непись. В какую функцию можно вшить алгоритм с такой логикой? если игрок находится в комнате 1, если переменная неписи равняется 2, если в инвентаре нет первого_предмета и нет второго_предмета, то переменная неписи принимает следующее значение 3 и непись появляется в комнате 1. Функции пишутся на какое-нибудь действие: Drop, например, или Take, но тут проверка на наличие или отсутствие предметов в инвентаре. Функцию не нужно писать на drop, т.к. игрок может не выбросить предметы, а положить на что-нибудь или куда-то засунуть. А это уже другие действия, не Drop. Ссылка на пример https://disk.yandex.com/d/mPXXFCZGh5Q0cg

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14131/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
22.06.2024 00:50
RSS-bot (tavern,2)  
 
peter: Есть разные варианты. Опишу два. В документации прочитать про LetGo. https://github.com/instead-hub/metaparser/blob/master/doc/manual-ru.m… Например, можно определить after_LetGo у игрока и ловить событие когда что-то покидает игрока: pl.after_LetGo = function(s, w) p ("Уходит объект: ", w) end Второй способ. Можно оживить объект npc DaemonStart('npc') и проверять с помощью have каждый такт в функции daemon где-то в коде ``` DaemonStart('npc') ... obj { -'непись'; nam = 'npc'; daemon = function(s) if not have('топор') and not have ('нож') then ... что то сделать end end } ```

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14132/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
02.07.2024 08:50
RSS-bot (tavern,2)  
 
Veresk: []()Здравствуйте! Натолкнулся на интересное ограничение. Например, я создаю объект, пишу: obj { -"портрет кролика с красным бантом"; Проверяю. Всё хорошо. Игрок рассматривает портрет. Пишем другое obj { -"портрет кролика в чёрном фраке"; Проверяем: "осм портрет кролика в чёрном фраке". Игра отвечает: Об этом предмете здесь ничего не известно (черном фраке). Продолжаем: obj { -"портрет кролика на деревянном стуле"; успешно obj { -"портрет кролика за зелёным столом"; успешно Вопрос. Можно ли как-то исхитриться и задать "портрет кролика в чёрном цилиндре"? Мне нужна фраза с союзом "в".

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14138/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
02.07.2024 12:30
RSS-bot (tavern,2)  
 
peter: Это багафича метапарсера. фразу осмотреть кролика в чёрном фраке можно понять 2 способами: 1) посмотреть "объект" 2) посмотреть "слово" в "объект" где слово - "кролика", а объект - "чёрном фраке" Выбирая между вариантом 1 и более сложным но незаконченным 2 - мп выбрал второе. Очевидно, надо как то менять сам МП, в данном случае явно предпочтение дложно было быть за 1м вариантом. Я подумаю.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14139/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
02.07.2024 13:00
RSS-bot (tavern,2)  
 
peter: То-есть, тут есть конфликт между выбором: — принять то что понимается — подсказать что не понимается в более сложном смысле. Возможно, логику МП в плане парсинга надо переписывать. Пока же я думаю что ограничусь косметическим исправлением: если фраза понята с условием: — нет лишних слов — нет пропущенных слов — нет подстановок * (произвольных слов) то тогда не мудрить а брать как есть

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14140/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
02.07.2024 14:50
RSS-bot (tavern,2)  
 
Veresk: Вот миниатюра, иллюстрирующая проблему с союзом "в" в команде. https://disk.yandex.com/d/mPXXFCZGh5Q0cg

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14141/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
02.07.2024 15:00
RSS-bot (tavern,2)  
 
Veresk: "то тогда не мудрить а брать как есть" Согласен. Понимаешь, в аналогичной ситуации с союзом "на" проблем не возникло. "осмотреть портрет кролика на стуле" Не вопрос. "осмотреть кролика за зелёным столом" пожалуйста. "осмотреть кролика в фраке" нэпонял.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14142/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
02.07.2024 16:00
RSS-bot (tavern,2)  
 
peter: потому что с "на" нет попадания в Consult Пока консервативная правка: https://github.com/instead-hub/metaparser/commit/e87d4534a1e33216e413… А вообще мечтаю о том чтобы переписать когда-то эту часть

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14143/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
07.08.2024 23:10
RSS-bot (tavern,2)  
 
Veresk: Здравствуйте! Вот миниатюра свидания, обыгрывающая два действия. 1\. Игрок должен дать розу девушке. У меня получилось сделать так, что на экране высвечивается текст сработавшего действия, но роза остаётся в инвентаре игрока, не перемещается к девушке. Это получилось сделать благодаря примеру со стариком и дробовиком из доки. 2\. Игрок должен поцеловать девушке руку. Нужно, чтобы это сработало если а) игрок дал девушке цветок; б) игрок посмотрел девушке в глаза; в противном случае он получает от игры предостережение. Сейчас у меня безусловно появляется текст успешного действия. И вдобавок стандартная приписка "странное желание", говорящее, что я присвоил руке неподходящий атрибут, неправильно сделал действие "целовать". Как вообще правильно дорисовать объект персонажа, чтобы он был готов получить от игрока поцелуй и подарок? В библиотеке есть действие Kiss, но добавление его в атрибуты ничего не даёт. Это скорее для функций. Вот ссылка на миниатюру https://disk.yandex.com/d/p3DUkmovrPW0vg

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14151/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
12.08.2024 08:22
RSS-bot (tavern,2)  
 
Veresk: Вот следующая версия миниатюры, со сделанной передачей розы. https://disk.yandex.com/d/U5fjokW_cFTToQ

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14154/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
12.08.2024 08:22
RSS-bot (tavern,2)  
 
Veresk: С удалением предмета из инвентаря при передаче другому персонажу разобрался. Подсмотрел в "Один день лета". С действием "целовать руку" ещё не решено.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14153/#…
--------------------------------------------------------------------------------

subject: Бездна вопросов по Метапарсеру от новичка
19.08.2024 07:20
RSS-bot (tavern,2)  
 
Veresk: Задачу, можно сказать, решил обходным путём. Пишу игру дальше. Хотя с правильным кодированием целования ручки с разными условиями и последствиями в будущем всё-равно нужно разобраться.

Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/14155/#…
--------------------------------------------------------------------------------