Zmiana zachowania wszystkich jednostek w obrębie wyzwalacza

Moderator: Inkwizytor

ODPOWIEDZ
Lejek
Posty: 5
Rejestracja: 21 września 2011, 16:00
ID Steam:

Zmiana zachowania wszystkich jednostek w obrębie wyzwalacza

Post autor: Lejek »

Witam.
To mój pierwszy post. Szukałem na ten temat ale nie znalazłem żadnego rozwiązania. Otóż, robię swoją pierwszą misje.
Wygląda to tak:
Jest jednostka wojskowa pod kontrolą East. Żołnierze w jednostce mają ustawione przeze mnie różne typy zachowań, w szczególności "bezpiecznie" i "beztrosko". Na wzgórzu siedzi snajper West. Po chwili przylatuje MI-17 i wysiada z niego oficer o nazwie oficer. Jako snajper muszę zlikwidować oficera. I teraz chcę aby po zlikwidowaniu oficera, wszyscy żołnierze w obrębie wyzwalacza mieli zachowanie "bojowo". Więc umieściłem wyzwalacz, w warunku wpisałem

Kod: Zaznacz cały

NOT (alive oficer)
i przy uruchamianiu wpisałem

Kod: Zaznacz cały

{_x setBehaviour "Stealth"} forEach thislist
. Kombinowałem również z nazwaniem wyzwalacza "area" i wpisałem przy uruchamianiu

Kod: Zaznacz cały

"{_x setBehaviour "Stealth"} forEach list Area"
Też nie działa. Siedzę nad tym cały dzień i już nie wiem co zrobić. Nie chce grupować jednostek bo mam ich dużo.

Proszę o pomoc.
Awatar użytkownika
kondor
Posty: 1522
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: kondor »

Według http://community.bistudio.com/wiki/setBehaviour parametrem jest grupa, a nie jednostka (choć w komentarzach piszą, że z jednostką też działa).
Spróbuj więc zmienić na:

Kod: Zaznacz cały

{(group _x) setBehaviour "Stealth"} forEach thislist
Aby mieć pewność, że wyzwalacz się wykonał daj też jakiś hint dla testu:

Kod: Zaznacz cały

{(group _x) setBehaviour "Stealth"} forEach thislist; hint "zmieniono zachowanie"
Nie wiem też jak ważna (zazwyczaj nie była) jest wielkość liter t.j. "STEALTH" zamiast "Stealth".
Lejek
Posty: 5
Rejestracja: 21 września 2011, 16:00
ID Steam:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: Lejek »

Niestety nic nie daje. Wyzwalacz się uruchamia bo pojawia się tekst, ale AI nie zmieniają swojego zachowania, bo przecież w całej jednostce powinni się położyć na ziemie.
Awatar użytkownika
kondor
Posty: 1522
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: kondor »

A dodaj to na końcu, żeby sprawdzić, czy im się pozmnieniało:

Kod: Zaznacz cały

{(group _x) setBehaviour "Stealth"} forEach thislist; beh = ""; { beh = beh + ", " + (behaviour _x); } forEach thislist; hint beh;
Awatar użytkownika
Sejtan
Posty: 112
Rejestracja: 03 kwietnia 2007, 20:54
ID Steam: sejtan24
Numer GG: 6538171
Lokalizacja: Starogard Gdański

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: Sejtan »

Najlepszym sposobem, żeby sprawdzić czy zachowanie się zmieniło jest:

Kod: Zaznacz cały

hint format ["%1", behaviour aP1]
aP1 = nazwa jendego z żołnierzy w obrębie wyzwalacza. Aktywowane radiem wielokrotnie..., ale jak rozwiązać ten problem nie mam pojęcia :?: Sprawdzałem w Armed Assault Editing Guide od Mr Murray'a i znalazłem tylko to:

Kod: Zaznacz cały

{_x setBehaviour "Stealth"} forEach list Area1
czyli wszystko dobrze masz napisane, jednak u mnie też nie działa, sprawdzałem na Armie 2
Lejek
Posty: 5
Rejestracja: 21 września 2011, 16:00
ID Steam:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: Lejek »

To może jakoś dołączyć wszystkich do jakiejś grupy i wtedy? Tylko za bardzo nie wiem jak.
gremdek
Posty: 261
Rejestracja: 13 grudnia 2006, 16:53
ID Steam:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: gremdek »

błąd leży pewnie w tym, że wyzwalacz nie wybranych opcji:
aktywacja: OBECNY
kto: WSCHÓD
czy jak to tam są nazwane w armie te pola.

zapewne podawałeś pustą listę do zmiany zachowania.

przypomnę:
thislist

In Triggers ("Condition" or "On Activation/Deactivation" line): An Array of objects that are currently fulfilling the trigger's condition (same as the what is returned by the list command).
cfog skończył się na kill'em all
Lejek
Posty: 5
Rejestracja: 21 września 2011, 16:00
ID Steam:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: Lejek »

Chyba zadziałało.

Faktycznie w polu aktywacja miałem brak. Zaznaczyłem Wschód i teraz po zabiciu oficera żołnierze biegają, kładą się, obserwują przedpole potem biegną i tak w kółko.
Wykorzystałem to polecenie:

Kod: Zaznacz cały

{_x setBehaviour "Stealth"} forEach list Area1
i nazwałem wyzwalacz Area1. Nie do końca rozumiem z tą listą. Mógłbyś wyjaśnić?

Dzięki serdeczne
gremdek
Posty: 261
Rejestracja: 13 grudnia 2006, 16:53
ID Steam:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: gremdek »

lista to złe określenie bo to nie jest lista (w rozumieniu programisty) tylko tablica.

thislist to jest to samo co list "nazwa_wyzwalacza", tylko musi być użyte w aktywacji/warunku wyzwalacza (tam gdzie się pisze).
zwraca tablicę jednostek które spełniają warunek wyzwalacza, ale warunek nie ten wpisywany, tylko to co się tam powybiera.

czyli jak dasz "obecny" "wschód" to w thislist będą wszystkie jednostki wschodu znajdujące się w obrębie wyzwalacza. dasz "obecny" "ktokolwiek" to w thislist będą wszystkie jednostki. dasz "nieobecny" "zachód" to nie wiem co tam będzie, chyba nic :P


a w twoim przykładzie, przy braku zaznaczenia "obecny" "wschód"

Kod: Zaznacz cały

{_x setBehaviour "Stealth"} forEach thislist
było równoznaczne

Kod: Zaznacz cały

{_x setBehaviour "Stealth"} forEach []
czyli nic się nie działo.
cfog skończył się na kill'em all
Lejek
Posty: 5
Rejestracja: 21 września 2011, 16:00
ID Steam:

Re: Zmiana zachowania wszystkich jednostek w obrębie wyzwala

Post autor: Lejek »

Dzięki, Temat do zamknięcia.
ODPOWIEDZ

Wróć do „Edytor - tworzenie misji, skrypty oraz programowanie”