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
Wyzwalacz st2name: 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
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.