Server.gd 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. extends Node
  2. var net = NetworkedMultiplayerENet.new()
  3. var api = MultiplayerAPI.new()
  4. var port = 8081
  5. var maxplayer = 4
  6. export(NodePath) var database
  7. func _ready():
  8. print('listening to port: ' + str(port))
  9. net.create_server(port, maxplayer)
  10. self.set_custom_multiplayer(api)
  11. custom_multiplayer.set_root_node(self)
  12. custom_multiplayer.set_network_peer(net)
  13. net.connect("peer_disconnected",self,"disc")
  14. net.connect("peer_connected",self,"conn")
  15. pass # Replace with function body.
  16. func _process(_delta):
  17. custom_multiplayer.poll()
  18. var playerphsyics = preload('res://playerphysics.tscn')
  19. func conn(arg):
  20. print('client connected, id: ' + str(arg))
  21. yield(get_tree(),"physics_frame")
  22. rpc_id(0,'ping')
  23. print('clients connected: ' + str(custom_multiplayer.get_network_connected_peers().size()))
  24. var instance = playerphsyics.instance()
  25. instance.name = str(arg)
  26. $players.add_child(instance)
  27. remote func send_clients():
  28. rpc_id(api.get_rpc_sender_id(), 'client_data', custom_multiplayer.get_network_connected_peers())
  29. # extra
  30. func disc(arg):
  31. print('client disconnected, id: ' + str(arg))
  32. remote func latency(arg):
  33. rpc_id(api.get_rpc_sender_id(), 'returnping', arg)
  34. remote func input_handler(arg):
  35. var id = api.get_rpc_sender_id()
  36. if $players.has_node(str(id)):
  37. $players.get_node(str(id)).input = arg
  38. # rpc_id(id, 'returnping', arg)
  39. func _physics_process(delta):
  40. var position_datachunk = {}
  41. for i in $players.get_children():
  42. position_datachunk[i.name] = i.global_position
  43. rpc_id(0, 'player_position', position_datachunk)
  44. var animation_datachunk = {}
  45. for i in $players.get_children():
  46. animation_datachunk[i.name] = i.animation
  47. rpc_id(0, 'player_animation', animation_datachunk)
  48. var enemies_datachunk = {}
  49. for i in $enemies.get_children():
  50. enemies_datachunk[i.name] = [i.global_position, i.type]
  51. rpc_id(0, 'enemies_position', enemies_datachunk)
  52. func player_anim(attack,arg):
  53. rpc_id( 0,'attack_anim', attack, int(arg) )
  54. func hp_update(vida, id):
  55. rpc_id( 0,'atr_update', {id:{'hp':vida}})
  56. func kill_update(kill, id):
  57. rpc_id( 0,'atr_update', {id:{'k':kill}})