Специальный топик, в котором можно задавать вопросы по ЯРИЛ.
Неактивен
Да, планируется добавление пользовательских ролей. А что подразумевается под группами и тэгами?
Я имел в виду одно и тоже - возможность навесить на предметы некий признак, тэг. Чтобы объединить схожие группы предметов, чтобы не делать лишней работы с перечислением предметов в условиях. Там даже механики никакой не нужно, просто обычный тэг.
И, еще пожелание, чтобы все изменения в редакторе сразу отображались, а то приходится выходить и заново входить. Не очень удобно, но я уже привык )
Не понял, а что не отображается? Вообще, в редакторе есть пункт меню "Запустить в Плеере" - туда попадает текущая игра (сохраняется во временный файл и загружается в Плеере).
Посмотри процедуры или действия. Внутри них изменения становятся видны визуально только если закрыть и открыть их соответственно, хотя по-факту, да, сразу все изменяется.
Кстати, обратил сейчас внимание: чтобы взять предмет, нужно, чтобы он где-то лежал. По-моему, это не очень удобно.
Не совсем понял.
Я проверял. Чтобы переместить предмет, к примеру, к себе в инвентарь, этот предмет должен быть к чему-то приписан. Т.е., изначально он может висеть в воздухе, редактор это позволяет, но тогда передачи не произойдет. Мне кажется, это не совсем правильно.
Сделал перенос предмета командой локация.предмет. Теперь в описании локации мне пишет 'здесь предмет'. При этом осмотреть его нельзя 'я не знаю слова предмет'.
А у него настроен словарь?
Конечно, есть словарь с синонимами.
Я думал про ивенты типа "изменилась переменная" или "игрок зашёл в локацию". Но это пока было на уровне мыслей. А чего именно хотелось бы?
А все, что сейчас позволяет процедура, все забабахать в ивенты. Нужны процедуры, срабатывающие автоматически, при наступлении условия.
Какое условие ты имеешь в виду? Вообще, выражения поддерживают логические операторы: и, или, не.
Да, это я имел в виду.
Можно ли задать условие, если пользователь не ввел полностью команду по шаблону, используя только одно действие и процедуру? Каждая процедура обрабатывает только однотипные шаблоны, значит нужно создавать несколько процедур, но в действиях ведь тоже одно действие(шаблон) - одна процедура, значит нужны несколько действий... Я ошибаюсь?
Отредактировано johnbrown (23.12.2014 08:12)
Неактивен
Это признаки. Пока они есть только в библиотеках,но планируется поддержка создания своего признакав истории. Если признакв принципе существует (объявлен в использованных библиотеках), то проверять на его наличие на предмете можно с помощью выражения "предмет.признак".
А сейчас можно редактировать/добавлять в библиотеку свои глаголы? Они будут экспортироваться в игровой файл?
Всё же не очень понимаю. Если ты редактируешь процедуру или действие, то видишь изменения. Можешь по шагам
подробнее описать? Есть вот такой баг, возможно, это та же проблема?
К примеру , возьмем шаблоны в действиях. В каждом действии может быть несколько шаблонов. Если мы добавили шаблон он сразу отобразится, но если его отредактировать, то в списке шаблонов, будет висеть старая версия, пока мы не выйдем из действия и не войдем обратно.
По-поводу бага по ссылке с локацией. У меня все изменения в названии локации видны сразу, в т.ч. после редактирования.
Приложи или пришли (realsonic3 на гмайле), пожалуйста, игру.
Ага, отправил.
Вообще, парсер пытается подобрать самый подходящий шаблон. Если есть подходящий на 100%- берётся он. Если нет - пытается подобрать самый подходящий (больше всего элементов подходит). Если есть только шаблон "взять"+ВП, а игрок ввёл только "взять", то парсер скажет обэтом сам. Но, если ты хочешь рулить ответом, то можешь вести и шаблон из одного глагола- "взять". В шаблонах для каждого элемента можно указать параметр процедуры, в который его передавать. А затем в процедуре эти параметры анализировать. Т.е. можно использовать разные шаблоны для одной и той же процедуры,только нужно передавать параметры, используемые в процедуре. Навскидку не смогу сказать, что будет, если использовать не переданный параметр. Похоже, ошибка. Надо будет перепроверить и исправить, если так.
В том примере игры, что я тебе отправил есть такая команда 'идти в зал ожидания'. Так она забита в шаблоне. Если написать 'идти в зал' игра не поймет, нужно эту фразу забить в шаблон. Может имеет смысл ввести маску 'идти в зал*'?
Разные шаблоны действия для одной и той же процедуры не пойдут. Как я только не изгалялся. Проблема, что процедура пытается подставить в себя все варианты шаблона, естественно вылезают ошибки. Возможно стоит дать доступ для каждого варианта шаблона (в рамках одного действия) к разным процедурам. Или установить проверку наличия переданных параметров в процедуру, но первый вариант мне кажется более правильным.
Отредактировано johnbrown (23.12.2014 22:38)
Неактивен
->Глаголы да - это же действия. Но к признакам они не имеют отношения.
Я немного посмотрел либу. Там есть действие 'сесть'. В нем используется переменная 'счетчик'. Это какая-то системная переменная? С ней можно работать?
-> Если в идеале, то лучше сделать возможным упоминать не только предметы, но и локации. Вообще,раньше и в локациях можно было задавать ИД, сейчас эта возможность отключена, но ИД у них всё равно есть. В этом случае их можно упоминать в командах. По поводу временного решения: что ты имеешь в виду под "игра не поймёт"? Парсер отвечает неадекватно? Вообще, я против масок * в шаблонах, потому что тогда игрок сможет ввести любую фигню в этом месте, и парсер съест.
ИД - это идентификатор?
Парсер пишет 'не вполне понял, прошу уточнить'
-> Если ошибки связаны с тем, что параметры процедуры не заданы, то это баг, нужно думать, что с ним делать. А если процедура просто не учитывает разные шаблоны - её нужно доработать.
Проблема в том, что процедура слишком хорошо учитывает разные шаблоны :-) Может я просто не умею писать исключения? У меня все тот же пример (вообще, я наверное я просто отредактирую этот глагол в библиотеке). Есть глагол сидеть. Я создаю шаблон вида 'сесть(лит)+вп(предмет)' .Забиваю проверку конкретного предмета в процедуру. В той же процедуре обработку простого глагола 'сесть' у меня сделать не получится, потому' что программа будет прогонять первое условие с проверкой предмета. ((
-> Это какраз есть - просто нужно создавать разные действия. Хотя, тогда придётся дублировать перехваты. Если к разным шаблонам привязывать разные процедуры (которые могут быть совершенно разными), то пропадёт общность действий - в действии тогда смогут помещаться совершенно разные команды. Даже можно будет под одно действие запихнуть все команды вообще.
Хочется унификации. Десять вариантов одного действия это как-то черезчур. В коце-концов, какое дело сколько глаголов команд будет на одном действии, пусть пользователь сам решает, как ему удобно.
Неактивен
Ошибка вылезает? Какая?
Неизвестный иднтификатор предмет.
Получается, процедура сейчас не может обратывать разнотипные шаблоны (с параметрами и без)?
И еще вопрос по шаблонам, вернее по объектам. Объект - это все, что уже есть в игре? Если я присваиваю объекту параметр "предмет", и даже если указать в условии название предмета, то при вводе плеер выдаст ошибку, мол 'не знаю слово предмет', только если оно уже не присутствует в игре.
А в чем смысл опции 'не передавать параметры объекта'?
Еще пожелание, чтобы при переименовании локации или предмета все их старые идентификаторы тоже автоматически менялись.
Отредактировано johnbrown (26.12.2014 12:10)
Неактивен
В какомусловии задать название предмета?
В процедуре, либо в ограничении в 'проверке условия'
Во всех выражениях?
Да. Могут быть какие-то подводные камни?
Неактивен
Уже запутался... Вопрос ещё актуален?)
Тут, в общем, вот в чем дело :-)
Речь идет только об обработке действий.
Получается, действия (шаблоны) сейчас могут обрабатывать только объекты, т.е. то, что уже есть в игре. А вот скажем переменные они обрабатывать не могут, хотя условия есть, но они только для объектов, и это немного сбивает.
Может стоит ввести доп пункт в шаблоны:
1. Литерал
2. Объект
3. Переменная
Неактивен
Переменная - ну, это тот же литерал, но в отличии от него, он может обрабатываться в условии.
Пример. Создаю действие: понюхать
Шаблон понюхать (литерал) + воздух (переменная)
Смысл в том, чтобы не плодить объекты, когда можно обойтись одним словом.
Неактивен
На самом деле, в ЯРИЛе есть возможность обрабатывать переменные, только это немного не явно сделано. Существует системная "переменная" 'ком', которая фактически позволяет работать с переменными. Надо ее создать в процедуре, и подцепить к литералу в шаблоне.
Отредактировано johnbrown (08.01.2015 22:10)
Неактивен