mirror of
https://gitlab.com/open-fpsz/open-fpsz.git
synced 2026-01-19 19:44:46 +00:00
73 lines
2 KiB
Plaintext
73 lines
2 KiB
Plaintext
[gd_scene load_steps=2 format=3 uid="uid://c7ae4jw5d8mue"]
|
|
|
|
[sub_resource type="GDScript" id="GDScript_pj58d"]
|
|
script/source = "extends Node
|
|
|
|
@onready var map = $Map
|
|
@onready var players = $Players
|
|
|
|
const PLAYER : PackedScene = preload(\"res://characters/player/player.tscn\")
|
|
|
|
func start_server(peer):
|
|
multiplayer.multiplayer_peer = peer
|
|
|
|
print(\"Server started\")
|
|
|
|
load_map.call_deferred(load(\"res://maps/genesis/genesis.tscn\"))
|
|
|
|
multiplayer.peer_connected.connect(add_player)
|
|
multiplayer.peer_disconnected.connect(remove_player)
|
|
|
|
for id in multiplayer.get_peers():
|
|
add_player(id)
|
|
|
|
add_player(1)
|
|
|
|
func join_server(peer):
|
|
multiplayer.multiplayer_peer = peer
|
|
|
|
func load_map(scene : PackedScene):
|
|
map.add_child(scene.instantiate())
|
|
|
|
func respawn_player(player):
|
|
player.respawn(Vector3(0.0, 150.0, 0.0))
|
|
|
|
func add_player(peer_id : int):
|
|
var node_name = str(peer_id)
|
|
var player_scene_instance : Player = PLAYER.instantiate()
|
|
player_scene_instance.name = node_name
|
|
player_scene_instance.player_id = peer_id
|
|
player_scene_instance.position = Vector3(0.0, 150.0, 0.0)
|
|
players.add_child(player_scene_instance)
|
|
player_scene_instance.died.connect(respawn_player)
|
|
print(\"Peer `%s` connected\" % node_name)
|
|
|
|
func remove_player(peer_id : int):
|
|
var node_name = str(peer_id)
|
|
players.get_node(node_name).queue_free()
|
|
print(\"Peer `%s` disconnected\" % node_name)
|
|
|
|
func _exit_tree():
|
|
if not multiplayer.is_server():
|
|
return
|
|
|
|
multiplayer.peer_connected.disconnect(add_player)
|
|
multiplayer.peer_disconnected.disconnect(remove_player)
|
|
"
|
|
|
|
[node name="Multiplayer" type="Node"]
|
|
script = SubResource("GDScript_pj58d")
|
|
|
|
[node name="Map" type="Node" parent="."]
|
|
|
|
[node name="MapSpawner" type="MultiplayerSpawner" parent="."]
|
|
_spawnable_scenes = PackedStringArray("res://maps/genesis/genesis.tscn")
|
|
spawn_path = NodePath("../Map")
|
|
spawn_limit = 1
|
|
|
|
[node name="Players" type="Node" parent="."]
|
|
|
|
[node name="PlayersSpawner" type="MultiplayerSpawner" parent="."]
|
|
_spawnable_scenes = PackedStringArray("res://characters/player/player.tscn")
|
|
spawn_path = NodePath("../Players")
|