Browse Source

improvments to connect and disconnect code

galo 1 year ago
parent
commit
2105859bbc
3 changed files with 22 additions and 5 deletions
  1. 14 2
      Client.gd
  2. 5 0
      Server.gd
  3. 3 3
      main.tscn

+ 14 - 2
Client.gd

@@ -2,8 +2,8 @@ extends Node
 
 var net = NetworkedMultiplayerENet.new()
 var api = MultiplayerAPI.new()
-var port = 8081
-var ip = '127.0.0.1'
+var port = 2020
+var ip = '104.156.250.247'
 # Called when the node enters the scene tree for the first time.
 func _ready():
 	print('connecting to port: ' + str(port))
@@ -33,6 +33,9 @@ var playerhud = preload('res://hud.tscn')
 export var dummy = false
 
 func _On_Connection_Succeeded():
+	rpc_id(1,'connected_peer')
+
+remote func _On_Peer_Connected():
 	$Input.enabled = true
 	print("Succesfully connected to game server")
 	if not has_node("players"): return
@@ -46,10 +49,18 @@ func _On_Connection_Succeeded():
 		rpc_id(1,'makedummmy')
 
 func gen_objs(arg,x, node):
+	if not node.has_node(str(x)):
 		var instance = arg.instance()
 		instance.name = str(x)
 		node.add_child(instance)
 
+remote func _On_Player_Disconnect(arg):
+	print(str(arg) + ' had left the server')
+	var arr = [$players, $Hud/HBoxContainer]
+	for x in arr:
+		if x.has_node(str(arg)):
+			x.get_node(str(arg)).queue_free()
+
 signal client_request
 var current_clients = []
 
@@ -117,6 +128,7 @@ remote func enemies_position_2(arg):
 
 remote func attack_anim(arg, id):
 	if not has_node("players"): return
+	if not $players.has_node(str(id)): return
 	$players.get_node(str(id)).get_node('weapon/AnimationPlayer').play(arg)
 
 remote func atr_update(arg):

+ 5 - 0
Server.gd

@@ -32,6 +32,10 @@ func conn(id):
 	instance.name = str(id)
 	$players.add_child(instance)
 
+remote func connected_peer():
+	print('syncing clients')
+	rpc_id(0,'_On_Peer_Connected')
+
 func makedummmy():
 	var node = api.get_rpc_sender_id()
 	$players.get_node(str(node)).add_to_group('dummy')
@@ -42,6 +46,7 @@ remote func send_clients():
 
 func disc(arg):
 	print('client disconnected, id: ' + str(arg))
+	rpc_id(0,'_On_Player_Disconnect',arg)
 
 remote func latency(arg):
 	rpc_id(api.get_rpc_sender_id(), 'returnping', arg)

+ 3 - 3
main.tscn

@@ -45,7 +45,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin1"]
 modulate = Color( 0, 0.811765, 1, 1 )
 frames = SubResource( 5 )
-frame = 1
+frame = 2
 playing = true
 offset = Vector2( 32, 32 )
 
@@ -57,7 +57,7 @@ render_target_v_flip = true
 
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin2"]
 frames = SubResource( 5 )
-frame = 1
+frame = 2
 speed_scale = 0.8
 playing = true
 offset = Vector2( 32, 32 )
@@ -84,7 +84,6 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin4"]
 modulate = Color( 1, 0, 0.984314, 1 )
 frames = SubResource( 5 )
-frame = 1
 speed_scale = 0.9
 playing = true
 offset = Vector2( 32, 32 )
@@ -151,5 +150,6 @@ script = ExtResource( 13 )
 
 [node name="envarg" type="Node" parent="."]
 script = ExtResource( 2 )
+
 [connection signal="button_down" from="Login/directconnect/VBoxContainer/Button" to="Login" method="_on_Button_button_down"]
 [connection signal="button_down" from="Login/directconnect/VBoxContainer/Button2" to="Login" method="_on_Button2_button_down"]