Rozmazane tekstury w Team Fortress 2

Pierwszy raz o tym słyszałem od pntna i dopiero teraz zauważyłem korzyści benefity korzystania z tego. Nie wiem jak to wygląda pod kątem zwiększania FPSów, ale na pewno zwiększa to widoczność w trakcie grania…w sensie ten myk, który jest opisany tutaj. Oczywiście jest to możliwe tylko w przypadku kart NVIDIA.

Na początku trzeba pobrać NVIDIA Inspector z tej strony. Po pobraniu należy paczkę rozpakować i odpalić program nvidiaProfileInspector.exe, w Profiles wybrać Team Fortress 2, znaleźć w sekcji 4 – Texture Filtering opcję Texture filtering - LOD Bias (DX) i wybrać z listy opcję +3.0000, tak jak na zrzucie poniżej:

Po tym należy wyeksportować profil w taki sposób, jak przedstawiłem powyżej oraz zapisać plik np. na pulpicie. Będzie wyglądał mniej więcej tak:

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfProfile>
  <Profile>
    <ProfileName>Team Fortress 2</ProfileName>
    <Executeables>
      <string>team fortress 2/hl2.exe</string>
    </Executeables>
    <Settings>
      <ProfileSetting>
        <SettingNameInfo>Texture filtering - LOD Bias</SettingNameInfo>
        <SettingID>7573135</SettingID>
        <SettingValue>120</SettingValue>
      </ProfileSetting>
    </Settings>
  </Profile>
</ArrayOfProfile>

Jeśli w SettingID mamy wartość 7573135 i w SettingValue 120, nie musimy nic robić. W innym wypadku należy zmienić SettingValue na 120, zapisać plik i zaimportować konfigurację. Robi się to za pomocą opcji poniżej:

Na koniec w sekcji 3 – Antyaliasing należy zmienić opcję Antialiasing – Transparency Supersampling na 0x00000008 AA_MODE_REPLAY_MODE_ALL i kliknąć u góry Apply changes.

Gotowe.

Problem białej nakładki Mumble w Team Fortress 2

Mnie to też wkurzało przez bardzo długi czas, ale udało mi się rozwiązać ten problem, ale na tym obrazku może to nie jest aż tak dobrze widoczne, więc pokażę problem z bliska:

Problem występuje w sytuacji, gdy używa się DirectX 9 (parametr -dxlevel 90, -dxlevel 92 lub -dxlevel 95). Parametr -d3d9x pomaga, ale tylko w przypadku używania DirectX 8.1 (parametr -dxlevel 81). Ten parametr nie ma znaczenia w przypadku DirectX 9.x.

Okej, więc najważniejsze rzeczy, które trzeba mieć ustawione, by wszystko było git to:

  • nakładka musi być włączona w ustawieniach Mumble,
  • granie w trybie pełnoekranowym,
  • niewpisany parametr -dxlevel w parametrach startowych (by zmieniać wersje DirectX, wystarczy miec raz wpisany parametr przy starcie gry, potem można go usunąć),
  • niezmienianie parametru mat_antialias. W moim przypadku to było problemem, ponieważ miałem tą zmienną w autoexec.cfg, co powodowało ustawianie tej wartości przy każdym starcie gry. Nie można zmieniać tej zmiennej także przez podanie jej w parametrach startowych gry, tzn. wpisanie +mat_antialias X (X – jakaś wartość).

Jeśli używasz MasterComfig – nie powinno być problemu. MasterComfig ustawia mat_antialias, ale ustawia to tylko raz, więc po restarcie nie powinno być problemu. Jeśli problemy się pojawiają – usuń MasterComfig i sprawdź czy nie masz gdzieś w configu tej zmiennej.

Efekt wygląda tak:

Dobre configi w Team Fortress 2 – najczęstsze problemy i rozwiązania

W tym edytuję configi. W sumie to cokolwiek. Visual Studio Code, polecam.

Sporo osób mnie pytało o to jak sobie z tym poradzić, niektórzy nawet sprzedają własne configi (XD), więc stwierdziłem, że postaram się trochę z tym pomóc raz na zawsze. Postaram się wyjaśnić jak ogólnie configi działają, co jeśli używacie MasterComfiga, jak ustawić configi na osobnych klasach i dam kilka przykładów z mojego setupu.

Czy Twój config jest najlepszy?

Odpowiedź jest prosta: nie. Dla mnie jest on najlepszy, ale to nie znaczy, że taki ma być dla każdego. Dostosowałem swój config do swojego sprzętu, dlatego mi tak pasuje. Nie każdy tak jak ja ma klawiaturę ze średnim rozmiarem (to znaczy mam strzałki i klawiaturę numeryczną połączoną razem) czy myszkę ze strzałkami back/forward (które wykorzystuję też w grze). Najlepszy config, który jest dla Ciebie to taki, który Ci samemu najbardziej odpowiada. Coś Ci nie pasuje? Zmień to i sprawdź, czy teraz jest lepiej. W ten sposób możesz własną drogą dotrzeć do najlepszego configu.

Tak to wygląda u mnie.

W czym najlepiej edytować configi?

W tym, co lubisz. Ja osobiście polecam Visual Studio Code – działa na Windowsie i na Linuksie (pozdro Kartky), najważniejsze w nim jest to, że podkreśla składnie i ma kilka tricków, które pozwala nam łatwiej znaleźć błędy w składni, szybko coś skopiować i podmienić. Niektórzy boomerzy używają Notepada++ i to jest okej – wszystko jest lepsze od Notepada, który nie ma podkreślania składni (syntax highlighting). Wiadomo, jak ktoś używa Linuksa to tam prawie każdy edytor tekstu ma podkreślanie składni i tam nie ma o co się martwić. Na dobrą sprawę w czymkolwiek można edytować configi. Kwestię macOSa przemliczę – od 10.15 Catalina nie da się odpalać aplikacji 32-bitowych natywnie, więc nie pogracie sobie tak łatwo w TFa (jest opcja Wine, ale to ponoć jest dramat).

Okej, no to jak to działa?

Działa to tak:
Najczęściej operujemy na takich configach:

  • config.cfg – główny config gry, w nim są przechowywane aktualne ustawienia. Jeśli coś ustawiliście w grze (np. z konsoli) to takie rzeczy pewnie będą tutaj, nie wprowadzamy tutaj zmian, ten config jest odpalany w pierwszej kolejności. Jeśli mamy zdefiniowane jakieś ustawienia na konkretnej klasie i zamkniemy grę – one będą też w tym configu.
  • autoexec.cfg – ten config zawiera wszystkie nasze rzeczy, które chcemy mieć skonfigurowane i odpala się po config.cfg, tutaj wykonujemy wszystkie zmiany, które nas interesują.
  • scout.cfg – config z ustawieniami dla Skauta.
  • soldier.cfg – config z ustawieniami dla Żołnierza.
  • pyro.cfg – config z ustawieniami dla Pyro.
  • demoman.cfg – config z ustawieniami dla Demomana.
  • heavyweapons.cfg – config z ustawieniami dla Grubego.
  • engineer.cfg – config z ustawieniami dla Inżyniera.
  • medic.cfg – config z ustawieniami dla Medyka.
  • sniper.cfg – config z ustawieniami dla Snajpera.
  • spy.cfg – config z ustawieniami dla Szpiega.
  • inne configi, które wrzucimy sami, np. jump.cfg – to, co w nich jest zależy od nas.

Configi klas włączają się w momencie wybrania klasy, więc jeśli zmienimy klasę na Snajpera, po prostu załaduje się sniper.cfg i to, co w nim jest.
Na dobry początek najłatwiej zacząć od obserwowania jakie configi mają inni – niby tutaj jest lista wszystkich ustawień w grze, ale komu by się chciało to przeglądać? Dlatego najlepiej jak zobaczycie, że ktoś używa jakiegoś innego celownika, ma np. podgląd klasy na dole w 3D itd. Potem połączcie to razem ze sobą i voilà – macie swój config. Tutaj znajdziecie więcej info o moim setupie.

Na wstępie powiem, że będę używał słowa zmienna (ang. variable). Te słowo określa jakieś konkretne ustawienie. Możemy je określać na różne sposoby, na przykład są ustawienia, w których musisz podać jakąś wartość (np. fov_desired 90) i im większa/mniejsza wartość tym ustawienie jest bardziej widoczne (w tym przykładzie większa wartość daje większe pole widzenia i maksymalna wartość to 90). Są też zmienne, w których określamy czy dane ustawienie ma być włączone czy nie. Jeśli jest włączone to dajemy 1, jeśli wyłączone to dajemy 0. Przykład: cl_autoreload 1 (w ten sposób mamy włączone automatyczne przeładowywanie broni). Wartości ustawień warto podawać w cudzysłowie, czyli np. zamiast fov_desired 90 dajemy fov_desired "90". Po co? W tym przypadku akurat to nic nie zmienia, ale jeśli wartość zawiera spację to wtedy polecenie może nie działać poprawnie (nie chcę dokładnie wyjaśniać dlaczego, chcę by ten poradnik był możliwie jak najprostszy do zrozumienia), więc można być trochę takim pedantem i dawać te cudzysłowie za każdym razem. Wtedy unikniemy problemów. W configach ustawiamy trzy rzeczy:

  • zmienne,
  • bindy,
  • aliasy.

Zmienne przedstawiłem już na samej górze. To jest coś, co oferuje nam gra jako ustawienie. Bind jest przypisaniem danej funkcji do przycisku, a alias alternatywną nazwą funkcji. Funkcja to jest w uproszczeniu coś, co wykonujemy – na przykład funkcja slot1 powoduje, że wybieramy broń pierwszorzędną dla naszej klasy. Alias jest alternatywną nazwą jakiegoś ustawienia lub zestawu kilku ustawień – np. możemy przypisać zmianę broni na pierwszorzędną oraz wyłączenie modelu w jednym poleceniu, przykład:

alias first "slot1; viewmodel_fov 0; r_drawviewmodel 1"

W ten sposób jak przypiszę taki alias do przycisku 1 (tego nad przyciskiem Q):

bind 1 "first"

Listę wszystkich przycisków można znaleźć tutaj. Ogólnie warto też przeczytać sobie tę stronkę w całości – jest tam mnóstwo podstawowych porad dotyczących robienia configów.

Jeśli chcemy mieć jakieś konkretne ustawienia, które mają działać na wszystkich klasach – wrzucamy do autoexec.cfg, jeśli takie ustawienia mają być na konkretne klasy – wrzucamy te same ustawienie do configu konkretnej klasy, np. ten sniper.cfg. Jeśli ustawiamy jakieś specyficzne ustawienie na konkretną klasę, na przykład przypisujemy ustawienie do prawego przycisku myszki to powinniśmy ustawić takie ustawienie na każdej klasie. Dajmy przykład tego prawego przycisku myszki – ja na skaucie i soldzie mam zmianę broni na ostatnią. Jeśli chcemy, by ten prawy przycisk myszki działał nam tak jak działał dotychczas to powinniśmy sprawdzić co mamy ustawione na tych klasach i wpisać to do configów tych klas. Prawy przycisk myszki to MOUSE2 na każdej myszce, więc sprawdza się to, co tam jest poleceniem bind MOUSE2:

] bind MOUSE2
"MOUSE2" = "+attack2"

Ostatnią broń wybiera funkcja lastinv. W takiej sytuacji na poszczególnych klasach dodajemy:

