==============================================================================
  TOSTProMod 1.6.7 - TO ProMod dla Tactical Ops 3.4 (TOST45)
  Autor: RDV   Kontakt: rdv404@proton.me
==============================================================================

Jeden pakiet TOST (tzw. "piece") z czterema modulami:

  MR12       - tryb meczowy MR12 / MR15 jak na platformach matchmakingowych:
               !ready, knife round, zmiana stron, dogrywka MR3, pauzy,
               timeouty, poddanie
  NadeTrain  - trening granatow: kamera za granatem, nieskonczone granaty,
               info o rzucie, brak obrazen od granatow
  SpecHUD    - nakladka dla obserwatorow w stylu Promod: paski HP druzyn,
               wynik, bronie ogladanego gracza + panele admina TOST na specu
  TeamColors - wlasne kolory kazdego gracza: druzyny, HUD, czat

Zastepuje osobne pluginy: TOSTMR12 2.8.0, TOSTNadeTrain 1.3.1,
TOSTSpecHUD15 15.0.0 i TOSTTeamColors7 7.0.0. Wszystkie moduly laduje
JEDEN wpis w Pieces, kazdy mozna osobno wylaczyc.

Pakiet ma czesc kliencka (SpecHUD, TeamColors): gracze automatycznie
sciagaja TOSTProMod.u (ok. 630 KB, .uz ok. 170 KB) przy wejsciu na serwer.

------------------------------------------------------------------------------
 SZYBKA INSTALACJA (serwer z TOST45 i ACE)
------------------------------------------------------------------------------

  1. Wylacz serwer.
  2. System\TOSTProMod.u  ->  folder System serwera (obok ucc.exe).
  3. W ini serwera dopisz:
       [Engine.GameEngine]              ServerPackages=TOSTProMod
       [TOSTTools45.TOSTMapHandling]    DefaultServerPackages=...;TOSTProMod
                                        (dopisz na koncu istniejacej listy)
       [TOST45.TOSTServerMutator]       Pieces[x]=TOSTProMod.TOSTProMod
                                        (pierwszy pusty slot)
  4. Redirect\TOSTProMod.u.uz  ->  serwer redirect HTTP (tylko jesli go
     uzywasz; bez redirectu gracze pobiora plik prosto z serwera).
  5. Uruchom serwer i sprawdz log: "Loaded TOST piece : TOST ProMod".
  6. Tryb meczowy wlacza zalogowany admin na czacie: !mr12 on (albo !mr15 on).
  7. Serwer meczowy bez botow: [s_swat.TO_DeathMatchPlus] MinPlayers=0.

  Szczegoly: punkt 3 (instalacja) i dalsze rozdzialy tego pliku.



------------------------------------------------------------------------------
 SPIS TRESCI
------------------------------------------------------------------------------

  1. Zawartosc paczki
  2. Wymagania
  3. Instalacja
  4. Przejscie ze starych pluginow
  5. Wlaczanie / wylaczanie modulow
  6. Modul MR12       - jak dziala, komendy, ustawienia
  7. Modul NadeTrain  - jak dziala, komendy, ustawienia
  8. Modul SpecHUD    - jak dziala, komendy, ustawienia
  9. Modul TeamColors - jak dziala, komendy, ustawienia
 10. Wszystkie komendy - sciagawka
 11. Odinstalowanie
 12. Zmiany w kodzie


==============================================================================
 1. ZAWARTOSC PACZKI
==============================================================================

  System\TOSTProMod.u                  - gotowy pakiet
  Redirect\TOSTProMod.u.uz             - wersja skompresowana na serwer
                                         redirect (tylko jesli go uzywasz)
  INSTRUKCJA.txt                       - ten plik (po polsku)
  README.txt                           - to samo po angielsku


==============================================================================
 2. WYMAGANIA
==============================================================================

  - Serwer Tactical Ops 3.4 z TOST45 (gra: TOSTBase45.TOSTServerGame)
  - Budowane i testowane na: TOST 4.5.2.6 (build 2434), Unreal Engine 469e,
    ACE v1.4c
  - W ServerPackages musza byc (standardowo sa): TOSTClient45, TOSTGUICtrl45,
    TOSTWeaponsClient45, TOST4TexSolid, TOST4TexTrans, TOST45TexSolid,
    TOST45TexTrans
  - Opcjonalnie TOSTHitparade45 (SpecHUD i TeamColors z nim wspolpracuja)


==============================================================================
 3. INSTALACJA
==============================================================================

1. Wylacz serwer. Nie zmieniaj ini przy wlaczonym serwerze - serwer przy
   zapisie ustawien moze nadpisac Twoje zmiany.

2. Skopiuj System\TOSTProMod.u do folderu System serwera
   (tam, gdzie lezy ucc.exe).

3. W pliku konfiguracyjnym serwera (np. Server-TO340.ini) dopisz pakiet
   w TRZECH miejscach:

   a) sekcja [Engine.GameEngine] - dopisz linie (np. pod innymi
      ServerPackages):

         ServerPackages=TOSTProMod

   b) sekcja [TOSTTools45.TOSTMapHandling] - w linii DefaultServerPackages=
      dopisz ";TOSTProMod" do listy, np.:

         DefaultServerPackages=TOST45;...;NexgenACEExt14;TOSTProMod;...

      To wazne: TOST sam odtwarza liste ServerPackages z tej linii.
      Bez tego pakiet moze zniknac z ServerPackages.

   c) sekcja [TOST45.TOSTServerMutator] - wpisz pakiet w pierwszy wolny
      slot Pieces[x] (pusty wpis, np. "Pieces[5]="):

         Pieces[5]=TOSTProMod.TOSTProMod

      Tylko ten jeden wpis - pozostale moduly laduja sie same.

4. (Tylko jesli serwer uzywa redirectu HTTP) wrzuc
   Redirect\TOSTProMod.u.uz na serwer redirect.

5. Uruchom serwer. W logu powinny pojawic sie linie:

       Log: Server Package: TOSTProMod
       TOST: Loaded TOST piece : TOST ProMod (Version 1.6.7)
       TOST: TOST ProMod: [ProMod] TO ProMod by RDV loaded, MR12 True, NadeTrain True, SpecHUD True, TeamColors True
       TOST: TOST NadeTrain: [NadeTrain] loaded, training OFF
       TOST: TOST TeamColors: [TeamColors] loaded, per-player colors, enabled True
       TOST: TOST SpecHUD: [SpecHUD] loaded, enabled True, update rate 10.000000, spectator commander 1
       TOST: TOST MR12: [MR12] loaded, mode OFF, MR12 overtime ON MR3 knife ON

   Kazdy modul musi pojawic sie DOKLADNIE RAZ. Jesli ktorys jest dwa razy,
   w Pieces zostal stary plugin (patrz punkt 4).

   ACE sam doda pakiet do swojej listy (pakiet zawiera HUD mutator):
       [ACEv14]: Found a new package containing a HUDMutator: TOSTProMod.u
       [ACEv14]: AutoConfig Added Package: TOSTProMod
   Linia "PackageHelper: Found a dangerous call to native function 465"
   (rysowanie tekstu) jest normalna - maja ja tez TOST, Nexgen i samo ACE.

   Przy pierwszym uruchomieniu pakiet dopisze do ini swoje sekcje
   z ustawieniami domyslnymi (patrz punkty 5-9).


==============================================================================
 4. PRZEJSCIE ZE STARYCH PLUGINOW
==============================================================================

Jesli na serwerze sa stare osobne pluginy, przy wylaczonym serwerze:

  a) [TOST45.TOSTServerMutator] - wyczysc stare wpisy (zostaw puste
     "Pieces[x]="):
        Pieces[x]=TOSTMR12.TOSTMR12
        Pieces[x]=TOSTNadeTrain.TOSTNadeTrainer
        Pieces[x]=TOSTSpecHUD15.TOSTSpecHUD
        Pieces[x]=TOSTTeamColors7.TOSTTeamColors

  b) [Engine.GameEngine] - usun:
        ServerPackages=TOSTSpecHUD15
        ServerPackages=TOSTTeamColors7

  c) [TOSTTools45.TOSTMapHandling] - usun z DefaultServerPackages
     ";TOSTSpecHUD15" i ";TOSTTeamColors7".

  d) Zeby zachowac ustawienia, zmien tylko naglowki sekcji:
        [TOSTMR12.TOSTMR12]              -> [TOSTProMod.TOSTMR12]
        [TOSTNadeTrain.TOSTNadeTrainer]  -> [TOSTProMod.TOSTNadeTrainer]
        [TOSTSpecHUD15.TOSTSpecHUD]      -> [TOSTProMod.TOSTSpecHUD]
        [TOSTTeamColors7.TOSTTeamColors] -> [TOSTProMod.TOSTTeamColors]

  e) Stare pliki .u moga zostac w System (nie przeszkadzaja), ale nie moga
     byc w Pieces ani w ServerPackages.

Ustawienia GRACZY (w ich User.ini) tez maja nowe sekcje:
     [TOSTTeamColors7.TeamColorsClient] -> [TOSTProMod.TeamColorsClient]
     [TOSTSpecHUD15.SpecHUDClient]      -> [TOSTProMod.SpecHUDClient]
Gracze ustawiaja kolory / HUD widza od nowa (!mycolor menu, !spechud menu)
albo kopiuja zawartosc starej sekcji pod nowy naglowek.


==============================================================================
 5. WLACZANIE / WYLACZANIE MODULOW
==============================================================================

  [TOSTProMod.TOSTProMod]
  bMR12=True          tryb meczowy MR12 / MR15
  bNadeTrain=True     trening granatow
  bSpecHUD=True       nakladka dla obserwatorow
  bTeamColors=True    wlasne kolory graczy
  bWelcome=True       5 s po wejsciu na serwer kazdy gracz widzi na czacie
                      "TO ProMod <wersja> by RDV" (False = bez komunikatu)

False = modul w ogole sie nie laduje. Zmiana dziala po restarcie serwera.
Dodatkowo MR12, SpecHUD i TeamColors maja we wlasnych sekcjach bEnabled.


==============================================================================
 6. MODUL MR12 - MECZ MR12 / MR15 JAK NA PLATFORMACH MATCHMAKINGOWYCH
==============================================================================

JAK DZIALA

Tryb meczowy jest domyslnie WYLACZONY - serwer gra normalnie. Admin
wlacza go komenda !mr12 on (albo !mr15 on). Tryb zostaje wlaczony po
zmianie mapy i wylacza sie sam, gdy serwer jest pusty przez 3 minuty
(EmptyOffTime).

Przebieg meczu:

  1. ROZGRZEWKA - gracze w druzynach wpisuja !ready. Gdy wszyscy sa gotowi
     (i druzyny sa rowne, min. 2v2 - bRequireEvenTeams / MinTeamSize),
     po 5 s startuje knife round. Co 30 s przypomnienie, kto nie jest
     gotowy. Admin moze wystartowac od razu: !mr12 start.

  2. KNIFE ROUND - same noze, pelny pancerz (KnifeArmor), bez bomby /
     zakladnikow / ucieczki - wygrywa druzyna, ktora wybije przeciwnikow.

  3. WYBOR STRONY - GLOSOWANIE zwyciezcow knife rounda: kazdy gracz
     (czlowiek) tej druzyny wpisuje !stay (zostajemy) albo !switch (zmiana
     stron); glos mozna zmienic. Gdy jedna opcja ma wiekszosc graczy druzyny
     (np. 3 z 5, 2 z 2, 1 z 1), decyzja zapada od razu. Po 30 s liczy sie
     wiecej glosow; remis albo brak glosow = "stay". Stan glosowania widac
     na czacie. (Do 1.4.2 decydowal pierwszy, kto wpisal komende.)

  4. LIVE ON THREE - 3 restarty co 2 s (naprawia bledy z pieniedzmi),
     potem mecz jest LIVE.

  5. MECZ - 2 polowy po 12 rund (MR15: po 15). Wygrywa pierwsza druzyna
     z 13 wygranymi (MR15: 16). Po polowie:
       - druzyny zamieniaja sie stronami (Terro <-> SF),
       - wynik idzie za druzynami, fragi zostaja,
       - pieniadze wracaja do StartMoney (runda pistoletowa),
       - 3 restarty (HalftimeRestarts).
     Rundy bez zwyciezcy (remis) sie nie licza. Limit czasu mapy jest
     wylaczony na czas meczu. Friendly fire w meczu: 100% (MatchFriendlyFire).

  6. DOGRYWKA - przy 12:12 (MR15: 15:15) dogrywka MR3: 2 polowy po 3 rundy,
     kazda polowa zaczyna sie z 10000$, zmiana stron w polowie dogrywki.
     Dogrywki powtarzaja sie, az ktos wygra. Pierwsza dogrywka zaczyna sie
     na stronach z ostatniej polowy (jak na platformach matchmakingowych).

  7. KONIEC - po rozstrzygnieciu meczu mapa sie konczy (bEndMapOnFinish).

BLOKADA DRUZYN (od 1.6.0)
  - Rozgrzewka: gracz po !ready nie moze zmienic druzyny (wybor w menu nic
    nie robi). !unready zdejmuje blokade. Wyjscie na obserwatora = unready.
  - Od startu meczu (runda nozowa) do jego konca kazdy gracz zostaje w
    swojej druzynie. Zmiany stron (noz, polowa, dogrywka) przenosza sklad
    razem z graczami.
  - Dziala to na fladze TO "zmienial juz druzyne w tej rundzie": gra
    odmawia zmiany ZANIM kogokolwiek zabije - nikt nie ginie, balans nie
    rusza botow, kasa sie nie zmienia. Gdyby ktos zdazyl zmienic druzyne
    (np. w pierwszym ulamku sekundy rundy), plugin go cofa z ta sama kasa.
  - Boty NIE sa blokowane - to wypelniacze; TO sam je dodaje, usuwa i
    przerzuca (MinPlayers, balans), zeby druzyny byly rowne.
  - Wyjscie i powrot w trakcie meczu: gracz jest rozpoznawany po sprzecie
    (ACE hardware ID), potem po nicku, na koncu po IP - i trafia do swojej
    druzyny. ACE sprawdza gracza kilka sekund po wejsciu: nieznany gracz
    przez 15 s nie jest dopisywany jako rezerwowy, bo moze to byc ktos ze
    skladu z innym nickiem i IP. Wracajac jako obserwator musi sam
    dolaczyc do gry.
  - Rezerwowy, ktory dolaczy do druzyny w trakcie meczu, zostaje dopisany
    do skladu i od tej chwili tez jest zablokowany.
  - Admin przenosi gracza tylko komenda: !mr12 ids (lista ID graczy),
    potem !mr12 move <ID> (albo nick). Przeniesiony gracz nie ginie,
    zachowuje kase i zostaje w nowej druzynie (blokada idzie za nim).
    Przycisk "change team" w panelu admina TOST moze zostac cofniety.

DEMO I SCREENSHOT (automatycznie, od 1.3.0 / 1.4.0)
  - Od startu rundy nozowej (bez noza: od restartow przed meczem) kazdy
    gracz w druzynie i kazdy obserwator nagrywa u siebie demo klienta
    ("demorec"). Nazwa: MR12_<mapa>_RRRR-MM-DD_GG-MM (MR15_... przy MR15),
    czas serwera. Plik .dem zapisuje sie w folderze System gry gracza.
  - Kto wejdzie / wroci (reconnect) w trakcie meczu, dostaje nowe demo:
    ta sama nazwa + _GG-MM-SS (nic sie nie nadpisuje).
  - 4 s po rozstrzygnieciu meczu kazdy nagrywajacy robi screenshot
    ("shot", plik Shot....bmp/png w System) - wynik koncowy.
  - 10 s po rozstrzygnieciu demo sie zatrzymuje (jest na nim wynik
    koncowy). !mr12 stop / wylaczenie trybu zatrzymuje demo od razu.
  - Zatrzymywane jest tylko demo wlaczone przez modul - wlasnego dema
    gracza modul nie rusza.
  - Na czacie gracz widzi: [MR12] Recording demo: ..., Screenshot ...,
    Demo stopped: ...
  - Zmiana mapy przez admina w trakcie meczu nie jest obslugiwana osobno
    (demo konczy sama gra przy zmianie mapy - nie sprawdzone).

"Team A" = druzyna, ktora zaczyna mecz jako Terrorists; "Team B" = SF.

Pauzy i timeouty (w trakcie meczu):
  - !pause - pauza techniczna. Zaczyna sie w najblizszym freeze time.
    Konczy sie, gdy OBIE druzyny wpisza !unpause (albo admin), najpozniej
    po 5 minutach (PauseMaxTime).
  - !tac - timeout taktyczny 30 s, 4 na druzyne na mecz. Zaczyna sie
    w najblizszym freeze time. Druzyna, ktora go wziela, moze go skrocic
    przez !unpause.
  - !gg - glosowanie za poddaniem; potrzeba 60% ludzi w druzynie
    (SurrenderPercent). Mecz konczy sie po biezacej rundzie.

KOMENDY - GRACZE  (wpisywane na czacie, niewidoczne dla innych)

  !ready  (!r)               - gotowy do meczu
  !unready  (!notready)      - jednak niegotowy
  !stay                      - zwyciezcy knife rounda: glos za zostaniem
  !switch  (!swap)           - zwyciezcy knife rounda: glos za zmiana stron
  !pause  (!tech)            - pauza techniczna
  !unpause                   - koniec pauzy / timeoutu
  !tac  (!timeout)           - timeout taktyczny
  !gg  (!ff, !surrender)     - glos za poddaniem
  !score  (lub samo !mr12)   - wynik, strony, pozostale timeouty / stan meczu
  !mr12 help                 - lista komend

KOMENDY - ADMIN  (najpierw w konsoli: adminlogin <haslo>)

  !mr12 on                   - wlacza tryb meczowy MR12
  !mr15 on                   - wlacza tryb meczowy MR15 (albo zmienia
                               MR12 -> MR15, gdy tryb juz jest wlaczony)
  !mr12 off                  - wylacza tryb meczowy (normalna gra)
  !mr12 start / !mr15 start  - start meczu od razu, bez czekania na !ready
  !mr12 stop                 - przerywa mecz
  !mr12 ids                  - lista graczy z ID (do !mr12 move)
  !mr12 move <ID albo nick>  - przenosi gracza do drugiej druzyny
                               (bez smierci, z kasa; blokada idzie za nim)
  !unpause                   - konczy kazda pauze od razu

USTAWIENIA  [TOSTProMod.TOSTMR12]

  bEnabled=True              modul aktywny
  bModeOn=False              tryb meczowy wlaczony (ustawiane przez !mr12 on/off)
  EmptyOffTime=180           po ilu s pustego serwera tryb wylacza sie sam
  RoundsPerHalf=12           rund na polowe (12 = MR12, 15 = MR15)
  bOvertime=True             dogrywka (False = 12:12 konczy sie remisem)
  OTRoundsPerHalf=3          rund na polowe dogrywki (MR3)
  bSwapAtOTStart=False       zmiana stron na start dogrywki
  StartMoney=1000            pieniadze na start meczu i po polowie
  OTStartMoney=10000         pieniadze na start kazdej polowy dogrywki
  bEndMapOnFinish=True       koniec mapy po rozstrzygnieciu meczu
  bReadySystem=True          system !ready (False = start tylko przez admina)
  MinReadyPlayers=1          min. liczba gotowych graczy
  bRequireEvenTeams=True     start tylko przy rownych druzynach (boty sie
                             licza, obserwatorzy nie)
  MinTeamSize=2              przy bRequireEvenTeams: minimum NvN
  ReadyCountdown=5           s od "wszyscy gotowi" do startu
  ReadyReminder=30           co ile s przypomnienie o !ready (0 = wylaczone)
  bKnifeRound=True           knife round przed meczem
  SideChoiceTime=30          s na glosowanie !stay / !switch
  bKnifeNoObjectives=True    knife round tylko na wybicie (bez bomby itp.)
  KnifeArmor=100             pancerz w knife roundzie (0 = brak)
  bAllowPause=True           !pause / !unpause
  PauseMaxTime=300           pauza techniczna konczy sie sama po tylu s
                             (0 = nigdy)
  TimeoutsPerTeam=4          ile !tac na druzyne (0 = wylaczone)
  TimeoutLength=30           dlugosc timeoutu w s
  bAllowSurrender=True       !gg
  SurrenderPercent=60        % ludzi w druzynie potrzebny do !gg
  MatchFriendlyFire=1.0      friendly fire w meczu (1.0 = 100%, <0 = nie ruszaj)
  LiveRestarts=3             restarty przed startem meczu
  HalftimeRestarts=3         restarty po zmianie stron (wynik i fragi zostaja)
  RestartInterval=2          s miedzy restartami
  bDebug=False               dodatkowe logi
  DebugStartDelay=0          tylko do testow z botami: start bez !ready po
                             tylu s (0 = wylaczone)
  bAutoDemo=True             demo u graczy od rundy nozowej do konca meczu
  bAutoDemoSpectators=True   demo takze u obserwatorow
  DemoStopDelay=10           s po rozstrzygnieciu meczu do stopu dema
  bAutoScreenshot=True       screenshot na koniec meczu (u nagrywajacych)
  ScreenshotDelay=4          s po rozstrzygnieciu meczu do screenshota
                             (mniej niz DemoStopDelay = screenshot tez na demie)

UWAGI
  - W TO "koniec gry" (EndGame) to koniec rundy; modul sam pilnuje, zeby
    mapa nie skonczyla sie w trakcie meczu.
  - Komendy nie pojawiaja sie na czacie, ale sa zapisywane w logu serwera.
  - Trybu meczowego nie da sie wlaczyc (!mr12 on, !mr15 on, !mr12 start),
    gdy wlaczony jest trening granatow NadeTrain - najpierw !nadetrain off.
    I odwrotnie: przy wlaczonym trybie meczowym !nadetrain nie wlaczy treningu.


==============================================================================
 7. MODUL NADETRAIN - TRENING GRANATOW
==============================================================================

JAK DZIALA

Admin wlacza tryb treningu komenda na czacie. W trybie treningu:
  - kamera leci za rzuconym granatem i wraca do gracza po wybuchu,
  - postac stoi w miejscu, dopoki kamera leci za granatem
    (skok albo !skip od razu konczy kamere i odblokowuje ruch),
  - granaty sa nieskonczone (po rzucie wraca ten sam typ granatu),
  - po wybuchu gracz dostaje info: czas lotu, odleglosc, roznica wysokosci,
    np.  [NadeTrain] HE Grenade: 2.34s, 18.6m horizontal, -1.2m height
  - granaty nie zadaja obrazen i nie odpychaja.
Poza trybem treningu serwer dziala zupelnie normalnie. Modul dziala tylko
po stronie serwera.

KOMENDY  (na czacie, niewidoczne dla innych)

  !nadetrain           - wlacza / wylacza tryb treningu       (tylko admin)
  !nadetrain on | off  - wlacza / wylacza tryb treningu       (tylko admin)
  !skip  (!nadeskip)   - od razu konczy kamere i odblokowuje ruch
                         (to samo robi SKOK - spacja)
  !nadecam             - kamera za granatem on/off (tylko dla siebie)
  !nadeinfo            - info o rzucie on/off (tylko dla siebie)
  !nadehelp            - krotka pomoc

Przyklad:
  1. w konsoli: adminlogin <haslo>
  2. na czacie: !nadetrain
  3. rzucasz granat - kamera leci za nim, postac stoi
  4. chcesz szybko rzucic kolejny -> spacja albo !skip
  5. koniec treningu: !nadetrain off

USTAWIENIA  [TOSTProMod.TOSTNadeTrainer]

  bTrainingAtStart=False    trening wlaczony od razu po zaladowaniu mapy
  bInfiniteNades=True       oddawanie granatu po rzucie
  bNadeCam=True             kamera za granatem (+ blokada ruchu)
  bNadeInfo=True            info o rzucie
  GiveBackDelay=1.0         po ilu s od rzutu oddac granat
  CamMaxTime=8.0            maksymalny czas kamery (zabezpieczenie), s
  SmokeStillTime=1.0        smoke/gaz: po ilu s lezenia bez ruchu wraca kamera
  UUPerMeter=50.0           przelicznik jednostek Unreala na metry (przyblizony)
  bSkipOnJump=True          skok konczy kamere
  bSkipOnUse=False          klawisz "uzyj" (NIE DZIALA w TO - zostaw False)
  bNoNadeDamage=True        brak obrazen i odrzutu od granatow w treningu
  NoDamageTypes[0]=GrenadeDeath   typy obrazen traktowane jak granat
  NoDamageTypes[1]=Explosion      (Explosion obejmuje tez C4)
  NoDamageTypes[2]=Corroded       (gaz lzawiacy)
  bDebugSkipKeys=False      diagnostyka: loguje wykrywanie skoku
  bDebugDamage=False        diagnostyka: loguje kazde obrazenie w treningu

