parent
da047c4e7d
commit
d147eb102f
5 changed files with 5 additions and 114 deletions
|
|
@ -14,31 +14,14 @@ var in_lobby: bool = false
|
|||
var attack_team: Array[int] = []
|
||||
var defence_team: Array[int] = []
|
||||
var specators_team: Array[int] = []
|
||||
var validated_players = []
|
||||
|
||||
var win_score = 13
|
||||
var half_rounds = 12
|
||||
|
||||
var client_hash: String = ""
|
||||
|
||||
const CHUNK_SIZE = 1024
|
||||
|
||||
func _ready() -> void:
|
||||
multiplayer.peer_disconnected.connect(player_left)
|
||||
multiplayer.server_disconnected.connect(server_disconnected)
|
||||
multiplayer.peer_connected.connect(add_and_sync_peer)
|
||||
multiplayer.connected_to_server.connect(send_validation)
|
||||
|
||||
var ctx = HashingContext.new()
|
||||
ctx.start(HashingContext.HASH_SHA256)
|
||||
|
||||
var file = FileAccess.open(OS.get_executable_path(),FileAccess.READ)
|
||||
|
||||
while file.get_position() < file.get_length():
|
||||
var remaining = file.get_length() - file.get_position()
|
||||
ctx.update(file.get_buffer(min(remaining,CHUNK_SIZE)))
|
||||
|
||||
client_hash = ctx.finish().hex_encode()
|
||||
|
||||
func player_left(id: int) -> void:
|
||||
if attack_team.has(id):
|
||||
|
|
@ -59,35 +42,10 @@ func host() -> void:
|
|||
lobby_created.emit()
|
||||
specators_team.append(multiplayer.get_unique_id())
|
||||
in_lobby = true
|
||||
multiplayer.peer_connected.connect(check_player_hash)
|
||||
multiplayer.peer_disconnected.connect(on_player_left)
|
||||
|
||||
func check_player_hash(id: int):
|
||||
if multiplayer.is_server():
|
||||
get_tree().create_timer(1).timeout.connect(kick_untrustworthy.bind(id))
|
||||
|
||||
func on_player_left(id: int):
|
||||
if multiplayer.is_server():
|
||||
if validated_players.has(id):
|
||||
validated_players.erase(id)
|
||||
|
||||
func kick_untrustworthy(id: int):
|
||||
if multiplayer.is_server() and validated_players.has(id) == false:
|
||||
multiplayer.disconnect_peer(id)
|
||||
|
||||
@rpc("any_peer","call_remote","reliable")
|
||||
func validate_hash(sender_hash: StringName):
|
||||
if multiplayer.is_server() == false:
|
||||
return
|
||||
if client_hash == sender_hash:
|
||||
validated_players.append(multiplayer.get_remote_sender_id())
|
||||
|
||||
func send_validation():
|
||||
validate_hash.rpc_id(1,client_hash)
|
||||
|
||||
func join(ip: String) -> Error:
|
||||
var peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new()
|
||||
var res = peer.create_client(ip,PORT)
|
||||
var res = peer.create_client(ip,PORT)
|
||||
if res != 0:
|
||||
return res
|
||||
multiplayer.multiplayer_peer = peer
|
||||
|
|
@ -95,10 +53,7 @@ func join(ip: String) -> Error:
|
|||
in_lobby = true
|
||||
return Error.OK
|
||||
|
||||
|
||||
func leave() -> void:
|
||||
if multiplayer.is_server():
|
||||
multiplayer.peer_connected.disconnect(check_player_hash)
|
||||
multiplayer.multiplayer_peer = OfflineMultiplayerPeer.new()
|
||||
attack_team.clear()
|
||||
defence_team.clear()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue