Nicknames

This commit is contained in:
Rendo 2025-12-12 18:45:31 +05:00
commit e269127a25
7 changed files with 134 additions and 14 deletions

View file

@ -1,7 +1,7 @@
extends Node
const MAX_PLAYERS: int = 10
const MAX_PLAYERS: int = 20
const PORT: int = 7777
signal lobby_created
@ -15,6 +15,8 @@ var attack_team: Array[int] = []
var defence_team: Array[int] = []
var specators_team: Array[int] = []
var client_nicknames: Dictionary[int,StringName] = {}
func _ready() -> void:
multiplayer.peer_disconnected.connect(player_left)
multiplayer.server_disconnected.connect(server_disconnected)
@ -30,6 +32,9 @@ func player_left(id: int) -> void:
defence_team.erase(id)
elif specators_team.has(id):
specators_team.erase(id)
client_nicknames.erase(id)
update_teams_state.emit()
func server_disconnected() -> void:
@ -42,6 +47,7 @@ func host() -> void:
lobby_created.emit()
specators_team.append(multiplayer.get_unique_id())
in_lobby = true
client_nicknames = {1 : ClientSettings.NICKNAME}
func join(ip: String) -> Error:
var peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new()
@ -67,7 +73,24 @@ func add_and_sync_peer(id: int) -> void:
specators_team.append(id)
update_teams_state.emit()
set_teams.rpc_id(id,attack_team,defence_team,specators_team)
@rpc("any_peer","call_local","reliable")
func recieve_client_data(data: Dictionary):
if multiplayer.is_server() == false:
return
var id = multiplayer.get_remote_sender_id()
var nickname: StringName = data["nick"].left(16)
client_nicknames[id] = nickname
sync_client_data.rpc(client_nicknames)
@rpc("authority","call_remote")
func sync_client_data(new_client_nicknames: Dictionary[int,StringName]):
if multiplayer.is_server() or multiplayer.get_remote_sender_id() != 1:
return
client_nicknames = new_client_nicknames
@rpc("authority","call_remote","reliable")
func set_teams(attack: Array[int],defence: Array[int],spectators: Array[int]):
attack_team = attack
@ -145,6 +168,8 @@ func team_switch_notification(team: int) -> void:
update_teams_state.emit()
set_teams.rpc(attack_team,defence_team,specators_team)
func start_game() -> void:
if not multiplayer.is_server():
return