12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- extends Node
- var net = NetworkedMultiplayerENet.new()
- var api = MultiplayerAPI.new()
- var port = 8081
- var maxplayer = 4
- export(NodePath) var database
- func _ready():
- print('listening to port: ' + str(port))
- net.create_server(port, maxplayer)
-
- self.set_custom_multiplayer(api)
- custom_multiplayer.set_root_node(self)
- custom_multiplayer.set_network_peer(net)
-
- net.connect("peer_disconnected",self,"disc")
- net.connect("peer_connected",self,"conn")
- pass # Replace with function body.
- func _process(_delta):
- custom_multiplayer.poll()
- var playerphsyics = preload('res://playerphysics.tscn')
- func conn(arg):
- print('client connected, id: ' + str(arg))
- yield(get_tree(),"physics_frame")
- rpc_id(0,'ping')
- print('clients connected: ' + str(custom_multiplayer.get_network_connected_peers().size()))
- var instance = playerphsyics.instance()
- instance.name = str(arg)
- $players.add_child(instance)
- func makedummmy():
- var node = api.get_rpc_sender_id()
- $players.get_node(str(node)).add_to_group('dummy')
- remote func send_clients():
- rpc_id(api.get_rpc_sender_id(), 'client_data', custom_multiplayer.get_network_connected_peers())
- # extra
- func disc(arg):
- print('client disconnected, id: ' + str(arg))
- remote func latency(arg):
- rpc_id(api.get_rpc_sender_id(), 'returnping', arg)
- remote func input_handler(arg):
- var id = api.get_rpc_sender_id()
- if $players.has_node(str(id)):
- $players.get_node(str(id)).input = arg
- var tick = 0
- export var tickrate = 3
- func _physics_process(delta):
- var position_datachunk = {}
- for i in $players.get_children():
- position_datachunk[i.name] = i.global_position
- rpc_id(0, 'player_position', position_datachunk)
-
- var animation_datachunk = {}
- for i in $players.get_children():
- animation_datachunk[i.name] = i.animation
- rpc_id(0, 'player_animation', animation_datachunk)
-
- tick += 1
- if fmod(tick,tickrate) == 0:
- var enemies_datachunk = PoolByteArray()
- for i in $enemies.dict.arraypos.size():
- if $enemies.dict.arrayvida[i] > 0:
- var pos = $enemies.dict.arraypos[i]
- enemies_datachunk.append_array( return_int16(pos.x) )
- enemies_datachunk.append_array( return_int16(pos.y) )
- rpc_unreliable_id(0, 'enemies_position_2', enemies_datachunk)
- func return_int16(number):
- var int16 = number + 32768
- var bytetest : PoolByteArray
- var byte1:int = int(int16/255)
- var byte2:int = int(fmod(int16,255))
- bytetest.append(byte1)
- bytetest.append(byte2)
- return bytetest
- func player_anim(attack,arg):
- rpc_id( 0,'attack_anim', attack, int(arg) )
- func hp_update(vida, id):
- rpc_id( 0,'atr_update', {id:{'hp':vida}})
- func kill_update(kill, id):
- rpc_id( 0,'atr_update', {id:{'k':kill}})
|