#Joining Servers on Using GodotSteam isn't Working.
1 messages · Page 1 of 1 (latest)
Here is the code:
@export var ms : MultiplayerSpawner
@export var ui : CanvasLayer
@export var lob_v_box : VBoxContainer
var lobby_id := 0
var peer := SteamMultiplayerPeer.new()
func _ready() -> void:
ms.spawn_function = spawn_level
Steam.lobby_created.connect(_on_lobby_created)
Steam.lobby_match_list.connect(_on_lobby_match_list)
Steam.lobby_joined.connect(_on_lobby_joined)
open_lobby_list()
func spawn_level(path: String) -> Node:
var a := (load(path) as PackedScene).instantiate()
return a
func join_lobby(id: int) -> void:
Steam.joinLobby(id)
func open_lobby_list() -> void:
Steam.addRequestLobbyListDistanceFilter(Steam.LOBBY_DISTANCE_FILTER_CLOSE)
Steam.requestLobbyList()```
func _on_lobby_joined(id: int, permissions: int, locked: bool, response: int) -> void:
if response == Steam.CHAT_ROOM_ENTER_RESPONSE_SUCCESS:
peer.connect_to_lobby(id)
multiplayer.multiplayer_peer = peer
lobby_id = id
ui.hide()
print("joined")
var fail_reason : String
match response:
Steam.CHAT_ROOM_ENTER_RESPONSE_DOESNT_EXIST: fail_reason = "This lobby no longer exists."
Steam.CHAT_ROOM_ENTER_RESPONSE_NOT_ALLOWED: fail_reason = "You don't have permission to join this lobby."
Steam.CHAT_ROOM_ENTER_RESPONSE_FULL: fail_reason = "The lobby is full."
Steam.CHAT_ROOM_ENTER_RESPONSE_ERROR: fail_reason = "Uh... something unexpected happened!"
Steam.CHAT_ROOM_ENTER_RESPONSE_BANNED: fail_reason = "You are banned from this lobby."
Steam.CHAT_ROOM_ENTER_RESPONSE_LIMITED: fail_reason = "You cannot join due to having a limited account."
Steam.CHAT_ROOM_ENTER_RESPONSE_CLAN_DISABLED: fail_reason = "This lobby is locked or disabled."
Steam.CHAT_ROOM_ENTER_RESPONSE_COMMUNITY_BAN: fail_reason = "This lobby is community locked."
Steam.CHAT_ROOM_ENTER_RESPONSE_MEMBER_BLOCKED_YOU: fail_reason = "A user in the lobby has blocked you from joining."
Steam.CHAT_ROOM_ENTER_RESPONSE_YOU_BLOCKED_MEMBER: fail_reason = "A user you have blocked is in the lobby."```
func _on_lobby_match_list(lobbies: Array) -> void:
for i:int in lobbies:
var lobby_name := Steam.getLobbyData(i, "name")
var mem_count := Steam.getNumLobbyMembers(i)
var but := Button.new()
but.text = lobby_name + " ¦ Player Count: " + str(mem_count)
but.size = Vector2(100, 5)
but.pressed.connect(Steam.joinLobby.bind(i))
lob_v_box.add_child(but)
func _on_host_pressed() -> void:
Steam.createLobby(Steam.LOBBY_TYPE_PUBLIC)
multiplayer.multiplayer_peer = peer
ms.spawn("res://scenes/level.tscn")
ui.hide()
func _on_lobby_created(connect, id: int) -> void:
if connect:
lobby_id = id
Steam.setLobbyData(lobby_id, "name", Steam.getPersonaName() + "'s Lobby")
Steam.joinLobby(lobby_id)
Steam.setLobbyJoinable(lobby_id, true)
func _on_refresh_pressed() -> void:
if lob_v_box.get_child_count() > 0:
for i:Button in lob_v_box.get_children():
i.queue_free()
It has to be in multiple messages cause of Discords maximum character per message count.