scout.cfg

bind MOUSE2 "lastinv"

soldier.cfg

bind MOUSE2 "lastinv"

pyro.cfg

bind MOUSE2 "+attack2"

demoman.cfg

bind MOUSE2 "+attack2"

heavyweapons.cfg

bind MOUSE2 "+attack2"

engineer.cfg

bind MOUSE2 "+attack2"

medic.cfg

bind MOUSE2 "+attack2"

sniper.cfg

bind MOUSE2 "+attack2"

spy.cfg

bind MOUSE2 "+attack2"

Tutaj te zmiany dla skauta i solda można zrobić lepiej. Prawy, lewy przycisk myszki i spacja mogą sterować kamerą jak się jest obserwatorem i warto je przypisać zamiast tak:

bind MOUSE2 "lastinv"

zrobiłbym to tak:

alias "attack2linv" "lastinv; spec_prev"
bind "MOUSE2" "attack2linv"

Warto do tej funkcji na prawym przycisku myszki dodawać spec_prev, bo w ten sposób nie odbieramy sobie możliwości przesuwania na tym przycisku. W przypadku lewego przycisku myszki dodaje się przycisk spec_next. W przypadku spacji dodaje się spec_mode.

Jak na danym przycisku chcecie mieć przycisk, który nie robi nic, np. na F4 nic nie potrzebujecie, dodajcie na tej klasie linijkę:

unbind F4

