Ram3esIV 2 217 Жалоба Опубликовано 2 декабря, 2015 RamZesIV сказал(а) Если речь о параметре hideOnUse самого эддэкшена, то он не пашет, эддэкшен никуда не девается. Не нашел причину. RamZesIV сказал(а) А если заработает hideOnUse, то как потом, после выключения скрипта, снова сделать этот эддэкшен видимым? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 2 декабря, 2015 (изменено) Если речь о параметре hideOnUse самого эддэкшена, то он не пашет, эддэкшен никуда не девается. я про condition (optional): String - script code that must return true for the action to be shown. Special variables passed to the script code are _target (unit to which action is attached to) and _this(caller/executing unit). Default value: "true" прост проверяешь состояние аппаратуры перед тем как показать или скрыть экшон например прочитав параметр из техники (_target) т.е а ините создаешь сразу все экшоны, но прячешь ненужные через проверку. Изменено 2 декабря, 2015 пользователем StDIABLO 1 Ram3esIV отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 2 декабря, 2015 например прочитав параметр из техники (_target)Или через getVariable? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 2 декабря, 2015 (изменено) getVariable никто не отменял :) прост через таргет можно узнать объект и кстати одну джедайскую мудрость (еще со времен асмы юзаю) никто не отменял. Ты можешь держать в 1 переменной несколько булевых. юзая маски и бинарную систему Изменено 2 декабря, 2015 пользователем StDIABLO Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 2 декабря, 2015 (изменено) Так и сделано. При запуске скрипта он удаляет эддэкшен, а по завершении снова его создает. А нахрен те тогда счетчик? Прост я бы понял что у тебя есть массив/стек этих акшонов и ты их юзаешь. а так бредово :) + если удалять /добавлять они всегда будут снизу. А если делать HIDE через проверку условия- всегда будут на своем месте. Изменено 2 декабря, 2015 пользователем StDIABLO Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 2 декабря, 2015 А нахрен те тогда счетчик?Так ведь заново созданный имеет уже новый ID, на единицу больше, поэтому и нужен счетчик - чтобы каждый раз удалять эддэкшн с новым ID. У меня они не снизу добавляются. Первый идет вторым сверху, а следующие сразу за ним вниз, но не самые нижние.А если делать HIDEКак я понял, HIDE - это не hideOnUse и не hideObject? О чем речь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 2 декабря, 2015 (изменено) Еще раз грю condition (optional): String - script code that must return true for the action to be shown. Special variables passed to the script code are _target (unit to which action is attached to) and _this(caller/executing unit). Default value: "true" чо это такое объясню (ты кстати это вроде как юзаешь) init.sqf sleep 1;//ждем 1 секунду игрового времени object addAction ["title", script.sqf, [arguments], 1, true, false, "" , "(time>15)"];//после сунудны добавляем экшон НО ОН НЕ ПОЯВИТСЯ пока не пройдет 15 секунд, хоть мы его добавили в 1 секунду также и в твоей ситуации, добавляешь в 1 сукунду экшон потом проверяешь показывать его или нет. например если у тебя уже есть флаг то что аппаратура включена то не показываешь включение апппаратуры, но показываешь отключение. Изменено 2 декабря, 2015 пользователем StDIABLO 1 Ram3esIV отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 2 декабря, 2015 Что-то такое? _vehicle spawn ( while {true} do { 0 = _this addAction [ "start TSS", "TDA.sqf", [], 1, false, true, "teamSwitchPrev", "driver _target == player; _this getVariable "TDA";"]; 1 = _this addAction [ "stop TSS", "stopTDA.sqf", [], 1, false, true, "teamSwitchPrev", "driver _target == player; !(_this getVariable "TDA");"]; sleep 1; _vehicle removeAction 0; _vehicle removeAction 1; }; }; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 2 декабря, 2015 (изменено) [member=RamZesIV], 1)потрачно со скобками инфа 146% 2) condition должен быть выполнимый с точки зрения логики (должен выдавать true or false) 3) в условии юзай таргет яж те говорил. _vehicle spawn (while {true} do { 0 = _this addAction [ "start TSS", "TDA.sqf", [], 1, false, true, "teamSwitchPrev", "(driver _target == player) && (_target getVariable 'TDA')"]; 1 = _this addAction [ "stop TSS", "stopTDA.sqf", [], 1, false, true, "teamSwitchPrev", "(driver _target == player) && !(_target getVariable 'TDA')"]; sleep 1;//бред если хочешь убрать экшоны удали их когда техника сдохнет а не через 1 сек //_vehicle removeAction 0; //_vehicle removeAction 1; };// возможный про*б со скобками };//возможный про*б со скобками где ")"? Изменено 2 декабря, 2015 пользователем StDIABLO 1 Ram3esIV отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 2 декабря, 2015 Вот теперь разобрался, спасибо! Получается, что эддэкшен перезаписывает свое состояние - HIDE или SHOW - из-за того, что тот же id? Так? _vehicle spawn { while {alive _this} do { 0 = _this addAction [ "start TSS", "TDA.sqf", [], 1, false, true, "teamSwitchPrev", "(driver _target == player) && (_target getVariable 'TDA')"]; 1 = _this addAction [ "stop TSS", "stopTDA.sqf", [], 1, false, true, "teamSwitchPrev", "(driver _target == player) && !(_target getVariable 'TDA')"]; }; _this removeAction 0; _this removeAction 1; }; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
StDIABLO 506 Жалоба Опубликовано 2 декабря, 2015 (изменено) Читаю твой код..... пока техника жива делаем.. проверяем техника жива? да! добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop конец цикла проверяем техника жива? да! начало цикла добавляем экшон start добавляем экшон stop .... тут бесконечное число циклов пока оперативки хватает.... .... ЕМАЕ ТЕХНИКА СДОХЛА удалим первые 2 экшона... я думаю видно в чем проблема.... не добавляй экшоны в цикле, в цикле только добавь код чтоб удалить экшон с мертвой техники правильнее будет так: _vehicle spawn { _startTSS = _this addAction [ "start TSS", "TDA.sqf", [], 1, false, true, "teamSwitchPrev", "(driver _target == player) && (_target getVariable 'TDA')"]; _stopTSS = _this addAction [ "stop TSS", "stopTDA.sqf", [], 1, false, true, "teamSwitchPrev", "(driver _target == player) && !(_target getVariable 'TDA')"]; while {!alive _this} do// переделать,не работает нихрена { _this removeAction _startTSS; _this removeAction _stopTSS; _startTSS = nil;// мы няшки - очищаем память _stopTSS = nil;// мы няшки - очищаем память }; }; Изменено 3 декабря, 2015 пользователем StDIABLO 2 Dock и Shaman4eG отреагировали на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
3akapu 4 Жалоба Опубликовано 4 декабря, 2015 доп.слоты медицины не работают чтоли? ACE_IFAK_Capacity. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
crabe 10 340 Жалоба Опубликовано 4 декабря, 2015 работают Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
3akapu 4 Жалоба Опубликовано 7 декабря, 2015 (изменено) кто знает, какая загогулина отвечает за отключение маркеров отделений на карте брифинга? нашел, оказывается модуль: ACE_FBCB2_OFF_Logic Изменено 7 декабря, 2015 пользователем 3akapu 1 Ram3esIV отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 9 декабря, 2015 Возможно ли в скрипте как то выйти из цикла по условию removeAction? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
3akapu 4 Жалоба Опубликовано 9 декабря, 2015 [b][member=Vincen][/b], removeAction ничего не возвращает, думаю, что не возможно. Вероятно условие при котором выполняется removeAction, способно вызвать останов этого цикла. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 9 декабря, 2015 [b][member=3akapu][/b], да я уже придумал. До цикла ввел публичную переменную со значением 0, цикл выполняется при условии, что игрок жив и переменная равна 0, при выполнении другого экшена, значение переменной меняется на 1 и цикл рубится. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 11 декабря, 2015 Как вызвать из скрипта функцию ACE? Что тут не так? caugh = [] spawn WOG_ACE/addons/ace_fx.pbo/fnc_cough.sqf; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
RavingRobot 1 029 Жалоба Опубликовано 11 декабря, 2015 (изменено) [member=RamZesIV], а не "x/WOG_ACE/..."? Изменено 11 декабря, 2015 пользователем RavingRobot 1 Ram3esIV отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[FRWL] Ezhuk 161 Жалоба Опубликовано 11 декабря, 2015 [b][member=RamZesIV][/b], Через путь так [] spawn compile preprocessFileLineNumbers "\ace_fx\fnc_cough.sqf"; Но лучше так [] spawn ace_fx_fnc_cought; 1 Ram3esIV отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 11 декабря, 2015 Вот так точно работает caugh = [driver _tank, 120, 3] spawn ace_fx_fnc_cough; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[FRWL] Ezhuk 161 Жалоба Опубликовано 11 декабря, 2015 [b][member=RamZesIV][/b], подозреваю, что лучше без "caugh =" , да и call за место spawn [driver _tank, 120, 3] call ace_fx_fnc_cough; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 11 декабря, 2015 Разве call не остановит выполнение всего скрипта? И как остановить функцию, вызаванную без идентификатора, если это потребуется? Пожар закончился и нужно, чтобы танкист перестал кашлять. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[FRWL] Ezhuk 161 Жалоба Опубликовано 11 декабря, 2015 [b][member=RamZesIV][/b], ace_fx_fnc_cough не содержит циклов и звук проигрывается 1 раз. Так, что завершать его точно не потребуется и выполнять параллельно не правильно. И завершать из вне циклы - очень индуская практика. 1 Ram3esIV отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ram3esIV 2 217 Жалоба Опубликовано 11 декабря, 2015 Ну да, он в цикле на публичной переменной. Согласен, не нужно. Я пока учусь, поэтому подстраховываюсь. Если что-то одно не сработает, то может второе поможет ))) Но потом лишнее буду чистить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты