Teraz jest Pt 17 kwi, 2026 11:09


Spawnowanie zombie w odstępach czasu

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

żuker

Major

Major

  • Posty: 517
  • Dołączył(a): Wt 22 lut, 2005 18:40
  • Lokalizacja: Naugatuck CT; USA

Spawnowanie zombie w odstępach czasu

PostWt 24 maja, 2005 18:40

Witam,
robię misję z udziałem zombie i nie wiem jak zrobić żeby się spawnowały w równych odstępach czasu? Np. co 60 sekund? :?
Offline
Avatar użytkownika

alderous

Pułkownik

Pułkownik

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

Re: Spawnowanie zombie w odstępach czasu

PostWt 24 maja, 2005 18:56

żuker napisał(a):Witam,
robię misję z udziałem zombie i nie wiem jak zrobić żeby się spawnowały w równych odstępach czasu? Np. co 60 sekund? :?


Proponowałbym na przyszłość napisać więcej szczegółów, bo z GG wiem że chodzi o moje zombie, o skrypt i o misje MP, ale z treści to nie wynika.

Moja propozycja jest taka - wstawić wyzwalacz, nazwać go spawn1, warunek dać true i w przy aktywacji wpisać [spawn1,60,6] exec "spawn.sqs". Poza tym trzeba gdzieś na mapie umieścić jednego zombie o nazwie z1 i wstawić element logiczny o nazwie serwer.

Do misji wrzucić skrypty spawn.sqs o następującej zawartości

Kod: Zaznacz cały
?!(local serwer): exit

_pos = _this select 0
_pause = _this select 1
_howMany = _this select 2


#GrandLoop
_point = getPos _pos

_i = 0
#Loop
_point = [(_point select 0) - 25 + random(50),(_point select 1) -25 + random(50)]

_los = random(3)

?(_los<=1):_zombiak1 = "ALDI_zombiak1" createUnit [_point,group z1,"[this] join grpNull;[this] exec {hunt.sqs}; this switchMove {Lying}"]
?(_los>1 && _los<=2):_zombiak1 = "ALDI_zombiak2" createUnit [_point,group z1,"[this] join grpNull;[this] exec {hunt.sqs}; this switchMove {Lying}"]
?(_los>2):_zombiak1 = "ALDI_zombiak3" createUnit [_point,group z1,"[this] join grpNull;[this] exec {hunt.sqs}; this switchMove {Lying}"]
~1
_i = _i + 1
?(_i<_howMany): goto "Loop"
~_pause
goto "GrandLoop"


Pierwszy parametr określa miejsce spawnowania, drugi odstęp czasowy, a trzeci ilość zombie spawnowanych za jednym razem.

Dodatkowo potrzeba skryptu hunt.sqs o następującej treści

Kod: Zaznacz cały
?!(local serwer): exit

_zombiak = _this select 0
lista = [x1,x2,x3,x4,x5,x6]
_n = count lista - 1

#start

_i = -1
_bliski = _zombiak
_dist = 100000


#smallLoop
_i = _i + 1

?(!alive (lista select _i)):goto "smallLoop"
_rob = lista select _i
?((_rob distance _zombiak) < _dist): _bliski = lista select _i
?((_rob distance _zombiak) < _dist): _dist = (_zombiak distance _rob)

?(_i < _n): goto "smallLoop"

_zombiak doMove getPos _bliski

@(("SoldierWMedic" countType [nearestObject[_zombiak,"SoldierWMedic"]] == 1) || (time % 300 == 0))
?("SoldierWMedic" countType [nearestObject[_zombiak,"SoldierWMedic"]] == 0): goto "start"

#loop
_bliski = nearestObject[_zombiak,"SoldierWMedic"]
_zombiak doMove getPos _bliski
_zombiak reveal _bliski
_zombiak DoFire _bliski
~Param1
?(alive _zombiak): goto "loop"
exit


W tablicy lista muszą się znaleźć wszystkie nazwy jednostek, które mają być ściagane przez zombie. Ponadto zombie będą atakować raczej tylko sanitariuszy zachodu - tak już w moich misjach jest.
Offline
Avatar użytkownika

żuker

Major

Major

  • Posty: 517
  • Dołączył(a): Wt 22 lut, 2005 18:40
  • Lokalizacja: Naugatuck CT; USA

