添加 Lua 函数语法

我正在用C++和Lua开发MUD,并尝试创建一组表情函数。

我写了以下内容:

add_functions
{
   ['subject-bind-search say'] = 'none',
   ['player say string-type'] = function(player, msg)
      player_text(player, 'You say "' .. msg.string .. '".')
      witness_text(player, M('indefinite', player) .. ' says "' .. msg.string .. '".')
   end,
   ['subject-bind-search say-to'] = 'none',
   ['player say-to string-type thing'] = function(player, msg, thing)
      player_text(player, 'You say "' .. msg.string .. '" to ' .. M('definite',thing) .. '.')
      witness_text(player, M('indefinite', player) .. ' says "' .. msg.string .. '" to ' .. M('indefinite', thing) .. '.')
      end,
      ['player dance'] = function(player)
        player_text(player, 'You burst into dance.')
        witness_text(player, M('indefinite', player)..' bursts into dance.')
        add_atoms{dance='verb'}
        end
}

当我和其他人使用telnet连接到服务器时,我可以输入:

say "hi" -->每个人都可以看到想说的话

我可以输入:

say "hi" to playerBob -->playerBob可以有效地看到hi

但是,如果我只输入:dance 我会收到一个错误消息,提示无法识别任何动词。 我原以为 add_atoms{dance='verb'} 修复了这个问题,但是...

是否有人知道为什么我无法跳舞?

原文链接 https://stackoverflow.com/questions/10266766

点赞
stackoverflow用户1163842
stackoverflow用户1163842

[已解决]

"add_atoms { dance = 'verb' }"不需要放在add_functions代码中。它必须被创建,或者至少可以在add_functions方法之外创建。像下面这样:

add_atoms{[{'say', 'dance', 'apologize', 'bark', 'flex'}]='verb', to='preposition'}

add_functions
{
...
}
2012-04-22 20:30:49