Forum.iFiction.Ru

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

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

Вы не зашли.

   #1
18.01.2008 22:54

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

Тон

Новая версия библиотеки?

Что скажешь, ГрАнд?
Уже достаточно изменений накопилось, по-моему...

Неактивен

   #2
18.01.2008 23:30

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

меньше слов

Re: Новая версия библиотеки?

Вот именно, что много необкатанных и недоделанных изменений.
Сообщения для первого лица адаптированы не все;
Орфография работает не так как положено (считаю, что в справочной области должны быть только видимые предметы, а также не стоит обрабатывать слишком короткие слова). Также не понял, решили ли вопрос с выскакивающим сообщением;
Вывод догадок системы как следует не протестирован;
Хочу автоматизировать определение приглагольного падежа (type).

Частые обновления пугает авторов, особенно начинающих, так что не следует торопится. Все желающие могут получить от меня "альфа версию".

Неактивен

   #3
18.01.2008 23:52

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

Тон

Re: Новая версия библиотеки?

Вот именно, что много необкатанных и недоделанных изменений.

Так надо, эта... обкатать и доделать. Что для этого надо?
Вообще, мне уже в голову приходят всякие еретические идеи типа юнит-тестирования. Если use-cases распишешь, можно написать автоматический (или полуавтоматический) тест библиотеки.

Неактивен

   #4
04.02.2008 16:32

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

меньше слов

Re: Новая версия библиотеки?

Просьба протестировать www.rtads.org/libr25beta.rar.
Хотел сделать автоматическое спряжение глаголов, но это ещё изрядно времени займет. Попробуйте разные лица ГП!

Неактивен

   #5
05.02.2008 19:36

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

Re: Новая версия библиотеки?

Такая неприятная особенность (было и раньше):

(примерно так)
>осм дубину стража
Который "дубину of стража" вы имеете в виду, "левый скипетр стража" или "правый скипетр стража"?


Диковато выглядит "of", и сочетание "Который дубину" (дубина описана как скипетр и имеет признак isHim).

И еще (вроде раньше обсуждали? не могу найти):

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


Топор находится в инвентаре.

Неактивен

   #6
05.02.2008 21:37

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

меньше слов

Re: Новая версия библиотеки?

"дубину of стража"

Исправил, залил новую версию.


Который "дубину of стража" вы имеете в виду, "левый скипетр стража" или "правый скипетр стража"?

Синонимы могут быть разных полов и чисел. Тут либо смириться, либо свести сообщение к абстрактному "Который из объектов "дубину стража" вы имели в виду, ... " или "Упоминая "дубину стража", вы имели в виду: ...  "

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

Код гоблина и топора, пожалуйста.

Неактивен

   #7
05.02.2008 22:38

- VampirE -
Участник (+3)
Зарегистрирован: 22.06.2006
Сообщений: 101

Re: Новая версия библиотеки?

Попробывал реализовать атаку гоблина топором. В итоге вообще ничего не выводит. Странно. Просто пустая строка, ни ошибки, ничего. Если определять атаку гоблина в объекте топора, то все окей. Но логичнее вроде как использовать прямой объект.

До метода doAttackWith вообще дело не доходит, хотя верефикатор переопределен.

Код:

goblin : Actor
    location = startroom
    sdesc = "гоблин"
    rdesc = "гоблина"
    ddesc = "гоблину"
    vdesc = "гоблина"
    tdesc = "гоблином"
    pdesc = "гоблине"
    noun = 'гоблин' 'гоблина' 'гоблину' 'гоблином' 'гоблине' 'гоблину#d' 'гоблином#t'
    ldesc = "Это маленький зеленый гоблин."
    isHim = true
    verDoAttackWith(actor,io) = {}
    doAttackWith(actor,io) = {"Уй-я! - кричит гоблин и убегает."; return nil;}
;

topor : item
    location = Me
    sdesc = "топор"
    rdesc = "топора"
    ddesc = "топору"
    vdesc = "топор"
    tdesc = "топором"
    pdesc = "топоре"
    noun = 'топор' 'топора' 'топору' 'топором' 'топоре' 'топору#d' 'топором#t'
    ldesc = "Это топор."
    isHim = true
    verIoAttackWith(actor) = {}
;

Отредактировано - VampirE - (05.02.2008 22:59)

Неактивен

   #8
06.02.2008 06:26

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

Re: Новая версия библиотеки?

- VampirE - написал:

Попробывал реализовать атаку гоблина топором. В итоге вообще ничего не выводит. Странно. Просто пустая строка, ни ошибки, ничего. Если определять атаку гоблина в объекте топора, то все окей. Но логичнее вроде как использовать прямой объект.

До метода doAttackWith вообще дело не доходит, хотя верефикатор переопределен.

Код:

goblin : Actor
    location = startroom
    sdesc = "гоблин"
    rdesc = "гоблина"
    ddesc = "гоблину"
    vdesc = "гоблина"
    tdesc = "гоблином"
    pdesc = "гоблине"
    noun = 'гоблин' 'гоблина' 'гоблину' 'гоблином' 'гоблине' 'гоблину#d' 'гоблином#t'
    ldesc = "Это маленький зеленый гоблин."
    isHim = true
    verDoAttackWith(actor,io) = {}
    doAttackWith(actor,io) = {"Уй-я! - кричит гоблин и убегает."; return nil;}
;

topor : item
    location = Me
    sdesc = "топор"
    rdesc = "топора"
    ddesc = "топору"
    vdesc = "топор"
    tdesc = "топором"
    pdesc = "топоре"
    noun = 'топор' 'топора' 'топору' 'топором' 'топоре' 'топору#d' 'топором#t'
    ldesc = "Это топор."
    isHim = true
    verIoAttackWith(actor) = {}
;

Порядок вызова: прямой объект.verDoAttackWith -> косвенный объект.verIoAttackWith -> косвенный объект.ioAttackWith. doAttackWith (для команд с косвенным объектом) автоматом никогда не вызывается, его вызов надо явно прописать в игре. Т. е. для топора укажи

Код:

ioAttackWith(actor, dobj)={dobj.doAttackWith(actor, self);

Неактивен

   #9
06.02.2008 12:55

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

Re: Новая версия библиотеки?

Код:

commonAxe: item
    location = nil
    sdesc = "топор"
    rdesc = "топора"
    ddesc = "топору"
    vdesc = "топор"
    tdesc = "топором"
    pdesc = "топоре"
    noun = 'топор' 'топора' 'топору' 'топором' 'топоре' 'топору#d' 'топором#t'
    ldesc = "Обычный топор."
    isHim = true
    verIoAttackWith (a) = {}
    ioAttackWith (a, i) = { "Ты атаковал <<i.rdesc>> <<self.tdesc>>."; }
;

deadGoblin: fixeditem
    location = citadelCorridor
    sdesc = "мертвый гоблин"
    rdesc = "мертвого гоблина"
    ddesc = "мертвому гоблину"
    vdesc = "мертвого гоблина"
    tdesc = "мертвым гоблином"
    pdesc = "мертвом гоблине"
    adjective = 'мертвый' 'мертвый#t' 'мертвого' 'мертвому' 'мертвому#d' 'мертвым' 'мертвым#t' 'мертвом' 
         'труп' 'труп#t' 'трупа' 'трупу' 'трупу#d' 'трупом' 'трупом#t' 'трупе'
    noun = 'гоблин' 'гоблина' 'гоблину' 'гоблином' 'гоблине' 'гоблину#d' 'гоблином#t' 
           'труп' 'труп#t' 'трупа' 'трупу' 'трупу#d' 'трупом' 'трупом#t' 'трупе'
    verDoAttackWith (a, i) = {}
    ldesc = "Описание гоблина"
;

По определенным причинам, гоблин уже мертв. Но это не должно влиять на команду. Топор изначально в nil -- переносится в комнату програмно. Я его подобрал, топор в инвентаре. Гоблин в комнате.

"Упоминая "дубину стража", вы имели в виду: ...  "

Такой вариант лучше. Хотя и звучит вычурней, но избавит игрока от непредусмотренных несуразностей. Эх, насколько же проще английский язык... %)

