#Joining Servers on Using GodotSteam isn't Working.

1 messages · Page 1 of 1 (latest)

bold spokeBOT
sinful lion
#

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.