Teraz jest Cz 28 mar, 2024 16:19


uszkodzenie śmigłowca po wzniesieniu na daną wysokość

Dział poświęcony edytorowi ArmA II i Operation Arrowhead, czyli tworzeniu misji.
  • Autor
  • Wiadomość
Offline

kmax1

Cywil

Cywil

  • Posty: 2
  • Dołączył(a): N 12 gru, 2010 14:30

uszkodzenie śmigłowca po wzniesieniu na daną wysokość

PostN 12 gru, 2010 15:38

Witam! Mam trochę złożony problem i nie mam pojęcia jak go rozwiązać. Chciałem mojemu bratu zrobić prostą misję, żeby nauczył się latać śmigłowcem na małej wysokości, bo ma tendencję do latania dość wysoko. Czy jest jakiś sposób aby żołnierz (Ai) strzelał do śmigłowca tylko i wyłącznie wtedy gdy śmigłowiec pilotowany przez osobę osiągnie wysokość większą niż np 150m?
Przegrzebałem sieć ale z sił juz opadam... Wymyśliłem (nie znając się na skryptach ), że zastosuje coś takiego...
skrypt1.sqf
if ((getPos heli select 2) >100) then
{
strzal=true
};
w init.sqf dałem strzal=false
a strzal.sqf (powodujący uszkodzenie tylnego rotora) wygląda tak (bezposrednio z jakiegos skryptu z netu- działa):
-----------------------------------------------------------------------
_bombLoc = getPosATL heli;

_warhead = createVehicle ["Sh_125_HE", _bombLoc, [], 0, "CAN_COLLIDE"];
_holder = createVehicle ["weaponHolder", _bombLoc, [], 0, "CAN_COLLIDE"];
_warhead setPosATL (getPosATL _holder);
heli setHit ["mala vrtule", 0.95];
-------------------------------------------------------------------------
Problem polega na tym, że "skrypt1.sqf" nie działa,
ShowscriptErrors pokazuje mi:
if ((/#/getPos heli select 2) >100) then
{
...

Error getPos Type Script, Expected object, Location.
Bardzo proszę o pomoc, siedzę od kilku godzin , nie mam pojęcia o skryptach więc próbuję na podstawie innych coś zdziałać z miernym skutkiem jak widać.

aktualizacja

skrypt1.sqf
--------------------------------------------------------------
if((getPosAsl heli select 2) > 45) then
{
hint format ["jestes za wysoko. (%1)",floor(getPos heli select 2)];
}
-----------------------------------------------------------------------------------------------
Dziwna sprawa. Ustawiłem heli w powietrzu. Jak wiadomo domyślnie jest na wysokości ok 48-50m. I o dziwo skrypt zadziałał... ale jak wpisuję wartość wyższą np 51m to już nie.
Tak jakby działał tylko po włączęniu gry i natychmiast się wyłączał. Zrobiłem wyzwalacz 5000x5000, uruchamia go moj smigłowiec, włączyłem funkcję powtarzania i w On act. wpisałem Nul = [] execVM "skrypt1.sqf"ale to nic nie zmienia. Skrypt działa tylko gdy przy włączeniu gry jest juz spełniony (czyli poniżej 47m).
Czy ktoś wie o co chodzi?
Offline

Eragonek

Szeregowy

Szeregowy

  • Posty: 42
  • Dołączył(a): Śr 15 wrz, 2010 19:59
  • Lokalizacja: Wałbrzych

PostN 12 gru, 2010 18:49

Hyhm...
:co:

Chyba znam łatwiejszy sposób.
(Tylko nie wiem, czy zadziała)


ustaw wyzwalacz:
(dowolny rozmiar, typ - ?? zmiana chyba)

W "warunek":
Kod: Zaznacz cały
heli1 FlyInHeight 100

heli1 - nazwa TWOJEGO śmigłowca
100 - Twoja max. wysokość przelotu

W "przy aktywacji":
Kod: Zaznacz cały
PLAYER AddRating -100000; HintC "ZBYT WYSOKO!:\n'Leć poniżej 100m!'";
 


Jak to działa?
Wyzwalacz się aktywuje, gdy przekroczysz wysokość 100m (w tym przypadku)
"rating -100000" spowoduje, że jednostki sojusznicze uznają Cię za zdrajcę i otworzą ogień ;)

Powinno zadziałać - jak nie, niech ktoś mnie poprawi. ;P


LUB możesz ustawić wrogie jednostki (mogą to być całe grupy żołnierzy p-lot, shilek czy czego tam jeszcze).
Wszystkim daj waypointa z zachowanie: "Beztrosko".
Nie otworzą one ognia.
Następnego waypointa daj obok z zachowaniem "bojowo" - po przejściu do niego jednostki odrazu zaatakują śmigłowiec gracza. ;)

Wyzwalacz (dowolne rozmiary - jak chcesz), TYP: ZMIANA[/b]
W warunku tego wyzwalacza wpisz to samo, co wcześniej, tj.:

Kod: Zaznacz cały
heli1 FlyInHeight 100

heli1 - nazwa TWOJEGO śmigłowca
100 - Twoja max. wysokość przelotu

W polu "przy aktywacji":

Kod: Zaznacz cały
HintC "ZBYT WYSOKO!:\n'Leć poniżej 100m!'";

(notatka o tym, że została przekroczona max. wysokość)

Następnie zsynchronizuj (synchronizacja = F5) waypointy z ustawieniami "beztrosko" z tym wyzwalaczem.

Zadziała to tak:
Na starcie jednostki wroga będą miały zachowanie beztrosko (czyli łopatologicznie będą miały w dupie gracza, nawet jak otworzy ogień), a po aktywacji wyzwalacza (tu: przekroczeniu 100m) zmienią zachowanie na bojowo (łopatologicznie: zaczną się zachowywać, jakby gracz zjadł im rodzinę) = otworzą ogień.
;)
Mam nadzieję, że zadziała, w teorii powinno :P



//Edit:
Trzeci sposób:
Wyzwalacz (dowolne rozmiary - jak chcesz), TYP: ZMIANA; AKTYWACJA: BRAK [/b]
W warunku tego wyzwalacza wpisz to samo, co wcześniej, tj.:

Kod: Zaznacz cały
heli1 FlyInHeight 100

heli1 - nazwa TWOJEGO śmigłowca
100 - Twoja max. wysokość przelotu

W "przy aktywacji" wpisz:
Kod: Zaznacz cały
heli1 setdamage 1; HintC "ZBYT WYSOKO!:\n'Leć poniżej 100m!'";


Spowoduje to zniszczenie śmigłowca po przekroczeniu magicznej bariery 100m.


Ps. Jak ta linijka nie będzie działać:
Kod: Zaznacz cały
heli1 FlyInHeight 100

spróbuj tej:
Kod: Zaznacz cały
(heli1 Height) > 100

(Jeżeli poprawnie napisałem oznacza to, że aktywacja nastąpi pod warunkiem, że wysokość heli1 będzie większa od 100m)
Eragonexor
Obrazek
Offline

kmax1

Cywil

Cywil

  • Posty: 2
  • Dołączył(a): N 12 gru, 2010 14:30

PostN 12 gru, 2010 21:07

Muszę przyznać, że jak zwykle proste sposoby okazują się być najlepsze. Pomogłeś mi przypominając o tak banalnej sprawie jak wyzwalacz i jego jedna z możliwości (SWITCH) . Flyinheight sie jakoś nie sprawdziło ale wpisanie w Condition( getPosAsl heli select 2) > 45 a w On Act. "np. jedną z możliwości : (heli setdammage 1 lub heli setHit ["mala vrtule", 0.95]; itp.) daje znakomity rezultat. Oczywiście biorąc pod uwagę wybranie w wyzwalaczu opcji Switch. Dziękuję za pomoc.
Offline

MedicPl

Kapral

Kapral

  • Posty: 70
  • Dołączył(a): Wt 14 gru, 2010 18:43

PostSo 25 gru, 2010 19:13

Gdybyś chciał by efekt zbyt wysokiego lotu był piękny i sylwestrowy polecam
w "przy aktywacji":
bum = "BO_GBU12_LGB" createVehicle position heli1

Ja osobiście nie sprawdzałem czy zadziała (bo mi wywala "Brak)" :neutral: ), ale powinno. :twisted:
Offline

ppio95 (Piotr)

Porucznik

Porucznik

  • Posty: 303
  • Dołączył(a): So 08 maja, 2010 16:04
  • Lokalizacja: Góra Kalwaria

PostN 26 gru, 2010 14:07

MedicPl napisał(a):Gdybyś chciał by efekt zbyt wysokiego lotu był piękny i sylwestrowy polecam
w "przy aktywacji":
bum = "BO_GBU12_LGB" createVehicle position heli1

Ja osobiście nie sprawdzałem czy zadziała (bo mi wywala "Brak)" :neutral: ), ale powinno. :twisted:


Jak już to:
Kod: Zaznacz cały
bum = "Bo_GBU12_LGB" createVehicle (getPos heli1);
ObrazekObrazekObrazek

Powrót do [ArmA II] Edytor

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 gości

cron