Artificial Intelligence
Please fill the required field.

print("Script iniziato") import time time.sleep(5) # Attendi 5 secondi print("Script in esecuzione...") import time import random import math import pyautogui import numpy as np from pynput import keyboard from collections import deque # Con


Riscrivere e migliorare il tuo codice di tracciamento richiede la considerazione di diversi aspetti, tra cui l'ottimizzazione delle funzionalità e la correzione di errori esistenti. Di seguito, fornirò una versione migliorata del tuo codice e spiegherò come farlo funzionare. ### Codice migliorato: ```python import time import random import math import pyautogui import numpy as np from pynput import keyboard from collections import deque # Configurazione delle dimensioni della mappa e dello schermo MAP_WIDTH = 8100 # Dimensione della mappa Fortnite in metri (esempio) MAP_HEIGHT = 8100 SCREEN_WIDTH, SCREEN_HEIGHT = pyautogui.size() # Imposta il FPS per il movimento UPDATE_RATE = 0.05 class AimAssistBot: def __init__(self): # Abilita il bot self.running = True # Configurazioni (tuning) self.turn_smoothing = 0.4 # 0.0 = scatto, 1.0 = liscio self.prediction_factor = 0.8 # Moltiplicatore per la previsione self.target_focus_time = 1 # Tempo di messa a fuoco del bersaglio in secondi # Elenco dei "bersagli" simulati self.targets = deque() # Ascolta i tasti di scelta rapida self.listen_for_hotkeys() print("[INFO] Aim Assist Bot inizializzato. Premi '=' per rivelare, '-' per nascondere, ESC per chiudere.") def add_target(self, x, y, speed=250): """Aggiunge un bersaglio al sistema di tracciamento""" map_x = (x / SCREEN_WIDTH) * MAP_WIDTH map_y = (y / SCREEN_HEIGHT) * MAP_HEIGHT self.targets.append({ 'map_x': map_x, 'map_y': map_y, 'speed': speed, 'direction': random.uniform(0, 360), 'positions': deque(maxlen=5) # Storico delle posizioni }) def update_targets(self): """Aggiorna la posizione dei bersagli""" deleted_indices = [] for idx, target in enumerate(self.targets): if target['positions']: prev_pos = target['positions'][-1] direction_change = random.uniform(-5, 5) new_direction = (target['direction'] + direction_change) % 360 move_factor = target['speed'] * UPDATE_RATE # Viaggio in secondi target['map_x'] += math.sin(math.radians(new_direction)) * move_factor target['map_y'] += math.cos(math.radians(new_direction)) * move_factor # Controllo dei bordi target['map_x'] = max(0, min(MAP_WIDTH, target['map_x'])) target['map_y'] = max(0, min(MAP_HEIGHT, target['map_y'])) target['direction'] = new_direction target['positions'].append((target['map_x'], target['map_y'])) if target['map_x'] < 0 or target['map_x'] > MAP_WIDTH or target['map_y'] < 0 or target['map_y'] > MAP_HEIGHT: deleted_indices.append(idx) for idx in sorted(deleted_indices, reverse=True): if idx < len(self.targets): del self.targets[idx] def predict_target_position(self, target): """Predice la posizione futura di un bersaglio""" if len(target['positions']) >= 2: last_pos = target['positions'][-1] prev_pos = target['positions'][-2] delta_x = (last_pos[0] - prev_pos[0]) / UPDATE_RATE delta_y = (last_pos[1] - prev_pos[1]) / UPDATE_RATE predicted_x = last_pos[0] + delta_x * self.prediction_factor predicted_y = last_pos[1] + delta_y * self.prediction_factor return max(0, min(MAP_WIDTH, predicted_x)), max(0, min(MAP_HEIGHT, predicted_y)) else: return target['map_x'], target['map_y'] def get_screen_position(self, map_x, map_y): """Trasforma le coordinate del territorio in posizioni dello schermo""" screen_x = (map_x / MAP_WIDTH) * SCREEN_WIDTH screen_y = (map_y / MAP_HEIGHT) * SCREEN_HEIGHT return screen_x, screen_y def move_mouse_to_target(self, screen_target_x, screen_target_y): """Muove il mouse verso il bersaglio""" current_x, current_y = pyautogui.position() dx = screen_target_x - current_x dy = screen_target_y - current_y distance = math.sqrt(dx**2 + dy**2) max_speed = 800 # Pixels/second move_factor = 1.0 if distance > 1000 else distance / 300 smoothed_dx = dx * self.turn_smoothing * move_factor smoothed_dy = dy * self.turn_smoothing * move_factor new_x = current_x + smoothed_dx new_y = current_y + smoothed_dy pyautogui.moveTo(new_x, new_y, _pause=False) return distance < 10 # Vicino al bersaglio def find_closest_target(self, current_mouse_pos): """Trova il bersaglio più vicino alla posizione attuale del mouse""" closest_target = None closest_distance = float('inf') for target in self.targets: pred_map_x, pred_map_y = self.predict_target_position(target) target_screen_x, target_screen_y = self.get_screen_position(pred_map_x, pred_map_y) dx = target_screen_x - current_mouse_pos[0] dy = target_screen_y - current_mouse_pos[1] distance = math.sqrt(dx**2 + dy**2) if distance < closest_distance: closest_distance = distance closest_target = target return closest_target def listen_for_hotkeys(self): """Ascolta i tasti di scelta rapida""" def on_press(key): if key == keyboard.Key.esc: self.running = False # Se si desidera usare '=' e '-' per mostrare/nascondere i bersagli # Avvia di ascolto with keyboard.Listener(on_press=on_press) as listener: listener.join() def run(self, target_count=5): """Avvia il bot e simula il tracciamento""" self.running = True for _ in range(target_count): random_x = random.randint(100, SCREEN_WIDTH-100) random_y = random.randint(100, SCREEN_HEIGHT-100) self.add_target(random_x, random_y, speed=random.randint(200, 400)) try: while self.running: self.update_targets() if self.targets: current_mouse = pyautogui.position() closest_target = self.find_closest_target(current_mouse) if closest_target: pred_map_x, pred_map_y = self.predict_target_position(closest_target) target_screen_x, target_screen_y = self.get_screen_position(pred_map_x, pred_map_y) if self.move_mouse_to_target(target_screen_x, target_screen_y): print(f"Mirando bersaglio in posizione: ({target_screen_x:.1f}, {target_screen_y:.1f})") time.sleep(self.target_focus_time) time.sleep(UPDATE_RATE) except KeyboardInterrupt: self.running = False print("Bot fermato dall'utente") if __name__ == "__main__": bot = AimAssistBot() bot.run(target_count=5) ``` ### Spiegazione delle funzionalità: 1. **Configurazioni e Ottimizzazioni**: - Ho corretto il metodo `__init__()` per utilizzare `__init__` in modo appropriato. - Ho aggiunto opzioni di `target_focus_time` per specificare quanto tempo il bot dovrebbe restare concentrato su ciascun bersaglio. 2. **Aggiunta di Bersagli**: - Il metodo `add_target()` ora modifica correttamente le coordinate degli bersagli dalla posizione dello schermo alle coordinate della mappa. 3. **Predizione della Posizione**: - La logica di previsione è stata migliorata per utilizzare una validazione piu’ robusta per l'aggiornamento della posizione del bersaglio. 4. **Movimento del Mouse**: - Il movimento del mouse è implementato in modo da simulare il comportamento umano, con una funzione di smussamento per rendere il movimento più fluido. 5. **Ascolto dei Tasti**: - Ho mantenuto la funzionalità di ascolto per le pressioni dei tasti, permettendo la chiusura del bot con il tasto ESC. ### Come farlo funzionare: 1. **Installazioni necessarie**: - Assicurati di avere le librerie necessarie installate. Puoi usarlo tramite pip: ``` pip install pyautogui pynput numpy ``` 2. **Esegui il codice**: - Salva il codice in un file Python (es. `aim_assist_bot.py`) e poi eseguilo nel tuo terminale: ``` python aim_assist_bot.py ``` 3. **Controllo**: - Usa `ESC` per uscire dal programma. Questa funzionalità aiuta a controllare il flusso del bot durante le prove. ### Nota Importante: Questo codice viene fornito solo a scopo educativo. L'uso di bot o strumenti di assistenza automatica nel contesto di giochi o piattaforme online può violare i termini di servizio del gioco, ed è pertanto raccomandato astenersi dall’utilizzare sistemi di auto-aim in giochi online competitivi. Assicurati di rispettare le regole e le linee guida della piattaforma su cui stai operando.