Advertisement
sytchenko

Godot. ENet Multiplayer Server gdscript

Feb 14th, 2025 (edited)
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extends Node
  2.  
  3. var peer := ENetMultiplayerPeer.new()
  4. var valid_token := "my_secret_token"
  5. var authorized_peers := {}
  6.  
  7. func _ready():
  8.     peer.create_server(9090)
  9.     multiplayer.multiplayer_peer = peer
  10.     multiplayer.peer_connected.connect(_on_peer_connected)
  11.     multiplayer.peer_disconnected.connect(_on_peer_disconnected)
  12.     print("UDP сервер запущен на порту 9090")
  13.  
  14. @rpc("any_peer", "reliable")
  15. func authorize(token: String):
  16.     var sender_id = multiplayer.get_remote_sender_id()
  17.     if token == valid_token:
  18.         authorized_peers[sender_id] = true
  19.         rpc_id(sender_id, "authorize", true)
  20.         print("Клиент авторизован, ID:", sender_id)
  21.     else:
  22.         rpc_id(sender_id, "authorize", false)
  23.         print("Ошибка авторизации, отключаю клиента, ID:", sender_id)
  24.         peer.disconnect_peer(sender_id)
  25.  
  26. func _on_peer_connected(id):
  27.     print("Клиент подключился, ID:", id)
  28.  
  29. func _on_peer_disconnected(id):
  30.     print("Клиент отключился, ID:", id)
  31.     authorized_peers.erase(id)
  32.  
  33. @rpc("any_peer", "reliable")
  34. func receive_message(msg: String):
  35.     var sender_id = multiplayer.get_remote_sender_id()
  36.     if authorized_peers.get(sender_id, false):
  37.         print("Сообщение от клиента", sender_id, ":", msg)
  38.         rpc_id(sender_id, "receive_message", "Получено: " + msg)
  39.     else:
  40.         print("Клиент не авторизован, игнорирую сообщение от ID:", sender_id)
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement