aktywacja gdy padnie strzał z m107.

Edytor Arma (Arma, Arma2, Arma2OA)

Moderatorzy: kondor, Inkwizytor

kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

aktywacja gdy padnie strzał z m107.

Post autor: kmax1 »

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";

};
};
------------------------------------------------------
Ostatnio zmieniony 02 lutego 2010, 02:23 przez kmax1, łącznie zmieniany 1 raz.
krzysiek2222
Posty: 77
Rejestracja: 31 grudnia 2009, 14:51
ID Steam:
ID gracza: 0

Re: aktywacja gdy padnie strzał z m107.

Post autor: krzysiek2222 »

Moim zdaniem to przy strzale z m107 możesz zrobić coś takiego
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";
}
}
}
I dajesz wyzwalacz z warunkiem strzal i w aktywacji [] exec "strzal.sqf";
Dałbym jeszcze wyzwalacz z końcem misji #2

Kod: Zaznacz cały

not (alive cel or strzal) 
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
kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

Re: aktywacja gdy padnie strzał z m107.

Post autor: kmax1 »

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ć...
Awatar użytkownika
Artek3333
Posty: 578
Rejestracja: 29 czerwca 2007, 20:02
ID Steam:
ID gracza: 0
Lokalizacja: Żywiec

Re: aktywacja gdy padnie strzał z m107.

Post autor: Artek3333 »

kmax1 pisze: ...( wyzwalacz - warunek strzal i w init. [] exec "strzal.sqf";) ...
w init daj

Kod: Zaznacz cały

[]execVM"strzal.sqf"; 
bez VM to tylko sqs.
krzysiek2222
Posty: 77
Rejestracja: 31 grudnia 2009, 14:51
ID Steam:
ID gracza: 0

Re: aktywacja gdy padnie strzał z m107.

Post autor: krzysiek2222 »

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ł?
kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

Re: aktywacja gdy padnie strzał z m107.

Post autor: kmax1 »

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.
krzysiek2222
Posty: 77
Rejestracja: 31 grudnia 2009, 14:51
ID Steam:
ID gracza: 0

Re: aktywacja gdy padnie strzał z m107.

Post autor: krzysiek2222 »

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.
kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

Re: aktywacja gdy padnie strzał z m107.

Post autor: kmax1 »

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ń.
Awatar użytkownika
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.

Post autor: SaS TrooP »

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)
Awatar użytkownika
kondor
Posty: 1526
Rejestracja: 13 marca 2007, 11:50
ID Steam: Przemek_kondor
Kontakt:

Re: aktywacja gdy padnie strzał z m107.

Post autor: kondor »

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)
Awatar użytkownika
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.

Post autor: SaS TrooP »

execVM, sorry, teraz ja namieszałem :P
ODPOWIEDZ

Wróć do „Edycja oraz tworzenie misji, skrypty oraz programowanie”