Перейти к содержанию

Добро пожаловать на проект
Weekly Open Games

Weekly Open Games — это проект для людей, которым интересен хардкорный тип игры. Мы стараемся максимально эффективно использовать структуру, слабые и сильные стороны, а также технику и вооружение различных сторон конфликта, но не ставим перед собой цель провести 100% сбалансированного боестолкновения. Командная игра, командное взаимодействие — фундамент нашего проекта.
О проекте WOG Как начать играть Правила серверов
Авторизация  
StDIABLO

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

Рекомендуемые сообщения

Сломал мозг

 

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

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

 


Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

во нашел.

глянь тут.

http://rghost.net/8wVQclPkB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

olol.utes.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работает спасибо, но я сделал в лоб триггеры (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
	};
};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь за свою некомпетентность (программировать то я умею, но не в А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?

Изменено пользователем StDIABLO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@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
	};
};
Изменено пользователем swatSTEAM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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
        };
    };
};
Изменено пользователем StDIABLO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.