Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
16.07.2008 19:54

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

Тон

Фигня с источниками света...

Сделал фонарик в игре. И обнаружил удивительную вещь.
Если фонарик хотя бы один раз включить в темной комнате, потом его можно спокойно выключать. Комната остается освещенной! Это ж обалдеть какая дырка!

Стал смотреть advr.t - там метода doTurnOff для источника света вообще не предусмотрено!

Это надо исправлять. А то фигня какая-то выходит. Я у себя поправлю, конечно, но в новую версию библиотеки это исправление должно войти обязательно!

Неактивен

0    0    #2
16.07.2008 20:17

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

Тон

Re: Фигня с источниками света...

Залечил вот так (добавил код в class lightsource):

Код:

 doTurnoff(actor) =
    {
        local waslit := actor.location.islit;
        
        // turn off the light
        self.isActive := nil;
        self.islit := nil;
        "<<ZAG(parserGetMe(),&sdesc)>> выключ<<ok(parserGetMe(), 'или', 'ил', 'ило', 'ила')>> <<self.vdesc>>";
        
        // если комната была освещена, а теперь - нет, то это надо обозначить...
        if (!actor.location.islit and waslit)
        {
            ", и все вокруг погрузилось во тьму.\b";
            actor.location.enterRoom(actor);
        }
        else
            ". ";
    }

Неактивен

0    0    #3
17.07.2008 07:02

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

меньше слов

Re: Фигня с источниками света...

Необходимо использовать класс darkroom, у которого свойство islit вычислимо. Если источник света больше не islit, то комната должна без вопросов погрузиться в темноту. Правда, описание этого события целиком на совести автора.

Неактивен

0    0    #4
17.07.2008 08:36

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

Тон

Re: Фигня с источниками света...

Конечно, я использую darkroom.

В том то и дело, что в неисправленнои варианте islit у источника света никогда не становится nil, если он был однажды включен. Фонарик у меня отнаследован от lightsource, switchItem. Так вот, doTurnon - берется от lightsource, а doTurnoff в lightsource нет, поэтому берется от switchItem, который про islit - ни ухом, ни рылом. Вот и получается, что если фонарик включить, то он остается гореть даже, если его выключать потом.

Неактивен

0    0    #5
17.07.2008 09:50

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

меньше слов

Re: Фигня с источниками света...

Этот патч подойдет для случая lightsource, switchItem. Если прописать doTurnoff только для lightsource, то и свечку и банку со светлячком можно будет "выключать". Поэтому нужен патч, который для darkroom будет проверять что источник света ещё и включён.

Обновление: Верификация включения/выключения в lightsource не прописана и doTurnoff по умолчанию не будет доступен. Так что ставлю исправление Антона.

Отредактировано GrAndrey (17.07.2008 10:00)

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru