list disk
#Select the correct disk volume
select disk 0
#Create System partition
create partition efi size=100
format quick fs=fat32 label="System"
#Create MSR partition
create partition msr size=16
To jest prawdziwy one-liner – wykonujesz jako admin i masz.
wmic path softwarelicensingservice get OA3xOriginalProductKey
Nie kupowałem Windowsa razem z komputerem, więc u mnie wynik jest pusty. Na każdym laptopie z OEMowym Windowsem, który jest razem z zakupem laptopa tak nie będzie.
Niestety, tych opcji aktualnie (w wersji FortiOS 6.4.1 jeszcze nie ma w interfejsie, więc trzeba to zrobić przez CLI. Dla przykładu mój profil i poniżej przykład dodania dodatkowych kontrolerów domeny:
anzena-forti # config user ldap
anzena-forti (ldap) # edit serba.local
anzena-forti (serba.local) # set secondary-server dc2.serba.local
anzena-forti (serba.local) # set tertiary-server dc3.serba.local
anzena-forti (serba.local) # set password-expiry-warning enable
anzena-forti (serba.local) # set password-renewal enable
anzena-forti (serba.local) # end
Dzięki temu certyfikat nie jest nazwany domyślnie tak jak na górze, lecz tak jak ten na dole:
anzena-forti # config vpn certificate ca
anzena-forti (ca) # rename CA_CERT_2 to SERBA-CA
table name 'CA_CERT_2' is not found!
Command fail. Return code 2 //jak widać wielkość liter ma znaczenie!
anzena-forti (ca) # rename CA_Cert_2 to SERBA-CA
anzena-forti (ca) # end
Rachunki za prąd mi nieźle podskoczyły, więc od niedawna włączam kompa tylko wtedy, jeśli go potrzebuję. Dlatego wcześniej łączę się do domu po VPNie i korzystam z opcji Wake on LAN – dzięki czemu mogę zdalnie włączyć komputer, bo niestety on nie ma interfejsu IPMI, ani nie ma w domu drugiej osoby, która mi ten przycisk wciśnie.
FortiGate:
execute wake-on-lan lan 00:d8:61:04:20:69
gdzie lan to nazwa intefejsu, do którego jest podpięty mój komputer, a następnie jest adres MAC mojej karty sieciowej w komputerze.
Mikrotik:
tool wol interface=ether4 mac=00:d8:61:04:20:69
Tutaj tak samo jak wyżej, jedynie nieco inne polecenie.
Zawsze jak uczę się czegoś (na przykład w pracy) staram się wyciągnąć z tego 100%. Przez to natrafiłem na 1 opcję w agencie FSSO FortiGate’a, której nigdzie nikt nie używa: FortiGate SSL. Nie trudno się domyślić, że tu chodzi o to, by komunikacja z FortiGate’m była szyfrowana (domyślnie jest przesyłana plaintextem). Więc skoro zabezpieczamy wszystko najlepiej to czemu tego nie zmienić?
Problem w tym, że w dokumentacji FortiGate’a ani w ich Cookbooku tego nie ma. Są inne rzeczy, ale tą funkcjonalność ktoś po prostu pominął i nie ma totalnie nic o jej konfiguracji, więc próbowałem się dowiedzieć na własną rękę jak ją się ustawia.
Na początku należy mieć własne CA. Na przykład ja używam do tego CA, które można postawić w AD (Usługi certyfikatów Active Directory):
Ja zawsze do niego doinstalowuję funkcję Rejestracja w sieci Web dla urzędu certyfikacji. Dzięki temu możemy przez stronkę taki certyfikat sobie podpisać, zakładając, że postawiliśmy sobie takie CA na serwerze dc1.serba.local wystarczy wejść na stronkę http://dc1.serba.local/certsrv (oczywiście da się zmienić na HTTPS) i tam możemy załatwić robotę. Część robię za pomocą OpenSSL, więc warto mieć zainstalowaną windowsową wersję lub korzystać z Windows Subsystem for Linux (korzystam z tego „czegoś” w Windows Store, w praktyce daje mi to możliwość korzystania ze wszystkich (prawie) poleceń z Ubuntu lecz będąc na Windowsie).
Zaczynamy od utworzenia klucza prywatnego:
openssl req -newkey rsa:2048 -keyout local.key
Generating a RSA private key
..........+++++
........+++++
writing new private key to 'local.key'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:SL
Locality Name (eg, city) []:Tychy
Organization Name (eg, company) [Internet Widgits Pty Ltd]:it.supra.tf
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:it.supra.tf
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
-----BEGIN CERTIFICATE REQUEST-----
MIICzDCCAbQCAQAwgYYxCzAJBgNVBAYTAlBMMQswCQYDVQQIDAJTTDEOMAwGA1UE
BwwFVHljaHkxFDASBgNVBAoMC2l0LnN1cHJhLnRmMQswCQYDVQQLDAJJVDEUMBIG
A1UEAwwLaXQuc3VwcmEudGYxITAfBgkqhkiG9w0BCQEWEnJhZG9zbGF3QHNlcmJh
Lm92aDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMNpWo2R6qcUQKCO
3rTL2nBnPa33lS9mtvC+j7HHU2ZNHgSYsm6jVP0t3ARWEGPg4soTI95GBojO4KbA
lUNw8D5tza0rj45C70VeNZkk5n6Y9OsoMyOrOPThZTmfJWdZXfN90rZC2leAdy24
7fTkcJ3jgkgHWgjbsu6kWvCLXgzPY71VfIFufDuUTLGHyD4RIAjT6MjML4SMToFU
vSQ3fwUbe+ayAV/XB0O2PR+zJ7TD1W4MoaJwTklPOb0pT/6sGNmOsxQiyoaqbK3q
nW8x37PKCXthwObpJMnyROXsyYCZqaHiDxtK7jEao4jyhUkzqcJyvHrv0RLwMZzr
OFgzxVECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQA+h+TmOmJuzdcAaeYdZmjs
bL1VJR4ih38/LU+ELjha+380SPA9bvbmHNYcGLtc8Y5aMi00TZoRwZ6HO4ALA11Y
JD0f5bC3c/JulHuBy+5wCMw4JyM8GFz2yrayi1wqXJVDp57kDjrB1GWhX8sG2oh6
yf+Y6wJk9zyO48Aglgg7w/ZtEjnyBID182yUxSNEJuBoOooNmGqCQrvTJZFgnXzJ
NQT1f4KlCZhE8g9bA8dWuIW7aAm2ssck/QI15jyj22zNYk0c5m+kdcDhjss6qjFw
m0LXnHCLWWdnBKqqraTy5G7ZNTDGxl43n74bRCGAJkotkh5RxX+e3BzihyCjg5dH
-----END CERTIFICATE REQUEST-----
Dzięki temu mam wygenerowany taki klucz prywatny w pliku local.key:
Następnie warto sobie przygotować config do generowania CSR (certificate signing request), czyli żądanie podpisania certyfikatu, ja sobie zapisałem go w pliku o nazwie config.cnf. Istotne w tym szablonie są pola CN oraz DNS.1 – one muszą być adresem FQDN naszego hosta, na którym jest zainstalowany FSSO Collector (w sensie agent), w moim przypadku jest to fsso-collector.serba.local:
Takie coś musimy przesłać do naszego CA, a w wyniku tego dostaniemy certyfikat. Wchodzimy więc na stronę naszego urzędu certyfikacji (musimy się przedtem autoryzować naszym kontem administracyjnym):
Po tym wybieramy Żądanie certyfikatu.
Następnie zaawansowane żądanie certyfikatu.
Tutaj sprawa jest prosta – wklejamy naszą zawartość CSRki i wybieramy odpowiedni szablon certyfikatu. W skrócie jest kilka predefiniowanych w naszym CA, można je zmieniać z przystawki certification authority i szablon Serwer sieci Web jest do serwerów HTTP, więc w sam raz, bo jest właśnie ten nam tutaj potrzebny. Klikamy Prześlij >.
Tutaj musimy tylko pobrać sam certyfikat i musi być szyfrowany algorytmem Base-64. Często w certyfikatach potrzebne są nam certyfikaty CA (chain) oraz certyfikat serwera (certificate). W niektórych serwerach wystawia się je w jednym pliku, przy czym najpierw jest zawartość certyfikatu serwera, a potem certyfikat CA (takie pliki są określane mianem fullchain). Tutaj wystarczy sam certyfikat serwera, a plik certyfikatu CA musi być dodany na naszym FortiGate. Taki można wrzucić tutaj:
Następnie certyfikat serwera oraz klucz prywatny, który stworzyliśmy na samym początku musimy podać w ustawieniach zaawansowanych (przycisk Advanced Settings) FSSO collectora:
U góry wskazujemy plik certyfikatu, w środku plik klucza prywatnego oraz na dole podajemy hasło, jakie zdefiniowaliśmy dla tego klucza, po czym klikamy Test, a jak hasło jest prawidłowe to klikamy OK. Dodam, że warto odblokować na firewallu w Windowsie komunikację pomiędzy naszym FortiGate’m a hostem z agentem na porcie TCP 8001 w dwie strony, bo inaczej to nie zadziała.
Po stronie FortiGate musimy jeszcze w ustawieniach External Connectors zaznaczyć opcję Trusted SSL Certificate i wybrać CA, które podpisało ten certyfikat i teoretycznie wszystko powinno być okej…
…ale jednak nie. Okazuje się, że nawet w najnowszej wersji FortiOS po włączeniu tego FortiGate dalej próbuje się łączyć z wykorzystaniem SSLa do collectora po porcie 8000 zamiast 8001. Tego się dowiedziałem w trakcie troubleshootingu z supportem Fortinetu (który sam przyznał, że dodali taką funkcję, bo 1 klient o to poprosił, ale w sumie tego nie ma nigdzie opisanego), więc w skrócie taki port trzeba aktualnie zmienić w CLI:
anzena-forti (fsso) # show config user fsso
edit "serba.local"
set server "fsso-collector.serba.local"
set port 8001 <======== w tym jest problem, trzeba to zmienić z 8000 na 8001
set password ENC H7/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa==
set ssl enable
set ssl-trusted-cert "SERBA-CA"
next
end
Zmieniamy to poleceniami:
anzena-forti # config user fsso
anzena-forti (fsso) # edit serba.local
anzena-forti (serba.local) # set port 8001
anzena-forti (serba.local) # end
Po tym komunikacja FortiGate z FSSO Collectorem po SSLu będzie działać.
Na koniec dodam, że Pan z Fortinet TAC sprawdzał to za pomocą sniffera poprzez CLI wykonując polecenie:
diag sniff packet any "port 8000" 6 0 a
Poza tym włączał debug mode poleceniami:
di de en
di de authd fsso server-status
Update: po aktualizacji do wersji FortiOS 6.4.2 zauważyłem, że dodano wiele portów do profili FSSO:
anzena-forti (fsso) # edit serba.local
anzena-forti (serba.local) #
set Modify value.
unset Set to default value.
get Get dynamic and system information.
show Show configuration.
next Configure next table entry.
abort End and discard last config.
end End and save last config.
anzena-forti (serba.local) # set
type Server type.
*server Domain name or IP address of the first FSSO collector agent.
*port Port of the first FSSO collector agent.
password Password of the first FSSO collector agent.
server2 Domain name or IP address of the second FSSO collector agent.
port2 Port of the second FSSO collector agent.
password2 Password of the second FSSO collector agent.
server3 Domain name or IP address of the third FSSO collector agent.
port3 Port of the third FSSO collector agent.
password3 Password of the third FSSO collector agent.
server4 Domain name or IP address of the fourth FSSO collector agent.
port4 Port of the fourth FSSO collector agent.
password4 Password of the fourth FSSO collector agent.
server5 Domain name or IP address of the fifth FSSO collector agent.
port5 Port of the fifth FSSO collector agent.
password5 Password of the fifth FSSO collector agent.
ldap-server LDAP server to get group information.
group-poll-interval Interval in minutes within to fetch groups from FSSO server, or unset to disable.
user-info-server LDAP server to get user information.
ssl Enable/disable use of SSL.
ssl-trusted-cert Trusted server certificate or CA certificate.
source-ip Source IP for communications to FSSO agent.
source-ip6 IPv6 source for communications to FSSO agent.
interface-select-method Specify how to select outgoing interface to reach server.
Poniżej przykład mojej konfiguracji:
config user fsso
edit "serba.local"
set server "dc1.serba.local"
set port 8001
set password ENC 2ADfLnGWaMcPrHrwp8gIddCjZsNg9EsPidsh4Gdy+eWPIi0GC6Dycw74/LqRRZNgpZJT44X9X6EpZV4qE3gCI01pgo5xUk4B0sqQGd+6YObAZEBvwT2vBzNFNXNI9ZZX2Db+n0GmrNIUECD0bUhDUalmZeeIqa341M0YirrJAJ+bv9AAgsMB891F77JpX4QNqzV4Gg==
set server2 "dc2.serba.local"
set port2 8001
set password2 ENC BJJKjYuknd0U+rMXrzjS8DLcgENw8aE+kW2gKipuXxh+gJYHB1TAdpr4GNDXRWY7/gSe5K0lrl8Y7L7fS2EHTJMsJx/MZ1q8NL2qSbAk7sZpkXMmFlSOBwXUg9RKN9eH/6TT6f1CZLOHc6vqjT11XXbdrKNgy6y9wNCipuef+PKK9OMrlxxh/yQjJ2TvA7rrPvP+Bg==
set ssl enable
set ssl-trusted-cert "SERBA-CA"
next
end
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:
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.