# Last War Bot — Pixel bot esterno

Bot di automazione per la versione PC di *Last War: Survival*.
Non modifica i file di gioco e non tocca la memoria del processo:
legge lo schermo (screenshot + OpenCV) e muove il mouse (PyAutoGUI).

> **Attenzione:** anche un bot "solo visivo" viola quasi certamente i
> Termini di Servizio del gioco. Usalo a tuo rischio (possibile ban).

## Installazione

```
pip install -r requirements.txt
```

## Struttura

| File                | Ruolo                                                    |
|---------------------|----------------------------------------------------------|
| `config.py`         | Tutti i parametri regolabili (soglie, ritardi, orari...) |
| `window_manager.py` | Aggancio della finestra di gioco per titolo              |
| `vision.py`         | Template matching OpenCV (zone parziali, varianti)       |
| `movement.py`       | Movimento mouse su curve di Bézier con decelerazione     |
| `clicker.py`        | Click umanizzato (offset, pressione variabile, pause)    |
| `azioni.py`         | Mattone "cerca e clicca" riusato da tutti i task         |
| `scheduler.py`      | Orari di sonno notturno e pausa pranzo realistici        |
| `sentinel.py`       | Rilevamento captcha: allarme sonoro + stop immediato     |
| `tasks/`            | Un modulo per attività (aiuto alleanza, radar, ...)      |
| `main.py`           | Orchestratore in thread + gestione arresto               |
| `templates/`        | I ritagli PNG dei pulsanti (vedi `TEMPLATES.md`)         |

## Come creare i template

1. Apri il gioco alla schermata che contiene il pulsante.
2. `Win + Shift + S` (Strumento di cattura) → ritaglia **solo** il
   pulsante, stretto, senza sfondo attorno.
3. Salva come PNG in `templates/` (es. `pulsante_a.png`).
4. **Non ridimensionare mai** l'immagine né la finestra del gioco dopo
   la cattura: il template matching non è invariante alla scala.

## Uso

```
python main.py
```

- **INVIO** nella console → arresto pulito.
- **CTRL+C** → arresto pulito.
- **Fail-Safe:** mouse nell'angolo in alto a sinistra (0,0) → stop immediato.

## Debug

- Il bot non trova la finestra? → `python window_manager.py` elenca i
  titoli di tutte le finestre: copia quello giusto in `config.TITOLO_FINESTRA`.
- Falsi positivi (clicca cose sbagliate)? → alza `SOGLIA_MATCH` in `config.py`.
- Non trova un pulsante visibile? → abbassa la soglia, o ricattura il
  template alla risoluzione attuale della finestra.
