Skrypt regulujący zasięg otwarcia ognia przez AI - POMOCY

Edytor Arma (Arma, Arma2, Arma2OA)

Moderatorzy: kondor, Inkwizytor

ODPOWIEDZ
pietia87
Posty: 2
Rejestracja: 02 maja 2007, 19:16
ID Steam:

Skrypt regulujący zasięg otwarcia ognia przez AI - POMOCY

Post autor: pietia87 »

Witam, od kilku dni testuję działanie moda UNSUNG z ACE.
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 MP
- 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

***********************
Szkic skryptu .sqf (pisane "na kolanie" bez możliwości testu):


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.
Obrazek
ODPOWIEDZ

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