1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-06-23 12:02:30 +08:00

fix(多人游戏): 修复玩家名称冲突问题并重构加入逻辑

将玩家加入逻辑拆分为两个函数,joinPlayer处理玩家加入,mutexPlayer处理名称冲突检测。当检测到重复名称时自动生成唯一名称。同时确保名称变更后再次检查冲突。
This commit is contained in:
2025-11-11 22:13:45 +08:00
parent 46f5adf467
commit 0bf2a76718
+9 -4
View File
@@ -18,15 +18,19 @@ var historyStack
@onready var players: VBoxContainer = $"%players"
@onready var playersList: VBoxContainer = $"%list"
@rpc("any_peer")
func mutexPlayer(player: String):
if multiplayer.is_server():
if getPlayerNames().count(player) > 1:
var newName = player + str(randi_range(1000, 99999999999))
setPlayerName.rpc(player, newName)
setPlayerName(player, newName)
@rpc("any_peer")
func joinPlayer(player: String):
if multiplayer.is_server():
addPlayerName(player)
rebuildAllPlayers.rpc(getPlayerNames())
if getPlayerNames().has(player):
var newName = player + str(randi_range(1000, 99999999999))
setPlayerName.rpc(player, newName)
setPlayerName(player, newName)
mutexPlayer(player)
@rpc("any_peer")
func leavePlayer(playerName: String):
if multiplayer.is_server():
@@ -96,6 +100,7 @@ func _ready():
func(newText):
setPlayerName.rpc(getLast.call(1), newText)
setPlayerName(getLast.call(1), newText)
mutexPlayer.rpc(newText)
)
setState(MultiplayerState.ConnectionState.DISCONNECTED)
func _physics_process(_delta):