Re: Spawnowanie zombie w odstępach czasu

PostWt 24 maja, 2005 19:33

Nie bardzo wiem co wpisać w miejscu w którym się mają pojawiać zombie
alderous napisał(a):_pos = _this select 0
Może jakiś przykład?
Offline
Avatar użytkownika

alderous

Pułkownik

Pułkownik

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

PostWt 24 maja, 2005 19:48

Te moje zombiaki nie są najlepszym wyborem dla kogoś kto dopiero zaczyna się zajmowac missionmakerstwem (nie miałem zamiaru tworzyć czegoś user-friendly). Może spróbowałbyś użyć Unified zombie mod RC3? One są chyba dużo prostsze w użyciu i oferują więcej "opcji"

http://www.unifiedzombiemod.wz.cz/downloads.htm#bkzombiemod
Offline
Avatar użytkownika

żuker

Major

Major

  • Posty: 517
  • Dołączył(a): Wt 22 lut, 2005 18:40
  • Lokalizacja: Naugatuck CT; USA

PostWt 24 maja, 2005 20:11

Już mi działają, a zombiaków z Unified zombie mod nie chcę używać ponieważ mam niemiłe wspomnienia po ich używaniu, często po kilku minutach zawieszały mi kompa. A twoje chodzą bardzo dobrze :)

Wysłany 25 Maj 2005, 22:29:

Alderous dzięki za pomoc, ale mam jeszcze jedno pytanie. Jak zrobić żeby zombie spawnowały się w kilku miejscach a nie tylko w jednym?
Offline
Avatar użytkownika

alderous

Pułkownik

Pułkownik

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

PostCz 26 maja, 2005 10:02

Metod pewnie jest wiele. Można zrobić tak jak opisywałem wyżej tyle że ustawić kilka takich wyzwalaczy czyli np. spawn1, spawn2, spawn3 itd, a w każdym wpisać odpowiednio warunek true i w przy aktywacji [spawn1,60,6] exec "spawn.sqs", [spawn2,60,6] exec "spawn.sqs" itd. Dodatkowo najlepiej dać w drugim opóźnienie 20 (wpisać 20 w pola max, min, i śr), a w trzecim 40 - dzięki temu nie będzie tworzył 18 zombie w krótkim przedziale czasu. To chyba najprostsze rozwiązanie.

Oczywiście można stworzyć skrypt który w ustalonych odstępach czasu tworzy grupę zombie w jednym punkcie wybranym losowo z listy wszystkich punktów - coś takiego jest w Search'n'Survive, gdzie jest dziewięć takich miejsc spawnowania. W przypadku trzech skrypt wyglądałby tak

Kod: Zaznacz cały
!(local serwer): exit

_points = [spawn1,spawn2,spawn3]
_pause = _this select 0
_howMany = _this select 1

_n = count _points

#GrandLoop
_miejsce = random(_n)
?(_miejsce == _n): goto "GrandLoop"
_miejsce = _miejsce - (_miejsce % 1)
_point = _points select _miejsce
_point = getPos _point

_i = 0
#Loop
_point = [(_point select 0) - 5 + random(10),(_point select 1) - 5 + random(10)]

_los = random(3)

?(_los<=1):_zombiak1 = "ALDI_zombiak1" createUnit [_point,group z1,"[this] join grpNull;[this] exec {hunt.sqs}; this switchMove {Lying}"]
?(_los>1 && _los<=2):_zombiak1 = "ALDI_zombiak2" createUnit [_point,group z1,"[this] join grpNull;[this] exec {hunt.sqs}; this switchMove {Lying}"]
?(_los>2):_zombiak1 = "ALDI_zombiak3" createUnit [_point,group z1,"[this] join grpNull;[this] exec {hunt.sqs}; this switchMove {Lying}"]
~1
_i = _i + 1
?(_i<_howMany): goto "Loop"
~_pause
goto "GrandLoop"


Wystarczy umieścić jakieś obiekty (np. wyzwalacze) nazwane spawn1, spawn2 i spawn3 oraz odpalić skrypt w jakiejś Inicjacji wpisując [60,6] exec "spawn.sqs". Ozywiście tak jak poprzednio musi być gdzieś zombie o nazwie z1.

Powrót do Operation Flashpoint

Kto przegląda forum

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

cron