Skuteczny sposób na zakończenie misji Coop
Moderator: Inkwizytor
Skuteczny sposób na zakończenie misji Coop
Szukam metody kończenia misji Coop po zrealizowaniu wykonanych zadań. Mam na przyklad 2 wyzwalacze:
a) zadanie1=true
b) zadanie2=true
Oba odnosza sie do zrealizowanych zadań, wymaganych do ukonczenia misji. Potem chcialbym, aby gracz(e) musieli dojsc do pewnego miejsca, aby misja zakonczyla sie. Ustawiam wyzwalacz z Ktokolwiek/Obecny z aktywacja end1=true. Nastepnie tworze kolejny wyzwalacz z warunkiem (zadanie1 and zadanie 2 and end1) i zaznaczam Koniec1. Problem w tym, ze to nie dziala.
Zna ktos metode, ktora bylaby JiP oraz MP friendly?
a) zadanie1=true
b) zadanie2=true
Oba odnosza sie do zrealizowanych zadań, wymaganych do ukonczenia misji. Potem chcialbym, aby gracz(e) musieli dojsc do pewnego miejsca, aby misja zakonczyla sie. Ustawiam wyzwalacz z Ktokolwiek/Obecny z aktywacja end1=true. Nastepnie tworze kolejny wyzwalacz z warunkiem (zadanie1 and zadanie 2 and end1) i zaznaczam Koniec1. Problem w tym, ze to nie dziala.
Zna ktos metode, ktora bylaby JiP oraz MP friendly?
Re: Skuteczny sposób na zakończenie misji Coop
1. unikajmy opcji domyslnych, a wiec w init.sqf:
zeby nie zastanawiac sie co te zmienne przechowuja zanim dostaną true
2. Zeby na miec pewnosc ze wszedzie zmienne beda miec ta samą wartość w polach "przy aktywacji" tych wyzwalaczy dodaj:
(i analogicznie zadanie2 oraz end1)
3.JIP istnieje polecenie onPlayerConnected czy cos takiego, ale nie bardzo wiem co mialbym z nim zrobic, wiec powiadomienie o wartosciach zmiennych dla dołączających graczy robię tak:
w init.sqf ustawiam dodatkową zmienną i ją rozgłaszam:
do mapy dodaje cykliczny wyzwalacz aktywowany na publikowac_zmienne, ktory w polu przy aktywacji uruchami skrypt mniej wiecej o takiej tresci:
wtedy nowy ma juz dobre wartosci dla tych zmiennych
Kod: Zaznacz cały
zadanie1 = false;
zadanie2 = false;
end1 = false;
2. Zeby na miec pewnosc ze wszedzie zmienne beda miec ta samą wartość w polach "przy aktywacji" tych wyzwalaczy dodaj:
Kod: Zaznacz cały
PublicVariable "zadanie1";
3.JIP istnieje polecenie onPlayerConnected czy cos takiego, ale nie bardzo wiem co mialbym z nim zrobic, wiec powiadomienie o wartosciach zmiennych dla dołączających graczy robię tak:
w init.sqf ustawiam dodatkową zmienną i ją rozgłaszam:
Kod: Zaznacz cały
publikowac_zmienne = true;
publicVariable "publikowac_zmienne";
Kod: Zaznacz cały
sleep 3;
if(local element_logiczny)then{
PublicVariable "zadanie1";
PublicVariable "zadanie2";
PublicVariable "end1";
};
Re: Skuteczny sposób na zakończenie misji Coop
Komplikacja i brak optymalizacji. Przesylanie publicvariable to zawsze dodatkowy ruch, cos sie moze zgubic. Przesylanie w ciemno cykliczne to generowanie zupelnie zbednego ruchu.
Starczy, ze server pilnuje zadan. Gdy ogolnie zadania zostana zrealizowane, dopiero wtedy server informuje o realizacji.
Wyjatek, jesli chcemy zaznaczac to w notesie, ze zadanie zostalo zrealizowane. Wtedy klienci moga zostac poinformowani.
Tu jest custom script dla laczacego sie playera
http://www.armaholic.com/page.php?al=alias8215
Gdy player sie laczy, mozna rozeslac info ze zadanie zostalo zrealizowane a nie zapetlac.
A tak w ogole to chyba najlepiej uzywac frameworka BAS-f, tam wiekszosc skryptow i warunkow jest juz wlasciwie napisana i opisana, do wyboru do koloru. I nie ma problemu z testowaniem w roznych sytuacjach.
Starczy, ze server pilnuje zadan. Gdy ogolnie zadania zostana zrealizowane, dopiero wtedy server informuje o realizacji.
Wyjatek, jesli chcemy zaznaczac to w notesie, ze zadanie zostalo zrealizowane. Wtedy klienci moga zostac poinformowani.
Tu jest custom script dla laczacego sie playera
http://www.armaholic.com/page.php?al=alias8215
Gdy player sie laczy, mozna rozeslac info ze zadanie zostalo zrealizowane a nie zapetlac.
A tak w ogole to chyba najlepiej uzywac frameworka BAS-f, tam wiekszosc skryptow i warunkow jest juz wlasciwie napisana i opisana, do wyboru do koloru. I nie ma problemu z testowaniem w roznych sytuacjach.
Re: Skuteczny sposób na zakończenie misji Coop
Racja sposob moj jest najwyzej sredniej jakosci, ale publicvariable to zaledwie kilka pakietow w protokole tcp - nie moze sie zgubic z definicji.
Framework BASu jest dobrym narzedziem, ale w niektorych misjach czesto jest zbednym nadmiarem. W kazdym badz razie missionmakerzy powinni sie z nim zaznajomic
Framework BASu jest dobrym narzedziem, ale w niektorych misjach czesto jest zbednym nadmiarem. W kazdym badz razie missionmakerzy powinni sie z nim zaznajomic
Re: Skuteczny sposób na zakończenie misji Coop
Tak tylko tu chodzi mi bardziej o wlasciwe wpisanie warunkow. Uzywam tegoz Frameworka i jest tam MP Ending Controller, ale wymaga on wpisania warunku i wlasciwego wyzwalacza na mapie.
Re: Skuteczny sposób na zakończenie misji Coop
@eJay
Teraz nie bardzo jak mam sie temu przyjerzec, brak czasu.
@kondor
Na marginesie napisze, ze w OFP KAŻDE publicvariable bylo problemem, chyba, ze uzywalo sie addonu CoC, ktory automatyzowal cala wymiane zmiennych, lacznie z ciagami, sprawdzal synchronizacje i nawet umozliwial komunikacje pomiedzy poszczegolnymi maszynami.
Teraz nie bardzo jak mam sie temu przyjerzec, brak czasu.
@kondor
Na marginesie napisze, ze w OFP KAŻDE publicvariable bylo problemem, chyba, ze uzywalo sie addonu CoC, ktory automatyzowal cala wymiane zmiennych, lacznie z ciagami, sprawdzal synchronizacje i nawet umozliwial komunikacje pomiedzy poszczegolnymi maszynami.
Re: Skuteczny sposób na zakończenie misji Coop
Czy ktoś z was wie w jaki sposob poprawnie wykorzystac polecenie "Thislist" w warunku wyzwalacza?
Mam misje coop. Ustawilem wyzwalacz, aktywacja na Wschód. Oprócz tego w warunku dopisałem "aP1 in thislist or aP2 in thislist". Tak wiec chce, aby obie jednostki (sterowane przez graczy) mogly aktywowac ten wyzwalacz. Dodam jeszcze, ze w obrebie wyzwalacza sa dwie jednostki wschodu kierowane przez AI (hmm cos w formie punktu ewakuacyjnego). Obecnosc przynajmniej jednego gracza w tym wyzwalaczu ma zakonczyc misje. Problem jest taki, ze to dziala jedynie w Podglądzie. Kiedy juz testuje misje na serwerze - wychodzi bubel i misja nie chce sie zakonczyc.
Probowalem to zrobic metoda podaną przez kondora (ostatni post) w watku - http://www.armedassault.com.pl/viewtopic.php?f=54&t=817
Jednak wtedy bubel wychodzi jeszcze wiekszy, gdyz misja konczy sie od razu, bez mojej obecnosci w tym wyzwalaczu. Jak poprawnie zastosowac ten thislist, bo ArmA Wiki ma troche pomieszane informacje...
Mam misje coop. Ustawilem wyzwalacz, aktywacja na Wschód. Oprócz tego w warunku dopisałem "aP1 in thislist or aP2 in thislist". Tak wiec chce, aby obie jednostki (sterowane przez graczy) mogly aktywowac ten wyzwalacz. Dodam jeszcze, ze w obrebie wyzwalacza sa dwie jednostki wschodu kierowane przez AI (hmm cos w formie punktu ewakuacyjnego). Obecnosc przynajmniej jednego gracza w tym wyzwalaczu ma zakonczyc misje. Problem jest taki, ze to dziala jedynie w Podglądzie. Kiedy juz testuje misje na serwerze - wychodzi bubel i misja nie chce sie zakonczyc.
Probowalem to zrobic metoda podaną przez kondora (ostatni post) w watku - http://www.armedassault.com.pl/viewtopic.php?f=54&t=817
Jednak wtedy bubel wychodzi jeszcze wiekszy, gdyz misja konczy sie od razu, bez mojej obecnosci w tym wyzwalaczu. Jak poprawnie zastosowac ten thislist, bo ArmA Wiki ma troche pomieszane informacje...
Re: Skuteczny sposób na zakończenie misji Coop
Ja bym proponował połączyc ten wyzwalacz z jednostkami, ktore moga zakonczyc misje w grupe i powinno dzialac, bez instrukcji thislist.
