Teraz jest Cz 28 mar, 2024 13:26


ZAKŁADNIK - moja wersja ale chcę coś do tego dodać

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

zacny

Szeregowy

Szeregowy

  • Posty: 22
  • Dołączył(a): Śr 07 gru, 2011 17:07

ZAKŁADNIK - moja wersja ale chcę coś do tego dodać

PostŚr 07 gru, 2011 17:52

Witam

Ostatnio rozkminiłem motyw zakładnika....przedstawię wam jak ja to robię i kumam. Może jest jakiś prostszy sposób na to, lub krótszy, mimo wszystko do tego chciałbym coś jeszcze dodać, ale najpierw moja pełna teoria jak to robię:

1. Zakładnik jako cywil:

Niezależni niech sprzyjają CZERWONYM.

Siebie nazywamy - gracz

Zakładnika nazywamy - zaklad

Wstawiamy wyzwalacz przy cywilu, następnie w opcjach wyzwalacza:

Warunek:

(gracz distance zaklad)<3

Przy aktywacji:

[zaklad] join gracz

Jak działa wyzwalacz? - kiedy jednostka "gracz" podejdzie do "zaklad", ten "zaklad" dołącza do grupy "gracz".

Edytując jednostkę cywila, w uruchamianie możemy dodać komendę:

setUnitPos "UP";

Jednostka będzie w pozycji stojącej.


2. Zakładnik jako wojskowy, np. pilot

Niezależni niech sprzyjają CZERWONYM.

Komenda w wyzwalaczu jest identyczna jak w przypadku z cywilem.

Ustawiamy naszego pilota i cywila (cywil musi być dowódcą, tj. mieć wyższy stopień).
Prawdopodobieństwo obecności cywila ustawiamy na 0%.
Grupujemy pilota z cywilem.

Najlepiej jak pilot jest bezbronny, skrypt w edycji jednostki, uruchamianie:

this removeWeapon "nazwa broni".

Edytując jednostkę pilota, w uruchamianie możemy dodać komendę:

setUnitPos "UP";

Jednostka będzie w pozycji stojącej.

Dlaczego wojskowy lub cywil nie może mieć broni?

W wypadku, kiedy wojskowy lub cywil jest chroniony przez wroga, nieprzyjaciel nie zabije cywila, lub wojskowego, ponieważ traktuje go jako cywila (neutrala), nawet jeśli cywil lub wojskowy sprzyja CZERWONYM. W przypadku kiedy cywil lub wojskowy będzie posiadał broń, wtedy zabije ochronę, a reszta strażników dalej nie zareaguje (w dalszym ciągu traktują go jako cywil-neutral, zaś cywil/wojskowy sprzyjając CZERWONYM, traktuje ochronę jako wrogów).

Można także ustawić aby niezależni sprzyjali:

- Wszystkim - zakładnik nie będzie agresywny dla obu stron.
- Nikomu - zakładnik będzie wrogiem (otworzy ogień) dla obu stron.

Oczywiście kiedy cywil/wojskowy dołącza do nas, tym samym staje się wrogiem dla NIEBIESCY i od tej chwili może być narażony na ogień nieprzyjaciela.

I TERAZ PYTANIA DODATKOWE

- Czy moja teoria w pełni jest słuszna?, czy można to jeszcze inaczej zrobić

1. Ja jako dowódca i nazwany "gracz" jestem upoważniony do zabrania zakładnika. Ale jeżeli w przeciągu akcji zginę, to co ? - niższy stopniem gracz przejmie dowodzenie nad botem? (np. ja jestem majorem, kowalski jest poruczniekiem). Idziemy po zakładnika, ale dajmy na to zginałem i teraz co? - kowalski przejmuje dowództwo w mojej grupie i da radę przejąć zakładnika?

2. Chciałbym aby wszystkim pojawił się komunikat w chwili przejęcia zakładnika "zakłądnik przejęty"

3. W przypadku jeżeli zakładnik zginie ma się pojawić komunikat "Zakładnik zginął. Misja zakończona niepomyślnie"

4. Zakładnika trzeba dostarczyć żywego w pewien punkt na mapie. Jeżeli go tam dostarczymy np. do miasteczka, wszystkim wyskakuje komunikat "Zakładnik dostarczony, misja wykonana".

To wszystko, z góry dzięki za sugestie i okazaną pomoc.
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostŚr 07 gru, 2011 17:57

Łatwiej po prostu wpisać zakładnikowi w inicie this setCaptive true. Co do pytania no.1 to lepiej ustawić przejmowanie na dowódcę danej grupy, wtedy nawet, jeśli oddział zostanie zmasakrowany i zostanie tylko jeden żołnierz, to dowódca będzie obecny i przejęcie nastąpi.

