Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
26.09.2007 23:11

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

---

Баг в RTADS?

Здравствуйте, уважаемые игроделы!

Мне кажется, я наткнулся на какую-то проблему в русифицированных библиотеках. Проблема заключается в том, что если актеров спрашивать об объектах по-русски («спросить механика о машине»), то все нормально, а если по-английски («спросить механика о Porsche»), то это не работает, даже если оба слова были определены в игре. См. следующий пример (вырезано все, кроме актера и автомобиля):

#define USE_HTML_STATUS
#define USE_HTML_PROMPT

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

replace commonInit: function
{"\H+";}

startroom: room
    sdesc = "<b>Стоянка</b>"
;

porsche : fixeditem
    location = startroom
    sdesc = "автомобиль"
    rdesc = "автомобиля"
    ddesc = "автомобилю"
    vdesc = "автомобиль"
    tdesc = "автомобилем"
    pdesc = "автомобиле"
    noun = 'машине' 'Porsche'
    ldesc = "Это Porsche 911."
;

mechanic : Actor
location = startroom
    sdesc = "механик"
    rdesc = "механика"
    ddesc = "механику"
    vdesc = "механик"
    tdesc = "механиком"
    pdesc = "механике"
    noun = 'механик' 'механика' 'механику' 'механиком' 'механике' 'механику#d' 'механиком#t'
    ldesc = "Механик в потертой спецовке."
   
    askWord(word, list) =
    {
      switch(word)
      {
        case 'машине':
          "По-русски все хорошо";
          return true;
          
        case 'Porsche':
          "Эту фразу он никогда не скажет";
          return true;
          
        default:
          return nil;
      }
    }
;


Попробуйте этот пример сами (он рабочий). Я так предполагаю, что где-то в глубине библиотек какая-то функция считает, что ей должны передавать только русский текст и на английском работает неправильно (например, табличный метод изменения регистра строк).

Неактивен

0    0    #2
27.09.2007 06:30

uux
Участник (+884, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1624

Re: Баг в RTADS?

Это не баг, это фича;).

В askWord замените

Код:

        case 'Porsche':

на

Код:

        case 'porsche':

(т. е. напишите название с маленькой буквы), и все заработает. Кстати, лексическое свойство 'Porsche' тоже необязательно писать с большой буквы (хотя это непринципиально - система вроде бы распознает любое написание, по крайней мере для латинских букв).

(R)TADS преобразует весь ввод игрока в нижний регистр, поскольку отследить все возможные сочетания заглавных и строчных букв в слове просто физически невозможно. Автору приходится это учитывать...

Отредактировано uux (27.09.2007 06:30)

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru