# For this example to work, you must: # 1. Disable Auto Accept Quit in Project Settings. # 2. Make this script an autoload. # # Feel free to copy paste this in your Godot Project extends Node var crash_handler_exists: bool= false var is_close_request_queued: bool= false func _ready() -> void: var gch_filename: String= "/crashhandler" if OS.has_feature("windows"): gch_filename += ".exe" var gch_path: String= (func(): var _temp: PackedStringArray= OS.get_executable_path().split("/") _temp.resize(_temp.size() -1) return str("/".join(_temp), "/", gch_filename) ).call() if FileAccess.file_exists(gch_path): OS.create_process(gch_path, [str("--monitor-pid=", OS.get_process_id())]) crash_handler_exists = true else: push_warning("Crash Handler doesn't exist") get_window().close_requested.connect(_on_window_close_requested) func _on_window_close_requested(): if crash_handler_exists: var client = StreamPeerTCP.new() var result: Error= client.connect_to_host("localhost", 6961) if result != Error.OK: while result != Error.OK: result= client.connect_to_host("localhost", 6961) client.put_u8(0) # Anything will do, honestly client.disconnect_from_host() is_close_request_queued = true else: is_close_request_queued = true