Отредактировано Gremour (06.02.2008 12:58)

Неактивен

   #10
06.02.2008 14:24

- VampirE -
Участник (+3)
Зарегистрирован: 22.06.2006
Сообщений: 101

Re: Новая версия библиотеки?

Бросил топор в комнате, подобрал. Атаковал гоблина - реакция есть.


> подобрать топор
Взят.
> атаковать мертвого гоблина топором
Ты атаковал мертвого гоблина топором.

Неактивен

   #11
07.02.2008 10:17

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

меньше слов

Re: Новая версия библиотеки?

Обновил бету библиотеки. Прошу изучить и помучать функцию glok. На этом принципе можно сделать встроенный генератор падежей.
http://www.rtads.org/libr25beta.rar

Полезный для проверки код:

Код:

pers: object
setall(num)=
{ 
  isThem:=nil; 
  self.lico:=(num-1)/2+1;
  if (num%2=0) self.isThem:=true; 
}
;

sprag: function(num1, num2, str)
{
  local i:=1;
  while (i<=6) 
  { 
    pers.setall(i);
    glok(pers,num1,num2,str);
    " ";
    if (i%2=0) "| "; 
    i++;
  }
 "\n";
} 

sprag1: function(str)
{
  local i:=1;
  while (i<=6) 
  { 
    pers.setall(i);
    glok(pers,str);
    " ";
    if (i%2=0) "| "; 
    i++;
  }
 "\n";
} 

startroom: room  
ldesc = {
sprag(1,1,'мож'); 
sprag(3,1,'хот'); 
sprag(2,1,'вид');
sprag(2,1,'сид');
sprag(2,1,'леж');
sprag(1,2,'нес');
sprag(2,1,'нос');
sprag(2,1,'наход');
sprag(1,1,'зна');
sprag(1,1,'дума');
sprag(1,1,'име');
sprag(2,2,'выгляд');
sprag(1,1,'помога');
sprag(1,1,'представля');
sprag(1,2,'пойд');
sprag(1,1,'вылез');
sprag(2,2,'сто');
sprag(1,1,'слез');
sprag(1, 1,'пахн'); 
sprag(2,2,'говор');
sprag1('хотеть'); 
}
;

Неактивен

   #12
07.02.2008 15:19

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

---

Re: Новая версия библиотеки?

Не торопитесь с выпуском новой версии.
Я хочу еще оформить несколько своих хаков из "Любви" в приличный вид и предложить на рассмотрение.

Неактивен

   #13
18.03.2008 15:17

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

Re: Новая версия библиотеки?

Из moveableActor:

Код:

    verGrab(item) =
    {
        "<<ZAG(self,&sdesc)>> <<glok(self,'нести')>> <<item.vdesc>> и
        не да<<self.isThem?"дут":"ст">> <<parserGetMe().ddesc>> взять <<item.itobjdesc>>. ";
    }

Некорректно работает.

>взять бутылку
Печальный владелец бутылку вина и не даст тебе взять её.

Неактивен

   #14
18.03.2008 19:42

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

меньше слов

Re: Новая версия библиотеки?

Не могу воспроизвести этот баг. Видимо, уже исправлен.

Неактивен

   #15
19.03.2008 15:57

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

Re: Новая версия библиотеки?

