В игре понадобилось определить глагол. Сделал так (имена и явки поменял, но суть та же):
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. ![]()
Неактивен