ArmA 2 - Podstawowe komendy
czwartek, 18 listopada 2010 20:28
Jon
NAJWAŻNIEJSZE KOMENDY UŻYWANE DO OPEROWANIA JEDNOSTKAMI W EDTYORZE.
Poniższy spis zawiera odpowiedzi na najpopularniejsze pytania dot. podstawowego operowania jednostkami i obiektami w procesie tworzenia misji.
Znakomitą większość poniższych komend używa się albo w inicjacji jednostki (pole INIT\Inicjacja\Uruchamianie w edytorowym okienku jednostki - wtedy używamy "this"), albo w polu aktywacji wyzwalacza lub waypointa (czasem działa "this", ale lepiej operować nazwami jednostek, np. "banan1" - pewniejsze). Komend owych możemy oczywiście używać kilka naraz, oddzielając kolejne komendy skryptowe średnikami (np Jarek disableAI "MOVE";Jarek SetUnitPos "UP").
This (jako określenie jednostki) można prawie zawsze zamienić nazwą jednostki, np do wspomnianego już użytku w wyzwalaczu czy skrypcie; Nazwę jednostki ustalamy w polu "Nazwa" w edytorowym oknie jednostki (Patrz: Artykuł "Podstawy").
By ustawić jednostkę na konkretnej wysokości:
| |
| this setpos [(getpos this select 0),(getpos this select 1),(getpos this select 2) + X] |
gdzie X to wysokość; jeśli chcesz wtopić jakis przedmiot w ziemię zastępujesz "+" minusem;
Jeśli chcesz użyć jakieś wartości pośredniej to używasz kropki, np. 2.5 da Ci 2 i pół metra wys.
Przykład:
| |
| banan1 setpos [(getpos this select 0),(getpos this select 1),(getpos this select 2) + 4.5] |
da nam efekt w postaci jednostki opisanej jako "banan1" na wysokości 4 i pół metra.
Sprawia, że AI będzie przebywać tylko w jednej określonej przez Ciebie pozycji.
Stojąca:
Kucająca:
Leżąca:
By przywrócić AI (jednostce banan1) możliwość decydowania o tym w jakiej powinno być pozycji wpisz:
| Kod: |
| banan1 SetUnitPos "AUTO" |
Przeniesienie jednostki "banan1" z aktualnej pozycji na miejsce "bananowe_pole":
| |
| banan1 setpos (getpos bananowe_pole) |
by przenieść więcej bananów:
| |
| {_x setpos (Getpos bananowe_pole)}foreach [banan1,banan2] |
By stworzyć Combat Chatter:
| |
| banan1 sidechat "Baza Foxtrot, tu Alfa, brakuje nam alkoholu" |
By komunikaty wysyłał lider grupy:
| |
| (leader group banan1) sidechat "Baza Foxtrot, tu Alfa, brakuje nam alkoholu" |
banan1 to w tym wypadku nazwa jednostki, nie grupy!
Możliwe kanały komunikacji:
wiadomość widoczna dla wszystkich
komunikat widoczny jedynie dla jednostek tej samej strony
komunikat widoczny jedynie dla jednostek z tej samej grupy
Jednostki nie będą uciekać\poddawać się po wpisaniu w init dowódcy:
| |
| group this allowfleeing 0 |
Potrzebne\widoczne jedynie w procesie tworzenia misji. W Inicjacji ("Uruchamianiu") dowódcy grupy:
DOŁĄCZENIE / ODŁĄCZENIE JEDNOSTEK DO GRUPY
By w trakcie gry manipulować przydziałem jednostki...
By przyłączyć jednostki "przyszly_banan1" i "przyszly_banan2" do grupy o zadeklarowanej wcześniej nazwie "banany":
| |
| [przyszly_banan1,przyszly_banan2] Join banany |
Jeśli nie deklarowaliśmy nazwy, a mamy nazwanego dowódcę danej grupy możemy zrobić to tak:
| |
| [przyszly_banan1,przyszly_banan2] Join (Group banan3) |
Można też użyć polecenia JoinSilent. Polecenie działa tak samo, jak "Join" tylko nie aktywuje okrzyków dowódcy oddziału (Five follow one, itp).
| |
| [przyszly_banan1,przyszly_banan2] JoinSilent banany |
Aby odłączyć jednostki od grupy, wpisujemy następujące polecenie:
| |
| [byly_banan1,byly_banan2] Join GrpNull |
Jednostki odłączą się od obecnej grupy i utworzą własną dwuosobową drużynę. Jeśli chcemy, by byli rozdzieleni, musimy wpisać to polecenie osobno dla każdego banana.
Jeśli chcemy, by w grze przy komunikatach radiowych zamiast np. "1-1-A" wyświetlało się, dajmy na to, "Banans", wpisujemy dowódcy grupy następujące polecenie:
| |
| this setGroupID ["Banans",""] |
WSADZANIE JEDNOSTEK DO POJAZDÓW
Kody poniżej, uwaga - "driver" używa się niezależnie od tego czy mamy do czynienia z samolotem, spadochronem, samochodem czy motorówką.
| |
| banan1 MoveInDriver helikopter_bananów6 |
Jednostka "banan1" będzie kierować pojazdem "helikopter_bananów6"
| |
| banan1 MoveInGunner helikopter_bananów6 |
Jednostka "banan1" będzie strzelcem pojazdu "helikopter_bananów6"
| |
| banan1 MoveInCargo helikopter_bananów6 |
Jednostka "banan1" będzie pasażerem pojazdu "helikopter_bananów6"
By umieścić jednostkę na konkretnej pozycji strzelca (gdy pojazd posiada kilka):
| |
| banan1 moveInTurret [bmp4, [0, 0]] |
w takim wypadku jednostka "banan1" będzie strzelcem pojazdu nazwanego "bmp4". Zajmie pozycje w wieżyczce pojazdu oznaczoną indeksem [0, 0].
Wyrzucenie jednostki z pojazdu:
| |
| banan1 action ["eject", helikopter_bananów6] |
Warto też wpisać:
[banan1] OrderGetIn false[/code]by jednostka nie próbowała wsiąść z powrotem do pojazdu tuż po jej wyrzuceniu (zdarza się).
NATYCHMIASTOWE UŚMIERCENIE JEDNOSTKI
Jeżeli chcemy by jakaś jednostka zginęła bez udziału w tym graczy, wystarczy że wpiszemy:
gdzie X może przyjmować wartości od 0 (całkowicie zdrowy) do 1 (martwy). Można regulować poziom zadanych obrażeń, włącznie z pośrednimi wartościami, wpisywanymi standardowo z kropką, np. 0.2 dla lekkich, niegroźnych ran.
ZNISZCZENIE OBIEKTU (via ID)
Powiedzmy, że chcesz zniszczyć sekcję mostu.
Ustaw marker (nazwij go np. demolka1) w pobliżu kawałka mostu który ma zostać zniszczony i wpisz w wyzwalaczu albo w init dowolnej jednostki:
| |
| ((getmarkerpos "demolka1") nearestObject IDmostu) setdammage 1 |
ZMIANA ILOŚCI PALIWA W POJEŹDZIE
By zmienić ilość dostępnego danej jednostce paliwa wpisujemy:
gdzie X jest liczbą z przedziału od 0 (pusty bak) do 1 (pełny bak), włączając w to liczby pośrednie. Polecenie przydatne w sytuacjach, gdy chcemy natychmiastowo odciąć paliwo danej jednostce (np. śmigłowcowi - katastrofa lotnicza).
Poniższe wpisujemy do aktywacji wyzwalacza:
| |
| bum = "Sh_125_SABOT" createVehicle position TuMaBycBum |
TuMaBycBum - nazwa elementu logicznego, jednostki, etc (nie markera).
ZAPALANIE / GASZENIE OGNISK BĄDŹ LATARNI
Służą do tego komendy:
Zapala ognisko, beczkę, itd.
Gasi płonący\świecący obiekt.
Działa to także na latarnie. Żeby zgasić latarnię potrzebujemy jej numeru ID na mapie a następnie wstawić w tym miejscu marker i użyć takiego polecenia:
| |
| ((getmarkerpos "latarnia") nearestObject nrIDlatarni) inflame false |
By zmienić pogodę:
gdzie X jest liczbą z przedziału od 0 (słońce, bezchmurne niebo) do 1 (pełne zachmurzenie, bardzo prawdopodobny deszcz i mgła), włączając w to liczby pośrednie, podczas gdy Y oznacza czas (określany w sekundach) w jakim nastąpi dana zmiana. Czyli np:
spowoduje płynną zmianę zachmurzenia do poziomu 0.5 (czyli połowa suwaka, który ustawiasz w edytorze), w czasie równym 1800 sekund.
Jeśli chcesz być pewien, że będzie padać, warto także użyć komendy:
By ustawić zasięg widzenia gracza\y w misji:
gdzie X jest liczbą między 500 a 9999
blokuje zasięg widzenia gracza dla danej misji na odległości 2000 metrów.
By "przeskoczyć" o parę godzin do przodu lub do tyłu:
Gdzie X to żądana liczba godzin.
Żeby efekt wyglądał porządnie, należy go używać razem ze ściemnieniem i rozjaśnieniem ekranu, czyli:
| |
cutText ["","BLACK OUT",3]
~3
skipTime 5
cutText ["","BLACK IN",3] |
PRZYSPIESZENIE / SPOWOLNIENIE UPŁYWU CZASU
By spowolnić upływ czasu (efekt natychmiastowy):
gdzie X jest wartością (pośrednią) z przedziału od 0 do 4 gdzie 1 to normalny upływ czasu.
UWAGA: użycie wartości 0 zawiesi grę.
Przydatne do wykreowania efektu "slow motion" (w wypadku użycia wartości albo pokazania wędrówki słońca po niebie.
ZAMYKANIE / OTWIERANIE POJAZDÓW
By zamknąć dany pojazd (Zarówno gracz, jak i AI nie będzie w stanie do niego wsiąść):
Z kolei by z danego pojazdu można było skorzystać:
Polecenia działa lokalnie, co znaczy, że do prostego użytku nadaje się tylko w misjach singleplayer.
Polecenie przydaje się, gdy nie chcemy, by wróg atakował jednostkę, ze strony przeciwnej.
Polecenie wyłączamy podobnie, z tym, że zamiast true umieszczamy false.
UWAGA: Jednostka "banan", mimo iż nie nękana wrogimi atakami, sama dalej będzie strzelać do każdego napotkanego przeciwnika. Ponadto jednostka z wpisanym tym poleceniem nie jest rozpoznawana przez wyzwalacze ustawione na aktywację przez obecność danej strony.
WYŁĄCZANIE POSZCZEGÓLNYCH ZACHOWAŃ AI
By odebrać AI możliwość ruchu:
By wyłączyć sekcję sztucznej inteligencji odpowiedzialnej za celowanie i ostrzał wrogich jednostek:
By wyłączyć sekcję sztucznej inteligencji odpowiedzialnej za samodzielne wyszukiwanie celów i obserwację nieznanych jednostek:
| |
| banan DisableAI "AUTOTARGET" |
By uniemożliwić jednostce zmianę obecnej animacji:
Każdą sekcję AI można ponownie włączyć, używając analogicznie polecenia EnableAI w miejsce DisableAI.
By zmienić zachowanie AI na
"Stealth":
| |
| banan setBehaviour "STEALTH" |
Bojowe:
| |
| banan setBehaviour "COMBAT" |
Uważne:
| |
| banan setBehaviour "AWARE" |
Spokojne:
| |
| banan setBehaviour "SAFE" |
Beztroskie:
| |
| banan setBehaviour "CARELESS" |
ZMIANA UZBROJENIA JEDNOSTKI
Broń i magazynki to w świecie OFP\ARMA osobne klasy. Każdą z tych rzeczy odejmujesz i dodajesz osobno (pomijając kod usuwający całość wyposażenia)
kompletnie rozbroi (usunie całe uzbrojenie) jednostkę, której to wpisałeś
tym damy żołnierzowi broń określoną klasą "M16"
| |
| this addmagazine "M16_mag" |
tym damy żołnierzowi magazynek określany klasą "M16_mag"
| |
| this addweaponcargo ["M16",2] |
doda do pojazdu lub skrzyni 2 m16
| |
| this addmagazinecargo ["M16_mag",10] |
doda do pojazdu lub skrzyni 10 magazynków do m16
- usuwa z pojazdu\skrzyni całą dostępną broń
- usuwa z pojazdu\skrzyni całą dostępną amunicję i pirotechnikę
UWAGA - Po odebraniu całej broni żołnierzowi należy wpisać:
| |
| this addweapon "PUT";this addweapon "THROW"; |
by mógł on podnosić\używać granatów, i innych rzucanych czy 'kładzionych' rzeczy.
Większość nazw klas broni i magazynków z ArmA 2 i dodatków znajdziesz u nas na stronie oraz forum. Gdy w grę wchodzą mody - należy sprawdzić pliki tekstowe dołączone do modu bądź addonu. Jeśli jednak z jakiegoś powodu chcesz dowiedzieć się jak nazywa się klasa broni i amunicji danej jednostki*:
Wyświetla nazwę klasy używanej broni (podczas wystrzału):
| |
| this addeventhandler ["fired",{hint format ["Name of shot is: %1", (_this select 2)]}] |
Wyświetla nazwę klas posiadanych przez "banan1" magazynków:
| |
| hint format["%1",magazines banan1] |
*Bo np. masz addon bez spisu klas - pozdrawiamy leniwych addonmakerów ;)
Czasem chcemy, by dany marker nie był widoczny dla graczy (przydatne szczególnie przy korzystaniu ze skryptu UPS) - w tym celu należy użyć poniższej komendy.
| Kod: |
| "nazwa_markera" setMarkerAlpha 0 |
Przykład:
| Kod: |
| "oboz_wroga" setMarkerAlpha 0 |
Jeśli chcemy by markery nie wyświetlały się już w briefingu (np. ze względu na użycie wspomnianego skryptu), kod ów należy wpisać do naszego init.sqf - należy przy tym pamiętać o średnikach oddzielających komendy!
ODPALANIE SKRYPTU SQS\SQF
Odpowiednio:
| |
| nul=[this] exec "nazwa_skryptu.sqs" |
dla pliku .sqs, bądź
| |
| nul=[this] execVM "nazwa_skryptu.sqf" |
dla pliku SQF.