• Страница 1 из 1
  • 1
Форум » Мастерская » В помощь картоделу » Вопросы и ответы » Проверка инициализации функции
Проверка инициализации функции
DrSl1m
Понедельник, 23.03.2015, 20:50
Пост №: 1
Есть ли возможность проверять инициализацию функции, вроде isNil/isNull?
Чтобы, например, завязать условие на вызове какой-либо функции?
Что-то вроде:
Код
waitUntil {вызвана функция}

Автор темы
 
Zealot
Понедельник, 23.03.2015, 21:35
Пост №: 2
Цитата DrSl1m ()
Чтобы, например, завязать условие на вызове какой-либо функции?

Вообще такой возможности нет, если нет доступа к этой функции. Если такой доступ есть, то задача тривиальна, просто добавить вызов своей функции оттуда.
А для чего это требуется?

 
DrSl1m
Понедельник, 23.03.2015, 21:50
Пост №: 3
Цитата Zealot ()
А для чего это требуется?
Я вчера искал способ свести эффективность работы ТРК "Точка-У" до 100%. Для этих целей ковырял функции и конфиги связанные с ней, чтобы найти за что ухватиться.
Хотел активировать уничтожение всего в триггере при условии срабатывания того или иного элемента "Точки-У". Например, при вызове функции ядерного взрыва или срабатывании на пуск ракеты с задержкой. Словом, пытался обойти ошибки РХС, чтобы оружие работало как и должно, хотя бы в случае с указанными зонами.

Автор темы
 
Zealot
Вторник, 24.03.2015, 09:55
Пост №: 4
Цитата DrSl1m ()
Словом, пытался обойти ошибки РХС, чтобы оружие работало как и должно, хотя бы в случае с указанными зонами.

Можно попытаться переопределить функцию взрыва в рхс, но делать это нужно осторожно, "уничтожение всего в триггере" может вызвать лаг сервера.

 
DrSl1m
Вторник, 24.03.2015, 13:24
Пост №: 5
Цитата Zealot ()
Можно попытаться переопределить функцию взрыва в рхс, но делать это нужно осторожно, "уничтожение всего в триггере" может вызвать лаг сервера.
Ну, я думаю, что даже если поставить уничтожение какого-то объекта, то это уже будет успех. Хотя бы можно будет миссию завершать по модулю Destroy.

Как я понял, вот строчки отвечающие за запуск ракеты, находящиеся в РХСе, в файле dialog_control.sqf:

Код
if ((_tochka ammo _weapon) > 0) then {
             _fired_EH = _tochka addEventHandler ["fired",{_this call rhs_fnc_ss21_missile_control}];
             if (local _tochka) then {
                _tochka selectWeapon _weapon;
                sleep 0.1;
                _tochka fire _weapon;
                vehset(target_designated,false);
             };
Может можно создать sqf с глобальной переменной, которая будет проверять boolean локальной переменной _fired_EH, если это возможно?
Затем останется только примерно высчитать время до попадания в цель и сделать триггер на нанесение урона объекту.
Сообщение отредактировал DrSl1m - Вторник, 24.03.2015, 13:54

Автор темы
 
Zealot
Четверг, 26.03.2015, 08:35
Пост №: 6
Цитата DrSl1m ()
Может можно создать sqf с глобальной переменной, которая будет проверять boolean локальной переменной _fired_EH, если это возможно?

Может тоже подписаться на евент Fired, и действии по запуску ракеты выполнять в нем?
_fired_EH обрабатывать не получится, это локальная переменная.

 
Форум » Мастерская » В помощь картоделу » Вопросы и ответы » Проверка инициализации функции
  • Страница 1 из 1
  • 1
Поиск: