Teraz jest Cz 28 mar, 2024 17:06


Wyzwalacz wysokości

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

Dudi

Chorąży

Chorąży

  • Posty: 201
  • Dołączył(a): Wt 14 gru, 2010 22:54

Wyzwalacz wysokości

PostPn 01 sie, 2011 09:47

Witam, proszę o informację jeśli ktoś taką posiada. Chodzi mi o ustawienie wyzwalacza tak aby zadziałał jedynie gdy lecący helikopter jest poniżej pewnej wysokości lub ewentualnie żeby wcale nie reagował na śmigłowce. Dzięki.
Ostatnio edytowano Pn 01 sie, 2011 14:24 przez Dudi, łącznie edytowano 1 raz
Offline

tom3kb

Major

Major

  • Posty: 523
  • Dołączył(a): Pt 04 mar, 2011 07:35

PostPn 01 sie, 2011 10:10

Kurcze pamiętam, że gdzieś już takie coś widziałem chyba w kampanii do OFP Retaliation Episode 1 tam chyba jak leciałeś na za dużej wysokości to wykrywały cię radary i szyłki zaczynały strzelać, spróbuje coś znaleźć, do army 2 ktoś robił misje treningowe, że jak przekraczałeś jakąś wysokośc to oblewałeś chyba to będzie coś z komendą FlyInHeight. Spróbuje poszukać.

Tak jak pisałem gdzieś już to widziałem. O chyba tu znajdziesz coś co możne ci się przydać i możesz przerobić na swoje potrzeby :)
http://www.forum.armacenter.pl/viewtopi ... ta++wysoko

Masz tam kilka pomysłów na to żeby wróg np ostrzeliwał helikopter gdy ten przekroczy jakąś wysokość lotu itp.
Offline
Avatar użytkownika

Sejtan

Major

Major

  • Posty: 676
  • Dołączył(a): Pn 19 lip, 2004 21:26
  • Lokalizacja: Starogard Gdański

PostSo 06 sie, 2011 01:32

Całkiem niedawno bawiłem się w wykrywanie celu lecącego na różnych wysokościach przez przeciwnika... spobób prosty i działający w 100%:

Kod: Zaznacz cały
while {true} do
{
   if ((alive plane1) && count (group plane1 unitsBelowHeight 100) > 0) then
   {
      plane1 setCaptive false;
      rusPanc1 globalChat "Cel w zasięgu";
   }
else

   {
      plane1 setCaptive true;
      rusPanc1 globalChat "Cel poza zasięgiem";
   };
};


Małe wyjaśnienie:

if ((alive plane1) && count (group plane1 unitsBelowHeight 100) > 0) then

Jeśli jednostka plane1 żyje i jest poniżej 100m to:

plane1 setCaptive false;

jest dla wroga przeciwnikiem...

else
inaczej:

plane1 setCaptive true;

czyli przeciwnikiem już nie jest...

Te globalChat mam tylko po to, że by zobaczyć czy pętelka działa.

Troche łopatologiczne to moje tłumaczenie, ale mam za sobą 800km po naszych drogach i inne formułowanie zdań mi nie przychodzi do głowy :]
Offline
Avatar użytkownika

Dudi

Chorąży

Chorąży

  • Posty: 201
  • Dołączył(a): Wt 14 gru, 2010 22:54

PostSo 06 sie, 2011 08:01

zajebisty skrypt i na pewno się przyda ale jest jedno ale :) chodziło mi o to żeby wyzwalacz uruchamiał się wyłącznie, tzn tworzył jednostki przeciwnika tylko gdy śmigłowiec jest na ziemi lub na bardzo małej wysokości (~5 - 10 m), a to z prostej przyczyny, mapa jest usiana takimi wyzwalaczami, ponieważ jak wiadomo duża ilość przeciwnika na mapie zamula grę i spada FPS, mam skrypt który tworzy jednostki wyłącznie po wejściu w zasięg wyzwalacza. Śmigła są szybkie i gdy gracze zahaczą po drodze kilkanaście wyzwalaczy odpalą kilka skryptów na raz a to zabije grę.
Offline
Avatar użytkownika

Sejtan

Major

Major

  • Posty: 676
  • Dołączył(a): Pn 19 lip, 2004 21:26
  • Lokalizacja: Starogard Gdański

PostSo 06 sie, 2011 13:08

A po co zaśmiecać mapę setką wyzwalaczy?

Kod: Zaznacz cały
while {true} do
{
   if ((alive heli) && count (group heli unitsBelowHeight 10) > 0) then
   {
      _grp = createGroup east;
       unit = _grp createUnit ["RU_Soldier_AA", position player, [], 100, "FORM"];   
      [unit] join _grp;
       unit move position player;
       sleep 60;
   };
};


Jeśli heli żyje i jest poniżej 10m, w odległości 100m od niego zostanie stworzona jednostka unit, która zaraz po "narodzinach :)" pobiegnie w stronę gracza. Nie trzeba żadnych wyzwalaczy.... Jednak jeśli zależy Ci by skrypt działał np tylko na terenie wroga, a nie w macierzystej bazie, postaw odpowiedniej wielkości wyzwalacz, zgrupuj go z śmigłem, (aktywacja przez pojazd) i w warunku wpisz to co jest napisane w warunku skryptu, a w uruchamianiu nic = [] execVM "nazwa_skryptu.sqf". Bez wyzwalaczy to samo wpisujesz w init misji.

Powrót do [ArmA II] Edytor

Kto przegląda forum

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