idea CreateUnit
Moderator: Inkwizytor
idea CreateUnit
Hejka
Chciałbym aby ktoś sprobowal rozwiazac moj problem. Otoz mam sobie misje i chcialbym aby po aktywacji pewnego wyzwalacza kilkadziesiat metrow dalej utworzyly sie nowe jednostki wroga. Problem jest taki, ze wyczytalem na jednym forum informacje iz, zeby skorzystac z CreateUnit nalezy najpierw utworzyc tam jakas grupe i do niej podlaczyc nowo utworzona jednostke.
Ja chce to zrobic na 2 sposoby:
- za pomoca markera tzn. ustawic na mapie marker 100x100 i chce aby w tym polu pojawilo sie kilka jednostek w losowych miejscach
- chce, aby nowo utworzone jednostki pojawily sie w konkretnych miejscach.
Co mam zrobić?
Chciałbym aby ktoś sprobowal rozwiazac moj problem. Otoz mam sobie misje i chcialbym aby po aktywacji pewnego wyzwalacza kilkadziesiat metrow dalej utworzyly sie nowe jednostki wroga. Problem jest taki, ze wyczytalem na jednym forum informacje iz, zeby skorzystac z CreateUnit nalezy najpierw utworzyc tam jakas grupe i do niej podlaczyc nowo utworzona jednostke.
Ja chce to zrobic na 2 sposoby:
- za pomoca markera tzn. ustawic na mapie marker 100x100 i chce aby w tym polu pojawilo sie kilka jednostek w losowych miejscach
- chce, aby nowo utworzone jednostki pojawily sie w konkretnych miejscach.
Co mam zrobić?
Re: idea CreateUnit
zrób sobie najpierw jedną jednostkę daleko poza terenem działań.
nazwij ją Dummy.
wstaw też element logiczny o nazwie Server, aby skrypt był mp friendly.
to jest to losowe ustawienie, jak chcesz konkretne to po prostu zmień _pos. każda jednostka będzie bez grupy(to join grpnull robi ze wywala jednostkę z grupy Dummiego).
nazwij ją Dummy.
wstaw też element logiczny o nazwie Server, aby skrypt był mp friendly.
Kod: Zaznacz cały
if(! local Server):exitwith{};
_pos = [((getmarkerpos "marker") select 0) + (random 100 - 50),((getmarkerpos "marker") select 1) + (random 100 - 50)] ;
_unit = "klasa jednostki, np. soldierWB" createUnit [_pos, group Dummy];
[_unit] join grpnull;
if(true):exitwith{};
to jest to losowe ustawienie, jak chcesz konkretne to po prostu zmień _pos. każda jednostka będzie bez grupy(to join grpnull robi ze wywala jednostkę z grupy Dummiego).
Ostatnio zmieniony 01 lipca 2007, 09:58 przez gremdek, łącznie zmieniany 1 raz.
cfog skończył się na kill'em all
Re: idea CreateUnit
if(! local Server)... a nie if !(local Server)...gremdek pisze:Kod: Zaznacz cały
if!(local Server):exitwith{}; _pos = [((getmarkerpos "marker") select 0) + (random 100 - 50),((getmarkerpos "marker") select 1) + (random 100 - 50)] ; _unit = "klasa jednostki, np. soldierWB" createUnit [_pos, group Dummy]; [_unit] join grpnull; if(true):exitwith{};
http://community.bistudio.com/wiki/Cont ... -Statement
Re: idea CreateUnit
gremdek, a moglbys konkretniej z tą zmiana _pos?? I czy zmienia sie jakies wartosci w tym kodzie przy zmiane wielkosci markera??
Re: idea CreateUnit
if(! local Server):exitwith{};
Jesli skrypt jest odpalony poza serwerem, zakoncz skrypt
_pos = [((getmarkerpos "marker") select 0) + (random 100 - 50),((getmarkerpos "marker") select 1) + (random 100 - 50)] ;
Nowa pozycja generowanej pozycji rowna się pozycja X markera o nazwie "marker" +-50 metrow i pozycja Y "markera" +-50metrow.
_unit = "klasa jednostki, np. soldierWB" createUnit [_pos, group Dummy];
stworz jednostke o klasie "klasa jednostki" (np. SoldierWB) na pozycji wczesniej wskazanej przez _pos. Nowa jednostka ma byc dolaczona do grupy jednostki o nazwie wlasnej "Dummy" (umieszczonej w edytorze)
[_unit] join grpnull;
Dodaj nowo utworzona jednostke do NIEISTNIEJACEJ grupy czyli stworz nowa grupe dla niej.
if(true):exitwith{};
Koniec kodu (po co to?)
Wg Raedora (http://community.bistudio.com/wiki/createUnit) funkcja createunit nic nie zwraca. Wpis pochodzi z 2006 roku czyli z OFP co mnie dziwi.
Nie sprawdzalem, jak jest w ArmA. Byc moze trzeba nieco bardziej skomplikowac skrypt, aby odlaczyc nowopowstala jednostke od grupy Dummy.
Najlatwiej wzbogacic creatunit o:
_unit = "klasa jednostki, np. soldierWB" createUnit [_pos, group Dummy,"createdUnit = this"];
A nastepnie
[createdUnit] join grpnull;
Ale tu sie pojawiaja kolejne komplikacje w przypadku bardziej skomplikowanego uzycia w trakcie misji. Jesli gremdekowa propozycja dziala, byloby najwygodniej.
Jesli skrypt jest odpalony poza serwerem, zakoncz skrypt
_pos = [((getmarkerpos "marker") select 0) + (random 100 - 50),((getmarkerpos "marker") select 1) + (random 100 - 50)] ;
Nowa pozycja generowanej pozycji rowna się pozycja X markera o nazwie "marker" +-50 metrow i pozycja Y "markera" +-50metrow.
_unit = "klasa jednostki, np. soldierWB" createUnit [_pos, group Dummy];
stworz jednostke o klasie "klasa jednostki" (np. SoldierWB) na pozycji wczesniej wskazanej przez _pos. Nowa jednostka ma byc dolaczona do grupy jednostki o nazwie wlasnej "Dummy" (umieszczonej w edytorze)
[_unit] join grpnull;
Dodaj nowo utworzona jednostke do NIEISTNIEJACEJ grupy czyli stworz nowa grupe dla niej.
if(true):exitwith{};
Koniec kodu (po co to?)
Wg Raedora (http://community.bistudio.com/wiki/createUnit) funkcja createunit nic nie zwraca. Wpis pochodzi z 2006 roku czyli z OFP co mnie dziwi.
Nie sprawdzalem, jak jest w ArmA. Byc moze trzeba nieco bardziej skomplikowac skrypt, aby odlaczyc nowopowstala jednostke od grupy Dummy.
Najlatwiej wzbogacic creatunit o:
_unit = "klasa jednostki, np. soldierWB" createUnit [_pos, group Dummy,"createdUnit = this"];
A nastepnie
[createdUnit] join grpnull;
Ale tu sie pojawiaja kolejne komplikacje w przypadku bardziej skomplikowanego uzycia w trakcie misji. Jesli gremdekowa propozycja dziala, byloby najwygodniej.
Re: idea CreateUnit
Misja jest pod SP, wiec wszelkie wpisy sluzace za mp friendly mozna sobie darować
Poprobuje pozniej, ale dzieki.
