code cleanup
This commit is contained in:
parent
df7ad936f8
commit
4dd130ee10
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue