Możesz schować granat po wyjęciu zawleczki.
Twórcy gry oddali w ręce graczy składnię pozwalającą przypisywać klawiszom więcej niż jedną funkcję. Dzięki takiemu rozwiązaniu możemy tworzyć skrypty, w których klawisze same bindują inne przyciski, co pozwoli nam dodatkowo zaoszczędzić miejsce na klawiaturze.
Polecenia z plusem
Jak wiemy, przy pomocy konsoli i plików konfiguracyjnych możemy przypisywać klawiszom funkcje, które wywołujemy jednorazowo (tak jak w przypadku bindów radiowych), możemy też tworzyć toggle, czyli przełączniki (np. ukrywanie i pokazywanie minimapy, domyślnie klawiszem M). Oprócz nich istnieje jeszcze możliwość wywołania pożądanej akcji nie przez pojedyncze wciśnięcie klawisza, ale przez przetrzymanie go wciśniętego. Jako przykłady takich poleceń można wymienić akcje +attack (strzelanie), +scores (pokazywanie tabeli wyników), +speed (chodzenie zamiast biegania). Oprócz funkcji domyślnie wbudowanych w silnik gry, możemy przypisywać klawiszom własne, wyrażone funkcją set. Składnia, którą się posłużymy, wygląda następująco:
bind X "+vstr WCISNIECIE PUSZCZENIE"
gdzie WCISNIECIE i PUSZCZENIE to nazwy akcji wywoływanych odpowiednio przez wciśnięcie i puszczenie klawisza X.
Takie rozwiązanie stanowi dobrą propozycję, jeśli zostało nam mało wolnych klawiszy na klawiaturze, lub gdy obecna konfiguracja nie jest zbyt wygodna, a mamy jeden wolny klawisz w dobrym położeniu.
Przykłady skryptów z +vstr
Zoomin i zoomout pod jednym klawiszem
Nie każdy ma mysz z dodatkowymi przyciskami, nie dla każdego też korzystanie z osobnych przycisków do włączania i wyłączania zoomu jest wygodne. Stwórzmy bind, który po wciśnięciu wybranego klawisza włączy celownik optyczny, a puszczenie go powróci do normalnego widoku.
Interesujące nas akcje to ut_zoomin i ut_zoomreset. Polecenie +vstr wykonuje akcje sprowadzone wcześniej do wyrażenia set, nadajmy im zatem aliasy:
set ZOOM_ON "ut_zoomin"
set ZOOM_OFF "ut_zoomreset"
Niech klawiszem wywołującym zoom będzie prawy przycisk myszy, czyli MOUSE2:
bind MOUSE2 "+vstr ZOOM_ON ZOOM_OFF"
Gotowy skrypt wygląda zatem tak:
set ZOOM_ON "ut_zoomin"
set ZOOM_OFF "ut_zoomreset"
bind MOUSE2 "+vstr ZOOM_ON ZOOM_OFF"
Aby z niego skorzystać, musimy umieścić go w pliku konfiguracyjnym – możemy użyć do tego konsoli, pliku autoexec.cfg, nowego pliku konfiguracyjnego, lub po prostu dopisać w q3config.cfg.
Powyższy skrypt możemy dowolnie edytować – jeżeli często używamy G36, warto zmniejszyć nieco czułość myszy na czas korzystania z celownika optycznego:
set ZOOM_ON "ut_zoomin ; sensitivity 1"
set ZOOM_OFF "ut_zoomreset ; sensitivity 2"
bind MOUSE2 "+vstr ZOOM_ON ZOOM_OFF"
Wpisane tutaj wartości parametru sensitivity służą oczywiście jako przykład – 2 oznacza tu czułość, z jakiej korzystamy na co dzień, a 1 – czułość podczas trzymania wciśniętego MOUSE2. Możemy dodać jeszcze zmianę pola widzenia (cg_fov), co dodatkowo ułatwi nam celowanie z włączonym zoomem:
set ZOOM_ON "ut_zoomin ; sensitivity 1 ; cg_fov 90"
set ZOOM_OFF "ut_zoomreset ; sensitivity 2 ; cg_fov 100"
bind MOUSE2 "+vstr ZOOM_ON ZOOM_OFF"
Podobnie jak wyżej, wartości cg_fov musisz dobrać sam. Tu 90 oznacza pole widzenia z włączonym zoomem, a 100 – kiedy powrócimy do normalnego widoku.
Wybór ekwipunku przyciskami myszy
Stwórzmy skrypt, który ułatwi nam wybieranie, włączanie/wyłączanie i wyrzucanie przedmiotów z naszego ekwipunku. Wykorzystamy możliwość sprowadzania wielu akcji do jednego wyrażenia set i wywoływanie go z użyciem komendy +vstr.
Domyślne przypisanie akcji wymienionych powyżej nie jest zbyt wygodne – aby przewijać posiadane przedmioty trzeba przesunąć jedną rękę w okolice nawiasów kwadratowych, popatrzeć na klawiaturę i trafić w P lub - (znak minus). Załóżmy, że chcemy wykorzystać przyciski dostępne bez odrywania wzroku z ekranu, jednak szkoda nam najlepszych klawiszy na akcje, z których rzadko korzystamy. W moim przypadku będą to przyciski myszy (lewy, prawy oraz ruch rolki w górę i dół), które na czas wciśnięcia X będą kolejno wyrzucać przedmiot, włączać/wyłączać go i przewijać listę dostępnych (odpowiednio do tyłu i do przodu).
Standardowo używam ich w takiej konfiguracji (po dwóch ukośnikach możemy zapisać własne komentarze, które silnik gry zignoruje podczas wczytywania skryptu):
bind MOUSE1 "+attack” //strzelanie
bind MOUSE2 "ut_zoomin" //celownik optyczny broni, zwiększenie zoomu
bind MWHEELUP "ut_zoomreset ; ut_weaptoggle primary" //reset zoomu lub wybranie broni głównej
bind MWHEELDOWN "ut_weaptoggle secondary sidearm" //wybranie broni bocznej, a jeśli jej nie mam, pistoletu
Zbierzmy te wszystkie polecenia i zapiszmy je jako jedną akcję, stanowiącą zapis konfiguracji, do której chcemy powrócić po puszczeniu klawisza X:
set PUSZCZENIE "bind MOUSE1 "+attack” ; bind MOUSE2 "ut_zoomin" ; bind MWHEELUP "ut_zoomreset ; ut_weaptoggle primary" ; bind MWHEELDOWN "ut_weaptoggle secondary sidearm""
Zwróć uwagę na cudzysłowy – jedna para ogranicza całe wyrażenie, któremu nadajemy alias, poszczególne pary ograniczają funkcje przypisywane klawiszom w środku formuły (ma to szczególne znaczenie w przypadku MWHEELUP, któremu przypisujemy dwie funkcje – gdyby cudzysłowów nie było w ogóle, gra przypisałaby mu wykonanie tylko akcji ut_zoomreset, traktując ut_weaptoggle primary jako kolejne polecenie). Średnikami oddzielamy poszczególne części. Nie ma znaczenia, czy przed lub po średniku będzie spacja.
Mamy odpowiednio spreparowaną jedną akcję, pozostało nam zrobić to samo z drugą. Konfiguracja pożądana w czasie trzymania X przedstawia się następująco:
bind MOUSE1 "ut_itemdrop" //wyrzucenie przedmiotu
bind MOUSE2 "ut_itemuse" //włączenie lub wyłączenie przedmiotu
bind MWHEELUP "ut_itemprev" //poprzedni przedmiot
bind MWHEELDOWN "ut_itemnext" //następny przedmiot
Podobnie jak wcześniej, sprowadźmy wszystkie polecenia do jednej akcji:
set WCISNIECIE "bind MOUSE1 "ut_itemdrop" ; bind MOUSE2 "ut_itemuse" ; bind MWHEELUP "ut_itemprev" ; bind MWHEELDOWN "ut_itemnext""
Mamy już oba składniki, które podstawiamy do pierwszego wzoru:
bind X "+vstr WCISNIECIE PUSZCZENIE"
Teraz pozostało nam tylko zebrać dane niezbędne silnikowi gry do zrozumienia naszych intencji, zapisać całość jako plik *.cfg (lub dopisać do autoexec.cfg), a następnie modlić się, żeby konsola nie zwróciła informacji o błędzie po wczytaniu pliku ze skryptem.
set PUSZCZENIE "bind MOUSE1 "+attack" ; bind MOUSE2 "ut_zoomin" ; bind MWHEELUP "ut_zoomreset ; ut_weaptoggle primary" ; bind MWHEELDOWN "ut_weaptoggle secondary sidearm"” set WCISNIECIE "bind MOUSE1 "ut_itemdrop" ; bind MOUSE2 "ut_itemuse" ; bind MWHEELUP "ut_itemprev" ; bind MWHEELDOWN "ut_itemnext""
bind X "+vstr WCISNIECIE PUSZCZENIE"
Należy pamiętać o ustawieniu danych w porządku, w jakim powinien przeczytać je silnik gry. Skrypt zaczynamy od zadeklarowania akcji, które zostaną wywołane w dalszej części kodu. Można dodać na końcu polecenie wykonania akcji PUSZCZENIE (czyli dopisać vstr PUSZCZENIE), aby dla pewności na starcie wczytać domyślną konfigurację klawiszy, w tym konkretnie przypadku nie będzie to miało jednak żadnego znaczenia.
Można kwestionować funkcjonalność tego konkretnie skryptu, jako że akcje ut_itemdrop kevlar i ut_itemdrop flag powinniśmy mieć zbindowane tak czy inaczej, by zawsze być w stanie szybko pozbyć się kamizelki kuloodpornej lub flagi. Gra nie daje jednak możliwości włączenia/wyłączenia celownika laserowego (zmienia kolejność ułożenia przedmiotów na liście i akcja ut_itemuse często nie działa tak, jakbyśmy tego chcieli). Zamiast wykorzystywać polecenie +vstr mogliśmy stworzyć toggle – przełączanie konfiguracji jednym przyciskiem, jednak w tej sytuacji ryzyko przypadkowego wprowadzenia zmian jest zbyt duże.
Pobierz
Sam używam dwóch skryptów korzystających z dobrodziejstw +vstr. Jeden z nich pomaga mi wyrzucać, wedle życzenia, kamizelkę, apteczkę lub trzymaną aktualnie broń, a drugi dopasowuje gammę (rozjaśnienie) w grze.
Wyrzucanie elementów ekwipunku jednym przyciskiem [pobierz]
Dopasowywanie jasności bez wchodzenia do menu [pobierz]
Należy pamiętać, że wartości użyte w skrypcie nie są uniwersalne i każdy powinien ustawić zakres jasności samemu (w moim przypadku wartości rozpinają się pomiędzy 1.10 a 1.76 ze skokiem co 0.02 – taki układ pozwala mi precyzyjnie dostosować jasność na każdej mapie). Jeżeli dotarłeś aż tutaj, nie powinieneś mieć problemu z modyfikacją tego skryptu.
Pamiętaj, by przed dokonaniem jakichkolwiek zmian zrobić kopię zapasową pliku q3config.cfg.
W następnym odcinku: omijanie bana i przejmowanie kontroli nad konsolą RCON.
Fajnie opisane z tym, że większość bindów raczej nie przydatna. Ale zawsze można samemu pokombinować.
Zgadza się, bo „ciało” tekstu to tylko instrukcja mówiąca o tym, jak takie skrypty pisać. Użyteczne rozwiązania wrzuciłem do ostatniego akapitu. I uwierz mi, pisałem przez rok skrypty na wszystko, a tak naprawdę przydatny okazał się jeden, ten na wyrzucanie ekwipunku. Zdaję sobie jednak sprawę, że niektórzy przełączają configi, głosują w głosowaniach, wywołują je, zmieniają kolory celownika w zależności od drużyny, w której wylądowali… Komuś może się to przydać.
Możesz schować granat po wyjęciu zawleczki.
miodzio :*