Czego to warunek?

Moderator: Inkwizytor

ODPOWIEDZ
Awatar użytkownika
SaS TrooP
Posty: 1586
Rejestracja: 30 października 2008, 17:30
ID Steam:
ID gracza: 0
Lokalizacja: Wodzisław Śl.
Kontakt:

Czego to warunek?

Post autor: SaS TrooP »

Masz rację kondor, smietnik robię, to zakładam nowy temat. Przejrzałem również parę misji. Nie wiem co znaczy właśnie to, co już pokazywałem:

Kod: Zaznacz cały

_wl = _this select 0

? (!_wl) or (!st) : goto "poakcji"
Z tego, co umiem odczytać _wl jest zmienną, którą jest obiekt aktywujący skrypt (komenda select 0 była zawsze tak przeze mnie używana). Po dłuższym zastanowieniu stwierdzam, iż nie rozumiem warunku, jaki musi spełnić _wl, by przejść do "poakcji". W samej misji nie ma o tym ani słowa.
Awatar użytkownika
Trance
Posty: 1090
Rejestracja: 20 maja 2007, 19:06
ID Steam:
ID gracza: 0

Re: Czego to warunek?

Post autor: Trance »

nie widze tu nigdzie zdefiniowanej smiennet st czy jak jej tam.
zmienna _w1 przechowuje wartosc true lub false,
linijka _w1 = _this select 0 nie oznacza zadnej aktywacji czy jak tam pisałes, to poprostu element o indeksie 0 (czyli pierwszy) w tablicy _this, w ktorej to tablicy przekazywane sa parametry przy uruchamianiu skryptu.
Obrazek
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Czego to warunek?

Post autor: kondor »

Ten warunek mówi, że zmienna _w1 lub zmienna st musi mieć wartość false, aby przejść do "poakcji".
Zmienna st jest zmienną zapewne zmienną globalną utworzoną gdzieś wcześniej. Jak widać na tym przykładzie, nazywanie byle jak zmiennych jest niedobrą praktyką.
Uwaga : operator logiczny "lub" (or) zwraca true również w przypadku, gdy 2 argumenty tej operacji mają wartość true (co nie jest dla wszystkich oczywiste), to jest:
false or false => false
true or true => true
true or false => true
false or true => true
Awatar użytkownika
SaS TrooP
Posty: 1586
Rejestracja: 30 października 2008, 17:30
ID Steam:
ID gracza: 0
Lokalizacja: Wodzisław Śl.
Kontakt:

Re: Czego to warunek?

Post autor: SaS TrooP »

Czyli zadziała, jeśli coś z tych rzeczy będzie wykonane w niewaznej kolejności? Po prostu by "coś było true"?

A w jaki sposób lub jakim skryptem można dokładnie opisać tą zmienną? Czy potrzeba na to kolejnego skryptu?

Czy na przykład można w1 określić jako eventhandlera podlegającemu pod "fired"?

Kod: Zaznacz cały

_w1 = jednostka addEventHandler ["fired", {_this exec "strzal.sqs"}]
:oops:
Nie korzystałem z EventHandlerów i nie mam pojęcia czy to ruszy...
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Czego to warunek?

Post autor: kondor »

SaS TrooP pisze:Czyli zadziała, jeśli coś z tych rzeczy będzie wykonane w niewaznej kolejności? Po prostu by "coś było true"?
Nie. Warunek bada zaprzeczone wartości, czyli potrzeba by coś było false w trakcie sprawdzania tego warunku.
SaS TrooP pisze: A w jaki sposób lub jakim skryptem można dokładnie opisać tą zmienną? Czy potrzeba na to kolejnego skryptu?
co znaczy "opisać"? Zmienić jej wartość? Jeśli tak to zmienić jej wartość można instrukcją przypisania, czyli:

Kod: Zaznacz cały

_w1 = nowa_wartosc;
niestety, pokreślnik na początku nazwy zmiennej mówi i czyni ją zmienną lokalną w skrypcie, czyli ta zmienna nie istnieje na zwenątrz skryptu, a jeśli nawet gdzieś istnieje zmienna o takiej samej nazwie to nie ma nic wspólnego z tą.

Kod: Zaznacz cały

_w1 = _this select 0
ta zmienna bierze swoją wartość z pierwszego argumentu wywołania skryptu, czyli właśnie w parametrze skryptu możesz ingerować w nią
SaS TrooP pisze: Czy na przykład można w1 określić jako eventhandlera podlegającemu pod "fired"?

Kod: Zaznacz cały

_w1 = jednostka addEventHandler ["fired", {_this exec "strzal.sqs"}]
W ten sposób tylko przypiszesz pod zmienną lokalną _w1 (która poza skryptem, w którym wywołano powyższą komendę, nie istniej) numer (indeks) dodanego eventhandlera. Chyba nie o to Ci chodziło?
Awatar użytkownika
SaS TrooP
Posty: 1586
Rejestracja: 30 października 2008, 17:30
ID Steam:
ID gracza: 0
Lokalizacja: Wodzisław Śl.
Kontakt:

Re: Czego to warunek?

Post autor: SaS TrooP »

Generalnie chodziło mi o to, żeby zrobić skrypt powodujący, że jeśli gracz wystrzeli na określonym obszarze, to wszyscy się na niego rzucają. Jak to zrobić? Gdzieś takie coś kiedyś robiłem, ale nie umiem tego teraz znaleźć (a ponadto mam 39 stopni, więc sam rozumiesz, że niezbyt chwilowo mi się chce tego szukać na odmętach dysku). Chodzi o to, że da się to chyba przedstawić bez zmiennej, a tam było właśnie z nią.
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: Czego to warunek?

Post autor: kondor »

Wystarczy w strzal.sqs sprawdzic (np. komenda distance) czy jednostka jest na danym obszarze i jeśli jest to aktywować "rzucenie" się na niego (i dobrze by było usunąć mu ten eventHandler - komenda removeEventHandler)
ODPOWIEDZ

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