A tak w ogóle to są dostępne gotowe skrypty zakładników, więc po co kombinować?
Offline

tom3kb

Major

Major

  • Posty: 523
  • Dołączył(a): Pt 04 mar, 2011 07:35

PostŚr 07 gru, 2011 18:10

2. W odpowiednim wyzwalaczu, w przy aktywacji napisz: hint "zakładnik przejęty"
3. Ustaw wyzwalacz typ porażka i w zakładce efekty wybierz typ-tekst i wpisz to co chciałeś albo też komenda hint.
4. Ta sama metoda np z hint, w warunek wpisz odpowiednia komende z setdistance, a w przy aktywacji hint albo też efekty-typ-tekst.
Jest jeszcze parę innych sposobów np: sidechat,groupchat kto co woli :)
Offline
Avatar użytkownika

Artek3333

Chorąży

Chorąży

  • Posty: 223
  • Dołączył(a): Śr 18 lip, 2007 19:17
  • Lokalizacja: Żywiec

PostŚr 07 gru, 2011 19:12

Takie swoje 5 groszy.
Można tak.

Kod: Zaznacz cały
taskhint ["ZADANIE WYKONANE\nZakładnik przechwycony", [0.1, 0.9, 0.2, 1], "taskDone"]

Obrazek

Kod: Zaznacz cały
taskhint ["PORAŻKA\nZakładnik zginał", [1, 0.2, 0, 1], "taskFailed"]

Obrazek
Komendę oczywiście wpisuje się w uruchamianiu.
Offline

zacny

Szeregowy

Szeregowy

  • Posty: 22
  • Dołączył(a): Śr 07 gru, 2011 17:07

PostŚr 07 gru, 2011 19:57

Fajno dzięki, ale reasumując zrobiłem tak, początek po swojemu:

1. Zakładnik jako cywil:

Niezależni sprzyjają CZERWONYM.
Siebie nazywamy - gracz
Zakładnika nazywamy - zaklad
Wstawiamy wyzwalacz przy cywilu, następnie w opcjach wyzwalacza:
Warunek:
(gracz distance zaklad)<3
Przy aktywacji:
[zaklad] join gracz

NASTĘPNIE DODATKOWO w tym samym wyzwalaczu wpisałem przy aktywacji: hint "zakładnik przejęty"

Wszystko w porządku podbijam do kolesia - dołącza do mnie i pojawia się dany komunikat.

Jednak prosiłbym o bardziej szczegółowo jeżeli chodzi o komunikat gdy zakładnik zginie.
Mam stworzyć w tym celu następny wyzwalacz? i co w nim dokładnie wpisać (warunek, przy aktywacji"?

Tak samo przy dostarczeniu go w pewny punkt.
Na drugim końcu mapy stwarzam wyzwalacz i co w nim wpisuje?

Kolega wcześniej napisał "wpisz odpowiednia komende z setdistance"
Sorry ale tutaj się już gubię "co i gdzie".

Proszę tylko napisać co w warunku i aktywacji przy danym motywie to bardziej zajarzę.
Pozdro :]
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostŚr 07 gru, 2011 20:07

Co do ginącego zakładnika, to warunek not alive zaklad, a przy aktywacji jak wyżej, tylko inny tekst hinta wpisz.

A doprowadzenie zakładnika do danego punktu może wyglądać tak: postaw w tym punkcie jakikolwiek obiekt (czołg, człowieka, stół. Cokolwiek, co się stamtąd nie ruszy) i nazwij go, np. ucieczka. Potem stwórz triggera, pole warunek: zaklad distance ucieczka <= 50. Wyzwalacz zaskoczy, gdy jednostka zaklad zbliży się do jednostki ucieczka na 50 lub mniej metrów. A w polu aktywacja to zależy, co chcesz dalej osiągnąć ;)
Offline

zacny

Szeregowy

Szeregowy

  • Posty: 22
  • Dołączył(a): Śr 07 gru, 2011 17:07

PostCz 15 gru, 2011 16:59

Dzięki za wszystko, mam jeszcze jedne pytanie do tego motywu.

Chciałbym dodać do tego, żeby w chwili przejęcia zakładnika - założył ręce za głowę (poddał się). Jakby wyglądał taki skrypt i gdzie go dodać?
Z góry dzięki.
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostCz 15 gru, 2011 17:48

Całkiem łatwe. W wyzwalaczu, który powoduje przejęcie zakładnika dodajesz taką linię:

zakladnik playMove "nazwa_animacji";

