Перейти к содержимому


Фотография

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


Лучший Ответ 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 }
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 OFFLINE   Cooler58

Cooler58

    Сержант

  • Пользователи
  • 196 сообщений

Отправлено 16 January 2022 - 18:48

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


  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 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;

  • 0

#3 OFFLINE   Denispetrov123

Denispetrov123

    Ефрейтор

  • Пользователи
  • 82 сообщений
  • Откуда:Москва

Отправлено 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

  • 0

#4 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 16 January 2022 - 21:05

ему вроде нужно показать технику только у тех игроков, которые имеют рацию

В сетевой игре лучше так не делать.


  • 1

#5 OFFLINE   Cooler58

Cooler58

    Сержант

  • Пользователи
  • 196 сообщений

Отправлено 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;

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


  • 0

#6 OFFLINE   Cooler58

Cooler58

    Сержант

  • Пользователи
  • 196 сообщений

Отправлено 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 в папке миссии, а вот серверный объект (бтр) не появляется


  • 0

#7 OFFLINE   Cooler58

Cooler58

    Сержант

  • Пользователи
  • 196 сообщений

Отправлено 16 January 2022 - 23:04

Denispetrov12 "ему вроде нужно показать технику только у тех игроков, которые имеют рацию".   Совсем не так. Мне нужно чтобы объект hideObjectGlobal false на сервере  и его, естественно, увидели бы все игроки
  • 0

#8 OFFLINE   Cooler58

Cooler58

    Сержант

  • Пользователи
  • 196 сообщений

Отправлено 16 January 2022 - 23:13

Скажите, пожалуйста, можно как-то сделать примерно следующим образом:

Настройки триггера: 

- Активация: радио Альфа.
- Тип активации: нет.
- Только сервер: нет.

Условие:

 

  1. this and {
  2. (player findIf {
  3. _backpack = backpack _x;
  4.  
  5. (["av_r159", "av_r163"] findIf { _x == _backpack }) >= 0
  6. }) >= 0
  7. }

  • 0

#9 OFFLINE   Cooler58

Cooler58

    Сержант

  • Пользователи
  • 196 сообщений

Отправлено 16 January 2022 - 23:45

Schatten, в этой теме cursorTarget - Вопросы и Проблемы - ARMA3.RU Форум вы пишите cursorTarget == obj

Сейчас попробовал в редакторе в условии триггера написать cursorTarget == "av_r159" и не получилось, пишет ошибку: Условие: Общая ошибка в выражении.

Я хотел сделать так: Любой игрок у кого есть за плечами рация, снял её, уперся взглядом и сработал триггер


  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 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 }

  • 0

#11 OFFLINE   Cooler58

Cooler58

    Сержант

  • Пользователи
  • 196 сообщений

Отправлено 17 January 2022 - 21:05

Спасибо, Schatten! Ну как всегда, блестяще подсказали! Правда одним триггером не обошлось, потому что клиент не смог активировать появление бтр. Поэтому в 1-ом триггере использовал Вами написанное условие с cursorTarget, а в активацию: tr_btr=true; publicVariable "tr_btr"; А во 2-ом триггере условие: tr_btr. И бтр НАКОНЕЦ-ТО появился!! 


  • 0

#12 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 18 January 2022 - 00:05

Правда одним триггером не обошлось, потому что клиент не смог активировать появление бтр. Поэтому в 1-ом триггере использовал Вами написанное условие с cursorTarget, а в активацию: tr_btr=true; publicVariable "tr_btr"; А во 2-ом триггере условие: tr_btr. И бтр НАКОНЕЦ-ТО появился!!

Похоже, триггер неправильно настроен, раз понадобилось два триггера.


  • 0




Яндекс.Метрика