Client.gd 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. extends Node
  2. var net = NetworkedMultiplayerENet.new()
  3. var api = MultiplayerAPI.new()
  4. var port = 2020
  5. var ip = '104.156.250.247'
  6. # Called when the node enters the scene tree for the first time.
  7. func _ready():
  8. print('connecting to port: ' + str(port))
  9. print('at ip: '+ip)
  10. net.create_client(ip,port)
  11. self.set_custom_multiplayer(api)
  12. custom_multiplayer.set_root_node(self)
  13. custom_multiplayer.set_network_peer(net)
  14. net.connect("connection_failed", self, "_On_Connection_Failed")
  15. net.connect("connection_succeeded", self, "_On_Connection_Succeeded")
  16. pass # Replace with function body.
  17. func _process(_delta):
  18. custom_multiplayer.poll()
  19. remote func ping():
  20. print('messaged received from server')
  21. remote func tokerequest():
  22. var tk = get_parent().get_node('Loginetcode').token_buffer
  23. print('tk is ' + tk)
  24. var username = get_parent().get_node('Loginetcode').username_server
  25. rpc_id(1,'tokenreply', tk, username)
  26. func _On_Connection_Failed():
  27. print("Failed to connect to game server")
  28. var playerphsyics = preload('res://playersprite.tscn')
  29. var playerhud = preload('res://hud.tscn')
  30. export var dummy = false
  31. func _On_Connection_Succeeded():
  32. rpc_id(1,'connected_peer')
  33. remote func _On_Peer_Connected():
  34. $Input.enabled = true
  35. print("Succesfully connected to game server")
  36. if not has_node("players"): return
  37. request_clients()
  38. yield(self, 'client_request')
  39. for x in current_clients:
  40. gen_objs(playerphsyics,x,$players)
  41. gen_objs(playerhud,x, $Hud/HBoxContainer)
  42. if dummy:
  43. rpc_id(1,'makedummmy')
  44. func gen_objs(arg,x, node):
  45. if not node.has_node(str(x)):
  46. var instance = arg.instance()
  47. instance.name = str(x)
  48. node.add_child(instance)
  49. remote func _On_Player_Disconnect(arg):
  50. print(str(arg) + ' had left the server')
  51. var arr = [$players, $Hud/HBoxContainer]
  52. for x in arr:
  53. if x.has_node(str(arg)):
  54. x.get_node(str(arg)).queue_free()
  55. signal client_request
  56. var current_clients = []
  57. func request_clients():
  58. rpc_id(1,'send_clients')
  59. remote func client_data(arg):
  60. current_clients = arg
  61. emit_signal('client_request')
  62. # extra stuff
  63. var ping = 0
  64. func latency_test():
  65. rpc_id(1,'latency',OS.get_system_time_msecs())
  66. remote func returnping(arg):
  67. ping = (OS.get_system_time_msecs() - arg)
  68. func send_input(arg):
  69. rpc_id(1,'input_handler',arg)
  70. remote func player_position(arg):
  71. if not has_node("players"): return
  72. for id in arg.keys():
  73. if $players.has_node(str(id)):
  74. var node = $players.get_node(str(id))
  75. if node.global_position.x != arg[id].x:
  76. node.scale.x = -1 if node.global_position.x > arg[id].x else 1
  77. node.get_node('Label').scale.x = -1 if node.global_position.x > arg[id].x else 1
  78. node.global_position = arg[id]
  79. remote func player_animation(arg):
  80. if not has_node("players"): return
  81. for id in arg.keys():
  82. if $players.has_node(str(id)):
  83. $players.get_node(str(id)).animation = arg[id]
  84. func reconstruct_int16(bytetest):
  85. return ((bytetest[0] * 255) + bytetest[1])-32768
  86. var argbuffer
  87. var posbuffer
  88. remote func enemies_position_2(arg):
  89. if not has_node('enemies'): return
  90. for i in $enemies.get_children():
  91. i.hide()
  92. argbuffer = posbuffer
  93. posbuffer = []
  94. var sprite = []
  95. for i in range(0,arg.size(),5):
  96. var aux = Vector2( reconstruct_int16([ arg[i] , arg[i+1]]), reconstruct_int16([ arg[i+2] , arg[i+3]]) )
  97. posbuffer.append(aux)
  98. sprite.append(arg[i+4])
  99. for i in posbuffer.size():
  100. $enemies.get_child(i).show()
  101. $enemies.get_child(i).global_position = posbuffer[i]
  102. for i in sprite.size():
  103. $enemies.get_child(i).texture = get_node('../Textures').dict[sprite[i]]
  104. remote func attack_anim(arg, id):
  105. if not has_node("players"): return
  106. if not $players.has_node(str(id)): return
  107. $players.get_node(str(id)).get_node('weapon/AnimationPlayer').play(arg)
  108. remote func atr_update(arg):
  109. if has_node('Hud/HBoxContainer/'+arg.keys()[0]):
  110. get_node('Hud/HBoxContainer/'+arg.keys()[0])._update(arg.values()[0])
  111. remote func level_up(arg, id):
  112. if not has_node("players"): return
  113. $players.get_node(str(id)).level_up_anim()
  114. #powerpick
  115. remote func powerpick(arg , id):
  116. if has_node('PowerMenu'):
  117. $PowerMenu/CenterContainer.show()
  118. print(arg)
  119. $PowerMenu.showmenu(arg, id)
  120. func players_choice_is(choice, idbuffer):
  121. # print(choice)
  122. rpc_id(1,'optionpick',idbuffer, choice)
  123. remote func _On_chat_Message(arg):
  124. $RichTextLabel.text += arg + "\n"
  125. func chat_messages(arg):
  126. print(arg)
  127. $LineEdit.text= ''
  128. rpc_id(1,'chat_messages', arg)
  129. var usernamelist = {}
  130. remote func _on_usernames(arg):
  131. for i in arg.keys():
  132. usernamelist[i] = arg[i]