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

Вопросы по созданию МП-миссий

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


RamZesIV сказал(а) Если речь о параметре hideOnUse самого эддэкшена, то он не пашет, эддэкшен никуда не девается. Не нашел причину. RamZesIV сказал(а) А если заработает hideOnUse, то как потом, после выключения скрипта, снова сделать этот эддэкшен видимым?

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


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

Если речь о параметре 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)

 

т.е а ините создаешь сразу все экшоны, но прячешь ненужные через проверку.

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

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


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

getVariable никто не отменял :) прост через таргет можно узнать объект

 

и кстати одну джедайскую мудрость (еще со времен асмы юзаю) никто не отменял. Ты можешь держать в 1 переменной несколько булевых.  юзая маски и бинарную систему

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

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


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

Так и сделано. При запуске скрипта он удаляет эддэкшен, а по завершении снова его создает.

А нахрен те тогда счетчик?

 

Прост я бы понял что у тебя есть массив/стек этих акшонов и ты их юзаешь. а так бредово :) + если удалять /добавлять они всегда будут снизу. А если делать HIDE через проверку условия- всегда будут на своем месте.  

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

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


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


А нахрен те тогда счетчик?
Так ведь заново созданный имеет уже новый ID, на единицу больше, поэтому и нужен счетчик - чтобы каждый раз удалять эддэкшн с новым ID. У меня они не снизу добавляются. Первый идет вторым сверху, а следующие сразу за ним вниз, но не самые нижние.

А если делать HIDE

Как я понял, HIDE - это не hideOnUse и не hideObject? О чем речь?

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


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

Еще раз грю 

 

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 сукунду экшон

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

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

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


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

Что-то такое?

_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;
};
};

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


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

[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;
};// возможный про*б со скобками
};//возможный про*б со скобками где ")"?
Изменено пользователем StDIABLO

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


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

Вот теперь разобрался, спасибо! Получается, что эддэкшен перезаписывает свое состояние - 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;
};

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


Ссылка на сообщение
Поделиться на другие сайты
Читаю твой код.....
пока техника жива делаем..

проверяем техника жива? да!

добавляем экшон 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;// мы няшки - очищаем память
};
}; Изменено пользователем StDIABLO

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


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

кто знает, какая загогулина отвечает за отключение маркеров отделений на карте брифинга?

нашел, оказывается

модуль: ACE_FBCB2_OFF_Logic

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

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


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

[b][member=Vincen][/b], removeAction ничего не возвращает, думаю, что не возможно. Вероятно условие при котором выполняется removeAction, способно вызвать останов этого цикла.

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


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

[b][member=3akapu][/b], да я уже придумал. До цикла ввел публичную переменную со значением 0, цикл выполняется при условии, что игрок жив и переменная равна 0, при выполнении другого экшена, значение переменной меняется на 1 и цикл рубится. 

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


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

Как вызвать из скрипта функцию ACE? Что тут не так?
 

caugh = [] spawn WOG_ACE/addons/ace_fx.pbo/fnc_cough.sqf;

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


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

[member=RamZesIV], а не "x/WOG_ACE/..."?

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

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


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

[b][member=RamZesIV][/b], 

Через путь так

[] spawn compile preprocessFileLineNumbers  "\ace_fx\fnc_cough.sqf";

Но лучше так

[] spawn ace_fx_fnc_cought;

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


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

Разве call не остановит выполнение всего скрипта? И как остановить функцию, вызаванную без идентификатора, если это потребуется? Пожар закончился и нужно, чтобы танкист перестал кашлять.

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


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

[b][member=RamZesIV][/b], ace_fx_fnc_cough не содержит циклов и звук проигрывается 1 раз.

Так, что завершать его точно не потребуется и выполнять параллельно не правильно.

И завершать из вне циклы - очень индуская практика.

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


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

Ну да, он в цикле на публичной переменной. Согласен, не нужно. Я пока учусь, поэтому подстраховываюсь. Если что-то одно не сработает, то может второе поможет ))) Но потом лишнее буду чистить.

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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