В игре понадобилось определить глагол. Сделал так (имена и явки поменял, но суть та же):
shootVerb : deepverb verb = 'стрелять' 'стрельни' 'стрелять из' 'стрельни из' sdesc = "стрельнуть" vopr = "Из чего " pred = fromPrep doAction = 'Shoot' ;
Так вот. pred походу вообще не влияет на "ответ по умолчанию". Есть объект "пистолет", например.
Пишу:
>стрелять из пистолета
Вы пальнули в воздух...
все нормально
Пишу>стрелять
(пистолет)
Вы пальнули в воздух...
И что за нахрен? Хочу, чтобы в скобочках было "из пистолета"...
Если preposition определен для "косвенного" объекта, то все путем. Если для "прямого" (в виде pred), то не ставит в нужный падеж и не добавляет предлог. У кого-нибудь есть мысли как сие исправить?
Я глянул, pred не используется нигде в библиотеке, кроме как в описаниях глаголов. Гранд, ты хотел сделать, но забыл что ли? Или я вообще не так все понял?
Неактивен
Как обычно, блин.
Кажется выяснил.
parseDefault определен в errorru.t... Но он не умеет обращаться с "моим" preposition (fromPrep).
В общем, надо поправить.
Неактивен
Короче, нашел спорное, но для меня вполне рабочее решение. Теперь, если у глагола определен 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' ;
Гранд, скажи свое веское слово.
Неактивен
Супер. Для моих глаголов работает. Нафик parsdef
.
Неактивен