Teraz jest Śr 17 kwi, 2024 00:53


Trigger, BLUFOR detected by OPFOR kiedy zadziala,

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

gremdek

Porucznik

Porucznik

  • Posty: 428
  • Dołączył(a): Pn 27 lut, 2006 15:02

PostPt 05 mar, 2010 11:14

zawsze rozwiązanie z dwoma triggerami i knowsabout.

Kod: Zaznacz cały
private[...];
_opfory = list trigger_opforow
_blu = list trigger_bluforow

_bool = false;
{_opfor = _x; { if (_opfor knowsAbout _x > 0.105) then {_bool = true;}; } forEach _blu;} forEach _opfory;
_bool


nie jestem do końca pewien czy tak można zagnieżdzać forEach, ale chyba tak. no i trzeba sprawdzić wartość knowsAbout, ja dałem tą z bikipedii jeszcze dla ofp.



nie musisz robić dla każdego KRONa kolejnych wyzwalaczy.
albo topornie
Kod: Zaznacz cały
KRON1 = true; KRON2 = true; ...

albo
Kod: Zaznacz cały
call compile {{format[{KRON%1 = true},_x];} forEach [1, 2, 3, 4, ...]};
:(
Offline
Avatar użytkownika

Kadryl

Major

Major

  • Posty: 883
  • Dołączył(a): Cz 14 wrz, 2006 14:04
  • Lokalizacja: Wa-wa

PostPt 05 mar, 2010 11:55

A co się stanie jak OPFOR uruchomi trgger będąc w pojeździe ?

Kod: Zaznacz cały
...
{_opfor = _x; { if (_opfor knowsAbout _x > 0.105) then {_bool = true;}; } forEach _blu;}...

prawdopodobnie skrypt wogóle nie zadziała.


Ze swojej strony proponuje tylko jeden wyzwalacz ze skryptem :
Kod: Zaznacz cały
/*
wywołanie w wyzwalaczu
_alarm = [trigger, czas, "MAN", odległość od trigera, "KRON1", "KRON2", "KRON3"] execVM "OP.sqf" (możliwość wstawienia dowolnej ilości KRONx)
KADRYL
*/
private["_nr","_i","_K"];
_nr = count _this;
_i = 4;
_K = false;
sleep (_this select 1);
{_c = _x; if (({((_x knowsAbout _c) > 0) and (alive _x)} count (nearestObjects [(_this select 0), [(_this select 2)], (_this select 3)] - (list (_this select 0)))) > 0) then {_K = true;} } foreach (list (_this select 0));
while {_i < _nr} do {call compile format ["%1 = _K", (_this select _i)]; _i=_i+1;};

W wywołaniu można regulować obszar z ktorego beda wczytywane jednostki OPFOR i sprawdzanie czy coś wiedzą o BLUFOR w rejonie wyzwalacza TR.
Parametr "MAN" zabezpiecza przed wproawdzeniem błedu do działania skryptu czyli. trigger uruchomiony przez pojazd który nie działa z funkcją knowsAbout.
Offline
Avatar użytkownika

gremdek

Porucznik

Porucznik

  • Posty: 428
  • Dołączył(a): Pn 27 lut, 2006 15:02

PostPt 05 mar, 2010 12:56

mała uwaga:
kompilacji nie robimy w pętlach ani innych takich. po co kompilować parę razy ten sam kod?



co do zagnieżdżenia:
In ArmA2, the variable _x is always local to the foreach block so it is safe to nest foreach commands.

więc kod prawdopodobnie zadziała.


a z tym pojazdem to nie widziałem, cenna uwaga.
:(
Offline
Avatar użytkownika

Kadryl

Major

Major

  • Posty: 883
  • Dołączył(a): Cz 14 wrz, 2006 14:04
  • Lokalizacja: Wa-wa

PostPt 05 mar, 2010 16:01

kompilacji nie robimy w pętlach ani innych takich. po co kompilować parę razy ten sam kod?

Chodzi o kompilacje kodu dla wielu zmiennych.
Osobiscie nie jestem zwolennikiem tego rozwiązania ponieważ obciąża pamieć.
Poprzednia strona

Powrót do [ArmA II] Edytor

Kto przegląda forum

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

cron