5

我试图让演员在玩家角色给他们一些东西后检查它。如果我说这样的话:

After giving a book to Tom:
  try Tom examining the book.

似乎整个事情都被完全忽略了。我把书给汤姆,他不检查。我什至创建了一个报告规则(

Report Tom examining book:
  say "1.";

) 看看他是否确实检查过它,但它并没有告诉我他这样做了,但这也不起作用。

基本上我想做的就是给他这本书。他会自动(最好是默默地)检查这本书,然后在检查完这本书后,他会说“多么奇妙的书!”

感谢您花时间回答。如果已经回答了这个问题,我很抱歉,我看了但没有看到任何类似的东西。

4

1 回答 1

4

这个问题有两个部分:让汤姆拿走这本书,让汤姆说“多么棒的书!” 然后。

1.让汤姆拿书

当前的After规则永远不会适用,因为汤姆没有拿走这本书(该行动被“阻止给予”规则阻止)。

解决此问题的最简单方法是将After规则替换为Instead规则,因此使完整的语句如下:

Instead of giving a book to Tom:
  Say "You hand over [the book] to [Tom].";
  Now tom carries the book;
  try Tom examining the book.

这可行,但绕过 give 命令并不是最优雅的做事方式。相反,我们可以完全删除阻止向人们提供东西的规则,如下所示:

The block giving rule is not listed in any rulebook.
After giving a book to Tom:
  say "You give [the book] to [Tom].";
  try Tom examining the book.

(我们必须描述我们把书交给汤姆,因为遵守After giving规则会阻止Report giving规则生效。我们仍然可以Report giving使用短语来遵守规则,但是我们描述了在汤姆检查后将continue the action书交给他)。

但这具有允许您将任何东西给汤姆的效果,这可能不是我们想要的。我们可以通过这样做来解决这个问题:

This is the partial block giving rule:
  if the noun is the book and the second noun is tom:
    continue the action;
  otherwise:
    say "[The second noun] [don't] seem interested.";
    stop the action.

The partial block giving rule is listed instead of the block giving rule in the check giving it to rules.

这允许您只给汤姆这本书,而不给其他任何人。如果您预计这种确切情况经常发生在不同的人和不同的对象身上,那么您可以更进一步并定义一个关系(例如,“感兴趣”)来确定某人是否会接受一个对象,并将规则更改为只允许你给人们他们感兴趣的东西。

2. 让汤姆说“多么棒的书!”

现在,我们有几种方法可以让汤姆说出我们想让他说的话。我们可以做出的最明显的改变是让汤姆不实际检查这本书。我们可以简单地用这样的东西替换那行:

Say "[Tom] looks over [the book]. 'Wow,' says [Tom], 'what a marvelous book!'".

但是,假设我们仍然希望 Tom 实际检查这本书(如果想稍后检查这本书是否已经过检查,或者 Tom 是否检查过某些东西等,这将很有帮助)。然后我们可以做这样的事情:

Try silently tom examining the book;
Say "[Tom] looks over [the book]. 'Wow,' says [Tom], 'what a marvelous book!'"

静默尝试只是阻止操作产生任何文本(除非它失败)。我们也可以使用报告规则而不是静默尝试,这样更优雅一些,看起来像这样:

Report tom examining the book:
  Say "[Tom] looks over [the book]. 'Wow,' says [Tom], 'what a marvelous book!'";
  stop the action.
于 2018-03-22T19:54:37.717 回答