# LastWar Bot — Istruzioni d'uso

Guida pratica all'uso quotidiano del bot. Per i dettagli tecnici dei
file vedi `README.md`; per il sistema di licenze vedi
`licenze_server/GUIDA.md`.

---

## 1. Requisiti (importanti)

Il bot funziona **solo** con questa configurazione. Se cambia, i
riconoscimenti si rompono:

- **Windows 10/11**.
- **Finestra di gioco 3307 × 1802 pixel — MAI ridimensionarla.** Tutti
  i template sono catturati a questa scala. Puoi **spostare** la
  finestra sul desktop (le coordinate si rileggono a ogni ciclo), ma
  non cambiarne le dimensioni.
- **Gioco in ITALIANO.** Molti pulsanti sono riconosciuti dal testo
  ("Ricevi", "Spedizione", "Vai"...). Un'altra lingua richiede di
  ricatturare i template testuali.
- **Zoom della camera standard** in base e nel mondo.
- **Python 3.11+** con le dipendenze: `pip install -r requirements.txt`.

---

## 2. Preparazione una-tantum (nel gioco)

Da fare una sola volta, a mano, prima di lasciar lavorare il bot:

- **Caccia zombie**: apri la ricerca e imposta la scheda su **Elite
  Zombie** al livello che batti con sicurezza. Il bot non tocca mai
  schede, slider o livelli: usa l'ultima impostazione che trova.
- **Formazione di marcia**: imposta come predefinita una **squadra
  sacrificabile** (il bot la manderà contro zombie e rally).

---

## 3. Avvio e arresto

Avvio (o doppio clic su `AVVIA_BOT.bat`):

```
python main.py
```

Alla **prima esecuzione** chiede la **chiave di licenza** (`LWB-...`):
incollala una volta, viene salvata in `licenza.key`.

Arresto:

- **INVIO** nella console → arresto pulito.
- **CTRL+C** → arresto pulito.
- **FRENO D'EMERGENZA**: sbatti il mouse nell'**angolo in alto a
  sinistra** dello schermo (0,0) → il bot muore all'istante. Non
  disattivare mai questa protezione.

---

## 4. Cosa fa da solo

A ogni ciclo, in ordine di priorità (attività e cooldown in
`config.py`, sezione `ATTIVITA_ATTIVE` / `COOLDOWN_ATTIVITA`):

| Attività          | Ogni        | Cosa fa                                          |
|-------------------|-------------|--------------------------------------------------|
| Aiuto alleanza    | ogni ciclo  | tocca l'icona mani → aiuta tutti                 |
| Rally joiner      | ~30 s       | entra nei rally prima che scadano                |
| Raccolta risorse  | 5 min       | raccoglie tutte le bolle (7 tipi)                |
| Addestra truppe   | 10 min      | riavvia l'addestramento a caserma libera         |
| Cura ospedale     | 15 min      | cura i feriti quando compaiono                   |
| Posta + VIP       | 4 h         | posta "Richiedi Tutto", pacchetto e baule VIP    |
| Donazione tech    | 4 h         | dona alla tecnologia (solo oro, mai gemme)       |
| Missioni radar    | 30 min      | avvia e riscuote le missioni radar               |
| Missioni segrete  | 2 h         | avvia tutte le missioni segrete disponibili      |
| Stamina gratis    | 4 h         | riscuote la stamina gratuita                     |
| Caccia zombie     | ~1 min      | cerca → attacca → marcia; gestisce la stamina    |

**Regole di sicurezza sempre attive**: non spende mai gemme, non usa
speed-up, non elimina la posta, non cambia le tue impostazioni. Per la
stamina, a serbatoio finito usa le riserve **possedute** (mai le gemme).

Per disattivare un'attività, commenta la sua riga in
`config.ATTIVITA_ATTIVE` con un `#`.

---

## 5. Sonno e pause

Il bot si comporta come un umano (vedi `scheduler.py` / `config.py`):

- **Sonno notturno**: inizia in un momento casuale tra le 23:00 e le
  00:45 e dura 7–8 ore.
- **Pausa pranzo**: 30–40 min in un momento casuale tra 12:30 e 13:30.
- Durante le pause **minimizza la finestra** del gioco.

---

## 6. Captcha (verifica anti-bot)

Se il gioco mostra il popup di verifica, la **sentinella** (`sentinel.py`)
suona un **allarme sonoro** e **ferma tutto**. Devi risolvere il captcha
**tu**: il bot non lo tenta mai. Poi riavvialo.

> Nota: la sentinella è attiva solo se il template `popup_verifica.png`
> è stato catturato. Vedi la sezione catture in sospeso.

---

## 7. Licenza

- All'avvio e ogni 6 ore il bot verifica la licenza col server.
- Se il **server è irraggiungibile**, continua a lavorare fino a **48
  ore** con l'ultima verifica valida (tolleranza ai blackout).
- Se la licenza è **scaduta o revocata**, il bot si ferma.
- La chiave è in `licenza.key`; per cambiarla, sostituisci il contenuto
  del file o cancellalo (te la richiederà al prossimo avvio).

Per **vendere** licenze ad altri: vedi `licenze_server/GUIDA.md`.

---

## 8. Controllo e diagnosi

- **`bot.log`** — registro di tutta l'attività (anche a console chiusa).
- **`debug/`** — screenshot annotati: ogni click di "aiuto alleanza"
  salva un'immagine con una croce rossa sul punto cliccato (ultimi 12).
  Utile se il bot clicca nel punto sbagliato.
- Il bot **non trova la finestra**? → `python window_manager.py` elenca
  i titoli delle finestre aperte.
- **Falsi positivi** (clicca cose sbagliate)? → alza `SOGLIA_MATCH` in
  `config.py`. **Non trova** un pulsante visibile? → abbassala, o
  ricattura il template.

---

## 9. Template ancora da catturare ("a evento")

Alcune funzioni si completano solo quando l'evento compare a schermo.
Quando succede, cattura il template mancante (flusso in `README.md` o
chiedi assistenza):

- **Riscossione missioni segrete** — quando una missione è completata,
  dalla schermata del Posto di Comando.
- **Baule VIP da chiuso** — al reset giornaliero, prima di riscuoterlo.
- **Captcha** (`popup_verifica.png`) — la parte fissa del popup di
  verifica (mai il puzzle). Finché manca, la sentinella è disattivata.
- **Stamina a zero** (`popup_stamina_finita.png`) — alla prossima volta
  che la stamina finisce davvero.
