# Artillery Fire Control with Forward Observer in Foxhole
## TLDR
- Tudd hogy hol van a célpont
- Tudd hogy hol vannak a tüzérek
- Tudd hogy hol vagy **TE**
A többit a rendszer számolja, és ki is értesíti a résztvevőket. (közel valós időben, akár [Discord](#Discord) -ra is!!!)
A program célja hogy **egy csoportba szervezve** a résztvevőket és akár lövegenként is kiszámolja a lőelemeket. **Egységes, jól olvasható formában** eljuttassa az információt a lövegkezelőknek.

[ugyan ez atkuálisan](https://foxhole-map.dob.systems)


[https://t.me/faoHelper_bot](https://t.me/faoHelper_bot)
# A Tg bot használata
Elsősorban a felderítőnek segíti a munkáját, de a tényleges előnyök a csoportos foglalkozásnál jönnek elő.
> A továbbiakban emlegetett /-es parancsok nem kell minden esetben begépelni. A feladatnak megfelelő billentyűzet jelenik meg a felhasználónál ami tartalmazza a legszükségesebb parancsokat. Gépelni csak a koordinátákat kell.
## Creator
/start
/create
Ekkor létrejön a szoba, a létrehozó lesz a tulajdonosa és kap egy felderítő szerepkört. A szoba kódjával csatlakozhatnak a többiek a szobához.
... Játékmenet: feladatok kiosztása, pozíciók bemérése, vRef-ek létrehozása, tűzvezetés
/leave
Kilépett mindenkit, megszünteti a vRef-eket és törli a szobát.
## Teammate
/start
/join
Ilyenkor tüzérént csatlakozik a szobához a felhasználó, amit a vezérüteg vagy a felderítő megváltoztathat.
# Alapok
## koordináták - MapCode
a térképen - mod függő - leolvashatók az adott pozíciónak a koordinátái. Ha az egérrel és az CTRL-al kattintunk a térképen ezt ki is írja az aktuális chat-re.
*(csak az aktuális hex-re vonatkozik)*

Kicsit kisebb nagyításban jobban látszik a térképrács, és azon belül a 3x3-as felosztás. Természetesen ők egy kicsit másabb formátummal dolgoznak, de más is a céljuk vele.
**Colonial Home Region-K9k3** = (**térkép neve**)-(**x**)(**y**)k(**sg1**)
| funkció | érték |
| ----------- | -------------------- |
| térkép neve | Colonial Home Region |
| x | K |
| y | 9 |
| sg1 | 3 |
Ezzel így körülbelül 42m x 42m területet lehet behatárolni a térképen.
Én ezt annyiban változtattam meg:
- Elhagytam a térkép nevet
- Az elválasztó "k" betű helyett "." használok.
- Az alrácsot ugyanúgy tovább osztom még 9 rácsra.
>A ezzel így körülbelül egy 14 méteres rácsot lehet elérni. (a programban előfordulnak hosszabb koordináták is, ezek számított történteket. Ezeknek pontossága eléri a 10 cm)

### formátum:
(**x**)(**y**).(**sg1**)(**sg2**)==(**sgX**)...==
| funkció | érték | rácsméret |
| ------- | ----- | -----: |
| x | k | |
| y | 9 | 125m |
| sg1 | 4 | ~42m |
| sg2 | 7 | ~14m |
| ------- | ----- | ----- |
| ==sg3== | | ~5m |
| ==sg4== | | ~2m |
> A koordinátákat és a dobozokat a térkép is megjeleníti, az egyetlen egy problémám hogy a térkép és a rács ~5-10 méterrel eltérhet egymástól. *(Még nem jöttem rá hogyan lehetne ezt kiszűrni)*
> Kiindulásnak hasznos tud lenni

## Polár koordináták, avagy a vektorok
Az előző térkép koordinátákkal történő játék csak egy durva saccolás ahhoz képest amit egy jól végig láncolt vektor hálózat pontossága biztosíthat. Ez így elsőre nagyon durván hangzik, de pár egyszerű praktikával és csapatmunkával a ==méteren belüli pontosság== elérhető.

# Feladatok
## Spotter
Ha jól szervezi meg a munkáját és a csapattársakat, akkor neki csak a célokat kell bemérnie
### alap parancsok
#### /t
Meghatárza a csoportnak az aktuális célt. Ez történhet **mapCode** -ból, **polár**-ból vagy [tp](#vRef)-ből. Kijelöléskor a beállított offsettel és a szél paraméterrel minden tüzér résztvevő *(**[role](#role):** arty, main battery, vRef és fp)* megkapja a saját -egyedi- lőelemeit.
#### /mypos
> **mapCode** - abszolúlt helymeghatározás
> **polár** - ha el akarsz mozdulni valahova. előre beméred a leendő poziciódat és utána onnan dolgozol
> **referencia+polár** - a referencia lehet a célpont, vagy csapattárs, vagy vRef. Ha céltól akarod bemérni a saját pozíciódat akkor használd a **T** indexet, egyébb esetben a listából válassz. A rendszer kiszámolja az új poziciódat a referenciához képest
#### /moveto
csapattárs mozgatása.
> **index+MapCode** - abszolúlt helymeghatározás
> **index+polár** - hozzád képest számolja ki a csapattárs pozícióját.
#### /offset
Ez csak a célkoordinátához adódik hozzá.
**polár** - a meghatározott pont (pl becsapódás) és a cél közötti vektorból kiszámolja az eltolást. Újabb offset felvételekor az eltolás hozzáadódik az előző offset-hez. *(láncolódik)* Ha már teljesen elvesztél akkor ki is lehet nullázni.

### munkamenetek
#### csak a térkép
Ha minden résztvevőt csak a pontosabb (xy.ss) koordinátákkal pozicionál, akkor is **==maximum ±28m hiba==** adódhat ki! Az első pár sorozatból offsetel, és mehet az első szélváltozásig ami a csövön kifér.
#### vektor láncok
felvesz egy tetszőleges refernciát (ez lehet önmaga, egy vezértüteg, vagy maga a cél. az a lényeg hogy nagyjából hasonlítson a térképre). Ez után a referenciához képest felláncolja a többi szereplőt. Ebben az esetben minimális a pozició hiba, elméletben csak a szelet kell kompenzálni.

#### mozgások
Ha már felépült a pontos hálózat akkor a **/mypos** -al (**polár**, **referencia+polár**) lényegében pontosság vesztés nélkül tudsz mozogni.
Ha nagyobb távolságot akarsz végigláncolni távcsővel akkor használhatod a vRef -et idéglenes jelzőnek
## Main Battery aka Vezérüteg
Csökkenti a spotter terhelését azzal hogy nem mindenkit kell pozicionálnia, hanem csak a vezérüteget. ==Miután a vezérüteg kap pontos poziciót==:
1. meghatározza a környékén lévő ütegek pozicióját az **/moveto index+polár**.
2. az ütegekk mérik be a saját poziciójukat a vezérhez képest **/mypos referencia+polár** (sokkal több távcső, rövidebb idő)
Így nem kell egymás hegyén-hátán lennie az ütegeknek, ezzel elkerülhető hogy egy esetleges ellencsapás a teljes csoportosulást kiüsse 1-2 sorozatból. Mindenki kap egyéni lőelemet, káosz nélkül!
### mozgás
Ha ő mozog akkor visszamérheti magát a csoportosuláshoz és vice versa. A lényeg hogy legalább **egy referencia maradjon helyben amíg a többi mozog** (de ez vonatkozik mindenkire a hálózatban).
## Wind (szerepkör)
>[!Caution] Jelenleg használhatatlan. Az adatbevitel működik, a számolás nem
Ha van kitelepül windSock, akkor nézheti és beállíthatja a szélparamétereket.
Szélerősség jelzése: 🧦
Épületeken megjelenő zászlóról is lehet saccolni.
Szélerősség jelzése: 🚩
## vRef
A Jolly Joker! Jelzőkaró. Bármilyen terepi jellegzetesség, épület, fa, esetleg olyan valami ami este is látszódik vagy ha takarásban van (pl: szikla) akkor is. Ezeket a referenciákat lehet használni mozgás közben.
> ==**tp**== **célpont tárló**, és - ellentétben az **fp**vel - **nem számít ütegnek**! Tehát a lőelem számításnál kimarad. Közvetlenül betölthető mint célpont.
> ==**fp**== **fireing position** tervezett tüzelési pont jelölése a térépen vagy olyan üteg aki nincs fent a telegrammon. Kidolgozáskor a felderítő kap lőelemeket a **fp**-khez amit be tud diktálni (Discord). Vagy Discrd webhook. Ehhez is be lehet állítani löveget.
> ==**lp**== **loading position** tervezett újratöltési pont. Nincs lőelem
---
# Parancsok
## /help
minden használható poarancsról ír valamit
## /name
ha a Telegram neved nem egyezik a Foxhole-os neveddel érdemes átírni
> ez a Telegram név csak a Telegramban kijelzett neved, nem a profilodhoz tartozó link
## /role
Megváltoztatja a csapattárs feladatát. arty, spotter, main battery, wind
## /calc
Kiszámolja És kijelzi az irányát és távolságát a célponttól a mutatott pontba. Ugyanúgy működik mint az /offset csak ez nem változtat a lőelemeken, **csak információt ad a felderítőnek**.
## /arty
2 lépcsőben *(lőszer-eszköz)* hozzárendeli a megfelelő tüzérséget a szobához vagy a kiválasztott szereplőhöz
## /map
Kiválasztható az aktuális térkép. A felvitt adatok megnézhetőek egy térképen. Térkép törlése a szobából.
ref: [icons](https://cyanavigation.com/how-to-read-and-use-military-map-symbols-a-beginners-guide/)

## /discordwebhook
A discord szerveren létre kell hozni egy webhook-ot, [bővebben](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks). Ennek a teljes útvonalát meg kell adni. Ez a felhasználónál rögzül, így új szoba létrehozásakor csak engedélyezni kell ha szükség van rá.

## /discord
Ha meg van adva a **webhook** és te vagy a **szoba létrehozója** akkor engedélyezheted vagy letilthatod az adatok küldését.
Csak olyan lőelemeket küld át amihez nincs telegram id. *(**vRef** vagy **fp**)*
Lőelem változás esetén *(új cél koordináta, offset, szél változás, bármi amit **ti adminisztráltok**)* automatikusan küldi, térképet csak parancsra.

:::warning
a webhook létrehozásánál lehetőleg legyen a neve **FAO Bot** és az [innen letölthető](https://cdn.dob.systems/faoLogoDiscord.png) kép az ikon.
:::
---
# követelmények:
## Telegram
tudod használni asztali környezetben vagy mobilon/tableten
## Discord*
Sejtem hogy a föld nyugatabbik féltekén kevésbé népszerű a Telegram, ezért biztosítok lehetőséget arra hogy az adatok és a térkép átküldhető legyen [Discord](#discordwebhook) -ra is.
**Csak a szoba létrehozója tudja beállítani.**

# Mentett adatok avagy a GDPR
**Telegram id** és **név** *(amit bármikor megváltoztathatsz)*, csak ezeket tárolom mint személyes adat. Ezenkívül még személyes adatnak számíthat a **Discord webhook**, amit bármikor megváltoztathatsz vagy törölhetsz.
A **Telegram id** és a **webhook** **soha nem kerül kiírásra, sehol**!
*(A **név** csak az aktuális szobában)*
**Ezeket a adatokat én sem használom fel máshoz, és másnak sem adom ki!**
Hibázhatok, de legjobb tudásommal arra törekszem hogy semmilyen személyes adat ne szivárogjon ki vagy kerüljön 3. fél kezébe!
## Időszakonként teljesen törlöm az adatbázist!
Az alkalmazáson belül biztosítok lehetőséget a rögzített adataid **megtekintésére**, **módosítására** és **törlésére**
# Segítettek
Köszönöm **Vizi**-nek a "próbalövészetet" és **LMT**-nek a "másik" tüzér app linkjét
--------
--------
# Ismert hibák
>[!Caution] Szél kalkuláció! Jelenleg használhatatlan
>[!Warning] Térképes megjelenítés: a térkép nagyítása, etolása nem pontos