TGI station



Назад

instead-games.forum :: МП: смена основного слова глагола
========================================================

subject: МП: смена основного слова глагола
22.01.2021 20:20
RSS-bot (tavern,2)  
 
Oreolek: Короче, в стандартной библиотеке МП слова «целовать» и «обнимать» - это внезапно синонимы, причём «целовать» это основной. Мне бы было всё равно (работает и работает), но при включении метаподсказок глагол должен отображаться как «обнимать», а не «целовать». Ну или надо их как-то разнести, по очевидным причинам. Есть ли возможность как-то сделать основным словом «обнимать», не переизобретая глагол удалением-созданием и не редактируя библиотеку (чтоб была возможность её потом обновлять)?

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

subject: МП: смена основного слова глагола
22.01.2021 23:00
RSS-bot (tavern,2)  
 
peter: если не ошибаюсь, свой глагол придётся сделать всё-равно. Потому что в списке глаголов первый всегда считается основным. Но чисто практически, проблемы в этом я не вижу. В разных играх нужна разная степень детализации, и довольно часто я тоже меняю стандартное поведение глаголов. По умолчанию, например, ехать и ходить - одно и то же...

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

subject: МП: смена основного слова глагола
23.01.2021 12:11
RSS-bot (tavern,2)  
 
Oreolek: Хм. А как МП определяет, какие слова после глагола подсказывать? И как проверить, что подсказки работают? Вот глагол "есть", по идее, должен отображаться когда на сцене есть предметы с атрибутом `edible`, но если его включить в `game.hint_verbs` , он и будет гореть всегда. И он не подсказывает список съедобного, это где настраивается?

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

subject: МП: смена основного слова глагола
23.01.2021 13:20
RSS-bot (tavern,2)  
 
peter: Вообще, это в документации описано. Лучше задавать вопросы по документации. Конкретно с Eat, там показываются объекты, которые есть в инвентаре, а проверки на edible -- нет. Просто потому, что в некоторых играх предмет может не быть edible, но есть его можно. Ну и как усреднённое поведение, менее жёсткое, стоит held. https://github.com/instead-hub/metaparser/blob/master/doc/manual-ru.m…

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

subject: МП: смена основного слова глагола
23.01.2021 13:30
RSS-bot (tavern,2)  
 
peter: А так, VerbHint можно использовать для более умного показывания, убирания подсказок. и hint_noun -- это всё описано по ссылке выше. \+ список уточнений (там же по ссылке) held - объекты в инвентаре scene - объекты на сцене container - объекты container supporter - объекты supporter enterable - объекты в которые можно зайти edible - съедобно inside - container или supporter live - персонажи holder - объект содержит в себе второй (или первый) параметр

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

subject: МП: смена основного слова глагола
23.01.2021 15:10
RSS-bot (tavern,2)  
 
Oreolek: Я и задаю вопросы, потому что в документации этого нет или описано слишком кратко. Например, какие именно объекты показываются в подсказках по умолчанию для какого глагола. Потому что без закапывания в код или вопросов здесь я бы не узнал, что мне надо удалять и заново обозначать глагол и ставить `scope,edible` вместо `held`, а переопределение `VerbHint` не даёт вообще ничего.

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

subject: МП: смена основного слова глагола
23.01.2021 18:50
RSS-bot (tavern,2)  
 
peter: > Например, какие именно объекты показываются в подсказках по умолчанию для какого глагола. Этой информации в документации нет, но её легко получить смотря в mp-ru.lua и зная, что означают хинты. > scope,edible Вероятно, scene,edible всё-таки. > а переопределение VerbHint не даёт вообще ничего. Не понимаю о каком переопределении речь. VerbHint это функция, её не надо переопределять, надо её вызвать. В моих каких-то играх используется. Если не работает - пиши тест, показывай. Пока игнорирую это замечание. > как получить список подсказок для глагола Я не понял вопрос. Что такое список подсказок для глагола? Список слов, которые можно ввести в качестве глагола? Боюсь, нет API для получения этого списка. Вообще, есть VerbExtendWord, но он кажется только добавляет слова. mp:hint_verbs() это какая-то внутренняя недокументированная функция. Сейчас не готов отвечать на этот вопрос.

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

subject: МП: смена основного слова глагола
23.01.2021 19:01
RSS-bot (tavern,2)  
 
peter: Мне всё-таки кажется, что я тебя неправильно понял. Попробуй задать вопрос более конкретно.

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

subject: МП: смена основного слова глагола
23.01.2021 19:10
RSS-bot (tavern,2)  
 
peter: Комплешн заполняется здесь где-то: mp:compl_fill() mp:compl_filter() -- как раз анализ атрибутов по-моему. Но это всё внутренние функции. При написании игр они не применяются.

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

subject: МП: смена основного слова глагола
24.01.2021 16:00
RSS-bot (tavern,2)  
 
Oreolek: >> `scope,edible` > Вероятно, `scene,edible` всё-таки. Тогда получается что нельзя кусать то, что есть в руках, а если положить на пол, то можно. По-моему, `scope` логичнее. >>а переопределение VerbHint не даёт вообще ничего. > Не понимаю о каком переопределении речь. Определение `VerbHint('#Eat', function(v) … end)` - я пробовал сделать через эту функцию, но она перекрывается фильтром в самом глаголе. Документация про это не предупреждает, но это уже ожидаемо. Короче вопрос был, как это тестить внутри игры, я его решил и если интересно, то это выглядит вот так: ``` function find_completion(thing, case) if thing == nil then return false end if type(thing) == 'string' then thing = _(thing) if thing == nil then return false end end if (case == nil) then case = 'вн' end local noun = thing:noun(case) for a, v in ipairs(mp.completions) do if v.word == noun then return true; end end return false; end […] describe('подсказки', function() it('общая проверка', function() mp:compl_reset(); mp:compl_fill(mp:compl('осмотреть ')); local hint = find_completion('shield'); expect(hint).to.be(true) end); it('поедание', function() if (here():srch('shi')) then move(_('shi'), 'main'); end mp:compl_reset(); mp:compl_fill(mp:compl('осмотреть ')); local hint = find_completion('shi'); expect(hint).to.be(false) —- сброс подсказок, ещё толком не разобрался почему compl_reset недостаточно parse('осмотреть себя'); mp:compl_reset(); mp:compl_fill(mp:compl('съесть ')); local hint = find_completion('shi'); expect(hint).to.be(false) expect(#mp.completions).to.be(0) move(_('shi'), here()); expect(here():srch('shi')).to.exist(); parse('осмотреть себя'); mp:compl_reset(); mp:compl_fill(mp:compl('осмотреть ')); hint = find_completion('shi'); expect(hint).to.be(true) parse('осмотреть себя'); mp:compl_reset(); mp:compl_fill(mp:compl('съесть ')); hint = find_completion('shi'); expect(hint).to.be(true) end); end); ```

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

subject: МП: смена основного слова глагола
24.01.2021 20:10
RSS-bot (tavern,2)  
 
peter: > Тогда получается что нельзя кусать то, что есть в руках, а если положить на пол, то можно. По-моему, `scope` логичнее. Гм. Ну... Если бы оно существовало, это scope... Я про такой hint не знаю. :) Ну, а если бы он всё-таки существовал, то какой в нём смысл, если предметы в инвентаре и в сцене - это и есть доступные предметы? Его можно было бы не писать.

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