Jump to content


Photo

Не работает обработчик событий в миссии


  • Please log in to reply
13 replies to this topic

#1 OFFLINE   Kas99

Kas99

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 19 January 2022 - 18:07

this addEventHandler ["put", { _container ==  this select 2;if(_container == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; };}];


  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1835 posts

Posted 19 January 2022 - 18:37

Kas99, а ты уверен, что кладёшь вещь типа rhsusf_mine_m14? Запротоколируй и посмотри результат.


  • 0

#3 OFFLINE   Kas99

Kas99

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 19 January 2022 - 18:51

Использую  триггер в активации пишу следующие:  this and { this addEventHandler ["put", { _container ==  this select 2;if(_container == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; };}];}

В прикреплении файл с примером задания.

 


  • 0

#4 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1835 posts

Posted 19 January 2022 - 19:02

Kas99, неправильное условие.

Миссия многопользовательская или однопользовательская?


  • 0

#5 OFFLINE   Denispetrov123

Denispetrov123

    Ефрейтор

  • Пользователи
  • 82 posts
  • Откуда:Москва

Posted 19 January 2022 - 19:02

1.Отформатируй немного свой код, не this select 2, а _this или params:
 

player addEventHandler ["put", {
    params ["", "", "_item"];
    
    if (_item == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; };
}];

2. В активации триггера тебе не нужно писать this and

 

3. this в триггере будет ссылаться на сам триггер, соответственно событие будет прикреплено к триггеру, если тебе нужно прикрепить его к игроку, то используй player, как я указал в примере


  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1835 posts

Posted 19 January 2022 - 19:28

2. В активации триггера тебе не нужно писать this and

Зависит от требуемого условия. Скажем, если нужно, чтобы игрок был в пределах триггера и не выше какой-либо высоты, то можно написать так:

this and { ((getPos player) select 2) < 100 }

3. this в триггере будет ссылаться на сам триггер, соответственно событие будет прикреплено к триггеру

Не всегда. Конкретно в этом случае this указывает на то, что нужно использовать настройки триггера в качестве условия, то есть this имеет булев тип.


  • 0

#7 OFFLINE   Denispetrov123

Denispetrov123

    Ефрейтор

  • Пользователи
  • 82 posts
  • Откуда:Москва

Posted 19 January 2022 - 19:56

 

2. В активации триггера тебе не нужно писать this and

Зависит от требуемого условия. Скажем, если нужно, чтобы игрок был в пределах триггера и не выше какой-либо высоты, то можно написать так:

this and { ((getPos player) select 2) < 100 }

3. this в триггере будет ссылаться на сам триггер, соответственно событие будет прикреплено к триггеру

Не всегда. Конкретно в этом случае this указывает на то, что нужно использовать настройки триггера в качестве условия, то есть this имеет булев тип.

 

 

Но судя по этому сообщению - "в активации пишу следующие", речь идет не про условие, а про поле "При Активации".


Edited by Denispetrov123, 19 January 2022 - 19:56.

  • 0

#8 OFFLINE   Kas99

Kas99

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 19 January 2022 - 20:12

 В активации тригерра написал следующие: this and { player addEventHandler ["put", {
    params ["", "", "_item"];
     
    if (_item == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; };
}];} Не работает!

 Попробовал убрать триггер, создал в папке миссии Int.sqf  со следующим содержимым: player addEventHandler ["put", {
params ["", "", "_item"];

if (_item == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; }; [attachment=6569:ArmA 3 Screenshot .png]

 

Тоже не работает.


  • 0

#9 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1835 posts

Posted 19 January 2022 - 20:18

В активации тригерра написал следующие: this and { player addEventHandler ["put", {     params ["", "", "_item"];           if (_item == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; }; }];} Не работает!

Я же написал:

Kas99, неправильное условие.


Попробовал убрать триггер, создал в папке миссии Int.sqf  со следующим содержимым: player addEventHandler ["put", { params ["", "", "_item"]; if (_item == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; };   Тоже не работает.

Этот вариант получше. Но, опять же:

Kas99, а ты уверен, что кладёшь вещь типа rhsusf_mine_m14? Запротоколируй и посмотри результат.

Результаты будут?


  • 0

#10 OFFLINE   Kas99

Kas99

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 19 January 2022 - 20:27

Не верный класс мины? Или триггер здесь не надо ставить.


  • 0

#11 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1835 posts

Posted 19 January 2022 - 20:31

Не верный класс мины?

Пока я склоняюсь к этому варианту.
 

Или триггер здесь не надо ставить.

Пока я не вижу в нём необходимости, но можно и задействовать.


  • 0

#12 OFFLINE   Kas99

Kas99

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 19 January 2022 - 20:50

Триггер   убрал. В Init.sqf написал следущие: player  addEventHandler ["put", {
    __item == _this select 3;
    if (__item == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; };
}];  Не срабатывает  событие.


  • 0

#13 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1835 posts

Posted 19 January 2022 - 20:55

В Init.sqf написал следущие: player  addEventHandler ["put", {     __item == _this select 3;     if (__item == "rhsusf_mine_m14") then { ["Z","SUCCEEDED"] call bis_fnc_taskSetState; }; }];  Не срабатывает  событие.

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


  • 0

#14 OFFLINE   Kas99

Kas99

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 19 January 2022 - 22:13

Нашёл код работающий. Это другой обработчик событий:  Player addEventHandler ["Fired", {if ((_this select 4) == "rhsusf_mine_m14_ammo") then {["Z","SUCCEEDED"] call bis_fnc_taskSetState;}}]; Прописал это в Int.sqf


  • 0




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