UWAGI
  - Blokada ruchu dziala tylko przy wlaczonej kamerze. Kto wylaczy sobie
    kamere (!nadecam), rzuca i chodzi normalnie.
  - Na czas treningu modul wlacza widok zza plecow (bAllowBehindView),
    potem przywraca poprzednie ustawienie.
  - Trening wylacza sie sam po zmianie mapy (chyba ze bTrainingAtStart=True).
  - Smoke/gaz: kamera wraca, gdy granat wyladuje (dymi ok. 34 s).
  - Boty jako cel: w konsoli jako admin "addbots 4" - w treningu granaty
    ich nie rania.
  - Trening NIE wlaczy sie, gdy wlaczony jest tryb meczowy MR12 / MR15
    (!nadetrain odpowie komunikatem - najpierw !mr12 off). Dotyczy tez
    bTrainingAtStart=True. I odwrotnie: przy wlaczonym treningu nie da sie
    wlaczyc !mr12 on / !mr15 on ani !mr12 start.


==============================================================================
 8. MODUL SPECHUD - NAKLADKA DLA OBSERWATOROW
==============================================================================

JAK DZIALA  (tylko dla obserwatorow)

  - paski HP druzyn: Terrorists po lewej, Special Forces po prawej
      * naglowek druzyny w jej kolorze: nazwa, ilu zyje (np. 3/5), wynik
      * pasek gracza wypelniony wg HP, nick i liczba HP
      * martwy gracz: pusty (ciemny) pasek z bialym nickiem
      * kolejnosc jak w tablicy TO; ogladany gracz ma biala ramke
      * obok paska ikona aktualnej broni, ikona C4, ikona zakladnikow (x2)
      * zamiast ikony broni napis akcji: Reloading, Planting C4, konsole
        mapy, rozbrajanie C4 (z linia postepu)
  - wynik na gorze: [ TERRORISTS ][ 2 ][ 1 ][ SPECIAL FORCES ]
  - na dole: bronie ogladanego gracza (aktualna w ramce), amunicja,
    pieniadze, Dmg, Score, Deaths
  - po lewej na dole: sylwetka z pancerzem ogladanego gracza
  - opcjonalnie chowa pusty pasek broni TOST u obserwatora

Kolory druzyn sa brane z HUD-a TO, wiec kolory ustawione w module
TeamColors dzialaja tez tutaj.

Nakladka znika, gdy otwarta jest tablica wynikow, zakladka TO, HitParade
albo po "hidehud".

BEZPIECZENSTWO: dane o HP, broniach i pancerzu dostaja TYLKO prawdziwi
obserwatorzy. Gracze - takze martwi - ich nie dostaja, wiec nakladki nie
da sie uzyc do "ghostowania".

Nowy obserwator ma nakladke WYLACZONA; przy wejsciu na speca dostaje
na czacie podpowiedz, jak ja wlaczyc.

MENU:  Esc -> Mod -> Spectator HUD   (albo !spechud menu)
  Opcje: calosc on/off, paski druzyn, wynik, bronie na dole, pancerz,
  ukrycie paska broni TOST, rozmiar (0.5 - 3.0). Zmiany widac od razu,
  zapis przy zamknieciu okna.

  WAZNE: pozycja "Spectator HUD" NIE jest dostepna od razu po wejsciu na
  serwer jako gracz. Pojawia sie w menu Mod dopiero, gdy przejdziesz na
  obserwatora (modul kliencki dostaja tylko obserwatorzy). Potem zostaje
  w menu do zamkniecia gry. Jesli jej nie widac na specu, zamknij
  i otworz menu ponownie albo uzyj !spechud menu.