Po co te wszystkie przypisania na każdej klasie? Powiedzmy, że w configu pootisa nie wrzucimy takiego przypisania do prawego przycisku myszki. Jeśli zmienimy klasę to będzie na takim pootisie działało ustawienie z poprzedniej klasy i wtedy mogą wystąpić dwa przypadki:

  • jeśli poprzednia klasa, na której graliśmy miała bind bind MOUSE2 "+attack2" (na przykład Snajper) to nic się nie stanie,
  • jeśli poprzednia klasa miała inny bind na tym przycisku (np. sold i skaut w naszym przypadku ma bind MOUSE2 "lastinv" to pootis zamiast rozkręcać miniguna prawym będzie zmieniał broń. To jest słabe.

Jeszcze co do funkcji z + i - na początku, np. +forward – o co chodzi?
Funkcje z plusem są wykonywane, gdy przycisk jest wciśnięty, a z minusem, kiedy go puszczamy, więc +forward powoduje, że idziemy do przodu, a -forward powoduje, że przestajemy iść do przodu. To można wykorzystać np. przy tzw. winger jumpie, czyli skoku, w którym wykorzystujemy właściwość Wingera (pol. Skrzydłowy) na skaucie po to, by podskoczyć wyżej i z powrotem zmienić broń na Scatterguna (pol. Dubeltówka). Wtedy trzeba zrobić dwa aliasy: z plusem i minusem, a potem do przycisku przypisać alias z plusem, a gra sama będzie wiedziała, że ta z minusem też istnieje, przykład:

alias +wjump "slot2; +jump; +duck"
alias -wjump "lastinv; -jump; -duck"
bind MOUSE5 "+wjump"

Jak testować configi?

To dosyć proste. Wpisujecie w konsoli exec naszconfig i w ten sposób sprawdzacie wyniki. Zmiany są najczęściej widoczne natychmiast. Mało tego exec naszconfig może być umieszczony w innym configu, więc jeśli ktoś w tym widzi jakieś rozwiązanie to też z tego można skorzystać.

Gdzie te całe configi są?

W dwóch miejcach:

  • C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\tf\cfg – zakładając, że nie używacie MasterComfig,
  • C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\tf\cfg\user – zakładając, że używacie MasterComfig (w najnowszej wersji, starsze wersje wymagały dziwnych zmian z postfiksem _c.cfg na końcu nazwy pliku oraz zmianę autoexec.cfg na custom.cfg, teraz to już przeszłość.

tl;dr jak ustawić nagrywanie demek?

Wszystkie composzczury compowcy tego muszą używać na meczach czy tego chcą, czy nie. Są dwie opcje jak można nagrywać demka:

  • P-REC (plugin napisany przez pewnego Ukraińca) – poradnik jest napisany tutaj i nie chcę mi się go przepisywać na polski, bo on jest naprawdę banalnie prosty. Jeśli go używacie to nie możecie wchodzić na gierki competitive wbudowane w grę (z których i tak nikt nie korzysta, więc w sumie żadna strata).
  • Demo Support, czyli wbudowany w grę mechanizm do nagrywania demek. Powstał po to, by ludzie nie używali P-RECa, ale w rzeczywistości ludzie z Valve nawet to potrafili spierdolić. Z tego aktualnie korzystam.

Oba programy mają swoje wady i zalety. W przypadku P-RECa zaletą jest to, że demka są nagrywane od początku gry do końca, poza tym P-REC sam robi screenshoty statusu (polecenia status, to jest potrzebne na meczach ETF2L). DS nagrywa demka od wejścia na serwer, więc całą naszą rozgrzewkę też nagra (wiadomo, przecież wtedy strzela się najpotężniejsze airshoty to trzeba się jakoś pochwalić, c’nie?). Z drugiej strony w DSie nie trzeba nic instalować – kilka poleceń i działa, poza tym nie psuje gry.

Wszystkie polecenia do DSa:

ds_autodelete "0" //wyłączone automatyczne usuwanie nagranych demek, usuwajmy je ręcznie dzięki czemu na offi nie będzie sytuacji, że zapomnieliśmy nagrać i kapa
ds_dir "suprademos" //wrzuca wszystkie nagrane demka do folderu suprademos, który jest w folderze tf (w moim przypadku "C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\tf")
ds_enable "3" //0 wyłącza DS, 1 nagrywa gierki z compa wbudowanego w tfa, 2 nagrywa wszystko (casual/community serwery też), 3 nagrywa te prawdziwe mecze comp
ds_kill_delay "10" //w tym przypadku po 10 sekundach od niezabicia fraga killstreak się nie nalicza
ds_log "1" //ta opcja włącza zapisywanie wszystkich bookmarków (automatycznych i ręcznych) do pliku tekstowego
bind F6 "ds_mark" //dzięki temu po wciśnięciu F6 robi się nam bookmark w trakcie gry
ds_min_streak //minimalny killstreak, jaki musimy osiągnąć, by DS sam zrobił nam bookmarka
ds_notify 2 //wyświetla info o poprawnym zrobieniu bookmarka, 0 powoduje wyświetlanie w konsoli, 1 w konsoli i na czacie, 2 w konsoli i na środku ekranu (HUD)
ds_prefix "" //można zostawić puste, to co wpiszemy tutaj będzie na początku każdego pliku demka czy zrzutu ekranu
ds_record //bezużyteczne, po prostu odpala nagrywanie demka
ds_screens 1 //robi screenshota po końcu gry, jeśli wyjdziemy wcześniej z meczu to zapomnijcie o screenie
ds_sound 1 //jak się zaczyna nagrywanie demka to słyszymy dzięki temu dźwięk
ds_status //bezużyteczne, wyświetla w konsoli czy demko nam się nagrywa
ds_stop //bezużyteczne, zatrzymuje nagrywanie demka (robi to samo co polecenie stop)

Tutaj na przykład możemy dać inne killstreaki na inne klasy, np. na medyka dałbym 1, a na snajpera na przykład 3. Wszystko jest kwestią własnego gustu. Najważniejsze jest to, by samemu przetestować czy nagrywanie demek/robienie screenshotów działa.

Udało mi się też wykopać mój stary config do P-RECa:

prec_mode 3
prec_dir suprademos
prec_notify 2
prec_screens 1
prec_delete_useless_demo 1 //wtedy usuwałem demka automatycznie
prec_tag ""
bind F6 prec_mark

Ogólnie z tym autousuwaniem demek są dwa rozwiązania: albo mamy włączone automatyczne usuwanie i zawsze robimy bookmark na początku każdego nagrywanego demka (jak w środku meczu nas wywali i wrócimy na serwer to znowu musimy zrobić bookmark, inaczej można dostać bana jak MattJ za nagranie niecałej mapy) albo mamy wyłączone automatyczne usuwanie i usuwamy niepotrzebne demka ręcznie. Sami się zastanówcie co jest lepszym rozwiązaniem dla Was.

Aliasy na przyspieszenie zmian

Prosta sprawa, dodajecie to do autoexec.cfg i efekt jest taki, że żeby zmienić mapkę na zarezerwowanym przez Was serwerze (zakładam, że macie wpisane hasło do rcona w konsoli) wystarczy wpisać nazwę mapy, na przykład granary.

alias "reckoner" "rcon changelevel cp_reckoner_rc2"
alias "badlands" "rcon changelevel cp_badlands"
alias "prolands" "rcon changelevel cp_prolands_b6"
alias "process" "rcon changelevel cp_process_final"
alias "snake" "rcon changelevel cp_snakewater_final1"
alias "gully" "rcon changelevel cp_gullywash_final1"
alias "granary" "rcon changelevel cp_granary_pro_b8"
alias "product" "rcon changelevel koth_product_rcx"
alias "metalworks" "rcon changelevel cp_metalworks"
alias "sunshine" "rcon changelevel cp_sunshine"
alias "bwater" "rcon changelevel pl_badwater"
alias "bwaterpro" "rcon changelevel pl_badwater_pro_v12"
alias "coalplant" "rcon changelevel koth_coalplant_b8"
alias "warmtic" "rcon changelevel koth_warmtic_b6"
alias "upward" "rcon changelevel pl_upward"
alias "lake" "rcon changelevel koth_lakeside_final"
alias "swift" "rcon changelevel pl_swiftwater_final1"
alias "ash" "rcon changelevel koth_ashville_rc1"
alias "barnblitz" "rcon changelevel pl_barnblitz_pro6"
alias "steel" "rcon changelevel cp_steel"
alias "borneo" "rcon changelevel pl_borneo"

Innym fajnym aliasem jest:

alias "tv" "rcon tv_delaymapchange_protect 0"

Często po skończeniu się mapy chcemy od razu zmienić ja na następną, ale domyślnie SourceTV to blokuje, więc mając taki alias w naszym autoexecu wpisujemy w konsoli tv oraz nazwę nowej mapy i jest po temacie.

Zmiany klas (to sobie skopiowałem od thaza) – klikasz odpowiedni przycisk na klawiaturze numerycznej i zmieniasz na klasę, której potrzebujesz + informujesz ludzi na czacie o tym, bardzo przydatne na 6v6:

bind "KP_END" "join_class scout; say_team is scout"
bind "KP_DOWNARROW" "join_class soldier; say_team is soldier"
bind "KP_PGDN" "join_class pyro; say_team is pyro"
bind "KP_LEFTARROW" "join_class demoman; say_team is demoman"
bind "KP_5" "join_class heavyweapons; say_team is vladimir pootis"
bind "KP_RIGHTARROW" "join_class engineer; say_team is engineer"
bind "KP_HOME" "join_class medic; say_team is medic"
bind "KP_UPARROW" "join_class sniper; say_team is sniper"
bind "KP_PGUP" "join_class spy; say_team is spy"

Bindy do serwerów – przydatne jeśli chcę wejść szybko na konkretny serwer, na którym często gram:

alias "mge" "connect melkor.tf:27030"
alias "mge2" "connect melkor.tf:27035"
alias "dm" "connect melkor.tf:27050"
alias "bball" connect supra.tf:27025"
alias "supra" "connect supra.tf; password dupa69"

Jeśli macie jakieś ciekawe bindy czy aliasy to podeślijcie mi je w wiadomościach prywatnych lub w komentarzach – jeśli uznam, że są naprawdę przydatne to dodam je na końcu tego posta.

Mój setup w Team Fortress 2

Nie chodzi mi o przedmioty, lecz o konfigurację. Sporo osób mnie pyta o to z czego korzystam, więc postaram się odpowiedzieć raz na zawsze tym postem na te pytanie.

MasterComfig

Aktualnie (w 2020) najlepsze configi pod kątem optymalizacji gry. Wystarczy wejść tutaj, wybrać odpowiedni preset i dodatkowe modyfikacje. Ja używam presetu Low.

Następnie wybieram takie dodatki:

Potem wystarczy kliknąć Download Low preset and selected addons VPKs (wystarczy kliknąć w przeglądarce zgodę na pobranie wielu plików). Jeśli to nie działa, pobierz po prostu wszystkie pliki po kolei poniżej.

Potem wystarczy te pliki wkleić do folderu C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\tf\custom:

HUD

Korzystam z Hypnotize Huda, który można pobrać tutaj. Jest całkiem ładny, nie ma oczojebnych kolorków i jest czytelny. Po ściągnięciu rozpakowujemy katalog z HUDem i w folderze customizations znajdziemy mnóstwo opcji ustawienia innej opcji HUDa. Na przykład Pause Menu, możemy sobie zobaczyć w Pause Menu Background.png jak wyglądają opcje, a w Pause Menu Background.res można te opcje przestawić.

Ja włączam transparent background, big team status, full stats scoreboard, i quake font. Pliki po zmianie wyglądają tak:

Pause Menu Background.res

//#base "../resource/ui/PauseMenuGrey.res"				// DEFAULT GREY BACKGROUND
#base "../resource/ui/PauseMenuTransparent.res"		// TRANSPARENT BACKGROUND

Team Status.res

//#base "../resource/ui/HudMatchStatus_SmallHealth.res"		// SMALL HEALTH BAR TEAM STATUS
#base "../resource/ui/HudMatchStatus_BigHealth.res"		// BIG HEALTH BAR TEAM STATUS

Scoreboards.res

//#base "../resource/ui/Scoreboard_NoStats.res"			// SHORT STATS SCOREBOARD
#base "../resource/ui/Scoreboard_FullStats.res"		// FULL STATS SCOREBOARD

Alternative Fonts.res

//#base "../resource/scheme/Fonts_Avenir.res"
//#base "../resource/scheme/Fonts_Cerbetica.res"
//#base "../resource/scheme/Fonts_Neutra.res"
//#base "../resource/scheme/Fonts_Nexa.res"			//DEFAULT HYPNOTIZE HUD FONT
//#base "../resource/scheme/Fonts_Product.res"
#base "../resource/scheme/Fonts_Quake.res"
//#base "../resource/scheme/Fonts_Renogare.res"
//#base "../resource/scheme/Fonts_Roboto.res"
//#base "../resource/scheme/Fonts_Surface.res"
//#base "../resource/scheme/Fonts_TF2.res"

Poza tym dodaję też tło do numerków z HP i amunicją. W folderze Health & Ammo Box Overrides znajduje się folder resource i scripts. To musimy skopiować i wkleić w głównym katalogu HUDa:

No explosion smoke script

Znalazłem to tutaj. Wystarczy, że wkleicie wszystkie pliki .txt do folderu scripts wewnątrz folderu swojego HUDa (na przykład tego, co przygotowaliście wcześniej). Ułatwiłem szukanie w tym poście, bo wystarczy, że ściągniecie sobie paczkę stąd i jej zawartość rozpakujecie tutaj:

Działanie tych skryptów jest takie, że usuwają fragment splasha (rozprysku) rakiety oraz dym po wybuchu. Poniżej pokażę jak to wygląda:

Bez skryptów
Ze skryptami

Niestandardowy hitsound i killsound

Używałem tego hitsounda i tego killsounda, teraz używam tego hitsounda i killsounda. Hitsound to dźwięk, który słyszymy jeśli trafimy przeciwnika, a killsound to ten, kiedy kogoś zabijemy. By z nich skorzystać, należy w folderze HUDa stworzyć sobie folder sound, następnie w nim ui i w nim umieścić pliki.

Na samym końcu wrzucamy folder hypnotize hud do folderu C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\tf\custom:

Parametry startowe gry

Wykorzystuję następujące parametry:

-window -noborder -w 1920 -h 1080 -nojoy -novid -nosteamcontroller -nostartupsound -nod3d9x

Przy pierwszym uruchomieniu dodajcie -dxlevel 81 – to zmieni wersję używanego DirectXa na 8.1. Po tym pierwszym uruchomieniu usuńcie ten parametr z listy. Korzystam z -dxlevel 81, bo dzięki temu nie występuje bug z nakładką Mumble, w którym cała nakładka jest biała.

Ustawienia znajdziemy tutaj:

I na dole Ustaw opcje uruchamiania…

Ostatnia i najważniejsza rzecz – configi!

Tutaj chyba się trochę rozpiszę. Pozostawiłem komentarze w blokach, poniżej fragment pliku autoexec.cfg:

cl_interp_ratio "1"
fps_max 0 //powinno się ustawiać 2x częstotliwość odświeżania ekranu + 1, więc mam 2x144+1=289, ale w moim przypadku lepiej było wyłączyć lock, warto potestować
tf_use_match_hud "1"
unbind numlock
bind "KP_END" "join_class scout; say_team is scout" //zmienia klasę na skauta i pisze na czacie teamowym "is scout" klasy są od skauta do spy na przyciskach na przyciskach numerycznych od 1 do 9
bind "KP_DOWNARROW" "join_class soldier; say_team is soldier"
bind "KP_PGDN" "join_class pyro; say_team is pyro"
bind "KP_LEFTARROW" "join_class demoman; say_team is demoman"
bind "KP_5" "join_class heavyweapons; say_team is vladimir pootis"
bind "KP_RIGHTARROW" "join_class engineer; say_team is engineer"
bind "KP_HOME" "join_class medic; say_team is medic"
bind "KP_UPARROW" "join_class sniper; say_team is sniper"
bind "KP_PGUP" "join_class spy; say_team is spy"
bind KP_ENTER "taunt_by_name Shred Alert; say gj bruh"
bind KP_MULTIPLY "taunt_by_name Taunt: The Schadenfreude; say ha ha h a h a"
alias "mge" "connect melkor.tf:27030" //wpisujesz mge w konsoli i jesteś na melkor #1 MGE
alias "mge2" "connect melkor.tf:27035" //wpisujesz mge w konsoli i jesteś na melkor #2 MGE
alias "dm" "connect melkor.tf:27050" //wpisujesz mge w konsoli i jesteś na melkor DM
alias "tutajpomarancza" "connect supra.tf:27020; password supersecretpassword"
snd_mute_losefocus "1" //jak zminimalizujesz grę to nie ma dźwięku
cl_hud_playerclass_use_playermodel "1" //włącza sylwetkę gracza w 3d w miniaturce postaci, dzięki temu można na 6v6 sprawdzać jakie klasy ma przeciwnik na spaju
cl_use_tournament_specgui "1" //dzięki temu jak oglądasz comp gierkę ze spectów to widzisz po lewej i prawej stronie punkty życia graczy
sv_lan "0"
closecaption "1" //dzięki temu są teksty w stylu scout bleeding po prawej stronie ekranu
crosshair "1"
voice_enable "1" //włącza czat głosowy
bind "h" "+use_action_slot_item"
bind F11 explode //killbind
r_drawdecals "0" //wyłącza spraye
hud_combattext "1" //włącza info o zadawanym dmg
hud_combattext_healing "1" //włącza info o leczeniu
tf_dingalingaling "1"
tf_dingaling_volume "1.000000"
tf_dingaling_pitchmindmg "128.529999"
tf_dingaling_pitchmaxdmg "20.110001"
tf_dingalingaling_lasthit "1"
tf_dingalingaling_last_effect "0"
tf_dingaling_lasthit_volume "1.000000"
tf_dingaling_lasthit_pitchmindmg "100.000000"
tf_dingaling_lasthit_pitchmaxdmg "100.000000"
tf_dingalingaling_repeat_delay "0.008"
cl_crosshair_red "0.000000"
cl_crosshair_green "255.000000"
cl_crosshair_blue "0.000000"
cl_crosshair_file "crosshair3"
cl_crosshair_scale "48.000000" //dzięki tych linijkom z cl_crosshair zawsze mam ten sam hud, czyli duże, zielone kółko
tf_remember_activeweapon "0"
tf_remember_lastswitched "0"
m_rawinput "1" //bezpośredni odczyt z myszki, dzięki temu unikamy efektu akceleracji myszki
cl_playerspraydisable 1
r_spray_lifetime 0
alias shit "say 0       ...; bind F10 shit2" //śmieszny bind
alias shit2 say "|\_ .`   `.; bind F10 shit3"
alias shit3 say "/\       open; bind F10 shit"
bind "F10" "shit"
bind "F12" "say www.wikihow.com/Deal-With-Your-Teenage-Anger try using it"
alias "tv" "rcon tv_delaymapchange_protect 0" //wpisujesz w konsoli tv i od razu możesz zmienić mapkę
alias "change" "bind space +jump"
alias "mixvote" "rcon sm_votemap" "cp_prolands_b6" "koth_product_rcx" "cp_snakewater_final1" "cp_gullywash_f2a" "cp_sunshine"
alias "reckoner" "rcon changelevel cp_reckoner_rc6"
alias "badlands" "rcon changelevel cp_badlands"
alias "prolands" "rcon changelevel cp_prolands_b6"
alias "process" "rcon changelevel cp_process_f7"
alias "snake" "rcon changelevel cp_snakewater_final1"
alias "gully" "rcon changelevel cp_gullywash_f2a"
alias "granary" "rcon changelevel cp_granary_pro_b8"
alias "product" "rcon changelevel koth_product_rcx"
alias "metalworks" "rcon changelevel cp_metalworks"
alias "sunshine" "rcon changelevel cp_sunshine"
alias "bwater" "rcon changelevel pl_badwater"
alias "prowater" "rcon changelevel pl_prowater_b12"
alias "coalplant" "rcon changelevel koth_coalplant_b8"
alias "warmtic" "rcon changelevel koth_warmtic_b6"
alias "upward" "rcon changelevel pl_upward"
alias "lake" "rcon changelevel koth_lakeside_final"
alias "swift" "rcon changelevel pl_swiftwater_final1"
alias "ash" "rcon changelevel koth_ashville_rc1"
alias "barnblitz" "rcon changelevel pl_barnblitz_pro6"
alias "steel" "rcon changelevel cp_steel"
alias "borneo" "rcon changelevel pl_borneo"

//p-rec support
//prec_mode 3
//prec_dir demos
//prec_notify 2
//prec_screens 1
//prec_delete_useless_demo 1
//prec_tag demkasupry
//bind F6 prec_mark
//built-in demo support
ds_enable 3
ds_min_streak 25 
ds_kill_delay 5 
ds_notify 2
ds_prefix "supra_demo_"
ds_screens 1
ds_sound 1
ds_autodelete 1
ds_dir "suprademos"
ds_log 1

rcon_address supra.tf:27015
rcon_password hahahahaha

Poniżej są zmienne, które i tak ustawiają jakość obrazu na niską i mam to dlatego, bo jestem leniwy i się przyzwyczaiłem to tych kiepsko wyglądających tekstur 😉

Configi można pobrać tutaj. Wystarczy wkleić zawartość tego zipa do folderu C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\tf\cfg i to tyle. Będzie działać. W przypadku używania MasterComfiga należy przechowywać configi klas oraz autoexec.cfg w folderze user będącym w cfg. Jeśli nie macie MasterComfiga, po prostu wrzućcie configi z user do folderu cfg i będzie działało.

autoexec.cfg jest ładowany w momencie uruchomienia gry. Pliki klas takie jak np. scout.cfg są ładowane w momencie wybrania takiej klasy. Na każdej klasie oprócz inżyniera możemy sobie zmieniać loadouty dla danej klasy: F1 – daje set A, F2 – set B, F3 – set C, F5 – set D. Nie używam F4 w configu, bo używa się go do kliknięcia Ready up w przypadku serwerów competitive/MVM.

W przypadku inżyniera te przyciski dają: F1 – działko, F2, dispenser, F3 – teleport (wejście), F5 – teleport (wyjście).

Medyk też jest na swój sposób wyjątkowy, bo u mnie loadouty są przygotowane pod konkretne mediguny: F1 – medigun, F2 – kritzkrieg, F3 – quickfix, F5 – vaccinator. Configi, które są w katalogu wyżej od user są do załadowania ustawień. Na przykład w przypadku Vaccinatora nie używam informacji na czacie, że użyłem, bo spamowałbym tym non-stop w trakcie normalnej gry.

Na soldzie i skaucie na prawym przycisku myszy mam zmianę broni. Pewnie kiedyś tam ustawię na soldzie skok, bo to jest lepsze rozwiązanie, ale póki co jestem leniwy.

Poza tym, jak możecie zauważyć na niektórych klasach jest włączony model broni na niektórych broniach, a na niektórych nie. Włącza/wyłącza się model przyciskiem danej broni, czyli np. na soldzie wciśnięcie 1 da nam zmianę na wyrzutnię rakiet + wyłączy nam model broni. W niektórych klasach działa to dosyć specyficznie, ponieważ na pyro i medyku mam wyłączony model mediguna, ale mam wyłączony strumień by widzieć czy kogoś leczę lub palę na pyro. Ten strumień pozwala mi łatwiej określić, czy ktoś jest w moim zasięgu (przynajmniej ja mam takie wrażenie).

Ponadto, w tym configu jest włączone automatyczne nagrywanie demek z competitive z usuwaniem demek bez bookmarków i demka są zapisywane do folderu suprademos (w folderze tf). Na F6 jest przypisany bind do robienia bookmarków.

Ktoś się mnie też pytał o zmienną, która powoduje, że grając medykiem nad każdym wyświetla się chmurka, dzięki czemu można tak jakby widzieć swoich kumpli z teamu za ścianami i robić prefire z kuszy, by kogoś szybko podleczyć. Ta zmienna to hud_medicautocallersthreshold "150".

Fajne skrypty specyficzne dla klas

Winger jump: powoduje, że skaczemy wyżej wykorzystując właściwość Wingera na moment. Naciskasz przycisk i postać sama zmienia broń i podskakuje. Skrypt wygląda tak (ja mam ten jump przypisany pod mouse5).

alias +wjump "slot2; +jump; +duck"
alias -wjump "lastinv; -jump; -duck"
bind "mouse5" "+wjump"
Bez winger jumpa
Z winger jumpem

Detonator jump:

To jest skrypt, który pozwala pod jednym przyciskiem robić jumpa na racy z detonatora. Naciskasz przycisk i za Ciebie robi cały jump, jedynie musisz odpowiednio kierować celownikiem, by lecieć tam, gdzie chcesz.

alias +detonatorjump "+jump;+duck;+attack;+attack2"
alias -detonatorjump "-jump;-duck;-attack;-attack2"
bind "mouse5" "+detonatorjump"

Nakładka (overlay) Mumble

Dzięki temu widzę, kto do mnie mówi na czacie głosowym lepiej. Ten domyślny jest w górnym, prawym rogu i wygląda kiepsko. Tło zasłania grę. Dlatego ja mam własną ścieżkę, własne kolory i ustawienie. Ustawiam nakładkę po prawej stronie na środku i działa ona tak, że mówiące osoby wyświetlają się tekstem na czerwono, jeśli przestaną mówić to mają taki szarawy kolor i po kilku sekundach od ciszy znikają z overlaya. W ten sposób też nie wyświetla mi zawsze wszystkich osób na kanale. Do tego mam przygotowany gotowy layout i konkretną czcionkę, którą używam.

Po prawej widać ten overlay.

By wgrać ten overlay, po pobraniu najlepiej wcześniej zainstalować sobie taką czcionkę, jaką jak mam i należy otworzyć ustawienia Mumble i w zakładce Nakładka (Overlay) kliknąć Wczytaj… w sekcji Opcje. Następnie za pomocą kropek trzeba ustawić w odpowiednim miejscu nakładkę. Aktualnie jej ustawienie wyrównuje nazwy użytkowników do lewej strony i to można sobie zawsze zmienić.

Następnie, jeśli chcemy zmienić czcionkę, robimy to tak, jak na animacji poniżej. Po tym można zapisać ustawienia.

Wyłączenie nakładki Steam w grze i przeglądarki w Steamie

Ten numer mi sprzedał wonszu i szczerze powiedziawszy to nawet z moim sprzętem zmiana jest zauważalna na plus. Po pierwsze, trzeba wyłączyć nakładkę Steam podczas gry (klikając prawym na grę -> Właściwości…:

Następnie należy sobie utworzyć skrót do Steama na pulpicie wchodząc do folderu ze skrótami (oczywiście to nie jest jedyne rozwiązanie, ale moim zdaniem jest najprostsze):

Otworzy nam się okno, stąd kopiujemy skrót na Pulpit:

Następnie klikamy na niego PPM -> Właściwości i w sekcji Element docelowy dodajemy parametry -console -no-browser. Zakładając, że macie zainstalowanego Steama w domyślnej lokalizacji to powinno wyglądać tak: "C:\Program Files (x86)\Steam\Steam.exe" -console -no-browser

Zmiana wyglądu w stronach bez dark mode z użyciem Stylish

Niektóre strony nie mają wbudowanego trybu ciemnego (aka dark mode) i przez mój światłowstręt cierpię o 2 w nocy. Z pomocą przychodzi plugin Stylish, który można wykorzystywać w przeglądarkach Google Chrome (i wszystkich innych bazujących na Chromium) i Mozilla Firefox. Dzięki temu strona zamiast wyglądać tak:

może wyglądać tak:

Pokażę jak taki efekt uzyskać na przykładzie stron https://tf2pickup.pl oraz https://hl.tf2pickup.pl.

Google Chrome (i inne przeglądarki oparte o Chromium)

Na początku trzeba wejść na tę stronę i kliknąć Dodaj do Chrome, a następnie w komunikacie kliknąć Dodaj rozszerzenie.

Mozilla Firefox

Wchodzimy na tę stronę i klikamy na Dodaj do Firefoksa, a następnie zatwierdzamy klikając Dodaj.

Opera

Wchodzimy na tę stronę i klikamy na Dodaj do Opery. Na Operze akurat instalujemy program, który bazuje na Stylishu, lecz docelowo działa tak samo.

Następne kroki

Po dodaniu należy wejść na stronę, której wygląd chcemy zmienić, kliknąć ikonkę Stylisha i zaakceptować warunki korzystania wtyczki.

Potem możemy zainstalować skin dla danej strony, ale aktualnie nie ma żadnych opublikowanych, więc po prostu dodamy nowy. Klikamy na przycisk opcji u góry okienka wtyczki i Create New Style.

W przypadku Opery ze Stylusem należy kliknąć na ikonkę wtyczki, a następnie na link pod Napisz styl dla. Wtedy otworzy nam się to samo, co w innych przeglądarkach.

Otworzy nam się nowe konto, w którym musimy zdefiniować wygląd skina. Na górze, po lewej wpisz nazwę skina (w moim przypadku tf2pickup.pl), następnie zaznacz Enabled pod nazwą. Teraz w sekcji *Code 1 wklej kod, którym zmieniasz wygląd strony (mój kod poniżej):

body {
    background-color: #222 !important;
}
nav.navbar {
    background-color: #333 !important;
    color: #f8f9fa !important;
}
a.nav-link {
    color: #f8f9fa !important;
}
.list-group-item {
    background-color: #333 !important;
    border: 1px solid #111 !important;
    color: #f8f9fa !important;
}
.list-group-item.list-group-item-action, .queue-slot-item.free {
    background-color: #333 !important;
    border: 1px solid #111 !important;
    color: #f8f9fa !important;
}
.queue-slot-item.taken {
    border: 1px solid #111 !important;
}
footer {
    background-color: #333 !important;
}
markdown {
    color: #f8f9fa !important;
}
div.bg-light {
    background-color: #333 !important;
}
span.mt-1.font-weight-bold {
    color: #f8f9fa !important;
}
span.mb-1 {
    color: #f8f9fa !important;
}
span.text-secondary.font-italic.mb-2 {
    color: #f8f9fa !important;
}
button.btn.btn-sm.pre-ready-up-btn.btn-primary {
    background-color: #f8f9fa !important;
    color: #111 !important;
}
h4.text-center.mx-2 {
    color: #f8f9fa !important;
}
div.col {
    color: light !important;
}
h4 {
    color: #f8f9fa !important;
}
span.font-italic.text-muted {
    color: #f8f9fa !important;
}
li.page-item.disabled {
    color: #f8f9fa !important;
}
a.page-link {
    color: #f8f9fa !important;
    background-color: #333 !important;
}
span.font-italic.text-muted {
    color: #f8f9fa !important;
}
label.col-4.col-form-label {
    color: #f8f9fa !important;
}
.modal-content{
	background-color: #333 !important;
    color: #f8f9fa !important;
}
a.text-dark {
    color: #aaaaaa !important;
}
div.row.text-muted {
    color: #aaaaaa !important;
}
div.row {
    color: #f8f9fa !important;
}
span.badge.badge-light.ml-2.team-score
{
    background-color: #6c757d !important;
    color: #f8f9fa !important;
}
h5 {
    color: #f8f9fa !important;
}
h6.mt-5 {
    color: white !important;
}
datatable-header-cell.resizeable.sort-active.sort-asc.sortable {
    color: #f8f9fa !important;
}
div.datatable-body-cell-label {
    color: #f8f9fa !important;
        width: 100px !important;
text-align: center;
}
datatable-header-cell.datatable-header-cell.resizeable.sortable {
    width: 100px !important;
    text-align: center;
}
div.datatable-header-cell-template-wrap {
    color: #f8f9fa !important;
    width: 100px !important;
    text-align: center;
}
datatable-body-cell.sort-active {
    width: 100px !important;
    text-align: center;
}

W praktyce to wygląda tak:

Na końcu na samym dole jest coś takiego jak Applies to: Everything. Kliknij przycisk Specify, wybierz z listy URLs on the domain i wpisz tf2pickup.pl.

Na końcu pod nazwą stylu kliknij Save. W ten sposób masz zmieniony wygląd strony: