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


Фотография

Как сделать что бы скприпт выполнялся глобально


Лучший Ответ Schatten , 31 August 2017 - 20:28

Rabbit_V_HD, во-первых, тебе здесь не нужны глобальные переменные; во-вторых, если второй аргумент команды addAction -- путь к файлу SQF, то он запускается в scheduled-среде, поэтому внутри не нужно код запускать с помощью spawn; в-третьих, если второй аргумент команды addAction -- код, то его нужно оформлять не как строку, а как код, т. е. в фигурных скобках. Итого, твой код:

_gorka = _this select 0;
_actionId = _this select 2;

_gorka removeAction _actionId;

_gorka say3D "MySkripts\Gorka\about_mission_gorka_1.ogg";

sleep 13;

_actionId = _gorka addAction ["Покажи где это на карте", {gorka_karta_open1 = true;}];

sleep 13;

_gorka removeAction _actionId;

sleep 5;

_gorka addAction ["Что за задание?", "MySkripts\Gorka\firstmission.sqf"];

И, наконец, в четвёртых, хоть я и не пользовался этим модулем, но уверен, что у тебя просто неправильно настроен триггер.

Перейти к сообщению


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

#1 OFFLINE   Rabbit_V_HD

Rabbit_V_HD

    Рядовой

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

Отправлено 31 August 2017 - 17:29

Доброго времени суток, опишу ситуацию у меня стоит персонаж(бот) имя у него "gorka"  у него в ините прописано следующее: 

action1 = gorka addAction ["Что за задание?","MySkripts\Gorka\firstmission.sqf"];

 

а в самом документе "firstmission.sqf" следующее:
 

[] spawn {
gorka removeAction action1;
     gorka say3D "MySkripts\Gorka\about_mission_gorka_1.ogg";
sleep 13;
     action2 = gorka addAction ["Покажи где это на карте","gorka_karta_open1 = true"]; //gorka_karta_open1 - условие для активации триггера
sleep 13;
     gorka removeAction action2;
sleep 5;
     action1 = gorka addAction ["Что за задание?","MySkripts\Gorka\firstmission.sqf"];
};

Выходит примерно следующее, когда подходишь к Горке есть возможность действия "Что за задание?", если на него нажать первое действие удаляется и через 13 секунд появляется второе действие "Покажи где это на карте" если игрок выбирает 2 действие то открывается стратегическая карта, если игрок ничего не нажимает через 13 секунд 2-е действие удаляется и снова появляется действие 1.
Как вот это всё работает в одиночной игре в в мультиплеере никак, если подходит другой игрок он нажимает действие 1, музыка воспроизводиться а вот выбрать действие 2 он уже не может, вернее может но ничего не происходит(не открывается модуль стратегической карты), так как я понимаю переменная "gorka_karta_open1" активируется локально у него на компьютере а сам триггер и модуль находятся на сервере(что бы активировать триггер).
Кто знает как сделать так что бы когда другой игрок выбрал действие 2 и активировал переменную, данная переменная так же активировалась и на сервере. Спасибо за ответ!

 

  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 31 August 2017 - 20:28   Лучший Ответ

Rabbit_V_HD, во-первых, тебе здесь не нужны глобальные переменные; во-вторых, если второй аргумент команды addAction -- путь к файлу SQF, то он запускается в scheduled-среде, поэтому внутри не нужно код запускать с помощью spawn; в-третьих, если второй аргумент команды addAction -- код, то его нужно оформлять не как строку, а как код, т. е. в фигурных скобках. Итого, твой код:

_gorka = _this select 0;
_actionId = _this select 2;

_gorka removeAction _actionId;

_gorka say3D "MySkripts\Gorka\about_mission_gorka_1.ogg";

sleep 13;

_actionId = _gorka addAction ["Покажи где это на карте", {gorka_karta_open1 = true;}];

sleep 13;

_gorka removeAction _actionId;

sleep 5;

_gorka addAction ["Что за задание?", "MySkripts\Gorka\firstmission.sqf"];

И, наконец, в четвёртых, хоть я и не пользовался этим модулем, но уверен, что у тебя просто неправильно настроен триггер.


  • 0




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