Jump to content
Sign in to follow this  
StDIABLO

Ящики в триггерной зоне

Recommended Posts

Сломал мозг

 

Мне надо сделать так чтобы при наличии ящиков с боеприпасами в зоне у меня сработал триггер.

Ок, написал скрипт, работает на людях, на технике и на любом другом КРОМЕ чертовых ящиков. Подскажите пожалуйста как тут правильно сделать?

 


Share this post


Link to post
Share on other sites

Работает спасибо, но я сделал в лоб триггеры (5 ящиков - 5 триггеров), есть ли более элегантный способ?

 

Планируется 9 ящиков и 2 точки "эвакуации ящиков" 18 скриптов которые ПОСТОЯННО мониторят где ящики, не думаю что это правильное решение для миссии .

 

Как нибудь покрасивее можно сделать это?

olol.utes.zip

Share this post


Link to post
Share on other sites

мне сейчас сложно ответить, а лезть внутрь смотреть банально нет времени.

одно скажу честно...идея с ящиками обречена на частые вквж. то они сквозь землю провалятся, то просто исчезнут, то ранят юнитов....

Share this post


Link to post
Share on other sites

Работает спасибо, но я сделал в лоб триггеры (5 ящиков - 5 триггеров), есть ли более элегантный способ?

(isServer && (({(_x distance qexit) < 15} count [q1,q2,q9,qn]) >= 2)) //Если условием в триггере

Если нормально, то

0 spawn {
	if (isServer) then {
		while !(({(_x distance qexit) < 15} count [q1,q2,q9,qn]) >= 2) do {
			sleep 1;
		};
		publicVariable "end"; //or anything u like
	};
};

Share this post


Link to post
Share on other sites

Извиняюсь за свою некомпетентность (программировать то я умею, но не в А2), у меня пару вопросов возникло (направьте на путь истинный, если уже были ответы, или хоть по каким тегам гуглить):

 

1) куда нормальный код впихивать чтобы он работал?

2) пока работает while,  дальше код не работает (ну по крайней мере в других языках ООП) и код выше справедлив только для одной точки эвакуации (qexit), т.е надо написать что-то подобное и для qexit1

0 spawn {
	if (isServer) then {
		while !(({(_x distance qexit1) < 15} count [q1,q2,q9,qn]) >= 2) do {
			sleep 1;
		};
		publicVariable "end1"; //or anything u like
	};
};

Но он не будет работать пока первый цикл не отработает, или я не понимаю тут в принципах взаимодействия скриптов с А2?

Edited by StDIABLO

Share this post


Link to post
Share on other sites

@StDIABLO

Код — в init.sqf. Можно вызвать его оттуда через execVM или что-нибудь подобное.

spawn - создаёт отдельный поток.

То есть сделаешь пару таких спавна и у тебя будет два потока, которые будут одновременно проверять разные условия. Но лучше, конечно, засунуть всё в один. Типа:

0 spawn {
	if (isServer) then {
		while !((({(_x distance qexit) < 15} count [q1,q2,q9,qn]) >= 2) && (({(_x distance qexit1) < 15} count [q1,q2,q9,qn]) >= 2)) do {
                        if (({(_x distance qexit) < 15} count [q1,q2,q9,qn]) >= 2) then {hint "1"};
                        if (({(_x distance qexit1) < 15} count [q1,q2,q9,qn]) >= 2) then {hint "2"};
                        //хинты будут только на серве. Чтобы были и  на клиентах надо заюзать publicVariable + publicVariableEventHandler
			sleep 1;
		};
		publicVariable "end1"; //or anything u like
	};
};
Edited by swatSTEAM

Share this post


Link to post
Share on other sites

Сделал так, пользуйтесь на здоровье, если надо.

0 spawn {
    if (isServer) then {
        _cd=0;
        while {true} do {
        if ({base distance _x < 5} count [q1,q2,q3] >= 2) then {
            _cd = _cd + 5;
            } else {
            _cd = 0
            };
            if (_cd >= 30) then {
            endMission "END2"
            };
        sleep 5
        };
    };
};
Edited by StDIABLO

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.