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