small changed

This commit is contained in:
2024-02-15 18:12:48 +03:00
parent b49b910382
commit a23fd5b5bf
2 changed files with 34 additions and 18 deletions

View File

@@ -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())

View File

@@ -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