信息7:我如何让演员在我交给他们之后检查它

  • 本文关键字:他们 之后 信息 inform7
  • 更新时间 :
  • 英文 :


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

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

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

Report Tom examining book:
say "1.";

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

基本上我想做的是把书给他。他会自动(最好是默默地)检查这本书,然后在检查这本书之后,他会说"多么了不起的书!

感谢您抽出宝贵时间回答。如果这已经得到了回答,我很抱歉,我看了看但没有看到任何相似的东西。

这个问题有两个部分:让汤姆拿走这本书,然后让汤姆说"多么了不起的书!

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规则生效。我们仍然可以通过使用短语continue the action来遵循Report giving规则,但是我们描述了在汤姆检查将这本书交给他)。

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

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!'".

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

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.

相关内容

  • 没有找到相关文章

最新更新