Teraz jest Śr 25 cze, 2025 01:26


Skrypt - Losowanie jednostek z grupy.

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

JaFranek

Major

Major

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

Skrypt - Losowanie jednostek z grupy.

PostPt 06 sty, 2006 22:52

Mam taki oto skrypt losujacy jednostki z grupy:


Kod: Zaznacz cały
_gun = pilot
_group = k1


#Loop2

?NOT alive _gun OR to_end : exit
?"alive _x" count units _group <= 0 : Goto "koniec"
_gunner = units _group select (count units _group - 1)

_obiekt = _gunner


Jak zrobić, aby jedna jednostka z grupy (o nazwie k3) nie była losowana :?:
Próbuje to zrobić, ale jakoś mi nie wychodzi.


_gun - Nie ważne :wink:
_group = k1 - nazwa dowódcy grupy.
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline

PoP

Chorąży

Chorąży

  • Posty: 238
  • Dołączył(a): Pt 14 sty, 2005 17:11

PostSo 07 sty, 2006 09:38

Zrob sobie array jednostek do ktorego przypiszesz jednostki z grupy, a nastepnie od tego arraya odejmij ta jedna jednostke. I losuj z tego arraya.
Offline
Avatar użytkownika

offtime

Pułkownik

Pułkownik

  • Posty: 1089
  • Dołączył(a): So 21 sie, 2004 10:39
  • Lokalizacja: Katowice

PostSo 07 sty, 2006 11:42

jakis dziwny ten skrypt
napisz co tak wlasciwie chcesz osiagnac w grze to moze cos podpowiemy
Offline
Avatar użytkownika

Grey

Chorąży

Chorąży

  • Posty: 166
  • Dołączył(a): Pt 04 mar, 2005 19:53

PostSo 07 sty, 2006 12:40

Gdzie tam jest losowanie? Bo mnie sie wydaje, zey wybierasz ostatnia jednosteke z listy w grupie...
Obrazek CFOG / ACOG team | Platoon.pl | ShackTac | 6th sense | eks Team Tactical | eks RAAB
Offline
Avatar użytkownika

JaFranek

Major

Major

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

PostSo 07 sty, 2006 13:00

Ok to jeszcze raz. Zapomniałem dodać na końcu:

_gun = pilot
_group = k1


#Loop2

?NOT alive _gun OR to_end : exit
?"alive _x" count units _group <= 0 : Goto "koniec"
_gunner = units _group select (count units _group - 1)

_obiekt = _gunner

#Loop3

_gun doMove [(getPos _obiekt select 0)-5,(getPos _obiekt select 1)+200]

?NOT alive _obiekt: Goto "Loop2"
~0.1
Goto "loop3"


#koniec

PoP napisał(a):Zrob sobie array jednostek do ktorego przypiszesz jednostki z grupy, a nastepnie od tego arraya odejmij ta jedna jednostke. I losuj z tego arraya.

Wiem o takiej możliwości, ale ona od razu odpadła, bo w pobliżu są też inne jednostki, które nie mają być losowane.

offtime napisał(a):jakis dziwny ten skrypt
napisz co tak wlasciwie chcesz osiagnac w grze to moze cos podpowiemy


Chodzi o to, aby wylosować jednostkę, za którą będzie podążać Al. Jeżeli ta jednostka zostanie zabita wtedy zostaje wybrana następna jednostka z grupy. I tak aż zostanie jedna jednostka o nazwie k3

Gery napisał(a):Gdzie tam jest losowanie? Bo mnie sie wydaje, zey wybierasz ostatnia jednosteke z listy w grupie...


Zapomniałem dodać tej komendy zaznaczonej na żółto :oops:
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline

PoP

Chorąży

Chorąży

  • Posty: 238
  • Dołączył(a): Pt 14 sty, 2005 17:11

PostSo 07 sty, 2006 13:26

Misiu, ale ty nie robisz arraya wyzwalaczem, tylko array = units grupa - k3
Offline
Avatar użytkownika

JaFranek

Major

Major

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

PostSo 07 sty, 2006 13:47

PoP napisał(a):Misiu, ale ty nie robisz arraya wyzwalaczem, tylko array = units grupa - k3


To w takim razie nie wiem jak to zastosować. Bo prawdę mówiąc to myślałem ze właśnie Ci chodziło o wyzwalacze.
Po prostu nie wiem jak w tym skrypcie zastosować tą komendę array.

Robiłem już coś podobnego, o czym Ty mówisz:

Kod: Zaznacz cały
_gun = pilot
_group = units k1 - k3
..................


Ale wtedy wyskakiwał mi błąd z jakąś macierzą :)
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline

Oscypek

Major

Major

  • Posty: 858
  • Dołączył(a): Pn 01 lis, 2004 12:12
  • Lokalizacja: Maków Podhalański

PostSo 07 sty, 2006 15:11

(units group k1) - k3
A gdzie tam losuje?

Iii....co to?
Kod: Zaznacz cały
?"alive _x" count units _group <= 0 : Goto "koniec"