KOMENDY - OBSERWATOR  (na czacie, niewidoczne dla innych)

  !spechud                   - nakladka on / off
  !spechud on | off          - wlacza (ze wszystkimi elementami) / wylacza
  !spechud menu              - okno z opcjami
  !spechud bars              - paski druzyn on / off
  !spechud score             - wynik na gorze on / off
  !spechud center            - bronie na dole on / off (to samo: !specweapons)
  !spechud armor             - sylwetka z pancerzem on / off
  !spechud tostweapons       - pasek broni TOST pokazany / ukryty
                               (gdy ukryty, TOST co ~30 s podpowiadal na czacie
                               "showweaponinfo" - od 1.4.2 ta podpowiedz jest
                               wylaczona, dopoki pasek ukrywa SpecHUD)
  !spechud size <0.5-3>      - rozmiar, np. !spechud size 2
  !spechud y <0.05-0.9>      - wysokosc paskow druzyn (czesc ekranu)
  !spechud centery <0.1-0.95> - wysokosc rzedu broni na dole
  !spechud scorey <0-0.5>    - wysokosc wyniku na gorze
  !spechud reset             - ustawienia domyslne (wszystko wylaczone)
  !spechud help              - pokazuje obecne ustawienia

  TO (TOSTSpectator) nie przepuszcza dwoch identycznych wiadomosci pod rzad.
  Od 1.2.0 komendy !spechud / !spec... sa z tego wylaczone (mozna je wpisac
  kilka razy z rzedu); zwykly czat obserwatora dalej podlega tej blokadzie.
  Pod klawiszem (konsola ~):  set input F8 say !spechud

KOMENDY - ADMIN NA OBSERWATORZE  (najpierw adminlogin / salogin <haslo>)

  Zwykle zakladki TOST na obserwatorze nie dzialaja - modul to naprawia:
  !specadmin        - panel admina TOST (mapy, gracze, kick, ban, mute, warn,
                      change team, make teams, adminreset, endround ...)
  !specweaponstab   - zakladka broni TOST (to samo: !specweapontab)
  !specgame         - zakladka ustawien gry TOST
  (to samo: !spechud admin / weaponstab / game)

  Komenda zawsze OTWIERA zakladke (zamykasz przyciskiem Close albo ESC)
  i dziala tez po ESC, Close, konsoli ~ i przejsciu do innej zakladki.
  Przycisk "Game tab" w panelu admina i "Admin tab" w zakladce gry
  przelaczaja miedzy nimi takze na obserwatorze.
  Pierwsze wejscie po starcie gry (przez okno hasla): TOST tworzy zakladki,
  zanim okno UWindow ma rozmiar ekranu - zostawaly 0x0 i widac bylo sam
  tytul bez przyciskow. Modul poprawia ich rozmiar przy otwieraniu
  (w logu gry: "[SpecHUD] tab ... had size 0x0, set to ...").

USTAWIENIA SERWERA  [TOSTProMod.TOSTSpecHUD]

  bEnabled=True        modul aktywny
  UpdateRate=10        ile razy na sekunde wysylac dane obserwatorom (2-30)
  SpecCommander=1      komendy TOST dla obserwatorow: 0 = nie,
                       1 = zalogowani admini, 2 = wszyscy (potrzebne do salogin)

USTAWIENIA OBSERWATORA  (jego User.ini, sekcja [TOSTProMod.SpecHUDClient])

  bShow, bShowBars, bShowScore, bShowCenter, bShowArmor,
  bHideTOSTWeaponHUD, HUDScale=2.0, LayoutY=0.28, CenterY=0.85, ScoreY=0.035


==============================================================================
 9. MODUL TEAMCOLORS - WLASNE KOLORY GRACZA
==============================================================================

JAK DZIALA

Kazdy gracz ustawia kolory SOBIE (inni ich nie widza):
  - Terrorists / Special Forces (czat, konsola, tablica wynikow, liczby
    nad tablica, licznik druzyn),
  - "zielony" HUD (zakladnicy, wysokie HP, kamizelka, pieniadze),
  - "czerwony" i "zolty" HUD (niskie / srednie HP, ostrzezenia),
  - nick admina i widzow na czacie, tekst wiadomosci na czacie.
Serwer niczego nie wymusza: dopoki gracz nic nie ustawi, widzi oryginalne
kolory TO. Ustawienia zapisuja sie u gracza w User.ini.

OKNO:  !mycolor menu   albo   Esc -> Mod -> Team/HUD colors
  - Element        - co zmieniasz
  - Use TO default - oryginalny kolor TO dla elementu
  - Red/Green/Blue - suwaki 0-255 i pola do wpisania wartosci
  - podglad koloru, Reset all, Close (zapis przy zamknieciu)
  Pod klawiszem (konsola ~):  set input F9 say !mycolor menu

KOMENDY  (na czacie, niewidoczne dla innych)

  !mycolor                        - pokazuje obecne ustawienia
  !mycolor menu                   - otwiera okno
  !mycolor <element> <R> <G> <B>  - np. !mycolor terro 255 105 180
  !mycolor <element> <nazwa>      - np. !mycolor sf cyan
  !mycolor <element> reset        - kolor TO dla elementu
  !mycolor reset                  - wszystkie kolory TO

  Nazwy kolorow: red, darkred, pink, orange, yellow, gold, green, lime,
                 cyan, blue, lightblue, purple, white, grey

  Elementy (aliasy):
    terro      (t, terr)           Terrorists
    sf         (ct, swat)          Special Forces
    hostages   (hud, green, host)  "zielony" TO
    hudred     (red)               "czerwony" TO
    hudyellow  (yellow)            "zolty" TO
    admin                          nick admina na czacie
    spectator  (spec)              nicki widzow na czacie
    chattext   (text, chat)        tekst wiadomosci na czacie

