Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
13.02.2008 11:47

Flint
Участник
Зарегистрирован: 06.09.2007
Сообщений: 148

---

Патчи к 25beta

Итак, первая порция моих патчей. Прошу прощение за скупость описаний, банально не успеваю, потому что сегодня уезжаю на неделю в Харьков.

sayPrefixCount
было:
Ты видишь два спички.

стало:
Ты видишь две спички.


было:
>спросить стол о погоде
Ты думаешь, что стол ничего не знает об этом!

стало:
>спросить стол о погоде
Стол безмолвен.


было:
>сесть на пол
Хорошо, ты теперь сидишь на полу.
>восток
Ты никуда не пойдёшь пока не слезешь с пола.

стало:
>сесть на пол
Хорошо, ты теперь сидишь на полу.
>восток
Ты никуда не пойдёшь пока не встанешь с пола.


было:
>набрать
Что ты хочешь печатать?
>набрать воды в банку
Я не понимаю это предложение.

стало:
>набрать
Что ты хочешь печатать?
>набрать воды в банку
Вы набрали воды в банку.
[Метод ‘FillIn’]


было:
>сесть
(стул)
Хорошо, ты теперь сидишь на стуле.

стало:
>сесть
(на стул)
Хорошо, ты теперь сидишь на стуле.

Несколько мелких исправлений к глаголам: синонимы, указание умолчательных предлогов и падежей. Например, «выглянуть в» к lookThru.

Ну, и самое интересное - исправления к parseAskobjActor:

было:
>спросить Петю
Об чем Вы хотите спросить этого персонажа?
>положить спичку
Во что Вы хотите положить это?
>ударить Петю
С помощью чего Вы хотите напасть на это?

стало:
>спросить Петю
О чем ты хочешь спросить его?
>положить спичку
Во что ты хочешь положить её?
>ударить Петю
С помощью чего ты хочешь напасть на него?

То есть учитывается текущее лицо и подбирается правильное местоимение.

Что я еще хочу исправить:

сейчас:
>положить карандаш
Во что ты хочешь положить его?
>на стол
Ты не можешь положить что-либо в стол.

хочется:
>положить карандаш
Куда ты хочешь положить его?
>на стол
Готово.
>положить карандаш
Куда ты хочешь положить его?
>в стол
Ты не можешь положить что-либо в стол.

сейчас:
>набрать
Что ты хочешь печатать?
>налить
(воду)
(в банку)
Вы набрали воды в банку.

хочется:
>набрать
(воду)
(в банку)
Вы набрали воды в банку.

[Если присутствует неопределенность, не просить сразу уточнить объект, а попробовать устранить неопределенность по второстепенным предлогам тоже. Т.е. если «набрать» в смысле печатать (ioAction(onPrep) = 'TypeOn') в комнате ничего нельзя, но можно «набрать» в смысле налить (ioAction(inPrep) = 'FillIn'), то использовать «налить».]

Долго думал, каким образом эти исправления выложить, ведь они во многих местах. Поэтому выкладываю diff-файлы к advr.t (от 07.02.08 17:19) и errorru.t (от 06.02.08 02:25). Применяются они утилиткой patch.

patch advr.t advr.diff

Если юникса под рукой нет, то win-версию проги можно взять здесь http://unxutils.sourceforge.net/

КАЧАТЬ ПАТЧИ ТУТ http://ifwiki.ru/files/25PATCH.rar

Пробуйте пока, буду через неделю.

Неактивен

0    0    #2
13.02.2008 14:52

Gremour
Участник (+1)
Откуда: Беларусь
Зарегистрирован: 09.11.2004
Сообщений: 234

Re: Патчи к 25beta

Локализовал ошибку с атакой. Код:

Код:

#include <advr.t>
#include <stdr.t>
#include <errorru.t>

startroom: room
    sdesc = "Комната"
    ldesc = "Просто комната"
;

stick: item
    location = startroom
    sdesc = "палка"
    rdesc = "палки"
    ddesc = "палке"
    vdesc = "палку"
    tdesc = "палкой"
    pdesc = "палке"
    noun = 'палка' 'палки' 'палке' 'палку' 'палкой' 'палкою' 'палке#d' 'палкой#t' 'палкою#t'
    ldesc = "Палка"
    isHer = true
;

mutant: item
    location = startroom
    sdesc = "мутант"
    rdesc = "мутанта"
    ddesc = "мутанту"
    vdesc = "мутанта"
    tdesc = "мутантом"
    pdesc = "мутанте"
    noun = 'мутант' 'мутанта' 'мутанту' 'мутантом' 'мутанте' 'мутанту#d' 'мутантом#t'
    ldesc = "Мутант"
    isHim = true
;

slime: item
    location = startroom 
    sdesc = "слизь мутанта"
    rdesc = "слизи мутанта"
    ddesc = "слизи мутанта"
    vdesc = "слизь мутанта"
    tdesc = "слизью мутанта"
    pdesc = "слизи мутанта"
    adjective = 'мутанта' 'мутанта#r'
    noun = 'слизь' 'слизи' 'слизью' 'слизи#d' 'слизью#t'
    ldesc = "Слизь мутанта"
    isHer = true
;

>ударить мутанта палкой
Я не вижу здесь объект "мутанта палкой"


Причина: свойство adjective объекта slime. Если его закомментировать, команда работает как надо.

Это лечится вообще? Слизь мутанта жизненно важна, и ограничивать лексемы только словом "слизь" очень нехорошо.

P.S. К тому же, местонахождение слизи не влияет на парсинг фразы. Достаточно просто декларировать объект с такой лексемой.

Отредактировано Gremour (13.02.2008 15:09)

Неактивен

0    0    #3
13.02.2008 20:09

Gremour
Участник (+1)
Откуда: Беларусь
Зарегистрирован: 09.11.2004
Сообщений: 234

Re: Патчи к 25beta

Это ошибка в алгоритме парсинга или несостыковка твого метода обхода падежей? Почему парсер не выбирает существительное в первую очередь (или во вторую)? Зачем хватается за прилагательное как единственный вариант? Может, есть негласное ограничение -- совпадающих с существительными в игре прилагательных не должно быть?

Удаление прилагательного с флагом "#r" из "слизи мутанта" не помогает.

Ошибка неприятная, т. к. в игре большого размера с задействованием актёров-гномов, например, есть много вещей тех же гномов, к которым игрок захочет обратиться (вполне справедливо) использую полную лексему. Это какой-то КОШМАР!

Отредактировано Gremour (13.02.2008 20:14)

Неактивен

0    0    #4
14.02.2008 13:06

Gremour
Участник (+1)
Откуда: Беларусь
Зарегистрирован: 09.11.2004
Сообщений: 234

Re: Патчи к 25beta

Спасибо.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru