Untitled
unknown
plain_text
5 months ago
2.2 kB
195
Indexable
func _ready():
multiplayer_spawn.spawn_function = spawn_level
Steam.lobby_created.connect(_on_lobby_created)
Steam.lobby_match_list.connect(_on_lobby_match_list)
open_lobby_list()
func spawn_level(data):
var a = (load(data) as PackedScene).instantiate()
return a
func join_lobby(id):
Steam.lobby_joined.connect(_on_lobby_joined.bind())
Steam.joinLobby(id)
lobby_id = id
$Host.hide()
$LobbyContainer/VBoxContainer.hide()
$Refresh.hide()
func _on_host_pressed() -> void:
Steam.lobby_joined.connect(_on_lobby_joined.bind())
Steam.createLobby(Steam.LOBBY_TYPE_PUBLIC)
multiplayer_spawn.spawn("res://level.tscn")
$Host.hide()
$LobbyContainer/VBoxContainer.hide()
$Refresh.hide()
func _on_lobby_created(connect_param, id):
if connect_param:
lobby_id = id
Steam.setLobbyData(lobby_id, "name", str(Steam.getPersonaName()+"'s Lobby"))
Steam.setLobbyData(lobby_id, "mode", "Coop")
Steam.setLobbyJoinable(lobby_id, true)
print(lobby_id)
var set_relay: bool = Steam.allowP2PPacketRelay(true)
print("Allowing Steam to be relay backup: %s" % set_relay)
peer.create_host(0)
multiplayer.set_multiplayer_peer(peer)
func _on_lobby_joined(lobby : int, permissions:int, locked:bool, response:int):
if response == 1:
var id = Steam.getLobbyOwner(lobby)
if id != Steam.getSteamID():
connect_socket(id)
peer.connect_to_lobby(id)
func connect_socket(steam_id: int):
peer.create_client(steam_id, 0)
multiplayer.multiplayer_peer = peer
func open_lobby_list():
Steam.addRequestLobbyListDistanceFilter(Steam.LOBBY_DISTANCE_FILTER_WORLDWIDE)
Steam.requestLobbyList()
func _on_lobby_match_list(lobbies):
for lobby in lobbies:
var name_lob = Steam.getLobbyData(lobby, "name")
var mem_count = Steam.getNumLobbyMembers(lobby)
var but = Button.new()
but.set_text(str(name_lob,"| Player Count: ", mem_count))
but.set_size(Vector2(100, 5))
but.connect("pressed", Callable(self, "join_lobby").bind(lobby))
$LobbyContainer/VBoxContainer.add_child(but)
func _on_refresh_pressed() -> void:
if $LobbyContainer/VBoxContainer.get_child_count() > 0:
for n in $LobbyContainer/VBoxContainer.get_children():
n.queue_free()
open_lobby_list()Editor is loading...
Leave a Comment