USTAWIENIA SERWERA  [TOSTProMod.TOSTTeamColors]

  bEnabled=True        modul aktywny

USTAWIENIA GRACZA  (jego User.ini, sekcja [TOSTProMod.TeamColorsClient])

  Terro=255,105,180    format R,G,B (0-255), puste = kolor TO
  SF=  Hostages=  HudRed=  HudYellow=  Admin=  Spectator=  ChatText=

UWAGI
  - TO uzywa jednego koloru w kilku miejscach HUD: zakladnicy = wysokie HP
    = kamizelka = pieniadze; liczby Terro nad tablica = niskie HP (przy
    otwartej tablicy / HitParade "czerwony" przyjmuje kolor Terro).
  - Kolory sa nakladane co sekunde - tuz po wejsciu przez chwile moga byc
    oryginalne.


==============================================================================
 10. WSZYSTKIE KOMENDY - SCIAGAWKA
==============================================================================

 Komenda                    Kto          Modul       Co robi
 -------------------------  -----------  ----------  ---------------------------
 !mr12 on / !mr15 on        admin        MR12        wlacza tryb meczowy (*)
 !mr12 off                  admin        MR12        wylacza tryb meczowy
 !mr12 start / !mr15 start  admin        MR12        start meczu od razu (*)
 !mr12 stop                 admin        MR12        przerywa mecz
 !mr12 ids                  admin        MR12        lista ID graczy
 !mr12 move <ID|nick>       admin        MR12        gracz do drugiej druzyny
 !mr12 help                 kazdy        MR12        lista komend
 !ready (!r)                gracz        MR12        gotowy
 !unready (!notready)       gracz        MR12        niegotowy
 !stay                      gracz        MR12        glos: zostajemy (po knife)
 !switch (!swap)            gracz        MR12        glos: zmiana stron (po knife)
 !pause (!tech)             gracz/admin  MR12        pauza techniczna
 !unpause                   gracz/admin  MR12        koniec pauzy / timeoutu
 !tac (!timeout)            gracz        MR12        timeout taktyczny
 !gg (!ff, !surrender)      gracz        MR12        glos za poddaniem
 !score                     kazdy        MR12        wynik / stan meczu
 !nadetrain [on|off]        admin        NadeTrain   tryb treningu (*)
 !skip (!nadeskip)          gracz        NadeTrain   koniec kamery za granatem
 !nadecam                   gracz        NadeTrain   kamera za granatem on/off
 !nadeinfo                  gracz        NadeTrain   info o rzucie on/off
 !nadehelp                  gracz        NadeTrain   pomoc
 !spechud [on|off]          obserwator   SpecHUD     nakladka on/off
 !spechud menu              obserwator   SpecHUD     okno opcji
 !spechud help              obserwator   SpecHUD     obecne ustawienia
 !specweapons               obserwator   SpecHUD     bronie na dole on/off
 !specadmin                 admin-spec   SpecHUD     panel admina TOST
 !specweaponstab            admin-spec   SpecHUD     zakladka broni TOST (tez !specweapontab)
 !specgame                  admin-spec   SpecHUD     zakladka gry TOST
 !mycolor                   kazdy        TeamColors  obecne kolory
 !mycolor menu              kazdy        TeamColors  okno kolorow
 !mycolor <el> <R G B|nazwa|reset>  kazdy  TeamColors  ustawia kolor
 !mycolor reset             kazdy        TeamColors  wszystkie kolory TO

(*) Tryb meczowy i trening granatow wykluczaja sie. Zeby wlaczyc jeden,
    najpierw wylacz drugi:
      trening -> mecz:   !nadetrain off, potem !mr12 on / !mr15 on
      mecz -> trening:   !mr12 off, potem !nadetrain on

Admin loguje sie w konsoli gry (klawisz ~):  adminlogin <haslo>


==============================================================================
 11. ODINSTALOWANIE
==============================================================================

  1. Wylacz serwer.
  2. Usun z ini:
       - ServerPackages=TOSTProMod              ([Engine.GameEngine])
       - ";TOSTProMod" z DefaultServerPackages  ([TOSTTools45.TOSTMapHandling])
       - Pieces[x]=TOSTProMod.TOSTProMod -> zostaw pusty "Pieces[x]="
       - (opcjonalnie) sekcje [TOSTProMod.*]
  3. Usun System\TOSTProMod.u (i .uz z redirectu).
  4. Uruchom serwer.


==============================================================================
 12. ZMIANY W KODZIE
==============================================================================

  Ta paczka zawiera gotowy pakiet - kod zrodlowy nie jest potrzebny do
  instalacji. Zrodla i zmiany: kontakt z autorem (rdv404@proton.me).

  WAZNE dla kazdego, kto zmienia kod: zmien nazwe pakietu (np. TOSTProMod2)
  i wpisy w ini. Gracze maja stara wersje w cache i przy tej samej nazwie
  dostana blad niezgodnosci pakietu.