Tam na początku wygląda jakby miała to być funkcja foreach?
Offline
Avatar użytkownika

JaFranek

Major

Major

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

PostSo 07 sty, 2006 15:23

A to powinno działać tak, że jak lista jednostek będzie już wykorzystana to wychodzi się ze skryptu.
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline
Avatar użytkownika

offtime

Pułkownik

Pułkownik

  • Posty: 1089
  • Dołączył(a): So 21 sie, 2004 10:39
  • Lokalizacja: Katowice

PostSo 07 sty, 2006 15:40

Kod: Zaznacz cały
_grupa = this select 0
_gun = pilot


#Loop1

"?!(alive _x):_grupa - _x" forEach _grupa
?count _grupa == 0 :Exit

_nrand = random(count _grupa)
_nrand=_nrand-(_nrand mod 1)
_target = _grupa select _nrand


#Loop2

_gun doMove [(getPos _target select 0)-5,(getPos _target select 1)+200]

?!(alive _target): Goto "Loop1"
~1
Goto "loop2"

nie testowalem, daj znac jak jakis blad bedzie
i napisz dokladnie jaki blad
Offline
Avatar użytkownika

JaFranek

Major

Major

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

PostSo 07 sty, 2006 16:29

Dałem w wyzwalaczu [k1] exec "...sqs" (k1 nazwa dowódcy grupy) i wyskoczyło mi takie coś.

"_grupa = this select 0|#|: Error select: Typ Obiekt, powionien być Macierz"

Dzięki za trud włożony w robienie tego skryptu, ale ten skrypt, co podałem wcześniej działa poprawnie tylko rozchodzi się o to by nie losował tej jednostki k3.
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline

Oscypek

Major

Major

  • Posty: 858
  • Dołączył(a): Pn 01 lis, 2004 12:12
  • Lokalizacja: Maków Podhalański

PostSo 07 sty, 2006 18:03

ma być: _grupa=_this select 0

Kod: Zaznacz cały
#Loop1

"?!(alive _x):_grupa - _x" forEach _grupa
?count _grupa == 0 :Exit


A nie przypadkiem
"if(not alive _x) then { _grupa = _grupa-_x }" foreach _grupa
Offline
Avatar użytkownika

JaFranek

Major

Major

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

PostSo 07 sty, 2006 18:49

[quote="Oscypek"]ma być: _grupa=_this select 0

A to nie jest to samo co
_grupa= k1 :?:
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Offline
Avatar użytkownika

offtime

Pułkownik

Pułkownik

  • Posty: 1089
  • Dołączył(a): So 21 sie, 2004 10:39
  • Lokalizacja: Katowice

PostSo 07 sty, 2006 21:07

Oscypek napisał(a):ma być: _grupa=_this select 0

tak to fakt

ale to co pisze Franek "_grupa= k1" tez zadziala tylko grupa musi miec nazwe k1
Oscypek napisał(a):
Kod: Zaznacz cały
#Loop1

"?!(alive _x):_grupa - _x" forEach _grupa
?count _grupa == 0 :Exit


A nie przypadkiem
"if(not alive _x) then { _grupa = _grupa-_x }" foreach _grupa

no tez jest blad
powinno byc
"?!(alive _x):_grupa=_grupa - _x" forEach _grupa
kwestia skladni jest chyba nieistotna
"?" - "if"
"(not alive _x)" = "!(alive _x)"
":" = "then"

DODANO:

Kod: Zaznacz cały
_grupa = _this select 0
_hunter = _this select 0


#Loop1

"?!(alive _x):_grupa = _grupa - _x" forEach _grupa
?count _grupa == 0 :Exit

_nrand = random(count _grupa)
_nrand=_nrand-(_nrand mod 1)
_target = _grupa select _nrand


#Loop2

_hunter doMove [(getPos _target select 0)-5,(getPos _target select 1)+200]

?!(alive _target): Goto "Loop1"
~1
Goto "loop2"

odpalane
[nazwa_grupy,nazwa_jednostki_podazajacej] exec "nazwa_skryptu.sqs"

Jerry: Offtime, zasada edycji postów i nie pisania jednego pod drugim wciąż tu obowiązuje ;) Zescalono :)
Offline
Avatar użytkownika

JaFranek

Major

Major

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

PostSo 07 sty, 2006 22:00

Tak, aby wszystko było już jasne. Jako nazwę grupy mogę podąć nazwę lidera grupy :?:

Nie chce, aby to, co teraz napisze zostało odebrane jako wybrzydzanie i narzekanie, ale ciągle wybierane są wszystkie jednostki. A głównym problemem było to, że chciałem, aby jednostka z grupy o nazwie k3 była pomijana podczas losowania.
Tak, więc temat ciągle otwarty.
Nie pytaj, co OF może zrobić dla ciebie, ale co Ty możesz zrobić dla OF
Następna strona

Powrót do Operation Flashpoint

Kto przegląda forum

Użytkownicy przeglądający ten dział: xersius i 5 gości

cron