В последней выложенной тобой версии (http://rtads.org/libr25beta.rar) баг есть. Вот исходник для примера:

Код:

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

startroom: room
    ldesc = "Стартовая комната"
;


shopkeeper: Actor
    location = startroom
    sdesc = "торговец"
    rdesc = "торговца"
    ddesc = "торговцу"
    vdesc = "торговца"
    tdesc = "торговцом"
    pdesc = "торговце"
    noun = 'торговец' 'торговца' 'торговцу' 'торговцом' 'торговце' 'торговцу#d' 'торговцом#t'
    ldesc = " торговец"
    isHim = true
    actorDesc = "торговец с булкой в руках стоит здесь. "
;

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

>взять булку
Торговец булку и не даст тебе взять её.

Неактивен

   #16
19.03.2008 17:52

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

---

Re: Новая версия библиотеки?

Подтверждаю, в advr.t от 7.02.08 есть такая ошибка.
Связана с тем, что не срабатывает функция glok(self, 'нести'), которая просто ничего не выводит. Т.е. должно было быть


>взять булку
Торговец несет булку и не даст тебе взять её.


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

Поэтому в бета-версиях библиотеки, наверное, лучше сделать, чтобы glok выдавала ошибку на экран, если ей не удалось подобрать спряжение.

Неактивен

   #17
23.03.2008 05:48

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

меньше слов

Re: Новая версия библиотеки?

Вуаля!

Генератор склонений подключен к РТАДС, а также ещё некоторые новые фишки.
Прошу жесточайшим образом протестировать!
Теперь можно самому на ходу настраивать правила, так что делитесь наработками.

скачать.

Неактивен

   #18
23.03.2008 14:12

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

---

Re: Новая версия библиотеки?

Колоссально!
Большое спасибо.

Неактивен

   #19
23.03.2008 18:57

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

Тон

Re: Новая версия библиотеки?

Генератор склонений подключен к РТАДС, а также ещё некоторые новые фишки.

Человечище!
Спасибо!

Будем писать игры...

Неактивен

   #20
29.03.2008 05:24

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

меньше слов

Re: Новая версия библиотеки?

Видимо, сейчас актуальнее иные вещи. Так и быть, поддамся конъюнктуре:

Код:

brosok: function()
{
  local i, maxdie=6, sides=6, total=0;
  "\nБросок, результат: \n";
  for (i:=1; i<=maxdie; i++)
  {
    local res = _rand(sides);
    " <<res>>";
    total+=res;
  }
  "\nИтог: <<total>>\n";
}

startroom: room  
sdesc = "<b>Бросалка кубиков</b>" 
ldesc = 
{
brosok();
"\nНажмите пробел для нового броска, либо любую иную клавишу для выхода. ";
while (inputkey()=' ') brosok();
quit();
}
;

Неактивен

   #21
29.03.2008 06:55

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Новая версия библиотеки?

GrAndrey написал:

Видимо, сейчас актуальнее иные вещи.

smilesmilesmile

Неактивен

   #22
29.03.2008 09:52

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

Тон

Re: Новая версия библиотеки?

Видимо, сейчас актуальнее иные вещи.

Ты меня опередил! smile
Надо что ли на QSP или урке наваять...

Но вообще - ура! - у нас появился собственный Гном. smile

Неактивен

   #23
29.03.2008 09:53

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

Тон

Re: Новая версия библиотеки?

Кстати, Гранд, серьезный вопрос. Имеет ли смысл ждать релиза библиотеки или у нас будет бета, плавно переходящая в релиз? wink

Неактивен

   #24
02.04.2008 17:19

Gesperid
Участник
Зарегистрирован: 25.02.2005
Сообщений: 107

Re: Новая версия библиотеки?

Flint написал:

Колоссально!
Большое спасибо.

fireton написал:

Человечище!
Спасибо!

Кто-нибудь уже работает или, может быть, хорошенько пощупал генератор склонений из последней библиотеки РТАДС? Какие впечатления?

Неактивен

   #25
03.04.2008 09:29

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

меньше слов

Re: Новая версия библиотеки?

Обновил бету. Задавайте вопросы, если что не ясно.
скачать 25 релиз бета
Для использования скинуть все в папку с библиотеками (как минимум обновить advr.t, где есть новая функция для работы генератора, и скопировать библиотеку generator.t).

Внимание! Генератор запускается через функцию commonInit, причем он сразу включает ставший режимом по умолчанию HTML. Поэтому в файле игры следует убрать следующий фрагмент:

Код:

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

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

Результат генерации выдается на экран, если не отключена соответствующая опция.

Что ещё не сделано: генерация склонений короткого названия, обезЁживание лексем, оптимизация кода (так скажем, не шустрый).

Неактивен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru