Teraz jest Śr 18 mar, 2026 19:17


Skrypt wyświetlający pozycję każdej jednostki na mapie

Archiwum działów sekcji Operation Flashpoint
  • Autor
  • Wiadomość
Offline
Avatar użytkownika

kondor

Major

Major

  • Posty: 880
  • Dołączył(a): Pt 11 lut, 2005 04:00
  • Lokalizacja: Berlin (wschodni)

PostN 04 kwi, 2010 20:42

Tyle, że w crcti liczba jednostek była ograniczona z góry przez 2*liczba grup*max group size + resistance.
Nie bardzo rozumiem co mają do tego wektory, chyba tyle, że są zazwyczaj reprezentowane przez tablice.
Offline
Avatar użytkownika

Kadryl

Major

Major

  • Posty: 883
  • Dołączył(a): Cz 14 wrz, 2006 14:04
  • Lokalizacja: Wa-wa

PostPn 05 kwi, 2010 12:25

@alderous
Brak kreakcji markerów to niewątpliwy ból OFP ale, o ile nie chcesz wstawiać nowych jednostek do gry (createunit, createvehicle), to rozwiązanie Kondora jest wystarczające a skrocenia czasu odświerzania spowoduje że i markery będą się przemieszczać.
Problem może pojawić się tylko po likwidacji obiektu czyli w każdej pętli musi być aktualizacja wektorów
Kod: Zaznacz cały
wektor set [count wektor, [[obiekt, "marker"], [], [] ] ]

@kondor
"Tablice" ? - to już raczej macierze.
Czy pojedyńczy obiekt nie jest grupą ? I czy w OFP może wstawić dowolną ilość jednostek ?
Offline
Avatar użytkownika

alderous

Pułkownik

Pułkownik

  • Posty: 1784
  • Dołączył(a): Cz 19 sie, 2004 13:20
  • Lokalizacja: Łódź

PostPn 05 kwi, 2010 13:33

Tak czy inaczej wymaga to więcej grzebania, czego najzwyklej nie chce mi się robić. Zwłaszcza, że znalazłem na dysku xcam by Silola i póki co to mi wystarczy.

Oczywiście jeśli komuś będzie się chciało to zrobić to chętnie potestuje, ale robić samemu szkoda mi czasu.
Offline
Avatar użytkownika

kondor

Major

Major

  • Posty: 880
  • Dołączył(a): Pt 11 lut, 2005 04:00
  • Lokalizacja: Berlin (wschodni)

PostPn 05 kwi, 2010 14:22

Kadryl napisał(a):@alderous
Brak kreakcji markerów to niewątpliwy ból OFP ale, o ile nie chcesz wstawiać nowych jednostek do gry (createunit, createvehicle), to rozwiązanie Kondora jest wystarczające
?? nie podałem żadnego rozwiązania do ofp, a mój skrypt potrafi obsłużyć nieograniczoną liczbę jednostek (praktycznie)
Kadryl napisał(a): a skrocenia czasu odświerzania spowoduje że i markery będą się przemieszczać.
a z 3 sekundami się nie przemieszczają?
Kadryl napisał(a):Problem może pojawić się tylko po likwidacji obiektu czyli w każdej pętli musi być aktualizacja wektorów

jeśli będzie się "lecieć" od końca, to problemu praktycznie nie będzie - wystarczyłoby zrobić coś w stylu:
Kod: Zaznacz cały
marked_objects = marked_objects - [dead_unit]

Kadryl napisał(a):@kondor
"Tablice" ? - to już raczej macierze.

w przypadku o którym mówimy macierz = tablica tablic, więc macierz jest tablicą
Kadryl napisał(a):Czy pojedyńczy obiekt nie jest grupą ?
Z tego co wiem, to tylko obiekt grupy jest grupą
Kadryl napisał(a): I czy w OFP może wstawić dowolną ilość jednostek ?
chyba nie

Spróbuje dziś to spłodzić (ale zakładałoby to istnienie odpowiedniej ilości markerów)
Offline
Avatar użytkownika

kondor

Major

Major

  • Posty: 880
  • Dołączył(a): Pt 11 lut, 2005 04:00
  • Lokalizacja: Berlin (wschodni)

PostPn 05 kwi, 2010 15:33

Zaklada się, że istnieje wystarczająco dużo markerów o nazwie "mX" gdzie X to kolejne liczby całkowite od 0.
Oczywiście nie testowane, a sqsów nie pisałem wieki
dbg_unit_markers.sqs:
Kod: Zaznacz cały
dbg_marked_units = [];

_i = 0;
_unit = objNull;

#main
  _i = count dbg_marked_units;
  (_i == 0): goto "after_update";
  #update
    _unit = dbg_marked_units select _i;
    (format ["m%1", _i]) setMarkerPos (getPos _unit);
    ?(not alive _unit): [_unit, _i] exec "remove_marked_unit.sqs";
    _i = _i - 1;
  ?(_i >= 0): goto "update";
  #after_update
  ~3;
goto "main"


remove_marked_unit.sqs:
Kod: Zaznacz cały
dbg_marked_units = dbg_marked_units - [_this select 0];
(format ["m%1", _this select 1]) setMarkerPos [0, 0];
// zmniejszyla sie ilosc uzywanych markerow:
(format ["m%1", count dbg_marked_units]) setMarkerPos [0, 0];


add_marked_units.sqs:
Kod: Zaznacz cały
{dbg_marked_units = dbg_marked_units + [_x] }forEach _this;
Offline
Avatar użytkownika

Kadryl

Major

Major

  • Posty: 883
  • Dołączył(a): Cz 14 wrz, 2006 14:04
  • Lokalizacja: Wa-wa

PostPn 05 kwi, 2010 21:03

Całkiem fajny skrypcik ;-)
Powinien działać z ograniczeniem:
1) dla wszystkich jednostek musi być taki sam marker
2) po likwidacji obiektu o najniższym numerze (tutaj "0") na 3 sekundy zniknie marker ostatniego obiektu oraz
3) markery przeskoczą na kolejne obiekty co powoduje, że skrypt można użyć tylko i wyłącznie dla warunku jak w punkcie 1.

P..s. rozumiem że wprowadzenie obiektów do wektora "dbg_marked_units" możemy zrobić za pomoca wyzwalacza tzn. trigger "wyzwalacz", aktywowany na calej mapie na obecność danej strony i dalej:
Kod: Zaznacz cały
dbg_marked_units = list wyzwalacz
Offline
Avatar użytkownika

kondor

Major

Major

  • Posty: 880
  • Dołączył(a): Pt 11 lut, 2005 04:00
  • Lokalizacja: Berlin (wschodni)

PostPn 05 kwi, 2010 22:43

Tak, jest to bardzo ograniczony skrypt.
Kadryl napisał(a):P..s. rozumiem że wprowadzenie obiektów do wektora "dbg_marked_units" możemy zrobić za pomoca wyzwalacza tzn. trigger "wyzwalacz", aktywowany na calej mapie na obecność danej strony i dalej:
Kod:
dbg_marked_units = list wyzwalacz

Lub bardziej uniwersalnie
Kod: Zaznacz cały
(list wyzwalacz) exec "add_marked_units.sqs"

zeby nie usuwać ewentualnych innych śledzonych jednostek dodanych np w innych wyzwalaczach
Poprzednia strona

Powrót do Operation Flashpoint

Kto przegląda forum

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

cron