code cleanup

This commit is contained in:
leca 2024-02-17 20:23:18 +03:00
parent df7ad936f8
commit 4dd130ee10
2 changed files with 32 additions and 29 deletions

View File

@ -24,6 +24,10 @@ func _ready():
StartServer()
#######################################SERVER####################################
func find_cb3d_by_internal_id(internal_id):
return server_map.get_node("player" + str(internal_id)).find_child("CharacterBody3D")
func StartServer():
settings = GameData.server_settings
var port = int(settings["port"])
@ -59,85 +63,85 @@ func _Peer_Connected(client_id):
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
clients[client_id] = player_script.new().properties.duplicate()
clients[client_id]["position"] = Vector3(0, 10, 0)
clients[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))
CB3D.set_nickname(clients[str(client_id)]["nickname"])
CB3D.set_nickname(clients[client_id]["nickname"])
server_map.add_child(puppet)
@rpc("any_peer", "reliable", "call_remote")
func client_ready(client_id):
var client = clients[str(client_id)]
var client = clients[client_id]
var internal_id = client["internal_id"]
send_everyone_except(client_id, ["spawn_puppet", clients[str(client_id)]])
send_everyone_except(client_id, ["spawn_puppet", clients[client_id]])
clients[str(client_id)]["ready"] = true
clients[client_id]["ready"] = true
func _Peer_Disconnected(client_id):
print("User " + str(client_id) + " has disconnected")
var client = clients[str(client_id)]
var client = clients[client_id]
var internal_id = client["internal_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(client_id)
@rpc ("any_peer", "reliable", "call_remote")
func get_character_properties(client_id):
if !clients.has(str(client_id)):
if !clients.has(client_id):
return
var to_send = clients[str(client_id)]
var to_send = clients[client_id]
rpc_id(client_id, "set_character_properties", to_send.duplicate())
@rpc("any_peer", "call_remote", "unreliable")
func sync_client(client_id, position, rotation):
#if(settings["enableAntiCheat"]): if(position > 10): return # нормально допилить надо
var client = clients[str(client_id)]
var internal_id = client["internal_id"]
server_map.get_node("player" + str(internal_id)).find_child("CharacterBody3D").position = position
server_map.get_node("player" + str(internal_id)).find_child("CharacterBody3D").find_child("Head").rotation.y = rotation.y
server_map.get_node("player" + str(internal_id)).find_child("CharacterBody3D").find_child("Head").find_child("Camera").rotation.x = rotation.x
var client = clients[client_id]
var internal_id = str(client["internal_id"])
var client_cb3d = find_cb3d_by_internal_id(internal_id)
client_cb3d.position = position
client_cb3d.find_child("Head").rotation.y = rotation.y
client_cb3d.find_child("Head").find_child("Camera").rotation.x = rotation.x
client["position"] = position
client["rotation"] = rotation
send_everyone_except(client_id, [server_map.get_node("player" + str(internal_id)).find_child("CharacterBody3D").sync_puppet, internal_id, position, rotation])
send_everyone_except(client_id, [client_cb3d.sync_puppet, internal_id, position, rotation])
@rpc ("any_peer", "call_remote", "reliable")
func get_client_list(client_id):
for current_client_id in clients.keys():
if (current_client_id == str(client_id)): continue
rpc_id(client_id, "spawn_puppet", clients[str(current_client_id)])
if (current_client_id == client_id): continue
rpc_id(client_id, "spawn_puppet", clients[current_client_id])
@rpc ("any_peer", "call_remote", "reliable")
func get_server_settings(client_id):
print("Sending game settings")
var client = clients[str(client_id)]
var internal_id = client["internal_id"]
server_map.get_node("player" + str(internal_id)).find_child("CharacterBody3D").set_game_settings.rpc_id(int(client_id), settings["game"])
var client = clients[client_id]
var internal_id = str(client["internal_id"])
var client_cb3d = find_cb3d_by_internal_id(internal_id)
client_cb3d.set_game_settings.rpc_id(client_id, settings["game"])
@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
clients[client_id]["nickname"] = nickname
#func _physics_process(delta):
@rpc("any_peer", "call_remote", "reliable")
func shot(client_id):
var client = clients[str(client_id)]
var client = clients[client_id]
var internal_id = client["internal_id"]
var raycast:RayCast3D = server_map.get_node("player" + str(internal_id)).get_node("CharacterBody3D/Head/Camera/RayCast3D")
var colpoint = raycast.get_collision_point()
var normal = raycast.get_collision_normal()
var raycast:RayCast3D = find_cb3d_by_internal_id(internal_id).get_node("Head/Camera/RayCast3D")
var target = raycast.get_collider()
if (not target is CharacterBody3D): return
var target_internal_id = int(target.get_node("..").name.get_slice("player", 1))
@ -153,7 +157,6 @@ func shot(client_id):
target_cb3d.teleport.rpc_id(int(clients.find_key(target_client)), Vector3(0, 10, 0))
target_client["HP"] = 100
target_cb3d.set_hp.rpc_id(int(clients.find_key(target_client)), target_client["HP"])
print(str(target_client))
##########################################CLIENT#######################
var player

View File

@ -125,7 +125,7 @@ func _physics_process(delta):
func sync_puppet(i_id, p, rot):
if(!properties["ready"]): return
if(properties["is_playable"]): return
if (i_id == properties["internal_id"]):
if (int(i_id) == properties["internal_id"]):
playerCharacterBody.position = p
head.rotation.y = rot.y
camera.rotation.x = rot.x