aktywacja gdy padnie strzał z m107.
Moderatorzy: kondor, Inkwizytor
aktywacja gdy padnie strzał z m107.
Nie bardzo wiem jak zadać pytanie, wiec napiszę co zrobiłem, a co mi nie wychodzi.
snajper ma wyeliminować cel, który przybędzie helikopterem. Próbowałem stworzyć kilka warunków powodzenia lub niepowodzenia misji, a mianowicie:
-gdy mi8 z celem na pokładzie leci w stronę lotniska a ja strzelę zanim wyląduje to mi8 zawraca i następuje koniec misji (niepowodzenie)
zrobiłem kilka waypointów, w ostatnim dałem "wyładuj transport". w init wpisałem: mi8 action ["ENGINEOFF, mi8]. Postawiłem wyzwalacz w którym -gdy strzal=true [patrz skrypt nizej] to mi8 move getpos "1" i to pieknie działa. Strzelam i śmigłowiec zawraca i leci do GameLogic "1"
-gdy mi8 ląduje, cel wysiada, idzie w stronę centrum dowodzenia, ja go zabijam - koniec misji (powodzenie)
zrobiłem to tak: cel moveincargo mi8, w ostatnim waypoincie mi8 dałem: cel action ["GETOUT", mi8], cel move getpos "2". Wszystko pięknie działa. Strzelam, zabijam cel i misja zakonczona jest powodzeniem.
ale....
-gdy mi8 ląduje, cel idzie w stronę centrum dowodzenia, ja strzelam i pudłuję - zostaje włączony alarm, cel ucieka z powrotem do mi8 i odlatuje - następuje koniec misji (niepowodzenie)
czyli (czesc tak jak wyzej): cel moveincargo mi8, w ostatnim waypoincie mi8 dałem: cel action ["GETOUT", mi8], cel move getpos "2".
Ustawiłem wyzwalacz: gdy strzał=true to: [cel ] join mi8; cel move getpos mi8; cel ordergetin true; cel assignascargo mi8;
W założeniu proste ale za nic nie chce mi to działać. Cel po moim "pudle" ucieka do śmigłowca ale ten na niego nie czeka tylko sam odlatuje. Nawet gdy dałem mu chyba z 30-40 sek. [w polach min. mid. max.] czekania. Stoi chyba z 5 sek i odlatuje.
Jeśli ktoś zna rozwiązanie mojego problemu lub ewentualnie wie jak inaczej to zrobić, będę bardzo wdzięczny.
skrypt, którego użyłem w tej misji, a który aktywuje (strzał=true) gdy padnie strzał z broni m107 to ten, co dotyczył chyba flar lub świec dymnych... (mam nadzieję, że nie łamie regulaminu)
----------------------------------------------------------------------------------
w init.sqf
strzal = false;
sniper addEventHandler ["fired", {[_this select 4] execVM "sniper.sqf";}];
----------------------------------------------------------------------------------
w sniper.sqf
_pocisk = _this select 0;
if (_pocisk == "B_127x99_Ball_noTracer") then
{
strzal = true;
publicVariable "strzal";
}
else
{
if (_pocisk == "B_127x99_Ball_noTracer") then
{
strzal = true;
publicVariable "strzal";
};
};
------------------------------------------------------
snajper ma wyeliminować cel, który przybędzie helikopterem. Próbowałem stworzyć kilka warunków powodzenia lub niepowodzenia misji, a mianowicie:
-gdy mi8 z celem na pokładzie leci w stronę lotniska a ja strzelę zanim wyląduje to mi8 zawraca i następuje koniec misji (niepowodzenie)
zrobiłem kilka waypointów, w ostatnim dałem "wyładuj transport". w init wpisałem: mi8 action ["ENGINEOFF, mi8]. Postawiłem wyzwalacz w którym -gdy strzal=true [patrz skrypt nizej] to mi8 move getpos "1" i to pieknie działa. Strzelam i śmigłowiec zawraca i leci do GameLogic "1"
-gdy mi8 ląduje, cel wysiada, idzie w stronę centrum dowodzenia, ja go zabijam - koniec misji (powodzenie)
zrobiłem to tak: cel moveincargo mi8, w ostatnim waypoincie mi8 dałem: cel action ["GETOUT", mi8], cel move getpos "2". Wszystko pięknie działa. Strzelam, zabijam cel i misja zakonczona jest powodzeniem.
ale....
-gdy mi8 ląduje, cel idzie w stronę centrum dowodzenia, ja strzelam i pudłuję - zostaje włączony alarm, cel ucieka z powrotem do mi8 i odlatuje - następuje koniec misji (niepowodzenie)
czyli (czesc tak jak wyzej): cel moveincargo mi8, w ostatnim waypoincie mi8 dałem: cel action ["GETOUT", mi8], cel move getpos "2".
Ustawiłem wyzwalacz: gdy strzał=true to: [cel ] join mi8; cel move getpos mi8; cel ordergetin true; cel assignascargo mi8;
W założeniu proste ale za nic nie chce mi to działać. Cel po moim "pudle" ucieka do śmigłowca ale ten na niego nie czeka tylko sam odlatuje. Nawet gdy dałem mu chyba z 30-40 sek. [w polach min. mid. max.] czekania. Stoi chyba z 5 sek i odlatuje.
Jeśli ktoś zna rozwiązanie mojego problemu lub ewentualnie wie jak inaczej to zrobić, będę bardzo wdzięczny.
skrypt, którego użyłem w tej misji, a który aktywuje (strzał=true) gdy padnie strzał z broni m107 to ten, co dotyczył chyba flar lub świec dymnych... (mam nadzieję, że nie łamie regulaminu)
----------------------------------------------------------------------------------
w init.sqf
strzal = false;
sniper addEventHandler ["fired", {[_this select 4] execVM "sniper.sqf";}];
----------------------------------------------------------------------------------
w sniper.sqf
_pocisk = _this select 0;
if (_pocisk == "B_127x99_Ball_noTracer") then
{
strzal = true;
publicVariable "strzal";
}
else
{
if (_pocisk == "B_127x99_Ball_noTracer") then
{
strzal = true;
publicVariable "strzal";
};
};
------------------------------------------------------
Ostatnio zmieniony 02 lutego 2010, 02:23 przez kmax1, łącznie zmieniany 1 raz.
-
- Posty: 77
- Rejestracja: 31 grudnia 2009, 14:51
- ID Steam:
- ID gracza: 0
Re: aktywacja gdy padnie strzał z m107.
Moim zdaniem to przy strzale z m107 możesz zrobić coś takiego
kolejny skrypt np. strzal.sqf
I dajesz wyzwalacz z warunkiem strzal i w aktywacji [] exec "strzal.sqf";
Dałbym jeszcze wyzwalacz z końcem misji #2
na wypadek rozbicia się śmigłowca przed wysadzeniem celu.
Wiem, że wykroczyłem poza pytanie, ale moim zdaniem trzeba dać chłopakowi szansę zrehabilitować się po spudłowaniu.
Pozdrawiam
kolejny skrypt np. strzal.sqf
Kod: Zaznacz cały
if (alive cel) then {
if (cel in mi8) then {
mi8 move getpos "1";
}
else {
cel assignAsCargo mi8;
cel orderGetIn true;
waitUntil {cel in mi8};
mi8 move getpos "1";
}
}
else {
mi8 move getpos "1";
sleep 3;
endMission "END1"
}
sleep 15;
if (alive cel and (sniper distance cel > 1000)) then {
endMission "LOSER";
}
else {
if (not alive cel) then {
sleep 3;
endMission "END1";
}
else {
sleep 20
if (not alive cel) then {
sleep 3;
endMission "END1"
}
else {
endMission "LOSER";
}
}
}
Dałbym jeszcze wyzwalacz z końcem misji #2
Kod: Zaznacz cały
not (alive cel or strzal)
Wiem, że wykroczyłem poza pytanie, ale moim zdaniem trzeba dać chłopakowi szansę zrehabilitować się po spudłowaniu.
Pozdrawiam
Re: aktywacja gdy padnie strzał z m107.
Witam! Dziękuję za ekspresową odpowiedz i poświęcony czas.
Niestety zastosowałem Twój skrypt i u mnie nie chce działać. Pewnie to jak zwykle jakiś mój drobny błąd. Nie wiem ale poddaję się powoli...
Zrobiłem wszystko od początku, nie bawiąc się w waypointy itp. postawiłem ruska(cel), snajpera (sniper) i śmiglowiec (mi8). Zastosowałem skrypt rozpoznający wystrzał z m107. Następnie użyłem Twojego skryptu "strzal.sqf" ( wyzwalacz - warunek strzal i w init. [] exec "strzal.sqf";) dałem też drugi wyzwalacz z warunkiem not (alive cel or strzal) z zakończeniem END#2.
Wygląda to tak: Bez względu na to czy zabiję cel czy w niego nie trafię, natychmiast włącza mi się koniec misji. Myślałem, że może winą jest ACE więc włączyłem "czystą" Armę2 i niestety mam to samo. :-( Nie mam już pomysłu o co może chodzić...
Niestety zastosowałem Twój skrypt i u mnie nie chce działać. Pewnie to jak zwykle jakiś mój drobny błąd. Nie wiem ale poddaję się powoli...
Zrobiłem wszystko od początku, nie bawiąc się w waypointy itp. postawiłem ruska(cel), snajpera (sniper) i śmiglowiec (mi8). Zastosowałem skrypt rozpoznający wystrzał z m107. Następnie użyłem Twojego skryptu "strzal.sqf" ( wyzwalacz - warunek strzal i w init. [] exec "strzal.sqf";) dałem też drugi wyzwalacz z warunkiem not (alive cel or strzal) z zakończeniem END#2.
Wygląda to tak: Bez względu na to czy zabiję cel czy w niego nie trafię, natychmiast włącza mi się koniec misji. Myślałem, że może winą jest ACE więc włączyłem "czystą" Armę2 i niestety mam to samo. :-( Nie mam już pomysłu o co może chodzić...
Re: aktywacja gdy padnie strzał z m107.
w init dajkmax1 pisze: ...( wyzwalacz - warunek strzal i w init. [] exec "strzal.sqf";) ...
Kod: Zaznacz cały
[]execVM"strzal.sqf";
-
- Posty: 77
- Rejestracja: 31 grudnia 2009, 14:51
- ID Steam:
- ID gracza: 0
Re: aktywacja gdy padnie strzał z m107.
No faktycznie zapomniałem o tych 2 literkach, przez które wszystko nie działało. I jeszcze pytanie: jaki jest dystans do celu jak oddajesz strzał?
Re: aktywacja gdy padnie strzał z m107.
dzięki! wszystko sprawdzę jak tylko bedę w domu. Jeśli chodzi o odległość snajpera, to rozumiem, że chodzi o zapisany parametr w skrypcie,
(..)if (alive cel and (sniper distance cel > 1000)) then {
endMission "LOSER" (...); w którym chodzi o to, że jeśli snajper byłby dalej niż 1000m, to misja też zakończyłaby się niepowodzeniem.
Jeśli dobrze to zrozumiałem, to z tym nie bedę miał chyba problemu (ewentualnie wpiszę inną odległość). Dziekuję wszystkim za pomoc. Dam znać czy wszystko działa.
(..)if (alive cel and (sniper distance cel > 1000)) then {
endMission "LOSER" (...); w którym chodzi o to, że jeśli snajper byłby dalej niż 1000m, to misja też zakończyłaby się niepowodzeniem.
Jeśli dobrze to zrozumiałem, to z tym nie bedę miał chyba problemu (ewentualnie wpiszę inną odległość). Dziekuję wszystkim za pomoc. Dam znać czy wszystko działa.
-
- Posty: 77
- Rejestracja: 31 grudnia 2009, 14:51
- ID Steam:
- ID gracza: 0
Re: aktywacja gdy padnie strzał z m107.
Chodzi mi tylko o to, że jak po 15 sek. od strzału cel oddali się na 1000m od snajpera to marne szanse, żeby go załatwić (trzeba byłoby szukać igły w stogu siana). Chodzi też o inną ewentualność: odleci śmigłowcem, a snajperowi nie uda się zestrzelić śmigłowca. Ten dystans możesz spokojnie zmieniać w zależności od tego, jaki to teren.
Re: aktywacja gdy padnie strzał z m107.
Troche mi głupio, bo wiem, że to pewnie jakiś banał ale gdy wpisalem w init w wyzwalaczu []execVM "strzal.sqf" wyskakuje mi Type script, expected nothing Nie znam się niestety na skryptach, wiec przepraszam za zadawanie banalnych pytań.
- SaS TrooP
- Posty: 1586
- Rejestracja: 30 października 2008, 17:30
- ID Steam:
- ID gracza: 0
- Lokalizacja: Wodzisław Śl.
- Kontakt:
Re: aktywacja gdy padnie strzał z m107.
dummyshit = [] exec "skrypt.sqf";
po [] jest spacja, a .sqf wymaga wartości, która nie jest używana, w tym przypadku dummyshit (to ma lepszą nazwę, ale teraz jej nie pamiętam)
po [] jest spacja, a .sqf wymaga wartości, która nie jest używana, w tym przypadku dummyshit (to ma lepszą nazwę, ale teraz jej nie pamiętam)
Re: aktywacja gdy padnie strzał z m107.
1. @Sas Troop: używaj ładniejszych słów
2. temp = [] execVM "strzal.sqf" a nie exec
3. zmiennej temp można użyć, żeby sprawdzić, czy skrypt się już skończył (komenda scriptDone)
2. temp = [] execVM "strzal.sqf" a nie exec
3. zmiennej temp można użyć, żeby sprawdzić, czy skrypt się już skończył (komenda scriptDone)
- SaS TrooP
- Posty: 1586
- Rejestracja: 30 października 2008, 17:30
- ID Steam:
- ID gracza: 0
- Lokalizacja: Wodzisław Śl.
- Kontakt:
Re: aktywacja gdy padnie strzał z m107.
execVM, sorry, teraz ja namieszałem 
