Skocz do zawartości

pietia87

Poborowy
  • Liczba zawartości

    11
  • Rejestracja

  • Ostatnia wizyta

Odpowiedzi dodane przez pietia87

  1. Wielkie dzięki Kadryl.

    a co oznacza ten "x" w warunku wyzwalacza ?

    "x" to nazwa AI, które służyło do mierzenia odległości.

     

    Walka w gęstej dżungli nabrała klimatu (AI podchodzi blisko z każdej strony), tylko jest jeden problem, gdy pojedynczy AI znajdzie się w odległości <10m, to ogień otwierają wszystkie pozostałem niezależnie od odległości. Podobnie, gdy gracz strzela do AI, które znajdują się dalej niż 10 m, po trafieniu wszystkie rozpoczynają ostrzał (swoją drogą to jest jeszcze zrozumiałe).

    Zastanawiam się, czy jest możliwe przerobienie tego skryptu, żeby zmieniał combat mode na "RED" tylko dla jednostki znajdującej się najbliżej gracza.

     

    Czy zmienienie "foreach ak" na foreach (_x distance (playableunits select _i) < 10) jest dopuszczalne ?

     

    if (!isServer) exitwith {};

    ak = [];

     

    while {true} do {

    for "_i" from 0 to (count playableUnits) -1 do {

    {if (_x distance (playableunits select _i) < 10) then {ak set [count ak, _x];} } foreach (list lista_ai);

    {_x setCombatMode "RED"; _x doWatch (playableunits select _i)} foreach (_x distance (playableunits select _i) < 10);

    sleep 0.5;

    ak = [];

    };

    sleep 5;

    {_x setCombatMode "WHITE"} foreach (list lista_ai);

    };

  2. Witam, od kilku dni testuję działanie moda UNSUNG z ACE (działa !!).

    Potrzebuje pomocy ze skryptem, który uniemożliwiałby AI prowadzenie ognia z dużej odległości.

    W założeniu AI ma otwierać ogień dopiero gdy znajdzie się blisko gracza ok 10m (w UNSUNG wysoka trawa nie pozwala graczom widzieć dalej).

    Skrypt ma wyrównać szanse w walce w dżungli przeciw AI.

     

    Do tej pory testowałem z pozytywnym skutkiem, na hostowanym serwerze coś takiego:

     

    Są 2 wyzwalacze (st1 i st2). AI ma ustawione combat mode w 1 wp na "Hold fire, engane at will". Gdy gracz znajduję się w odległości większej niż 10m i zostanie zauważony, AI stara się skrócić dystans do mniej niż 10m, nie otwiera ognia.

    Gdy odległość jest mniejsza niż 10m, AI otwiera ogień. Wszystko pięknie ładnie, ale:

    - taki rodzaj "detekcji" na pewno nie będzie działał przy większej ilości AI i graczy

    - w "x distance player" parametr "x" odnosi się do jednego AI (po jego śmierci wyzwalacze nie działają), nie mam pojęcia, jak zrobić, żeby oznaczał dowolnego AI w obrębie wyzwalacza.

    - próbowałem to przerobić na skrypt .sqf (jak na razie na kolanie, bo jestem w pracy :/) i nie wiem, czy moja koncepcja jest poprawna.

     

    Wyzwalacz st1

    name: st1

    Acct: opfor

    radius: 500m

    condition: x distance player >10

    onAcct: if{(side _x== east) then {_x setcombatmode "white"; _x doWatch objNull};} foreach allunit;

    onDeact: st2=true

     

    Wyzwalacz st2

    name: st2

    Acct: opfor

    radius: 500m

    condition: x distance player <10

    onAcct: if{(side _x== east) then {_x setcombatmode "RED"};} foreach allunit;

    onDeact: st1=true

     

    ***********************

    Skrypt .sqf

     

    wyzwalacz

    onAcct: null=execVM "dystans1.sqf" foreach units thislist;

    dystans1.sqf

    _x=this select 1;

     

    if{

    (side _x == east; _x distance player > 10) then {_x setCombatMode "WHITE"} else {_x setCombatMode "RED"};

    };

     

    Byłbym bardzo wdzięczy na jakiekolwiek propozycje i uwagi.

  3. Witam na imię mam Piotrek, wiek 24. Dla wielu PieTia87. Zaczynałem od OFP->Armed Assault->ArmA2.

    Jestem graczem [1stCav] eSport Club, obecnie na "emeryturze".

    Swego czasu pogrywałem w CFOGu, oraz jakiś rok temu w ACC (może ktoś mnie jeszcze pamięta :mrgreen: )

    To tyle, do usłyszenia na TSie ;)

×
×
  • Dodaj nową pozycję...