2012-04-22 7 views
-1

私はC++とLuaを使ってMUDを作成しています。私はemotes用の関数のセットを作成しようとしています。Lua関数の追加構文

私が書いた:

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でサーバーに接続すると、私は入力することができます。

"こんにちは" と言う - 必要に応じて>誰もがhi見ています。

私が入力できます。

をplayerBobに "こんにちは" と言う - 私は単純に入力した場合> playerBobがHi

だけで罰金を見ているしかし、:dance を、私は、エラーメッセージが表示されますそれは動詞を認識できないときに送られます。 私はadd_atoms{ dance = 'verb' }を固定していると推測していましたが、まだ...

なぜ私はダンスが発生しないのか知っていますか?

答えて

0

【解決しよう】

"add_atoms {ダンス= '動詞'}" ADD_FUNCTIONSコードに行きません。 add_functionsメソッドの外部に作成するか、少なくとも追加することができます。 ように:

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

add_functions 
{ 
... 
} 
+0

あなたが問題を理解した場合は、あなた自身の答えを正しいものとしてマークすることができます。 – Kyle

+0

うん。 明日まで私はそれが正しいとマークすることを受け入れる前に待っています。しかし、私はしたいと思います。 –