Что скажешь, ГрАнд?
Уже достаточно изменений накопилось, по-моему...
Неактивен
Попробывал реализовать атаку гоблина топором. В итоге вообще ничего не выводит. Странно. Просто пустая строка, ни ошибки, ничего. Если определять атаку гоблина в объекте топора, то все окей. Но логичнее вроде как использовать прямой объект.
До метода 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)
Неактивен
Бросил топор в комнате, подобрал. Атаковал гоблина - реакция есть.
> подобрать топор
Взят.
> атаковать мертвого гоблина топором
Ты атаковал мертвого гоблина топором.
Неактивен
У меня еще подозрение, что, например, слово "яд" может обробатываться некорректно. Правда, не проверял, просто подозрение.
Отредактировано - VampirE - (09.04.2008 19:13)
Неактивен
Маленький оффтопик.
Кто-нибудь подскажет, чем отличается debug-версия от релизной кроме размера? Мануал читать не охота что-то.
Отредактировано - VampirE - (15.07.2008 18:05)
Неактивен
Нашел неприятный баг в генераторе:
yad: item gdesc = 'пузырёк/1му с ядом/п-' noun = 'пузырёк/1му' ldesc = "Пузырек с ядом." location = Me isHim = true ;
В слове 'пузырёк' в случае с gdesc почему-то берется одно правило, где просто 'к', а в случае с noun все берется правильно - правило 'ёк'.
---
Нашел решение проблемы. Все дело было в неправильной работе регулярных выражений в коде нарезки gdesc:
while (ret:=reSearch('([/$&@№~%_+*#a-zA-Zа-яА-Я0-9-]+)|([][<>()!{}.,;"?\ ]+)', sdescstr), ret<>nil) { sdesc_list+=ret[3]; sdescstr:=substr(sdescstr,ret[1]+ret[2],length(sdescstr)); }
Нужно просто добавить буковку 'ё' между первыми скобками. Будет что-то вроде:
while (ret:=reSearch('([/$&@№~%_ё+*#a-zA-Zа-яА-Я0-9-]+)|([][<>()!{}.,;"?\ ]+)', sdescstr), ret<>nil) { sdesc_list+=ret[3]; sdescstr:=substr(sdescstr,ret[1]+ret[2],length(sdescstr)); }
Отредактировано - VampirE - (23.07.2008 22:10)
Неактивен
Что касается реакций, то идея замечательная, но автору нужно понимать хоть немного в программировании, что бы это реализовать.
Для себя обязательно возьму на заметку, если что-то буду писать - благо мне такое добавить в игру не составит труда. Самое простое - добавлять класс, скажем, для хрупких вещей и переопределить там метод drop. Но тогда глаголы "положить" и "бросить" должны вызывать разные реакции. Это даже идея для пазла.
Вообще библиотека-"физический движок" для ТАДС игр была бы кстати. Но снова для людей, кто будет разбираться в функционале, а это опять же без базового знания синтаксиса языка проблематично.
Отредактировано - VampirE - (09.08.2008 16:51)
Неактивен