StDIABLO 506 Жалоба Опубликовано 22 февраля, 2015 Сломал мозг Мне надо сделать так чтобы при наличии ящиков с боеприпасами в зоне у меня сработал триггер. Ок, написал скрипт, работает на людях, на технике и на любом другом КРОМЕ чертовых ящиков. Подскажите пожалуйста как тут правильно сделать? http://cloud-4.steamusercontent.com/ugc/535137718201504273/6C430C2D4BD26A37EB9933B6C1C67529AB5BEE71/ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
friend 1 285 Жалоба Опубликовано 22 февраля, 2015 где то была у меня миска на капраи с ящиками...надо рыться. во нашел. глянь тут. http://rghost.net/8wVQclPkB 1 StDIABLO отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 22 февраля, 2015 Мерси Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 22 февраля, 2015 Работает спасибо, но я сделал в лоб триггеры (5 ящиков - 5 триггеров), есть ли более элегантный способ? Планируется 9 ящиков и 2 точки "эвакуации ящиков" 18 скриптов которые ПОСТОЯННО мониторят где ящики, не думаю что это правильное решение для миссии . Как нибудь покрасивее можно сделать это? olol.utes.zip 1 friend отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
friend 1 285 Жалоба Опубликовано 22 февраля, 2015 мне сейчас сложно ответить, а лезть внутрь смотреть банально нет времени. одно скажу честно...идея с ящиками обречена на частые вквж. то они сквозь землю провалятся, то просто исчезнут, то ранят юнитов.... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 22 февраля, 2015 это конечно проблема, но тут без ящиков просто никак, вся миссия на них завязана :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
friend 1 285 Жалоба Опубликовано 22 февраля, 2015 моя также была)пришлось из неё сделать обычную атаку/оборону) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
swatSTEAM 737 Жалоба Опубликовано 23 февраля, 2015 Работает спасибо, но я сделал в лоб триггеры (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 StDIABLO и mib отреагировали на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 23 февраля, 2015 (изменено) Извиняюсь за свою некомпетентность (программировать то я умею, но не в А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? Изменено 23 февраля, 2015 пользователем StDIABLO Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
swatSTEAM 737 Жалоба Опубликовано 23 февраля, 2015 (изменено) @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 }; }; Изменено 23 февраля, 2015 пользователем swatSTEAM 1 StDIABLO отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 7 марта, 2015 (изменено) Сделал так, пользуйтесь на здоровье, если надо. 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 }; }; }; Изменено 7 марта, 2015 пользователем StDIABLO Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты