Losowy patrol
Moderatorzy: kondor, Inkwizytor
Re: Losowy patrol
Dzięki. A da się do tego dopisać czas patrolowania pa tym jak wróg mnie wykryje?
- tasior2103
- Posty: 83
- Rejestracja: 10 kwietnia 2010, 19:45
- ID Steam:
- ID gracza: 0
- Kontakt:
Re: Losowy patrol
Możesz wpisać w triggerza czas po jakim ma zacząć działać (w sekundach) od aktywacji (takie trzy pola w których domyślnie wpisane jest 0). Z tym że jest tu jeden problem. Od momentu rozpoczęcia odliczania je jego rzeczywistej aktywacji warunek aktywacji musi być ciągle spełniany inaczej nie zadziała. Oznacza to tyle że jak wejdziesz w trigger (zacznie liczyć) i wyjdziesz z niego zanim minie czas który mu wpisałeś to tigger nie zadziała. Ale nie jestem pewien czy tak to jest w przypadku "Detected by".
Re: Losowy patrol
Wyskakuje błąd- nie wiem czemu. Poradzicie? :
grupa1 = group this; for Eachunits grupa1; waituntil {!isnil "bis_fnc_init"}; [group grupal1, getPos grupa1, 100] call bis_fnc_taskPatrol;
grupa1 = group this; for Eachunits grupa1; waituntil {!isnil "bis_fnc_init"}; [group grupal1, getPos grupa1, 100] call bis_fnc_taskPatrol;
- Sejtan
- Posty: 112
- Rejestracja: 03 kwietnia 2007, 20:54
- ID Steam: sejtan24
- Numer GG: 6538171
- Lokalizacja: Starogard Gdański
Re: Losowy patrol
jawor pisze:Wyskakuje błąd- nie wiem czemu. Poradzicie? :
grupa1 = group this; for Eachunits grupa1; waituntil {!isnil "bis_fnc_init"}; [group grupal1, getPos grupa1, 100] call bis_fnc_taskPatrol;

Kod: Zaznacz cały
{komenda _x} forEach units nazwa_grupy
Kod: Zaznacz cały
{komenda _x} forEach units group nazwa_lidera
...a zresztą... nieważne... W mojej ocenie, jeśli ktoś nie potrafi poradzić sobie z "kopiuj/wklej", powinien sprzedać komputer i zainwestować w... hmmm.... O! np bierki, albo chińczyka... albo coś w tym stylu. Tam jest troszkę mniej myślenia, nie ma skryptów, komend, ani nawet kopiuj/wklej.jawor pisze:grupa1 = group this; for Eachunits grupa1; waituntil {!isnil "bis_fnc_init"}; [group grupal1, getPos grupa1, 100] call bis_fnc_taskPatrol;
Re: Losowy patrol
@jawor, aby skorzystać z patrolu który jest zainicjowany w grze, nie potrzeba wtedy zewnętrznych skryptów np. UPS. Wchodzisz na moduły i ustawiasz na mapie taki moduł, który nazywa się (Funkcje). Następnie tworzysz grupę wojaków, a dowódcę tej grupy nazywasz np. Potrol1. W pierwszym lub w którymś tam punkcie nawigacyjnym tejże grupy, w okienku uruchamianie wpisujesz.
Nie trzeba wtedy nazywać grupy, tylko dowódcę patrol1. Tyle ile utworzysz grup, tyle możesz ustawić patroli, ale muszą się zgadzać nazwy dowódców w kolejnych komendach wpisanych w punkt. Nawig.
Do uruchomienia tych patroli można również zastosować wyzwalacze.
KOPIOWANIE
Uruchamiasz grę, otwierasz jednostkę, wyzwalacz tam gdzie chcesz coś napisać, wychodzisz z gry do pulpitu - klawisze, przytrzymaj lewy alt a następnie tab i gra zwija ci się do pulpitu
Zaznacz jakąś komendę np. z forum i kopiujesz ją, wchodzisz z powrotem do gry, myszką klikasz na okienko, tam gdzie chcesz wkleić komendę i wklejasz, a robi się to klawiszami – przytrzymujesz lewy Ctrl i wciskasz V i to co kopiowałeś wkleja ci się w okienko. Mam nadzieję, że dość jasno ci to wytłumaczyłem.
Kod: Zaznacz cały
waituntil {!isnil "bis_fnc_init"};
[group patrol1, getPos patrol1, 100] call bis_fnc_taskPatrol;
Do uruchomienia tych patroli można również zastosować wyzwalacze.
KOPIOWANIE
Uruchamiasz grę, otwierasz jednostkę, wyzwalacz tam gdzie chcesz coś napisać, wychodzisz z gry do pulpitu - klawisze, przytrzymaj lewy alt a następnie tab i gra zwija ci się do pulpitu
Zaznacz jakąś komendę np. z forum i kopiujesz ją, wchodzisz z powrotem do gry, myszką klikasz na okienko, tam gdzie chcesz wkleić komendę i wklejasz, a robi się to klawiszami – przytrzymujesz lewy Ctrl i wciskasz V i to co kopiowałeś wkleja ci się w okienko. Mam nadzieję, że dość jasno ci to wytłumaczyłem.
Re: Losowy patrol
Panowie. Dzięki za łopatologię
Szukam porostu czegoś dla mnie i nie za bardzo mogę znaleźć. Chodzi o to, że po wykryciu chcę aby wróg dotarł w miejsce wystrzału, w okolice miejsca z którego strzelałem, obszedł je dobrze np w promieniu 100m i wrócił z powrotem na pozycję startową. Wszystkie te rzeczy które testuję sprawdzają się do momentu że wróg dochodzi do miejsca mojego wystrzału ale zamiast wrócić na pozycję startową próbuje mnie odszukać. Nie mogę się z tym uporać. Czy w ogóle mogę Was jeszcze prosić o pomoc?

Szukam porostu czegoś dla mnie i nie za bardzo mogę znaleźć. Chodzi o to, że po wykryciu chcę aby wróg dotarł w miejsce wystrzału, w okolice miejsca z którego strzelałem, obszedł je dobrze np w promieniu 100m i wrócił z powrotem na pozycję startową. Wszystkie te rzeczy które testuję sprawdzają się do momentu że wróg dochodzi do miejsca mojego wystrzału ale zamiast wrócić na pozycję startową próbuje mnie odszukać. Nie mogę się z tym uporać. Czy w ogóle mogę Was jeszcze prosić o pomoc?
Re: Losowy patrol
Może spróbuj za pomocą punktów nawigacyjnych. Wstaw wyzwalacz z obrębem np. 400m ustaw wykryty przez daną stronę i zsynchronizuj go z pierwszym punktem nawig. Wrogiego patrolu. Drugi pnk. nawig. Grupie daj typu, znaleźć i zniszczyć i ustaw promień rozmieszczenia na 400m, trzeci pnk. naw. Daj w miejsce startową grupy, może być zwykły ruszaj do.
Działanie:
Po wzbudzeniu alarmu np. strzałem gracza, grupa automatycznie używa pnk. nawig. Typu znajdź i zniszcz. Przeszukuje teren, trwa to pewien okres czasu a jak nie znajdzie nic, to wraca do kolejnego pnk. nawig.
Nie wiem, jaki będzie tego efekt, ja mało korzystam z punktów nawig. Ale punktami też można stworzyć cuda, nie na daremno są w edytorze.
Działanie:
Po wzbudzeniu alarmu np. strzałem gracza, grupa automatycznie używa pnk. nawig. Typu znajdź i zniszcz. Przeszukuje teren, trwa to pewien okres czasu a jak nie znajdzie nic, to wraca do kolejnego pnk. nawig.
Nie wiem, jaki będzie tego efekt, ja mało korzystam z punktów nawig. Ale punktami też można stworzyć cuda, nie na daremno są w edytorze.

- Sejtan
- Posty: 112
- Rejestracja: 03 kwietnia 2007, 20:54
- ID Steam: sejtan24
- Numer GG: 6538171
- Lokalizacja: Starogard Gdański
Re: Losowy patrol
Kod: Zaznacz cały
_marker1 = createMarker ["warningArea", position player]; // tworzy marker "warningArea" w miejscu wystrzału, w tym przykładzie jest to miejsce gracza,
_marker2 = createMarker ["warning", position player]; // tworzy marker "warning" w miejscu wystrzału, w tym przykładzie jest to miejsce gracza,
"warningArea" setMarkerShape "ELLIPSE"; // określa marker jako elipse,
"warningArea" setMarkerSize [250, 250]; // określa wielkość markera, tym samym określa strefę poszukiwań
"warningArea" setMarkerBrush "BORDER"; // określa rodzaj markera,
"warningArea" setMarkerColor "ColorRed"; // określa kolor markera,
"warning" setMarkerType "hd_warning"; // określa typ markera,
"warning" setMarkerColor "ColorRed"; // określa kolor markera,
rus1 assignAsDriver car1; // rus1 przypisany jako kierowca car1,
{_x assignAsCargo car1} forEach [rus2, rus3, rus4]; // rus2, 3 i 4 przypisani jako pasażerowie,
[rus1, rus2, rus3, rus4] orderGetIn true; // nakazuje wsiąść do car1,
waitUntil {count crew car1 == 4}; // skrypt czeka do momentu gdy załoga car1 będzie liczyć 4 osoby,
rus1 doMove markerPos "warning"; // rus1 czyli kierowca, jedzie do markera "warning",
rus1 setSpeedMode "FULL"; // rus1 zapier***a maksymalną prędkością,
waitUntil {car1 distance markerPos "warning" < 15}; // skrypt czeka do momentu gdy car1 zbliży się do markera "warning" na odległosc mniejszą niż 15m,
if (car1 distance markerPos "warning" < 15) then // warunek if (jeżeli) car1 jest w odległosci poniżej 15m od markera "warning" then (to),
{
doStop rus1; // rus1 zatrzymuje car1,
sleep 3; // czekamy 3 sekundy,
{doGetOut _x && unassignVehicle _x} forEach units grp1; // grupa grp1 (czyli wszystkie rus) dostaje rozkaz wysiadać i już nie jest przypisana do car1,
waitUntil {count crew car1 == 0}; // znowu skrypt czeka az załoga car1 wyniesie 0, czyli cała wysiądzie,
sleep 3; // czekamy 3 sekundy,
_nul = [rus1, "warningArea"] execVM "JPS.sqf"; // grupa rus1 rozpoczyna patrol markera "warningArea" za pomocą skryptu JPS.sqf,
sleep 60; // czas w jakim grupa rus1 ma patrolowac marker
rus1 assignAsDriver car1; // rus1 ponownie przypisany jako kierowca car1,
{_x assignAsCargo car1} forEach [rus2, rus3, rus4]; // rus2, 3 i 4 ponownie przypisani jako pasażerowie,
[rus1, rus2, rus3, rus4] orderGetIn true; // nakazuje wsiąść do car1,
waitUntil {count crew car1 == 4}; // ponownie czekamy aż wszyscy wsiądą do car1,
rus1 doMove position pos1; // rus1 jedzie do pos1, czyli tam skąd przyjechał, pos1 to element logiczny ustawiony w edytorze,
waitUntil {car1 distance pos1 < 5}; // ponownie czekamy aż car1 jest w odległości mniejszej niż 5m od pos1,
if (car1 distance pos1 < 5) then // ponownie warunek if (jeżeli) dystans car1 jest mniejszy niz 5m od pos1 then (to),
{
doStop rus1; // rus1 zatrzymuje się,
sleep 3; // czekamy 3 sekundy,
{doGetOut _x && unassignVehicle _x} forEach units grp1; // grupa grp1 dostaje rozkaz wysiadać i już nie jest przypisana do car1,
deleteMarker "warning"; // usuwa marker "warning",
deleteMarker "warningArea"; // usuwa marker "warningArea",
};
};

Jeszcze parę słów wyjaśnień. W wyzwalacz w uruchamianie wpisz
Kod: Zaznacz cały
player addEventHandler ["Fired", {n = [] execVM "patrol.sqf"}];
- Załączniki
-
- test.Chernarus.rar
- (4.86 KiB) Pobrany 287 razy
Re: Losowy patrol
N I E S A M O W I T E !!!
Zarąbiste to jest. A ja próbuję zrobić to bez samochodu i nie wychodzi. Grupa rus1 dociera do warningArea, ale go nie patroluje- stoi w miejscu i nie wraca do pos1. Co jest nie tak?
_marker1 = createMarker ["warningArea", position player]; // tworzy marker "warningArea" w miejscu wystrzału, w tym przykładzie jest to miejsce gracza,
_marker2 = createMarker ["warning", position player]; // tworzy marker "warning" w miejscu wystrzału, w tym przykładzie jest to miejsce gracza,
"warningArea" setMarkerShape "ELLIPSE"; // określa marker jako elipse,
"warningArea" setMarkerSize [50, 50]; // określa wielkość markera,
"warningArea" setMarkerBrush "BORDER"; // określa rodzaj markera,
"warningArea" setMarkerColor "ColorRed"; // określa kolor markera,
"warning" setMarkerType "hd_warning"; // określa typ markera,
"warning" setMarkerColor "ColorRed"; // określa kolor markera,
rus1 doMove markerPos "warning"; // rus1 czyli kierowca, jedzie do markera "warning",
rus1 setSpeedMode "FULL"; // rus1 zapier***a maksymalną prędkością,
waitUntil {car1 distance markerPos "warning" < 15}; // skrypt czeka do momentu gdy car1 zbliży się do markera "warning" na odległosc mniejszą niż 15m,
if (rus1 distance markerPos "warning" < 15) then // warunek if (jeżeli) car1 jest w odległosci poniżej 15m od markera "warning" then (to),
{
_nul = [rus1, "warningArea"] execVM "JPS.sqf"; // grupa rus1 rozpoczyna patrol markera "warningArea" za pomocą skryptu JPS.sqf,
sleep 60; // czas w jakim grupa rus1 ma patrolowac marker
rus1 doMove position pos1; // rus1 jedzie do pos1, czyli tam skąd przyjechał, pos1 to element logiczny ustawiony w edytorze,
waitUntil {rus1 distance pos1 < 5}; // ponownie czekamy aż car1 jest w odległości mniejszej niż 5m od pos1,
if (rus1 distance pos1 < 5) then // ponownie warunek if (jeżeli) dystans car1 jest mniejszy niz 5m od pos1 then (to),
{
sleep 3; // czekamy 3 sekundy,
deleteMarker "warning"; // usuwa marker "warning",
deleteMarker "warningArea"; // usuwa marker "warningArea",
};
};

Zarąbiste to jest. A ja próbuję zrobić to bez samochodu i nie wychodzi. Grupa rus1 dociera do warningArea, ale go nie patroluje- stoi w miejscu i nie wraca do pos1. Co jest nie tak?
_marker1 = createMarker ["warningArea", position player]; // tworzy marker "warningArea" w miejscu wystrzału, w tym przykładzie jest to miejsce gracza,
_marker2 = createMarker ["warning", position player]; // tworzy marker "warning" w miejscu wystrzału, w tym przykładzie jest to miejsce gracza,
"warningArea" setMarkerShape "ELLIPSE"; // określa marker jako elipse,
"warningArea" setMarkerSize [50, 50]; // określa wielkość markera,
"warningArea" setMarkerBrush "BORDER"; // określa rodzaj markera,
"warningArea" setMarkerColor "ColorRed"; // określa kolor markera,
"warning" setMarkerType "hd_warning"; // określa typ markera,
"warning" setMarkerColor "ColorRed"; // określa kolor markera,
rus1 doMove markerPos "warning"; // rus1 czyli kierowca, jedzie do markera "warning",
rus1 setSpeedMode "FULL"; // rus1 zapier***a maksymalną prędkością,
waitUntil {car1 distance markerPos "warning" < 15}; // skrypt czeka do momentu gdy car1 zbliży się do markera "warning" na odległosc mniejszą niż 15m,
if (rus1 distance markerPos "warning" < 15) then // warunek if (jeżeli) car1 jest w odległosci poniżej 15m od markera "warning" then (to),
{
_nul = [rus1, "warningArea"] execVM "JPS.sqf"; // grupa rus1 rozpoczyna patrol markera "warningArea" za pomocą skryptu JPS.sqf,
sleep 60; // czas w jakim grupa rus1 ma patrolowac marker
rus1 doMove position pos1; // rus1 jedzie do pos1, czyli tam skąd przyjechał, pos1 to element logiczny ustawiony w edytorze,
waitUntil {rus1 distance pos1 < 5}; // ponownie czekamy aż car1 jest w odległości mniejszej niż 5m od pos1,
if (rus1 distance pos1 < 5) then // ponownie warunek if (jeżeli) dystans car1 jest mniejszy niz 5m od pos1 then (to),
{
sleep 3; // czekamy 3 sekundy,
deleteMarker "warning"; // usuwa marker "warning",
deleteMarker "warningArea"; // usuwa marker "warningArea",
};
};
-
- Posty: 511
- Rejestracja: 04 marca 2011, 06:30
- ID Steam:
- ID gracza: 209283
- Lokalizacja: Sieradz
Re: Losowy patrol
Nie zostawiłeś w swoim skrypcie odniesień do car1, którego jak zrozumiałem nie używasz np:
czy też jakich podobnych.
Kod: Zaznacz cały
waitUntil {car1 distance markerPos "warning" < 15}; // skrypt czeka do momentu gdy car1 zbliży się do markera "warning" na odległosc mniejszą niż 15m,
Re: Losowy patrol
OK. A teraz tak: jak zabiję kierowce (rus1)to praktycznie skryprt nie działa. Co z tym zrobić? Reszta wsiada do wozu ale nie ruszają.