【初めてでも大丈夫】4.FiveMのサーバーとクライアントの通信

スクリプトの作り方 4.サーバーとクライアント通信(サムネイル)

目次

※まだスクリプトを作成できていない人は前の記事を御覧ください

FiveMのサーバーとクライアントの通信

1.はじめに

FiveMのスクリプトを作成する際、サーバーとクライアントの通信を適切に扱うことが重要です。サーバーは全プレイヤーのデータを管理し、クライアントは個々のプレイヤーの操作を処理します。本記事では、サーバーとクライアント間の通信方法を学び、スクリプトをより高度に制御できるようにしていきます。

2.サーバーとクライアントの役割

FiveMでは、クライアントスクリプトサーバースクリプトの2種類のスクリプトが存在します。それぞれの役割を理解することで、適切な処理を分担できます。

クライアントスクリプト(client.lua)

クライアントスクリプトは、各プレイヤーの操作や描画、UIの制御を担当します。

  • 例: プレイヤーがボタンを押したときの処理

  • 例: UIを表示する処理

  • 例: 車両のスポーン処理

サーバースクリプト(server.lua)

サーバースクリプトは、全プレイヤーのデータ管理や、ゲームロジックの処理を担当します。

  • 例: お金の管理

  • 例: ログの保存

  • 例: 他プレイヤーとの同期

3.クライアントとサーバーの通信方法

クライアントとサーバーは、イベントを使って通信します。主に TriggerServerEventTriggerClientEvent を利用します。

クライアント → サーバー通信(TriggerServerEvent)

クライアントからサーバーへデータを送る場合、TriggerServerEvent を使用します。

例: クライアントでコマンドを実行したら、サーバー側に通知ツル

-- クライアント側 (client.lua)
RegisterCommand('send_message', function()
    TriggerServerEvent('my_script:sendMessage', 'こんにちは、サーバー!')
end, false)
-- サーバー側 (server.lua)
RegisterNetEvent('my_script:sendMessage')
AddEventHandler('my_script:sendMessage', function(message)
    print('受信したメッセージ: ' .. message)
end)

このスクリプトでは、クライアントが /send_message コマンドを実行すると、サーバーに「こんにちは、サーバー!」というメッセージが送信されます。

サーバー → クライアント通信(TriggerClientEvent)

サーバーから特定のクライアントにメッセージを送るには、TriggerClientEvent を使用します。

例: サーバーが特定のプレイヤーに通知を送る

-- サーバー側 (server.lua)
RegisterCommand('notify', function(source)
    TriggerClientEvent('my_script:showNotification', source, 'サーバーからの通知!')
end, false)
-- クライアント側 (client.lua)
RegisterNetEvent('my_script:showNotification')
AddEventHandler('my_script:showNotification', function(message)
    SetNotificationTextEntry('STRING')
    AddTextComponentString(message)
    DrawNotification(false, true)
end)

このスクリプトでは、サーバーで /notify コマンドを入力すると、通知がクライアント側に表示されます。

4.全プレイヤーに通知を送る

全プレイヤーに同じメッセージを送る場合は、sourceに-1 を指定します。

-- サーバー側 (server.lua)
RegisterCommand('broadcast', function()
    TriggerClientEvent('my_script:showNotification', -1, '全プレイヤーに通知!')
end, false)

このスクリプトを実行すると、すべてのプレイヤーに「全プレイヤーに通知!」が表示されます。

5.よくあるエラーと対処法

エラー1: イベントが反応しない

対策: クライアント側とサーバー側で、同じイベント名を使っているか確認しましょう。

エラー2: メッセージが送られない

対策: server.cfg にリソースが正しく登録されているかチェックしてください。

6.まとめ

サーバーとクライアントの通信を適切に制御することで、より高度なスクリプトを作成できます。次回は、FiveMのデバッグと運用について解説していこうと思います。

Share the Post:

関連記事