Zakladnik - nazwa jednostki
playMove - jeśli by nie działało spróbuj zmienić na switchMove. Z jakiegoś powodu jedne animacje działają z jedną komendą, a inne z drugą.
"nazwa_animacji" - No... Nazwa animacji ;) Listę wszystkich dostępnych masz tutaj: http://community.bistudio.com/wiki/ArmA2:_Moves
Offline

zacny

Szeregowy

Szeregowy

  • Posty: 22
  • Dołączył(a): Śr 07 gru, 2011 17:07

PostPt 16 gru, 2011 14:50

Ok w wyzwalaczu działa, można też w punkcie nawigacyjnym. Problem tylko w tym, że wykonuje raz daną animację (np. robi pompki potem wstaje i kończy, a ma dalej cisnąć!)
Chciałbym jeszcze zrobić pętlę (tak żeby postać powtarzała daną animację - nie chcę przez punkt nawigacyjny (przełącz) - bo to się czasami psioczy).
Jaką komendę dodać w WYZWALACZU, aby dana jednostka ciągle powtarzała animację?
Z góry dzięki!
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostPt 16 gru, 2011 15:29

Jeden temat wyżej wrzuciłem link do skryptu tworzącego pętelkę animacji.
Offline

zacny

Szeregowy

Szeregowy

  • Posty: 22
  • Dołączył(a): Śr 07 gru, 2011 17:07

PostN 18 gru, 2011 16:08

Hmmm...czyli jakby to w tym przypadku wyglądało? bo nie za bardzo kumam tą pętlę...
Dodam tylko, że w tym przypadku aktywacja ma być bez niczyjej ingerencji, bot ma sam wykonywać czynność (tu załączam aktywacja: "ktokolwiek" i bot wykonuje raz daną czynność).

Dajmy na to przykład pompek czyli animacja:

W wyzwalaczu w polu:

Aktywacja: soldier switchMove "AmovPercMstpSnonWnonDnon_idle71kliky";

Hmmmm...i co dalej z tą pętlą?
Z góry dziękuję
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostN 18 gru, 2011 16:16

Nie spojrzałeś do linka, o którym napisałem? Ale dobrze...


animLoop.sqf
Kod: Zaznacz cały
_unit = _this select 0;
_anim = _this select 1;

while{alive _unit}do{
   _unit playMove _anim;
   waitUntil{animationState _unit != _anim};
};


Taki pliczek tworzysz w folderze misji. while{alive _unit} to warunek, który musi być spełniony aby animacja się zapętlała. Możesz tam wrzucić, co Ci odpowiada.

Skrypt wywołujesz taką komendą:
0 = [this,"ActsPercMstpSnonWnonDnon_talking02"] execVM "animLoop.sqf";

Nazwę animacji zmień, na jaką chcesz. 'This' oznacza jednostkę, jeśli wywołujesz z innego pola niż jej init, to musisz ją nazwać i wpisać tam.
Jakby nie chciało banglać, to w skrypcie zmień playMove na switchMove.
Offline

zacny

Szeregowy

Szeregowy

  • Posty: 22
  • Dołączył(a): Śr 07 gru, 2011 17:07

PostN 18 gru, 2011 16:50

To tak

Żołnierza nazywam: soldier

w animLoop.sqf

_unit = _soldier select 0;
_anim = _soldier select 1;

while{alive _unit}do{
_unit playMove _anim;
waitUntil{animationState _unit != _anim};
};

Następnie w wyzwalaczu, w polu aktywacja:

soldier switchMove "AmovPercMstpSnonWnonDnon_idle71kliky";0 = [soldier,"AmovPercMstpSnonWnonDnon_idle71kliky"] execVM "animLoop.sqf";


Nie wywala błędu, lecz nadal wykonuje daną animację tylko raz. Coś pominąłem? :/
Offline
Avatar użytkownika

Mustang185

Pułkownik

Pułkownik

  • Posty: 1032
  • Dołączył(a): N 04 kwi, 2010 00:30
  • Lokalizacja: Jasło

PostN 18 gru, 2011 16:54

Aktywacja powinna wyglądać tak :

0 = [soldier,"AmovPercMstpSnonWnonDnon_idle71kliky"] execVM "animLoop.sqf";

Wcześniejsza linijka była niepotrzebna :)


A, i w skrypcie niepotrzebnie zmieniłeś _this na _soldier.
Offline

zacny

Szeregowy

Szeregowy

  • Posty: 22
  • Dołączył(a): Śr 07 gru, 2011 17:07

PostN 18 gru, 2011 17:04

Ok, dziękuję pompuje aż miło ;]
Wszystko działa poprawnie.
Następna strona

Powrót do [ArmA II] Edytor

Kto przegląda forum

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

cron