2017-02-03 6 views
0

特定のコマンドを実行した後に、送信者のチャットに色付きのテキストを印刷する単純なスクリプトを作成したいだけです。GMod |送信者のチャットボックスに色付きメッセージを印刷する簡単なコマンドを作成したい

まず、コンソールは私にエラー[グローバル 'チャット'(nil値)のインデックスを作成しようとしました]を返しました。 Singleplayerをリロードしてスクリプトを開いた後、何もしませんでした。

現在のコード:

local ply = LocalPlayer() 

local function Test(ply, text, team) 
    if string.sub(text, 1, 8) == "!command" then 
     chat.AddText(Color(100, 100, 255), "Test") 
    end 
end 
hook.Add("PlayerSay", "Test", Test) 

私は、誰かが私を助けることができることを願っています。

+0

あなたのコード一目見て上手く見える。正確に機能しないものを含めるように質問を編集できますか?何かエラーがありますか?それとも単に何もしませんか? – Lignum

答えて

0

"PlayerSay"フックの内部でchat.AddText()(これはクライアントサイドと呼ばれる)だけでなく、LocalPlayer()(これはクライアントサイドと呼ばれます)を使用しています。サイドフック)。ただ、実現ChatPrint()その中に色()の引数を受け付けない...あなたはいつもネットメッセージを送信してみてください:あなたはChatPrint()

EDITのように、何か他のものを必要とするだろう

if SERVER then 
    util.AddNetworkString("SendColouredChat") 

    function SendColouredChat(ply, text) 
     if string.sub(text, 1, 8) == "!command" then 
      net.Start("SendColouredChat") 
       net.WriteTable(Color(255, 0, 0, 255)) 
       net.WriteString("Test") 
      net.Send(ply) 
     end 
    end 
    hook.Add("PlayerSay", "SendColouredChat", SendColouredChat) 
end 

if CLIENT then 
    function ReceiveColouredChat() 
     local color = net.ReadTable() 
     local str = net.ReadString() 

     chat.AddText(color, str) 
    end 
    net.Receive("SendColouredChat", ReceiveColouredChat) 
end 
+0

net.messageは確実に機能します。私は "WriteTable"を使用しないことをお勧めします。なぜなら、それは文字列または1文字列&& 4 intの送信よりも遅いからです。 –

関連する問題