При проверке возможности действия над предметом, парсер должен проверять доступность предметов, вложенных в другие объекты. При этом объекты могут быть доступны для одних типов действий и недоступны для других.
Идея проста:
Классифицировать на уровне парсера действия по видам чувств:
- зрение,
- слух,
- осязание,
- обоняние,
- вкус, (под вопросом…)
+ 6-е чувство (для экстрасенсорных воздействий)
+ чувство собственности (возможность манипулирования предметами)
Для объектов-контейнеров устанавливаем флаги:
- непрозрачность - нельзя видеть предмет,
- звукоизоляция – нельзя слышать предмет,
- невозможность потрогать предмет,
- герметичность для запахов – нельзя понюхать предмет
- невозможность попробовать на вкус (очевидно= невозможности потрогать предмет)
- экстрасенсорная непрозрачность (а надо ли? вероятно для этого типа действий преград нет)
- является собственником – владелец не дает брать и использовать предметы.
Так, для поверхности стола (предмет лежит на столе) допустимы все действия – можно осматривать, нюхать, трогать, брать или слушать предмет.
Для стеклянной витрины разрешаем осматривать предмет внутри витрины (возможно, нюхать и слушать).
При попытке потрогать или взять предмет, будет выдаваться сообщение: «предмет недоступен»
Для завязанного мешка оставляем возможность прощупать предмет внутри мешка.
Для предмета внутри металлического сейфа оставляем только экстрасенсорные воздействия. Для прочих действий будут выдаваться сообщения: «ты не видишь это здесь», «ничего не слышно», «ничем не пахнет», «предмет недоступен»
Для NPC устанавливаем флаг собственника. При попытке взять у владельца предмет выдается сообщение: «NPC_Name не даст тебе это».
При описании действий, автор явно указывает парсеру, к какому типу это действие относится.
Примеры:
Действие «Осмотреть» - зрение
Действие «Взять» - собственность + возможность потрогать
Действие «Украсть» - возможность потрогать
Действие «Кинуть в …» - зрение (можно кинуть в то, что видишь)
Вопрос к сообществу:
Будет ли достаточно описанных типов действий, или я что-либо упустил?
Типы действий планируется зашить в парсер и их состав будет фиксирован.
Отредактировано ASBer (14.04.2008 13:43)
Неактивен
Сопоставить каждому человеческому чувству некое чувство кракозябры и заменить системные сообщения парсера на свои - "я не вижу это" на "я не вмлямлю это".
Не проще ли тогда сделать "класс чувства" и на его основе уже реализовать в библиотеках все остальные чувства? Хоть человеческие, хоть крокозябровые...
Т.е. при "создании" чувства ты просто указываешь набор действий и ограничений для контейнеров, и т.д.
Неактивен
ASBer написал:
Основные трудности будут возникать в сложно-организованных локациях и при глубокой "матрешечной" вложенности объектов. Но учитывая что такие случаи для ИЛ скорее исключение, чем практика, ими вероятно можно пренебречь.
Если контейнер - тоже объет, то проблем быть не должно.
Неактивен