Teraz jest Pt 29 mar, 2024 08:36


Problem z setpos i createvehicle

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

JaFranek

Major

Major

  • Posty: 581
  • Dołączył(a): Wt 16 lis, 2004 14:46
  • Lokalizacja: Tbg

Problem z setpos i createvehicle

PostCz 10 lut, 2011 13:37

Zacznę może od skryptu:

Kod: Zaznacz cały
zal=0;

_coss = "IRStrobe" createvehicle [(getPos p2 select 0),(getPos p2 select 1),2];


#loop
_coss setpos getPos p2;
~0.5
?(zal==0):Goto "loop";

exit


w skrypcie chodzi o to aby wskaźnik podczerwieni (utworzony za pomocą komendy createvehicle) podążał za jednostką o nazwie "p2".
I tak się dzieje ale tylko do pewnego czasu. Po kilkunastu sekundach znacznik przestaje przyjmować pozycję jednostki p2 (warunek zal sie nie zmienia na inną wartość).
Ktos wie o co może chodzić?

Długo tu jesteś i zasady powinieneś znać - następnym razem będzie bolało ;] - Maćko

ODP Maćko - Sory. Tak długo jestem ale dawno nie zakładałem tematu a te forum jest jedynym mi znanym w którym są rodzaje tematów, łatwo o tym zapomnieć. Pozdro
Ostatnio edytowano Cz 10 lut, 2011 20:44 przez JaFranek, łącznie edytowano 2 razy
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline

ppio95 (Piotr)

Porucznik

Porucznik

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

PostCz 10 lut, 2011 15:42

Spróbuj tak:

w polu uruchamianie jednostki na której chcesz, aby ten wskaźnik się wyświetlał wpisz:
m1 = [this] execVM "wskaznik.sqf";
Utwórz skrypt wskaznik.sqf
Kod: Zaznacz cały
_jed = _this select 0;

_coss = "IRStrobe" createvehicle setpos [ getPos _jed select 0, getPos _jed select 1, 2]



EDIT#1 komenda exit powoduje zatrzymanie wykonywania skryptu, proponuję usunięcie jej.
ObrazekObrazekObrazek
Offline
Avatar użytkownika

JaFranek

Major

Major

  • Posty: 581
  • Dołączył(a): Wt 16 lis, 2004 14:46
  • Lokalizacja: Tbg

PostCz 10 lut, 2011 18:38

Twój skrypt byłby ok gdyby nie to ze jednostka się przemieszcza.

Zastosowałem komendę attachTo Ale też po pewnym czasie przestaje podążać za graczem.
Chyba odkryłem co jest powodem. Zauważyłem że po pewnym czasie znika obiekt znacznika i zostaje samo migające światło. W tym wypadku skrypt próbuje przesuwać już nie istniejący obiekt _coss.
Nie wiem co teraz zrobić. Komenda nearestObject nie bedzie działać bo te światło nie jest obiektem. Spróbuje z nearEntities chociaż nie wiem do końca jak ta funkcja działa. Chmyy nie wiem czy czasem gdzieś nie widziałem komendy która ustala czas istnienia obiektu. Musze poszukać
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline
Avatar użytkownika

Smookie

Chorąży

Chorąży

  • Posty: 187
  • Dołączył(a): Wt 27 lip, 2004 19:42

PostCz 10 lut, 2011 19:46

walk-around - odmierz po jakim czasie znika i stwórz kolejny obiekt tj.

skrypt.sqf

while {zal == 0} do
{
if (isnil "coss" or not alive coss) then {deleteVehicle coss; coss = "IRStrobe" createVehicle [0,0,0];};
coss setPos getPos p2;
sleep 0.5;
};
Offline
Avatar użytkownika

JaFranek

Major

Major

  • Posty: 581
  • Dołączył(a): Wt 16 lis, 2004 14:46
  • Lokalizacja: Tbg

PostCz 10 lut, 2011 20:35

Smookie twój skrypt jest ok i też miałem taki pomysł jak by mi się nie udało inaczej.

Po wielu próbach mam chyba to co chciałem. Zamieszczę, może komuś też sie przyda

Kod: Zaznacz cały
Poniżej lepsza wersja


Co prawda istnieje pewne ryzyko że jakiś obiekt znajdzie sie bliżej niż IR i wtedy skrypt nie zadziała ale po kilku testach wszystko było ok. Metoda była by na 100% pewna jak bym znał nazwę klasy obiektu empty.p3d.
Ostatnio edytowano Pt 11 lut, 2011 13:18 przez JaFranek, łącznie edytowano 1 raz
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline
Avatar użytkownika

Smookie

Chorąży

Chorąży

  • Posty: 187
  • Dołączył(a): Wt 27 lip, 2004 19:42

PostPt 11 lut, 2011 11:25

hint format["%1",typeOf coss];

zapętl i zobaczysz:)
Offline
Avatar użytkownika

JaFranek

Major

Major

  • Posty: 581
  • Dołączył(a): Wt 16 lis, 2004 14:46
  • Lokalizacja: Tbg

PostPt 11 lut, 2011 13:17

Próbowałem wcześniej tej komendy ale dałem typeOf _ir select 1 zamiast typeOf (_ir select 1).

Podaje 100% działający skrypt podłączający IR do jednostki


Kod: Zaznacz cały
_addto=_this select 0;

_ir = "NVG_TargetC" createvehicle getPos _addto;
_ir attachTo [_addto,[0,0,1.5]];

exit
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF

Powrót do [ArmA II] Edytor

Kto przegląda forum

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

cron