small changed
This commit is contained in:
@@ -50,16 +50,19 @@ func send_everyone_except(client_id, args):
|
||||
|
||||
func _Peer_Connected(client_id):
|
||||
print("User " + str(client_id) + " has conected")
|
||||
var puppet = player_model.instantiate()
|
||||
var internal_id = last_client_id + 1
|
||||
last_client_id += 1
|
||||
|
||||
clients[str(client_id)] = player_script.new().properties.duplicate()
|
||||
clients[str(client_id)]["position"] = Vector3(0, 10, 0)
|
||||
clients[str(client_id)]["internal_id"] = internal_id
|
||||
|
||||
var puppet = player_model.instantiate()
|
||||
var CB3D = puppet.find_child("CharacterBody3D")
|
||||
CB3D.set_is_playable(false)
|
||||
CB3D.set_internal_id(internal_id)
|
||||
CB3D.set_player_name("player" + str(internal_id))
|
||||
|
||||
clients[str(client_id)] = player_script.new().properties.duplicate()
|
||||
clients[str(client_id)]["internal_id"] = internal_id
|
||||
CB3D.set_nickname(clients[str(client_id)]["nickname"])
|
||||
|
||||
server_map.add_child(puppet)
|
||||
|
||||
@@ -67,9 +70,11 @@ func _Peer_Connected(client_id):
|
||||
func client_ready(client_id):
|
||||
var client = clients[str(client_id)]
|
||||
var internal_id = client["internal_id"]
|
||||
print("Spawning new puppet: " + str(clients[str(client_id)]))
|
||||
|
||||
send_everyone_except(client_id, ["spawn_puppet", clients[str(client_id)]])
|
||||
|
||||
clients[str(client_id)]["ready"] = true
|
||||
|
||||
|
||||
func _Peer_Disconnected(client_id):
|
||||
print("User " + str(client_id) + " has disconnected")
|
||||
@@ -78,7 +83,7 @@ func _Peer_Disconnected(client_id):
|
||||
rpc("despawn_puppet", internal_id)
|
||||
var puppet = server_map.get_node("player" + str(internal_id))
|
||||
server_map.remove_child(puppet)
|
||||
clients.erase(str(client_id))
|
||||
clients.erase(str(client_id))
|
||||
|
||||
@rpc ("any_peer", "reliable", "call_remote")
|
||||
func get_character_properties(client_id):
|
||||
@@ -111,6 +116,7 @@ func get_server_settings(client_id):
|
||||
|
||||
@rpc ("any_peer", "call_remote", "reliable")
|
||||
func set_nickname(client_id, nickname):
|
||||
print("Got nickname from client: " + str(nickname))
|
||||
clients[str(client_id)]["nickname"] = nickname
|
||||
|
||||
##########################################CLIENT#######################
|
||||
@@ -129,12 +135,12 @@ func set_character_properties(p):
|
||||
func spawn_puppet(properties):
|
||||
var puppet = player_model.instantiate()
|
||||
var internal_id = int(properties["internal_id"])
|
||||
puppet.find_child("CharacterBody3D").set_is_playable(false)
|
||||
puppet.find_child("CharacterBody3D").set_internal_id(internal_id)
|
||||
puppet.find_child("CharacterBody3D").set_player_name("player" + str(internal_id))
|
||||
print("Spawning puppet with properties: " + str(properties))
|
||||
puppet.find_child("CharacterBody3D").set_nickname(properties["nickname"])
|
||||
|
||||
var CB3D = puppet.find_child("CharacterBody3D")
|
||||
CB3D.set_is_playable(false)
|
||||
CB3D.set_internal_id(internal_id)
|
||||
CB3D.set_player_name("player" + str(internal_id))
|
||||
CB3D.set_nickname(properties["nickname"])
|
||||
CB3D.set_ready(true)
|
||||
puppet.name = "player" + str(internal_id)
|
||||
|
||||
current_map_instance.add_child(puppet)
|
||||
@@ -170,17 +176,21 @@ func _Connection_Succseeded():
|
||||
get_tree().change_scene_to_file("res://scenes/test_map.tscn")
|
||||
await get_tree().create_timer(1).timeout # костыль
|
||||
current_map_instance = get_tree().root.get_node("test_map")
|
||||
|
||||
rpc_id(1, "get_client_list", multiplayer.get_unique_id())
|
||||
await get_tree().create_timer(0.05).timeout # костыль # tp
|
||||
rpc_id(1, "get_server_settings", multiplayer.get_unique_id())
|
||||
|
||||
var player_node = player_model.instantiate()
|
||||
player_node.find_child("CharacterBody3D").set_is_playable(true)
|
||||
player_node.find_child("CharacterBody3D").set_internal_id(player["internal_id"])
|
||||
player_node.find_child("CharacterBody3D").set_player_name("player" + str(player["internal_id"]))
|
||||
player_node.find_child("CharacterBody3D").set_nickname(nickname)
|
||||
var CB3D = player_node.find_child("CharacterBody3D")
|
||||
CB3D.set_is_playable(true)
|
||||
CB3D.set_internal_id(player["internal_id"])
|
||||
CB3D.set_player_name("player" + str(player["internal_id"]))
|
||||
CB3D.set_nickname(nickname)
|
||||
CB3D.set_ready(true)
|
||||
|
||||
current_map_instance.add_child(player_node)
|
||||
await get_tree().create_timer(0.05).timeout # костыль
|
||||
rpc_id(1, "get_server_settings", multiplayer.get_unique_id())
|
||||
|
||||
rpc_id(1, "client_ready", multiplayer.get_unique_id())
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@ var properties = {
|
||||
class_type = 0,
|
||||
is_playable = false,
|
||||
internal_id = 0,
|
||||
nickname = "Unnamed"
|
||||
nickname = "Unnamed",
|
||||
ready = false
|
||||
}
|
||||
|
||||
var speed = 0
|
||||
@@ -39,6 +40,9 @@ var client_settings
|
||||
@onready var playerCharacterBody = $"."
|
||||
|
||||
|
||||
func set_ready(value):
|
||||
properties["ready"] = value;
|
||||
|
||||
func set_player_name (n):
|
||||
$"..".name = n
|
||||
|
||||
@@ -102,6 +106,8 @@ func _physics_process(delta):
|
||||
|
||||
@rpc ("authority", "call_remote", "unreliable")
|
||||
func sync_puppet(i_id, p, rot):
|
||||
if(!properties["ready"]): return
|
||||
if(properties["is_playable"]): return
|
||||
if (i_id == properties["internal_id"]):
|
||||
playerCharacterBody.position = p
|
||||
head.rotation.y = rot.y
|
||||
|
||||
Reference in New Issue
Block a user