if , then waypointy

Edytor Arma (Arma, Arma2, Arma2OA)

Moderatorzy: kondor, Inkwizytor

ODPOWIEDZ
kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

if , then waypointy

Post autor: kmax1 »

Wiem, że dla niektórych osób na tym forum pytanie jest pewnie banalne ale nie znalazłem nigdzie dokładnej odpowiedzi, więc proszę o pomoc.
Czy da się zrobić tak aby w wywołanym (przez execVM) skrypcie jednostki miały przypisane waypointy ( _wp1, _wp2, _wp3) a po spełnieniu jakiegoś warunku zostały one skasowane i zastąpione nowymi (_wp4, _wp5, _wp6)? Pokażę o co mi chodzi na podstawie tego co próbowałem sam wymyślić i mi nie wychodzi (uczę się dopiero więc proszę o wybaczenie...).
W tym wypadku chciałem żeby grupa (Grupa1), która chodziła dookoła budynku i ochraniała bossa - po jego zabiciu - zaatakowała jednostki wroga. Wiem, że można to pewnie zrobić na różne sposoby (jestem otwarty na wszelkie sugestie) ale głównie chodzi mi o to czy można skasowac jedne waypoiny a przypisać drugie.
Wygląda to tak ( i wiem, że pewnie jest do kitu na całej linii):

Kod: Zaznacz cały

 
_unit  = _this select 0; 
_Group = Group leader _unit;

Grupa1 = Creategroup east; 
_leader = "RU_Soldier_TL"createunit [getmarkerpos"A",Grupa1,"",1,"Sergant"];
_Unit2 = "MVD_Soldier"createunit [getmarkerpos"A",Grupa1,"",1,"Corporal"];
_Unit3 = "RU_Soldier_SniperH"createunit [getmarkerpos"A",Grupa1,"",1,"Corporal"];

if(alive boss) then {
_wp1 = Grupa1 addWaypoint [GetMarkerPos "A", 1];
_wp1 setWaypointCombatMode "GREEN";
_wp1 setWaypointBehaviour "SAFE";
_wp1 setWaypointSpeed "LIMITED"
_wp1 setWaypointType "MOVE";
_wp2 = Grupa2 addWaypoint [GetMarkerPos "B", 1];
_wp2 setWaypointCombatMode "GREEN";
_wp1 setWaypointSpeed "LIMITED"
_wp2 setWaypointBehaviour "SAFE";
_wp2 setWaypointType "MOVE";
_wp3 = Grupa1 addWaypoint [GetMarkerPos "C", 1];
_wp3 setWaypointType "CYCLE";
_wp3 setWaypointSpeed "LIMITED"
_wp3 setWaypointCombatMode "GREEN";
_wp3 setWaypointBehaviour "SAFE";
}
else {
_wp4 = Grupa1 addWaypoint [GetMarkerPos "A1", 1];
_wp4 setWaypointCombatMode "RED";
_wp4 setWaypointBehaviour "COMBAT";
_wp4 setWaypointType "MOVE";
_wp5 = Grupa2 addWaypoint [GetMarkerPos "B1", 1];
_wp5 setWaypointCombatMode "RED";
_wp5 setWaypointBehaviour "COMBAT";
_wp5 setWaypointType "SAD";
}

Wiem, że powinienem najpierw nauczyć się podstaw ale nic nie rozumiem czytając comref i community.bistudio.com dlatego zaglądam na fora i kombinuje z "cudzymi" skryptami. Staram się je analizować i zrozumieć, więc wybaczcie jeśli piszę jakieś bzdury.
krzysiek2222
Posty: 77
Rejestracja: 31 grudnia 2009, 14:51
ID Steam:
ID gracza: 0

Re: if , then waypointy

Post autor: krzysiek2222 »

Zrób w edytorze normalną grupę i dodaj eventHandlera do bossa:

Kod: Zaznacz cały

NULL = boss addEventHandler ["killed", {NULL = [] execVM "atak.sqf"}];
I skrypt atak.sqf:

Kod: Zaznacz cały

_ochrona = group ktostam;
deleteWaypoint [_ochrona, 1];
deleteWaypoint [_ochrona, 2];
deleteWaypoint [_ochrona, 3];
// i tutaj po prostu cała procedura z dodawaniem Waypointów.
A w twoim skrypcie w jednym miejscu zamiast wp2 jest wp1, ale to nie ma raczej znaczenia.

pzdr
kmax1
Posty: 36
Rejestracja: 01 listopada 2009, 19:08
ID Steam:
ID gracza: 0

Re: if , then waypointy

Post autor: kmax1 »

Dzięki działa świetnie ale jak zwykle z małym wyjątkiem :-). Jeśli ostatnim Waypointem nie jest "MOVE" tylko "Cycle" to skrypt nie działa. Tak jakby priorytetem nie było kasowanie starych waypointów i dodanie nowych tylko właśnie "CYCLE". Wiesz może jak to obejść? A może jak zwykle coś zle robię.

Jeszcze dodatkowo mam 2 małe pytanka. 1) Czy mogę zastosować( if, then) do sytuacji, gdzie warunkiem będzie to, że zołnierzeA muszą mnie zobaczyć i muszą dostrzec , że mam broń w rękach -wtedy dopiero otwierają ogień? Domyslam się, że mniej więcej pewnie będzie wyglądać to tak if (_zołnierzeA reveal player) and (i właśnie nie wiem weaponinhand?) then...
2) Najprostrze i przepraszam z góry za to pytanie ale jak zmusić żołnierza żeby założył broń na ramię? Z tego co pamiętam to w OFP wystarczyła opcja zachowania "careless".

pomożcie proszę...
ODPOWIEDZ

Wróć do „Edycja oraz tworzenie misji, skrypty oraz programowanie”