extends Node3D # The player name. var player_name: String #var connected:bool = false #var errorEnet:Error #var id = 0 #var maxplayer = 0 #var listen_ip:String #var listen_port:int # Server confirm our account #var account_confirmed:bool = false const PLAYER = preload("res://scenes/player.tscn") func _ready(): _on_connexion_updated(Multi.Connexion.NONE) Multi.set_player_position(self.get_node("CharacterBody3D")) Multi.connexion_updated.connect(_on_connexion_updated) Multi.update_my_position.connect(_on_update_me) Multi.update_player_position.connect(_on_update_player) Multi.remove_player.connect(_on_remove_player) $Window.show_preference_server.connect(_on_preference_server) $PreferenceServer.send_server_config.connect(_on_edit_preference_server) $PreferenceServer._on_button_pressed() func _on_connexion_updated(new_state): if new_state == Multi.Connexion.NONE: self.get_node("CharacterBody3D").set_enable_event(false) $StateAlea/VBoxContainer/State.set_text("Alea: Not Connected") $StateAlea.show() if new_state == Multi.Connexion.ACCOUNT_REFUSED: self.get_node("CharacterBody3D").set_enable_event(false) $StateAlea/VBoxContainer/State.set_text("Alea: Account Refused") $StateAlea.show() $Window.show() elif new_state == Multi.Connexion.CONNECTING: self.get_node("CharacterBody3D").set_enable_event(false) $StateAlea/VBoxContainer/State.set_text("Alea: Connecting") $StateAlea.show() else: $StateAlea.hide() func _on_update_me(pos:Vector3): self.set_player_position(pos) self.get_node("CharacterBody3D").set_enable_event(true) func _on_update_player(id:int, pos:Vector3): var child = $Players.find_child(str(id), false, false) if child == null: print("Add player : ", id) var scene = preload("res://scenes/player.tscn") var instance = scene.instantiate() instance.set_name(str(id)) $Players.add_child(instance) #maxplayer += 1 var child2 = $Players.find_child(str(id), false, false) child2.set_global_position(pos) else: child.set_global_position(pos) func _on_remove_player(id:int): #print("Remove player : ", mid) var child = $Players.find_child(str(id), false, false) if child != null: print("Remove player : ", id) $Players.get_node(str(id)).queue_free() # #func decode_msg(data:PackedByteArray): # print("==========================") # var cmd = data.decode_u8(0) # print("cmd:", cmd) # var taille = data.decode_u8(1) # print("taille:", taille) # var str:String = "" # var tmp = data.slice(2,taille+2) # print("tmp:", tmp) # # str = tmp.get_string_from_utf8() # # print("str:", str) # print("len str:", len(str)) # # print("==========================") func set_player_position(pos: Vector3): self.get_node("CharacterBody3D").set_global_position(pos) func _on_preference_server(): $PreferenceServer.show_window() func _on_edit_preference_server(alea_ip, alea_port, xmpp_ip, xmpp_port): print(alea_ip, ', ', alea_port, ', ', xmpp_ip, ', ', xmpp_port) Multi.set_ip(alea_ip) Multi.set_port(alea_port) Stream.set_server_ip(xmpp_ip) Stream.set_port_number(xmpp_port)