Всем привет, ребята! помогите разобраться!! Пытаюсь сделать так, чтобы возможность активировать триггер была только у того игрока-клиента, который надел на себя ДВ-рацию. На данный момент использую в своих миссиях не совсем корректный подход, а именно в условии триггера: ({(backpack _x) isEqualTo "av_r159"} count playableUnits) > 0. В этом случае игрок-клиент, надев на себя рацию "av_r159", может активировать триггер, но и другие клиенты, не имея в данный момент ДВ-рации, тоже могут активировать. Такие команды как: backpack player in ["av_r159",]"av_r163"] или backpack player == "av_r159" работают только на серверном плеере, но не на клиенте. А активация триггера состоит в том, чтобы скрытая в начале миссии техника появилась (btr1 hideObject false). Очень хочу разобраться в этом вопросе. Помогите.

Проверка наличия ДВ-рации у игрока в мультиплеере

Лучший Ответ Schatten , 17 January 2022 - 00:29
Насколько я понял, то условие будет срабатывать только при нахождении любого игрока в зоне триггера?
Верно.
Но вызов по рации должен работать в любой точке в зависимости от сложившейся боевой обстановки. Т.е. триггер надо сделать размером с карту?
В первом сообщении об этом речи не шло.
Нужно убрать this из условия.
Скажите, пожалуйста, можно как-то сделать примерно следующим образом:
Настройки триггера:
- Активация: радио Альфа.
- Тип активации: нет.
- Только сервер: нет.
Условие:
- this and {
- (player findIf {
- _backpack = backpack _x;
- (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0
- }) >= 0
- }
Можно, только условие активации должно быть таким:
this and { _backpack = backpack player; (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0 }
а код, срабатывающий при активации, -- таким:
[btr1, false] remoteExec ["hideObjectGlobal", 2];
Schatten, в этой теме cursorTarget - Вопросы и Проблемы - ARMA3.RU Форум вы пишите cursorTarget == obj Сейчас попробовал в редакторе в условии триггера написать cursorTarget == "av_r159" и не получилось, пишет ошибку: Условие: Общая ошибка в выражении.
Там сравнивается объект с объектом, а не со строкой.
Я хотел сделать так: Любой игрок у кого есть за плечами рация, снял её, уперся взглядом и сработал триггер
((typeOf cursorTarget) == "GroundWeaponHolder") and { (cursorTarget distance player) < 2.5 } and { ((backpackCargo cursorTarget) findIf { _x == "av_r159" }) >= 0 }Перейти к сообщению

#1
OFFLINE
Отправлено 16 January 2022 - 18:48
#2
OFFLINE
Отправлено 16 January 2022 - 19:29
Cooler58, сделай настройки триггера такими:
- Активация: любой игрок.
- Тип активации: присутствует.
- Только сервер: да.
- Условие:
this and { (thisList findIf { _backpack = backpack _x; (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0 }) >= 0 }
- При активации:
btr1 hideObjectGlobal false;
#3
OFFLINE
Отправлено 16 January 2022 - 19:48
Триггер активируется и проверяется на каждой машине ( если только не стоит галочка "Только Сервер" ), где он существует и соблюдено условие.
При таких настройках триггера все отлично работает -
Тип - Нет
Активация - Нет
Повторяемый - Нет
Только Сервер - Нет
Условие -
backpack player == "B_AssaultPack_mcamo_Ammo" // в качестве примера использовал ванильный рюкзак
При активации -
obj_1 hideObject false // В качестве объекта использовал маши
Вот результат на скринах, у первого юнита нет рюкзака с указанным классом, у второго есть. В качестве раскрываемого объекта, использовал машину
Cooler58, сделай настройки триггера такими:
- Активация: любой игрок.
- Тип активации: присутствует.
- Только сервер: да.
- Условие:this and { (thisList findIf { _backpack = backpack _x; (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0 }) >= 0 }- При активации:
btr1 hideObjectGlobal false;
Он уже задавал подобный вопрос в одном дискорд канале по арме, ему вроде нужно показать технику только у тех игроков, которые имеют рацию
Сообщение отредактировал Denispetrov123: 16 January 2022 - 19:48
#4
OFFLINE
Отправлено 16 January 2022 - 21:05
ему вроде нужно показать технику только у тех игроков, которые имеют рацию
В сетевой игре лучше так не делать.
#5
OFFLINE
Отправлено 16 January 2022 - 22:54
Cooler58, сделай настройки триггера такими:
- Активация: любой игрок.
- Тип активации: присутствует.
- Только сервер: да.
- Условие:this and { (thisList findIf { _backpack = backpack _x; (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0 }) >= 0 }- При активации:
btr1 hideObjectGlobal false;
Насколько я понял, то условие будет срабатывать только при нахождении любого игрока в зоне триггера? Но вызов по рации должен работать в любой точке в зависимости от сложившейся боевой обстановки. Т.е. триггер надо сделать размером с карту?
#6
OFFLINE
Отправлено 16 January 2022 - 22:59
Триггер активируется и проверяется на каждой машине ( если только не стоит галочка "Только Сервер" ), где он существует и соблюдено условие.
При таких настройках триггера все отлично работает -
Тип - НетАктивация - Нет
Повторяемый - Нет
Только Сервер - Нет
Условие -
backpack player == "B_AssaultPack_mcamo_Ammo" // в качестве примера использовал ванильный рюкзакПри активации -
obj_1 hideObject false // В качестве объекта использовал машиВот результат на скринах, у первого юнита нет рюкзака с указанным классом, у второго есть. В качестве раскрываемого объекта, использовал машину
Cooler58, сделай настройки триггера такими:
- Активация: любой игрок.
- Тип активации: присутствует.
- Только сервер: да.
- Условие:this and { (thisList findIf { _backpack = backpack _x; (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0 }) >= 0 }- При активации:
btr1 hideObjectGlobal false;Он уже задавал подобный вопрос в одном дискорд канале по арме, ему вроде нужно показать технику только у тех игроков, которые имеют рацию
Да, вы правы, задавал вопрос на armasupport. Но он как-то растворился в общей полемике. Ответы Vlad я протестировал с товарищем, тест отрицательный. Появляется хинт, звук рации из папки sound в папке миссии, а вот серверный объект (бтр) не появляется
#7
OFFLINE
Отправлено 16 January 2022 - 23:04
#8
OFFLINE
Отправлено 16 January 2022 - 23:13
Скажите, пожалуйста, можно как-то сделать примерно следующим образом:
Настройки триггера:
- Активация: радио Альфа.
- Тип активации: нет.
- Только сервер: нет.
Условие:
- this and {
- (player findIf {
- _backpack = backpack _x;
- (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0
- }) >= 0
- }
#9
OFFLINE
Отправлено 16 January 2022 - 23:45
Schatten, в этой теме cursorTarget - Вопросы и Проблемы - ARMA3.RU Форум вы пишите cursorTarget == obj
Сейчас попробовал в редакторе в условии триггера написать cursorTarget == "av_r159" и не получилось, пишет ошибку: Условие: Общая ошибка в выражении.
Я хотел сделать так: Любой игрок у кого есть за плечами рация, снял её, уперся взглядом и сработал триггер
#10
OFFLINE
Отправлено 17 January 2022 - 00:29 Лучший Ответ
Насколько я понял, то условие будет срабатывать только при нахождении любого игрока в зоне триггера?
Верно.
Но вызов по рации должен работать в любой точке в зависимости от сложившейся боевой обстановки. Т.е. триггер надо сделать размером с карту?
В первом сообщении об этом речи не шло.
Нужно убрать this из условия.
Скажите, пожалуйста, можно как-то сделать примерно следующим образом:
Настройки триггера:
- Активация: радио Альфа.
- Тип активации: нет.
- Только сервер: нет.
Условие:
- this and {
- (player findIf {
- _backpack = backpack _x;
- (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0
- }) >= 0
- }
Можно, только условие активации должно быть таким:
this and { _backpack = backpack player; (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0 }
а код, срабатывающий при активации, -- таким:
[btr1, false] remoteExec ["hideObjectGlobal", 2];
Schatten, в этой теме cursorTarget - Вопросы и Проблемы - ARMA3.RU Форум вы пишите cursorTarget == obj Сейчас попробовал в редакторе в условии триггера написать cursorTarget == "av_r159" и не получилось, пишет ошибку: Условие: Общая ошибка в выражении.
Там сравнивается объект с объектом, а не со строкой.
Я хотел сделать так: Любой игрок у кого есть за плечами рация, снял её, уперся взглядом и сработал триггер
((typeOf cursorTarget) == "GroundWeaponHolder") and { (cursorTarget distance player) < 2.5 } and { ((backpackCargo cursorTarget) findIf { _x == "av_r159" }) >= 0 }
#11
OFFLINE
Отправлено 17 January 2022 - 21:05
Спасибо, Schatten! Ну как всегда, блестяще подсказали! Правда одним триггером не обошлось, потому что клиент не смог активировать появление бтр. Поэтому в 1-ом триггере использовал Вами написанное условие с cursorTarget, а в активацию: tr_btr=true; publicVariable "tr_btr"; А во 2-ом триггере условие: tr_btr. И бтр НАКОНЕЦ-ТО появился!!
#12
OFFLINE
Отправлено 18 January 2022 - 00:05
Правда одним триггером не обошлось, потому что клиент не смог активировать появление бтр. Поэтому в 1-ом триггере использовал Вами написанное условие с cursorTarget, а в активацию: tr_btr=true; publicVariable "tr_btr"; А во 2-ом триггере условие: tr_btr. И бтр НАКОНЕЦ-ТО появился!!
Похоже, триггер неправильно настроен, раз понадобилось два триггера.