Mówiąc o misjach typu znajdź i zniszcz mam na myśli grupę misji w których należy zniszczyć (zazwyczaj wysadzić) jakiś obiekt czy pojazd, których dokładnego położenia nie znamy - nie chodzi mi o lokalizowanie i likwidację wroga.
Podchodząc do tego w najprostszy sposób robiło się dwie rzeczy. Albo umieszczało się gdzieś cel/cele zaznaczając w briefingu tylko przybliżony obszar, albo szło się o krok dalej i dawało celowi rozrzut podczas wstawiania. Oba takie rozwiązania mają spore wady.
W pierwszym przypadku cel jest zawsze w tym samym miejscu, więc po jednokrotnym przejściu misji wiemy już gdzie co jest - to nie jest duży problem przy misjach SP i ma tą zaletę że można bardzo bogato wykonać otoczenie celu (obiekty w charakterze dekoracji, obstawa, bliskie patrole itp.).
Drugi sposób jest o tyle lepszy, że sami nie wiemy gdzie pojawi się cel. Niestety na tym kończą się zalety. Każdy obiekt ma losowaną pozycję niezależnie więc jeśli zrobimy obóz np. z ogniska i trzech namiotów to samym rozrzutem nie uzyskamy tego obozu w losowym miejscu. Ten problem dotyczy także (a może raczej przede wszystkim) "obstawy" celu. Z bogiem sprawa jeśli cel jest pojazdem, bo wtedy możemy zrobić go dowódcą i jeśli ma rozrzut to reszta grupy pojawi się koło niego (o ile mają domyślnie ustawione "w szyku"). Niestety jest druga wada - mamy wyznaczony losowo obszar i miejsce w którym umieszczony zostanie obiekt jest całkowicie losowe, czyli np. ukryta ciężarówka z amunicją może pojawić się na szczerym polu (świetna kryjówka...), a skrzynie z amunicją pojawić się wtopiona w ścianie budynku lub drzewie (co mało realistycznie wygląda).
Najlepszy wariant byłby taki który pozwalałby ustalić kilka konkretnych miejsc w którym może pojawić się cel i określić prawdopodobieństwo że tam się pojawią. Teoretycznie gracz może poznać wszystkie te miejsca, ale nie zakładam, że misje będzie się rozgrywać więcej niż kilkanaście razy, a trzy cele z których każdy może pojawić się w czterech miejscach dają sporą liczbę kombinacji.
Moja propozycja rozwiązania problemu jest dosyć prosta i nie wymaga skryptu. Wystarczy wstawić nasz cel np. skrzynie z amunicją i nazwać ją cel. Następnie wstawić element logiczny i utworzyć mu cztery pukty trasy. W inicjacji elementu logicznego wpisujemy los = random (4), a następnie w kolejnych punktach trasy w polu warunku los > 0, los >1, los > 2 i los > 3. W polach przy aktywacji każdego z pkt trasy umieszczamy cel setPos getPos this. Cel pojawi się w jednym z punktów trasy elementu logicznego które można swobodnie przesuwać. Koło gracza można wstawić wyzwalacz z warunkiem true i z wpisem player setPos getPos cel - wystarczy opóźnić aktywację wyzwalacza o sekundę i będziemy przenoszeni na skrzynkę co pozwoli skontrolować gdzie dokładnie się pojawia i nanieść ewentualne poprawki (aby z góry określić gdzie się pojawi wystarczy zamienić los = random (4) na np. los = 3.
Oczywiście sama skrzynka wygląda jako cel dziwnie, więc dodam parę małych namiotów. Wstawiam namiot i nazywam go namiot1, a obok niego wyzwlacz z warunkiem true i z wpisanym namiot1 setPos [(getPos cel select 0), (getPos cel select 1)+3)]. trzeba dać jeszcze sekundę opóźnienia aktywacji i namiot zawsze będzie pojawiał się względem skrzynki (warto najpierw zaplanować obozowisko używając setPos i getPos). Aby dać następny namiot wystarczy skopiować go razem z wyzwalaczem, zmienić wpis w wyzwalczu na namiot1_1 setPos [(getPos cel select 0), (getPos cel select 1)-3)]. Przesuniecie można dawać jakie się ma ochotę, a kierunek jest taki jak określimy w edytorze.
Podobnie można postąpić z obstawą. Dla uproszczenia zakładam że to małe obozowiska partyzantów rozproszone w lesie, więc można przy nich spotkać paru ludzi, a patrole nie krążą wokół nich tylko po prostu po całej okolicy. Przemieszczenie grupy ludzi realizuje się podobnie jak przedmiotów. Można zrobić grupę, wstawić jej punkt trasy zaraz koło niej i w przy aktywacji wpisać "_x setPos getpos cel" forEach thislist; [group this, 0] setWPPos getPos cel. Trzeba tylko dać sekundę opóźnienia punktowi trasy. Wszyscy żołnierze wylądują na skrzyni, ale od razu się rozejdą zajmując miejsca w szyku. Można dać małe przesunięcie, aby unknąć ryzyka że któryś zostanie na skrzyni czy "w niej".
Podchodząc do tego w najprostszy sposób robiło się dwie rzeczy. Albo umieszczało się gdzieś cel/cele zaznaczając w briefingu tylko przybliżony obszar, albo szło się o krok dalej i dawało celowi rozrzut podczas wstawiania. Oba takie rozwiązania mają spore wady.
W pierwszym przypadku cel jest zawsze w tym samym miejscu, więc po jednokrotnym przejściu misji wiemy już gdzie co jest - to nie jest duży problem przy misjach SP i ma tą zaletę że można bardzo bogato wykonać otoczenie celu (obiekty w charakterze dekoracji, obstawa, bliskie patrole itp.).
Drugi sposób jest o tyle lepszy, że sami nie wiemy gdzie pojawi się cel. Niestety na tym kończą się zalety. Każdy obiekt ma losowaną pozycję niezależnie więc jeśli zrobimy obóz np. z ogniska i trzech namiotów to samym rozrzutem nie uzyskamy tego obozu w losowym miejscu. Ten problem dotyczy także (a może raczej przede wszystkim) "obstawy" celu. Z bogiem sprawa jeśli cel jest pojazdem, bo wtedy możemy zrobić go dowódcą i jeśli ma rozrzut to reszta grupy pojawi się koło niego (o ile mają domyślnie ustawione "w szyku"). Niestety jest druga wada - mamy wyznaczony losowo obszar i miejsce w którym umieszczony zostanie obiekt jest całkowicie losowe, czyli np. ukryta ciężarówka z amunicją może pojawić się na szczerym polu (świetna kryjówka...), a skrzynie z amunicją pojawić się wtopiona w ścianie budynku lub drzewie (co mało realistycznie wygląda).
Najlepszy wariant byłby taki który pozwalałby ustalić kilka konkretnych miejsc w którym może pojawić się cel i określić prawdopodobieństwo że tam się pojawią. Teoretycznie gracz może poznać wszystkie te miejsca, ale nie zakładam, że misje będzie się rozgrywać więcej niż kilkanaście razy, a trzy cele z których każdy może pojawić się w czterech miejscach dają sporą liczbę kombinacji.
Moja propozycja rozwiązania problemu jest dosyć prosta i nie wymaga skryptu. Wystarczy wstawić nasz cel np. skrzynie z amunicją i nazwać ją cel. Następnie wstawić element logiczny i utworzyć mu cztery pukty trasy. W inicjacji elementu logicznego wpisujemy los = random (4), a następnie w kolejnych punktach trasy w polu warunku los > 0, los >1, los > 2 i los > 3. W polach przy aktywacji każdego z pkt trasy umieszczamy cel setPos getPos this. Cel pojawi się w jednym z punktów trasy elementu logicznego które można swobodnie przesuwać. Koło gracza można wstawić wyzwalacz z warunkiem true i z wpisem player setPos getPos cel - wystarczy opóźnić aktywację wyzwalacza o sekundę i będziemy przenoszeni na skrzynkę co pozwoli skontrolować gdzie dokładnie się pojawia i nanieść ewentualne poprawki (aby z góry określić gdzie się pojawi wystarczy zamienić los = random (4) na np. los = 3.
Oczywiście sama skrzynka wygląda jako cel dziwnie, więc dodam parę małych namiotów. Wstawiam namiot i nazywam go namiot1, a obok niego wyzwlacz z warunkiem true i z wpisanym namiot1 setPos [(getPos cel select 0), (getPos cel select 1)+3)]. trzeba dać jeszcze sekundę opóźnienia aktywacji i namiot zawsze będzie pojawiał się względem skrzynki (warto najpierw zaplanować obozowisko używając setPos i getPos). Aby dać następny namiot wystarczy skopiować go razem z wyzwalaczem, zmienić wpis w wyzwalczu na namiot1_1 setPos [(getPos cel select 0), (getPos cel select 1)-3)]. Przesuniecie można dawać jakie się ma ochotę, a kierunek jest taki jak określimy w edytorze.
Podobnie można postąpić z obstawą. Dla uproszczenia zakładam że to małe obozowiska partyzantów rozproszone w lesie, więc można przy nich spotkać paru ludzi, a patrole nie krążą wokół nich tylko po prostu po całej okolicy. Przemieszczenie grupy ludzi realizuje się podobnie jak przedmiotów. Można zrobić grupę, wstawić jej punkt trasy zaraz koło niej i w przy aktywacji wpisać "_x setPos getpos cel" forEach thislist; [group this, 0] setWPPos getPos cel. Trzeba tylko dać sekundę opóźnienia punktowi trasy. Wszyscy żołnierze wylądują na skrzyni, ale od razu się rozejdą zajmując miejsca w szyku. Można dać małe przesunięcie, aby unknąć ryzyka że któryś zostanie na skrzyni czy "w niej".