Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

   #1
07.01.2008 01:43

fireton
некто с бородой (+238, -69)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1064
Вебсайт

Тон

определение "собственных" глаголов: склонения "ответов по умолчанию"

В игре понадобилось определить глагол. Сделал так (имена и явки поменял, но суть та же):

Код:

shootVerb : deepverb
 verb = 'стрелять' 'стрельни' 'стрелять из' 'стрельни из'
 sdesc = "стрельнуть"
 vopr = "Из чего "
 pred = fromPrep
 doAction = 'Shoot'     
;

Так вот. pred походу вообще не влияет на "ответ по умолчанию". Есть объект "пистолет", например.

Пишу:

>стрелять из пистолета

Вы пальнули в воздух...


все нормально

Пишу
>стрелять

(пистолет)
Вы пальнули в воздух...


И что за нахрен? sad Хочу, чтобы в скобочках было "из пистолета"...

Если preposition определен для "косвенного" объекта, то все путем. Если для "прямого" (в виде pred), то не ставит в нужный падеж и не добавляет предлог. У кого-нибудь есть мысли как сие исправить?

Я глянул, pred не используется нигде в библиотеке, кроме как в описаниях глаголов. Гранд, ты хотел сделать, но забыл что ли? wink Или я вообще не так все понял?

Неактивен

   #2
07.01.2008 02:05

fireton
некто с бородой (+238, -69)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1064
Вебсайт

Тон

Re: определение "собственных" глаголов: склонения "ответов по умолчанию"

Как обычно, блин.

Кажется выяснил. wink

parseDefault определен в errorru.t... Но он не умеет обращаться с "моим" preposition (fromPrep).
В общем, надо поправить.

Неактивен

   #3
07.01.2008 02:27

fireton
некто с бородой (+238, -69)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1064
Вебсайт

Тон

Re: определение "собственных" глаголов: склонения "ответов по умолчанию"

Короче, нашел спорное, но для меня вполне рабочее решение. Теперь, если у глагола определен parsdef, то его pred будет учитываться при построении фразы. Вот код функции ParseDefaultExt (определенной в errorru.t):

Код:

parseDefaultExt: function(actor, verb, obj, prp)
  {
    "(";
    if (prp = nil) 
      {
       if (verb.parsdef) {
    if (verb.pred) {
     verb.pred.sdesc;
     " ";
    }    
    obj.(verb.parsdef);
       }    
       else obj.vdesc;
      } 
    else
     {
    if (!(prp=toPrep && obj.isactor)) {prp.sdesc;" ";} }
    if (prp = atPrep or prp = inPrep) obj.vdesc;
    if (prp = withPrep) obj.rdesc;
    if (prp = overPrep) obj.tdesc;
    if (prp = onPrep) obj.pdesc;
    if (prp = offPrep or prp = fromPrep or prp = outPrep) obj.rdesc;
    if (prp = toPrep) obj.ddesc;
    ")\n";
  }

Соответственно, мой глагол определен как:

Код:

shootVerb : deepverb
 verb = 'стрелять' 'стрельни' 'стрелять из' 'стрельни из'
 sdesc = "стрельнуть"
 vopr = "Из чего "
 pred = fromPrep
 parsdef = &rdesc
 doAction = 'Shoot'     
;

Гранд, скажи свое веское слово.

Неактивен

   #4
07.01.2008 20:05

GrAndrey
папа RTADS и Бяка (+40, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: определение "собственных" глаголов: склонения "ответов по умолчанию"

Здесь parsdef не нужен, так как 1) склонение можно определить по предлогу, 2) он предназначен для случаев, когда предлога нет.
Изучив также все глаголы где используется pred, обнаружил, что практически в каждом случае в сообщение о результате автоподбора можно добавить этот предлог. Так что имеет смысл добавить флаг для исключений, а не для общего случая. Пока исключений не встретилось, но нужно хорошенько протестить, особенно для глаголов с различными функциональными предлогами.

Код:

/* Вытесняет parseDefault, но работает только в TADS >= 2.5.8 */
replace parseDefaultExt: function(actor, verb, obj, prp)
  {
    "(";
    if (prp = nil && verb.pred = nil)
    {
        if (verb.parsdef) obj.(verb.parsdef);
        else obj.vdesc;
    }
    else
    {
       if (prp = nil) prp:=verb.pred; 
       if (!(prp=toPrep && obj.isactor)) {prp.sdesc;" ";} 
       if (prp = atPrep or prp = inPrep) obj.vdesc;
       if (prp = withPrep) obj.rdesc;
       if (prp = overPrep) obj.tdesc;
       if (prp = onPrep) obj.pdesc;
       if (prp = offPrep or prp = fromPrep or prp = outPrep) obj.rdesc;
       if (prp = toPrep) obj.ddesc;
    }
    ")\n";
  }

Неактивен

   #5
07.01.2008 21:36

fireton
некто с бородой (+238, -69)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1064
Вебсайт

Тон

Re: определение "собственных" глаголов: склонения "ответов по умолчанию"

Супер. Для моих глаголов работает. Нафик parsdef. smile

Неактивен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru