Здравствуйте, уважаемые игроделы!
Мне кажется, я наткнулся на какую-то проблему в русифицированных библиотеках. Проблема заключается в том, что если актеров спрашивать об объектах по-русски («спросить механика о машине»), то все нормально, а если по-английски («спросить механика о 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;
}
}
;
Попробуйте этот пример сами (он рабочий). Я так предполагаю, что где-то в глубине библиотек какая-то функция считает, что ей должны передавать только русский текст и на английском работает неправильно (например, табличный метод изменения регистра строк).
Неактивен
Это не баг, это фича;).
В askWord замените
case 'Porsche':
на
case 'porsche':
(т. е. напишите название с маленькой буквы), и все заработает. Кстати, лексическое свойство 'Porsche' тоже необязательно писать с большой буквы (хотя это непринципиально - система вроде бы распознает любое написание, по крайней мере для латинских букв).
(R)TADS преобразует весь ввод игрока в нижний регистр, поскольку отследить все возможные сочетания заглавных и строчных букв в слове просто физически невозможно. Автору приходится это учитывать...
Отредактировано uux (27.09.2007 06:30)
Неактивен