
Teoretycznie sam edytor oferuje pewną losowość poprzez rozrzut i prawdopodobieństwo obecności. Problem w tym że to nie zawsze wystarcza.
Z rozrzutem jest ten problem że nie można wybrać kilku możliwych miejsc i zawsze ma się do wyboru jeden kolisty obszar. Uniemożliwia to na przykład w prostu sposób sprawienie że gracz znajdzie się z różnej strony jakiejś wioski, bo może równie dobrze zostać umieszczony "w niej". Podobnie nie można sprawić by grupa zatrzymała się na brzegu lasu w róznym miejscu, bo punkt trasy może równie dobrze znaleźć się w lesie jak i poza lasem.
Co do warunku obecności to niestety na przeszkodzie jest rachunek prawdopodobieństwa. Im więcej warunków obecności tym coraz trudniej przewidzieć jak wiele jednostek będzie obecnych. Może to doprowadzić do sytuacji że nie pojawią się żadne i misja będzie za prosta albo że pojawią się akurat wszystkie i misja będzie za trudna. Generalnie nie ma możliwości żeby sprawić aby pojawiał się albo jednostka A albo jednostka B.
Tak na marginesie mały hint - wystarczy nazwać dowódcę grupy np. szef i dać mu pewne prawdopodobieństwo obecności, a reszcie grupy dać warunek obecności alive szef - albo się pojawi cała grupa albo nikt.
Na szczęście są skrypty, które ratują sytuację. Kluczowa jest komenda random() która po prostu generuje losowe liczby rzeczywiste czyli los = random (1) przypisze zmiennej los wartość od 0 do 1. Pewnym problemem jest to że losowanie musi nastąpić podczas misji, czyli nie można tego umieszczać w inicjacji (tak mi się przynajmniej wydaje).
Moja metoda to odpalić na początku misji skrypt z niezbędną pierwszą linijką ?!(local serwer): exit (w misji musi być też element logiczny o nazwie serwer), co jest konieczne jeśli misja ma być MP, który w zależności od wylosowanej wartości wykasuje pewne grupy komendą deleteVehicle.
Czyli np. gracze są w mieście, a wróg może nadjechać z trzech stron. Wstawiamy trzy silne grupy (na tyle silne by pokonanie jednej stanowiło wyzwanie) dając mi punkty trasy kierujące je przeciw graczom. W wyzwalaczu z warunkiem true (odpala się na początku misji, ale po komendach umieszczonych w initach) odpalamy skrypt który może wyglądać tak:
Oczywiście trzeba również stworzyć grupy wpisując ich dowódcom odpowiednio grupa1 = group this albo grupa2 = group this bądź grupa3 =group this.
W efekcie zawsze dwie z trzech grup zostaną usunięte i nadjedzie tylko jedna wykonując wszystkie przydzielone jej punkty trasy.
Z komendą random należy uważać o tyle (o czym się na własnej skórze przekonałem), że w przypadku MP nie powinna być wykonywana na wszystkich komputerach, a tylko na serwerze. W przeciwnym razie na każdym komputerze może wyjść inna wartość zmiennej losowej i inne grupy zostać skasowane, co przy sporej liczbie graczy gwarantuje że zostaną skasowane wszystkie.
Tyle na razie. Dalej dopisze o losowych trasach (takich gdzie oddział wybiera albo trasę A albo B).
--------------------------------------------------------------------------------------------------------
Jest dosyć prosta metoda uzyskania kilku losowo wybieranych tras. Na przykład chcąc uzyskać trzy trasy wystarczy umieścić punkty trasy w sposób przedstawiony na screenie (coś jakby litera "z") i dodać trzy wyzwalacze.
tu był kiedyś obrazek, ale gdzieś go wcięło
Jeden ma warunek true (odpala się na początku misji) i losuje wartość zmiennej los za pomocą los = random(3). Dwa pozostałe są zsynchronizowane z punktami trasy i są typu Przełącz przy czym warunki aktywacji to odpowiednio los>1 i los<2. Dzięki temu jeden lub dwa punkty trasy zostają zaliczone od razu tak jakby nie istniały, a grupa skoryguje odpowiednio swoją trasę czyli w przypadku trasy B po prostu ruszy z pierwszego punktu trasy od razu do ostatniego.
Oczywiście może być więcej punktów trasy i wariantów, ale im bardziej skomplikowane trasy chcemy uzyskać tym bardziej staje się to pracochłonne, w związku z czym jest to dobra metoda na mało skomplikowane przypadki. Sądzę że powinna zadziałać bez problemu w MP, bo choć na każdym komputerze wylosowana zostanie inna wartość zmiennej los to ostatecznie jakaś zostanie wybrana (mniejsza o to która), a ponieważ są losowane niezależnie więc w niczym to nie zmienia prawdopodobieństwa wystąpienia poszczególnych tras.
Z rozrzutem jest ten problem że nie można wybrać kilku możliwych miejsc i zawsze ma się do wyboru jeden kolisty obszar. Uniemożliwia to na przykład w prostu sposób sprawienie że gracz znajdzie się z różnej strony jakiejś wioski, bo może równie dobrze zostać umieszczony "w niej". Podobnie nie można sprawić by grupa zatrzymała się na brzegu lasu w róznym miejscu, bo punkt trasy może równie dobrze znaleźć się w lesie jak i poza lasem.
Co do warunku obecności to niestety na przeszkodzie jest rachunek prawdopodobieństwa. Im więcej warunków obecności tym coraz trudniej przewidzieć jak wiele jednostek będzie obecnych. Może to doprowadzić do sytuacji że nie pojawią się żadne i misja będzie za prosta albo że pojawią się akurat wszystkie i misja będzie za trudna. Generalnie nie ma możliwości żeby sprawić aby pojawiał się albo jednostka A albo jednostka B.
Tak na marginesie mały hint - wystarczy nazwać dowódcę grupy np. szef i dać mu pewne prawdopodobieństwo obecności, a reszcie grupy dać warunek obecności alive szef - albo się pojawi cała grupa albo nikt.
Na szczęście są skrypty, które ratują sytuację. Kluczowa jest komenda random() która po prostu generuje losowe liczby rzeczywiste czyli los = random (1) przypisze zmiennej los wartość od 0 do 1. Pewnym problemem jest to że losowanie musi nastąpić podczas misji, czyli nie można tego umieszczać w inicjacji (tak mi się przynajmniej wydaje).
Moja metoda to odpalić na początku misji skrypt z niezbędną pierwszą linijką ?!(local serwer): exit (w misji musi być też element logiczny o nazwie serwer), co jest konieczne jeśli misja ma być MP, który w zależności od wylosowanej wartości wykasuje pewne grupy komendą deleteVehicle.
Czyli np. gracze są w mieście, a wróg może nadjechać z trzech stron. Wstawiamy trzy silne grupy (na tyle silne by pokonanie jednej stanowiło wyzwanie) dając mi punkty trasy kierujące je przeciw graczom. W wyzwalaczu z warunkiem true (odpala się na początku misji, ale po komendach umieszczonych w initach) odpalamy skrypt który może wyglądać tak:
- Kod: Zaznacz cały
?!(local serwer): exit
_los = random(3)
?(_los <= 1): "deleteVehicle _x" forEach units grupa2
?(_los <= 1): "deleteVehicle _x" forEach units grupa3
?(_los > 1 && _los <=2): "deleteVehicle _x" forEach units grupa1
?(_los > 1 && _los <= 2): "deleteVehicle _x" forEach units grupa3
?(_los >2): "deleteVehicle _x" forEach units grupa1
?(_los >2): "deleteVehicle _x" forEach units grupa2
exit
Oczywiście trzeba również stworzyć grupy wpisując ich dowódcom odpowiednio grupa1 = group this albo grupa2 = group this bądź grupa3 =group this.
W efekcie zawsze dwie z trzech grup zostaną usunięte i nadjedzie tylko jedna wykonując wszystkie przydzielone jej punkty trasy.
Z komendą random należy uważać o tyle (o czym się na własnej skórze przekonałem), że w przypadku MP nie powinna być wykonywana na wszystkich komputerach, a tylko na serwerze. W przeciwnym razie na każdym komputerze może wyjść inna wartość zmiennej losowej i inne grupy zostać skasowane, co przy sporej liczbie graczy gwarantuje że zostaną skasowane wszystkie.
Tyle na razie. Dalej dopisze o losowych trasach (takich gdzie oddział wybiera albo trasę A albo B).
--------------------------------------------------------------------------------------------------------
Jest dosyć prosta metoda uzyskania kilku losowo wybieranych tras. Na przykład chcąc uzyskać trzy trasy wystarczy umieścić punkty trasy w sposób przedstawiony na screenie (coś jakby litera "z") i dodać trzy wyzwalacze.
tu był kiedyś obrazek, ale gdzieś go wcięło
Jeden ma warunek true (odpala się na początku misji) i losuje wartość zmiennej los za pomocą los = random(3). Dwa pozostałe są zsynchronizowane z punktami trasy i są typu Przełącz przy czym warunki aktywacji to odpowiednio los>1 i los<2. Dzięki temu jeden lub dwa punkty trasy zostają zaliczone od razu tak jakby nie istniały, a grupa skoryguje odpowiednio swoją trasę czyli w przypadku trasy B po prostu ruszy z pierwszego punktu trasy od razu do ostatniego.
Oczywiście może być więcej punktów trasy i wariantów, ale im bardziej skomplikowane trasy chcemy uzyskać tym bardziej staje się to pracochłonne, w związku z czym jest to dobra metoda na mało skomplikowane przypadki. Sądzę że powinna zadziałać bez problemu w MP, bo choć na każdym komputerze wylosowana zostanie inna wartość zmiennej los to ostatecznie jakaś zostanie wybrana (mniejsza o to która), a ponieważ są losowane niezależnie więc w niczym to nie zmienia prawdopodobieństwa wystąpienia poszczególnych tras.
Ostatnio edytowano So 30 sie, 2008 13:13 przez alderous, łącznie edytowano 2 razy