Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node
- var peer := ENetMultiplayerPeer.new()
- var valid_token := "my_secret_token"
- var authorized_peers := {}
- func _ready():
- peer.create_server(9090)
- multiplayer.multiplayer_peer = peer
- multiplayer.peer_connected.connect(_on_peer_connected)
- multiplayer.peer_disconnected.connect(_on_peer_disconnected)
- print("UDP сервер запущен на порту 9090")
- @rpc("any_peer", "reliable")
- func authorize(token: String):
- var sender_id = multiplayer.get_remote_sender_id()
- if token == valid_token:
- authorized_peers[sender_id] = true
- rpc_id(sender_id, "authorize", true)
- print("Клиент авторизован, ID:", sender_id)
- else:
- rpc_id(sender_id, "authorize", false)
- print("Ошибка авторизации, отключаю клиента, ID:", sender_id)
- peer.disconnect_peer(sender_id)
- func _on_peer_connected(id):
- print("Клиент подключился, ID:", id)
- func _on_peer_disconnected(id):
- print("Клиент отключился, ID:", id)
- authorized_peers.erase(id)
- @rpc("any_peer", "reliable")
- func receive_message(msg: String):
- var sender_id = multiplayer.get_remote_sender_id()
- if authorized_peers.get(sender_id, false):
- print("Сообщение от клиента", sender_id, ":", msg)
- rpc_id(sender_id, "receive_message", "Получено: " + msg)
- else:
- print("Клиент не авторизован, игнорирую сообщение от ID:", sender_id)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement