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


Фотография

addaction


Лучший Ответ SteelRat , 19 February 2015 - 00:09

код инита (хотя я думаю Влад плохого не посоветует и стоит прислушаться)

 #include "test1.sqf"
 #include "test2.sqf"

код test1.sqf

_group = createGroup east;
     a = _group createUnit ["O_Soldier_AA_F",getPos b,[],0,"FORM"];

код test2.sqf

if (a distance b <= 50) then {
                actions = [5];
                actions set [5, player addAction [" Move In Driver B ", {a moveInDriver b;}]]};

транспорт создан в редакторе и обозван b

Результат: положительный

Без ЗАДЕРЖЕК


негодяй)

if (a distance b <= 50) then {
    player setVariable ["MoveInDriverB", player addAction [" Move In Driver B ", {a moveInDriver b;}]]};
	
	
// Удаление экшена	
if (condition) then {
	player removeAction (player getVariable "MoveInDriverB");
        player setVariable ["MoveInDriverB", nil]; // удаляем переменную
};
Перейти к сообщению


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

#21 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 February 2015 - 20:58


P.S. Задержка нужна в таких случаях всегда потому, что при старте if может быть выполнен раньше чем прогрузятся твои А и В. 

No Порядок:

1 Functions with recompile param set to 1 are recompiled

2 Functions with preInit param set to 1 are called (client + server)

3 Object Init Event Handlers are called

4 Object initialization fields are called

5 init.sqs is executed in singleplayer

6 init.sqf is executed in singleplayer

7 Persistent multiplayer functions are called (client only)

8 Modules are initialized

9 initServer.sqf is executed (server only)

10 initPlayerLocal.sqf is executed

11 initPlayerServer.sqf is executed (server only)

12 Functions with postInit param set to 1 are called (client + server)

12 "BIS_fnc_init" variable is set to true

13 init.sqs is executed in multiplayer

14 init.sqf is executed in multiplayer



а ты про скобки?

Да


Исходя из порядка выше, сначала всегда появятся все объекты и только потом выполниться init.sqf


  • 0

#22 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 February 2015 - 20:59

vlad333000, У меня с энглишем не очень близкие отношения, по этому проще скажи задержка как причина рассматривается?)))


  • 0

#23 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 February 2015 - 21:00

Djon, я хотел показать, то что объекты к моменту выполнения скрипта уже будут существовать :)


  • 0

#24 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

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

Отправлено 18 February 2015 - 21:01

У меня А это объект созданный через:

 

А = " А " createVehicle (position Пофигу);

 

Может if срабатывает раньше чем создается А?


  • 0

#25 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 February 2015 - 21:04

D_Donskoy,

D_Donskoy,
Еще раз повторю
 

Т к if один и без каких-либо задержек, то arma выполняет его сразу при старте миссии, а т к условие не выполняется, то идет дальше и натыкается на конец скрипта, где arma идет гулять себе дальше по просторам её скриптов от BIS


Если говорить на более понятном языке: условие проверяется всего 1 раз за всю игру! И время проверки исчисляется тысячными доля ми милисекунд
  • 0

#26 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 February 2015 - 21:10

Создал подобное условие и все прекрасно работает. Если у тебя объект создается в ините перед этим if то между ними однозначно задержка. У меня были сомнения по поводу старта миссии но Влад их развеял, а по поводу скриптового создания объектов и работы с ними тут однозначно у тебя должен быть запас минимум 1 секунда. 

создание
sleep 2;
проверка дистанции

vlad333000, Ну тут не понятно, что он пилит, возможно ему и нужна однократная проверка этого условия. И если объект создается через инит перед проверкой дистанции то вполне он может еще не появиться к момнту окончания проверки if. В этом я уже убеждался. А на счет самого старта миссии я тебя понял на отечественном языке))))) 


  • 1

#27 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

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

Отправлено 18 February 2015 - 21:15

Дак объект А и актион в разных файл)))

 

хотя первым выполняется создание объекта:

       #include "  \ Создание объекта.sqf"

       #include "  \ Создание Актиона связанного с объектом.sqf"


Сча sleep запилю и посмотрим.


  • 0

#28 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 February 2015 - 21:15

D_Donskoy, В таком виде они будут выполнены одновременно или с минимальнейшим разрывом. Не поленись и сделай задержку для теста 


  • 1

#29 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 February 2015 - 21:15

D_Donskoy, обязательно C юзать? execVM ну ни как не катит?
  • 1

#30 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

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

Отправлено 18 February 2015 - 21:17

D_Donskoy, обязательно C юзать? execVM ну ни как не катит?

Да катит конечно, просто я подумал так грамотнее будет!))))


  • 0

#31 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 February 2015 - 21:19

D_Donskoy, т. е. вы считаете грамотней использовать в одном месте 2 языка?

Сообщение отредактировал vlad333000: 18 February 2015 - 21:19

  • 1

#32 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

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

Отправлено 18 February 2015 - 21:21

D_Donskoy, т. е. вы считаете грамотней использовать в одном месте 2 языка?

... ммм, ок сча перепишу и сообщу.


  • 0

#33 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 February 2015 - 21:24

Не прибегая к вопросу о грамотности))) Я воссоздал эту ситуацию и работает она без проблем


  • 1

#34 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

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

Отправлено 18 February 2015 - 21:25

На одном языке они даже быстрее срабатывают))))))))))))))) 


Ну расскажите вы мне чем инклуд хуже?


  • 0

#35 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

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

Отправлено 18 February 2015 - 21:30

Мужики, только без матов, ошибка была в имени!!!!!!!!!!!!!!!!!!!!!! ;)


  • 0

#36 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 February 2015 - 21:31

код инита (хотя я думаю Влад плохого не посоветует и стоит прислушаться)

 #include "test1.sqf"
 #include "test2.sqf"

код test1.sqf

_group = createGroup east;
     a = _group createUnit ["O_Soldier_AA_F",getPos b,[],0,"FORM"];

код test2.sqf

if (a distance b <= 50) then {
                actions = [5];
                actions set [5, player addAction [" Move In Driver B ", {a moveInDriver b;}]]};

транспорт создан в редакторе и обозван b

Результат: положительный

Без ЗАДЕРЖЕК


негодяй)


  • 0

#37 OFFLINE   D_Donskoy

D_Donskoy

    Старшина

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

Отправлено 18 February 2015 - 21:34

При массовом создании как в моем случае, инклуд срабатывает гораздо хуже чем ексекВМ. ексекВМ создает кучу зааттаченых объектов сразу и без тормозов так сказать, в отличии от инклуд, который показывает задержку и тормоза.

Спасибо за поправку товарищи.


  • 0

#38 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 19 February 2015 - 00:09   Лучший Ответ

код инита (хотя я думаю Влад плохого не посоветует и стоит прислушаться)

 #include "test1.sqf"
 #include "test2.sqf"

код test1.sqf

_group = createGroup east;
     a = _group createUnit ["O_Soldier_AA_F",getPos b,[],0,"FORM"];

код test2.sqf

if (a distance b <= 50) then {
                actions = [5];
                actions set [5, player addAction [" Move In Driver B ", {a moveInDriver b;}]]};

транспорт создан в редакторе и обозван b

Результат: положительный

Без ЗАДЕРЖЕК


негодяй)

if (a distance b <= 50) then {
    player setVariable ["MoveInDriverB", player addAction [" Move In Driver B ", {a moveInDriver b;}]]};
	
	
// Удаление экшена	
if (condition) then {
	player removeAction (player getVariable "MoveInDriverB");
        player setVariable ["MoveInDriverB", nil]; // удаляем переменную
};

Сообщение отредактировал SteelRat: 19 February 2015 - 00:14

  • 1

#39 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 19 February 2015 - 07:55

SteelRat, Споры на 2-х страницах просто зарубил))))


  • 0

#40 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 19 February 2015 - 16:26

SteelRat, Споры на 2-х страницах просто зарубил))))

:)


  • 0




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