Тема закрыта
игруха пишет: "ГГ находится тут", а надо: "ты находишься тут".
Чтобы писалось "ты находишься тут" вообще ничего менять у ГГ не надо! Если не работае - присылай код на мыло.
title для персонажей уже использованы в main.tml - их менять нельзя.
ГГ.описание = "самый крутой герой!" //меняет описание ГГ
ГГ.по_имени = "Вас%; ЕчОд; Ип; Зп=ь; Зп=я; Ип=я; Рп=и; Дп=е; Вп=ю; Тп=ей; Пп=е;" //меняет имя ГГ
ГГ.персонаж_по_месту = нет //отключает отображение ГГ в локации
unique нож //создаем предмет
{ cls = предмет
this.МожноВзять = да
ГГ + this //помещаем предмет в инвентарь ГГ
}
Отредактировано ASBer (23.07.2009 15:45)
Неактивен
noname написал:
в таком варианте она обзывает героя ГГ, а не ты
Угу, но это только при первом показе так... дальше нормально показывает "ты".
Исправлю.
noname написал:
и, да- а как вообще убрать постоянные упоминания присуствия ГГ в каждой локации?
Смотри мой пост выше: ГГ.персонаж_по_месту = нет //отключает отображение ГГ в локации
Неактивен
У меня нет аськи мэйл.ру-агент пойдет?
Неактивен
взял со стола ложку
осмотрел стол
надписи "на столе ничего нет" я не увидел
у меня этот баг не повторяется...
1. описание стола сделано в тесте, а не в библиотеке.
2. такое может быть, если на столе есть еще что-то невидимое - объект без свойства "предмет_по_месту"
3. покажи код стола
Отредактировано ASBer (23.07.2009 18:59)
Неактивен
код из сообщения #121 работает правильно...
попробуй в столе заменить
fnOписание()
{ if(item) return "{item:предмет_по_месту}."
else return "на столе ничего нет"
}
на
fnOписание()
{ if(item:предмет_по_месту.num) return "{item:предмет_по_месту}."
else return "на столе ничего нет"
}
Неактивен
Скорее стол засорился
поменяй на
fnOписание()
{ if(item) return "{item}."
else return "на столе ничего нет"
}
и увидишь сколько там мусора
Неактивен
ТОМ - Текстовая Основа Миростроения v.0.9.2.1 beta. ASBer(C)2008-2009
Последние библиотеки идут с версией v.0.9.2.2 (возьми в папке Libs4tom/Bin)
Отредактировано ASBer (23.07.2009 20:08)
Неактивен
noname написал:
в некоторой локации надо запретить некоторые действия(почти все). как было бы правильнее всего это сделать?
Наверное проще всего вариант "в лоб" - в каждом действии прописать проверку текущей локации.
персонаж.взял()
{ if(loc==запретная_локация)
{ %ты не можешь здесь ничего брать!
return;
}
//...
}
и далее также по всем действиям...
Или еще вариант - с подменой персонажа.
Подменный не должен наследоваться от класса "персонаж"
И в него нужно скопировать только те обработчики действий, которые нужны в этой локации.
Отредактировано ASBer (23.07.2009 22:18)
Неактивен
с учётом того, что её придётся доводить до ума- думаю, в этом году успею
А можно я набьюсь в бета-тестеры?
В файле набросок к лифту.
P.S. есть небольшая условность - числа в команде должны быть ПЕРЕД объектом. "5 этаж" - правильно. "Этаж 5" - будет ошибка.
--------------------------------------------------------------------------------
Прикрепленные файлы:
SixFloors.tom, Размер: 1,800 байт, Скачано: 27
Отредактировано ASBer (28.07.2009 13:28)
Неактивен
noname написал:
ты это, не томи- этож
Пример на один глагол и два объекта.
--------------------------------------------------------------------------------
Прикрепленные файлы:
to_pawn.tom, Размер: 2,050 байт, Скачано: 30
Отредактировано ASBer (27.07.2009 23:26)
Неактивен
fireton, единственный известный мне способ понять язык - это начать писать на нем
Подругому никак...
Неактивен
Тогда вот пока вам совсем маленькая но зато классическая игрушка - Плащ тьмы.
Возможности стандартной библиотеки пока гораздо скромнее рТАДСа - например, надеть плащ не получится.
В остальном получилось довольно близко к оригиналу...
О всех замеченных багах, несуразностях или нелогичности прошу писать сюда - исправлю
--------------------------------------------------------------------------------
Прикрепленные файлы:
Cloak.rar, Размер: 188,580 байт, Скачано: 26
Неактивен
> инв
У тебя есть бархатный плащ.
> з
Ты ушел на запад в гардероб.
Гардероб
Стены этой маленькой комнаты, очевидно, когда-то имели множество крючков для
одежды. Сейчас же остался только один. Единственная дверь ведет на восток.
Здесь есть маленький бронзовый крючок для одежды.
> осм его
Бархатный плащ или маленький бронзовый крючок для одежды?
> маленький крючок
Это просто маленький бронзовый крючок, прикрученный к стене.
noname, в ТОМе уточнения работают. Но я еще подумаю...
Отредактировано ASBer (06.08.2009 14:33)
Неактивен
Парсер не поддерживает местоимений - они поддерживаются библиотекой.
По последнему упоминанию объекта можно сделать - это правильно.
Здесь на троне правит королева в короне.
> осм ее
Королеву или корону?
вот с этим уже хуже... буду думать
Отредактировано ASBer (06.08.2009 17:20)
Неактивен
Серый Волк, спасибо, но все только начинается!
Неактивен
И до кучи вот еще игра про золотой череп портирована на стандартную библиотеку ТОМа.
--------------------------------------------------------------------------------
Прикрепленные файлы:
GOLDSKLR.rar, Размер: 188,249 байт, Скачано: 33
Отредактировано ASBer (11.08.2009 09:04)
Неактивен
Cheshire написал:
ASBer написал:
Здесь на троне правит королева в короне.
> осм ее
Королеву или корону?вот с этим уже хуже... буду думать
А разве нужно что-то придумывать? Обычная жизненная ситуация.
Если в тексте присутствуют персонаж и объект, то персонаж как правило более значим. В данном примере корона никак не акцентирована и служит как дополнительное описание самой королевы.
Cheshire написал:
Насчет примера про "пнуть Елену". Можно как-то отделить объекты в описаниях, инициированных игроком, от объектов в описаниях, инициированных программой?
угу, это можно.
Отредактировано ASBer (19.08.2009 15:08)
Неактивен
oleksus написал:
А кстати, что с Миленой, движется?
На вике лежит графический интерфейс для тома на основе милены лайт.
Там можно менять шрифт, форматировать текст, вставлять картинки и музыку. Все работает - спасибо Александру Графу
oleksus написал:
можно ли в ТОМ конструировать фразы-обращения, например "Робот, возьми гайку и закрути винт."?
В текущей версии можно только в два этапа:
>Робот, возьми гайку
>Робот, закрути винт
Но я думаю что эта проблема решаема, скоро иcправлю.
oleksus написал:
Насчёт "ты" и "вы" - даже при обращении на "ты" можно избежать личных окончаний, т.к. они лишь в прошедшем времени. Вместо "ты взял" - пишем "ты берёшь".
Личные окончания вполне нормально подставляются если правильно указан род персонажа (по умолчанию - Мр), с этим проблем быть не должно. Если только я еще не все глаголы в библиотеке расписал...
oleksus написал:
Обращение на "ты" должно быть, имхо, обусловлено сюжетом. Я тоже сторонник обращения на "вы", но вот сейчас делаю сюжет, герой которого - ученик колдуна. При всём уважении к игроку я не могу позволить обращения на "вы", ибо оно не так погрузит игрока в атмосферу, не заставит почувствовать себя учеником.
Добавлю в библиотеку возможность обращения к персонажу на "Вы". Пусть авторы игр сами решают как правильно.
Неактивен
oleksus написал:
А что насчёт фразы "Пусть робот возьмёт гайку."?
Без проблем.
Нужно создать действие "пусть" с соответствующим шаблоном.
Но я не уверен что такое действие должно быть включено в стандартную библиотеку.
Неактивен
Все файлы игр (.tom, .tml) это обычные текстовые файлы.
Можно просматривать и редактировать любым текстовым редактором.
Неактивен
Начиная с версии 0.9.2.8 beta возможна вставка выражений на естественном языке в код игры.
Для анализа выражений в коде игры использует тот-же парсер, что и для команд в процессе самой игре.
Выражения ЕЯ могут встраиваться в конструкции языка программирования.
Выражения ЕЯ не могут встраиваться в вычисляемые выражения - формулы, присвоения и т.п.
В конце выражения ЕЯ обязательно должна стоять точка.
Парсерная ошибка в коде приравнивается к синтаксической ошибке и приводит к прерыванию выполнения кода.
Выражения ЕЯ в коде эквивалентно оператору "<" для объекта this.
выполнение строки с синтаксисом:
команда на ЕЯ.
эквивалентно выполнению операции:
this < "команда на ЕЯ"
Неактивен
fireton написал:
Скачал ТОМ, попытался разобраться... Не очень получилось, если честно.
Если б какие-нибудь уроки были, о создании игры с нуля...
Набор примеров есть на ифвике - tom_sample.rar
Там примеры на различные темы, но без использования стандартной библиотеки.
Пошаговые уроки о создании игры с нуля наверное имеет смысл делать на основе стандартной библиотеки, которая всё еще в разработке...
В составе самой библиотеки есть тест и пара простых игр, можно попробовать делать по аналогии с ними.
В любом случае прийдется разбираться самостоятельно - удобочитаемого вводного материала пока к сожалению нет.
С удовольствием готов отвечать на любые возникающие вопросы - в данный момент я в отпуске, поэтому сейчас самое время
fireton написал:
И, как я понимаю, словоформы задавать приходится вручную, т.е. ни генератора словоформ, ни утилитки никаких нет.
Платформа не имеет жестко заданных парадигм словообразования. Библиотеки и даже отдельные игры могут применять свою собственную систему генерации словоформ и их согласования. Поэтому утилитку можно сделать только для стандартной библиотеки, которая всё еще в разработке...
Для существительных и прилагательных можно взять алгоритм генератора рТАДСа, если GrAndrey разрешит.
Для глаголов все сложнее... но новые глаголы нужны не так частно.
Неактивен
noname написал:
насколько я понимаю, утилитками тут не обойдёшся- нужны словари.
Одно другому не мешает, особенно если учесть что словари - ну ооочень дальняя перспектива.
Неактивен
Добавил ссылки на статьи http://ifwiki.ru/ТОМ:_Лексема и http://ifwiki.ru/ТОМ:_Морфологический_ключ
возможно это поможет...
Cheshire написал:
Но вот непонятно, почему не всегда все ключи прописываются
Потому что иногда можно сократить описание лексемы, не прописав некоторые ключи.
Например:
"пещер%; ЖрЕчНдСи; Ип; Ип=а; Рп=ы; Дп=е; Вп=у; Тп=ой; Тп=ою; Пп=е;"
эквивалентно
"пещер%; ; ЖрЕчНдСиИп; ЖрЕчНдСиИп=а; ЖрЕчНдСиРп=ы; ЖрЕчНдСиДп=е; ЖрЕчНдСиВп=у; ЖрЕчНдСиТп=ой; ЖрЕчНдСиТп=ою; ЖрЕчНдСиПп=е;"
Если для лексемы указан, например, женский род, то и каждая словоформа лексемы будет отнесена к женскому роду. В таком случае Жр достаточно указать один раз как свойство всей лексемы.
Cheshire написал:
или наоборот, после где-нибудь идет строчка this.род_число = "ЖрЕч" (или даже ЖрМрЕч)?
Это я сумел победить доработав парсер. В текущей версии в this.род_число = "ЖрЕч" никакой необходимости нет и можно забыть как страшный сон.
Cheshire написал:
Что означает первый Ип?
Первый Ип - это словоформа по умолчанию. Если Вы напишите
%{пещера}
на экран будет выведено
пещера
т.е. тоже самое, как если бы Вы написали
%{пещера*Ип}
Cheshire написал:
Что означают Си и Пи (существительное/прилагательное? а что за "и")?
Совершенно верно! Существительное имя , Прилагательное имя
Cheshire написал:
Нужны примеры с предметами в множественном числе, исчислимыми предметами, со сложными названиями (нож Васи, клубок ниток) и т.д.
Можно покопаться в играх, там это есть.
Принцип согласования по ключам тот же самый, только ключи подлиннее.
На самом деле механизм получился очень гибкий, думаю я сам еще не до конца осознал все его возможности...
upd:
Еще очень рекомендую разобраться с примером Морфология.tom (есть в наборе примеров)
Неактивен
Alexandr написал:
Почему ГГ так слушается других персонажей? Если они скажут ему убиться он тоже убъется?
Конечно
ГГ такой же персонаж как и все остальные NPC. Чтобы ГГ не слушал команд NPC нужно прописать метод
ГГ.свобода_воли(){ return нет }
Неактивен
Тема закрыта