Что скажешь, ГрАнд?
Уже достаточно изменений накопилось, по-моему...
Неактивен
Попробывал реализовать атаку гоблина топором. В итоге вообще ничего не выводит. Странно. Просто пустая строка, ни ошибки, ничего. Если определять атаку гоблина в объекте топора, то все окей. Но логичнее вроде как использовать прямой объект.
До метода 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)
Неактивен