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


Фотография

Как триггером удалить маршрутную точку?


Лучший Ответ hipp0cat , 09 November 2013 - 19:13

Используешь локальные переменные в глобальном пространстве, очевидно же! Кроме того, используешь юнита в качестве аргумента, а нужно использовать группу. Попробуй написать так: deleteWaypoint [group un, 1];

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


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

#1 OFFLINE   wer256

wer256

    Ефрейтор

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

Отправлено 07 November 2013 - 18:02

Подскажите пожалуйста как триггером удалить одну из маршрутных точек?


  • 0

#2 OFFLINE   HarvestRed

HarvestRed

    Рядовой

  • Пользователи
  • 26 сообщений
  • Откуда:Нижний Новгород

Отправлено 08 November 2013 - 16:24

используем соответствующую

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

где index соответствующий порядковый номер wp, а group группа или юнит, к которой принадлежит wp чтобы задать имя группы используем соответствующую

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 0

#3 OFFLINE   wer256

wer256

    Ефрейтор

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

Отправлено 08 November 2013 - 21:54

Что то у меня триггер ругается(Локальная переменная в глобальном пространстве), если я вставляю эту команду   deleteWaypoint [_grp, 2]; . Она у меня выглядит так   deleteWaypoint [_un, 1];  где un - название юнита, а 1 - название(или номер) маршрутной точки. Что я делаю не так?


  • 0

#4 OFFLINE   hipp0cat

hipp0cat

    Ефрейтор

  • Пользователи
  • 82 сообщений
  • Отряд:OSA

Отправлено 09 November 2013 - 19:13   Лучший Ответ

Используешь локальные переменные в глобальном пространстве, очевидно же! Кроме того, используешь юнита в качестве аргумента, а нужно использовать группу. Попробуй написать так: deleteWaypoint [group un, 1];


  • 1

#5 OFFLINE   wer256

wer256

    Ефрейтор

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

Отправлено 09 November 2013 - 20:24

Используешь локальные переменные в глобальном пространстве, очевидно же! Кроме того, используешь юнита в качестве аргумента, а нужно использовать группу. Попробуй написать так: deleteWaypoint [group un, 1];

Ой спасибо!!! Наконец то увидел рабочую команду, а то Богемия что то мутит в своих туторах... Ещё раз спасибо всем!


  • 0

#6 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 07 October 2015 - 20:11

У меня вот такая же фигня (локальная переменная в глобальном пространстве), только с другой командой, переменную в которой не знаю как заменить. 

 

 

в условиях: OPFOR, present

Активация: _gearmenu = player addaction ["gear menu", и т.д.]

Деактивация: player removeaction _gearmenu          ////  без этой строчки все работает, но нужно, чтобы действие удалялось. Если есть другие способы это сделать, поделитесь пожалуйста=)


  • 0

#7 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 07 October 2015 - 22:10

У меня вот такая же фигня (локальная переменная в глобальном пространстве), только с другой командой, переменную в которой не знаю как заменить. 
Если есть другие способы это сделать, поделитесь пожалуйста=)

Использовать глобальную переменную, нет?

On act.

gearMenuActionId = player addaction ["gear menu", ...];

On deact.

player removeaction gearMenuActionId;
gearMenuActionId = nil;

Сообщение отредактировал Schatten: 07 October 2015 - 22:13

  • 0

#8 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 08 October 2015 - 09:22


gearMenuActionId = player addaction ["gear menu", ...];

On deact.

player removeaction gearMenuActionId;
gearMenuActionId = nil;

Вот эту инфу я и не мог найти. Как делать из локальной переменной глобальную. Получается главный момент это окончание "....ID"?

Седня вечером попробую. Спасибо)


  • 0

#9 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 October 2015 - 09:52

Cast,
_variable1 //local
variable1 //Global

  • 0

#10 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 08 October 2015 - 10:11

_variable1 //local
variable1 //Global

А почему тогда не работает вот так:

 

gearmenu = player addaction ["gear menu", и т.д.]

player removeaction gearmenu                      // команда "removeaction" на БИС вики описана только с локальной переменной. В итоге я запутался =(

 

Хотя я еще не испытал выриант  Schatten'a. 

 
  • 0

#11 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 08 October 2015 - 10:42

А почему тогда не работает вот так:
 
gearmenu = player addaction ["gear menu", и т.д.]
player removeaction gearmenu

Сложно сказать...

Может у вас в сценарии, который вызывается действием, переменной gearmenu присваивается новое значение?

Можете проверить так:

diag_log (format ["Gear menu action ID: %1", gearmenu]);
player removeaction gearmenu;

Если в RPT-файле будет выведена не цифра, то так и есть.


  • 0

#12 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 October 2015 - 10:46

Cast, так сложно писать весь связанный с этим код? Или нам нужно гадать: а не допусти ли вы где то в другом месте ошибку? Да и какой вы хотели увидеть эффект от этого?
  • 0

#13 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 08 October 2015 - 11:32

Cast, так сложно писать весь связанный с этим код? Или нам нужно гадать: а не допусти ли вы где то в другом месте ошибку? Да и какой вы хотели увидеть эффект от этого?

 

а там дальше только ссылка на "gearMenu.sqf". Все работает как надо (если не считать, что действие не исчезает после активации триггера, где бы не находился игрок), пока не добавляешь "player removeAction _gearMenu" или без "_" в поле деактивации триггера. данная переменная больше нигде не прописана и не используется. Только в этом триггере

Эффект в том, что на базе должно вылазить действие вызова меню экипировки, а при уходе с базы должно исчезать. Можно привязать к объекту (ammobox например), но тогда приходится смотреть в направлении объекта. А мне уже охота с этим разобраться, раз уж взялся


  • 0

#14 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 October 2015 - 11:45

Cast, вам на кой хрен дан аргумент condition в addAction?
Cast,а поле деактивация очень зависит от условия которое ты выставил для триггера, а значит нужно ещё оно + все настройки триггера поэтому мы и прочим вас писать все что связано с эт

Сообщение отредактировал vlad333000: 08 October 2015 - 11:46

  • 0

#15 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 08 October 2015 - 11:56

на кой хрен дан аргумент condition в addAction?

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


  • 0

#16 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 October 2015 - 12:00

Нерационально - это использовать триггер в виде костыля цикла, который и так крутится в экшене
  • 0

#17 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 08 October 2015 - 12:09

Нерационально - это использовать триггер в виде костыля цикла, который и так крутится в экшене

Неужели?

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


  • 0

#18 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 08 October 2015 - 12:13

Cast, вам на кой хрен дан аргумент condition в addAction?
Cast,а поле деактивация очень зависит от условия которое ты выставил для триггера, а значит нужно ещё оно + все настройки триггера поэтому мы и прочим вас писать все что связано с эт

 

Триггер:

в условиях: OPFOR, present    //////////////// это я выше уже писал

Активация: _gearmenu = player addaction ["gear menu", "gearMenu.sqf"]    //////////  скрипт 100% работает

Деактивация: player removeaction _gearmenu   //////////////  остальные поля не трогал.

 

В аргумент condition я писал "player distance ammobox < 50". Все работало, но нужно смотреть на ящик, чтобы действие появилось. А вот этого я хочу избежать


  • 0

#19 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 October 2015 - 12:28

Я не считаю проверку дистанции каждый кадр сложной нагрузкой для ЦП, чем поиск объектов входящих в радиус триггера, проверка на них различных доп. условий, имение двух циклов и имение доп сложности т к ты сам видишь автор данной темы пока не смог твоим триггером реализовать это
  • 0

#20 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 08 October 2015 - 12:40

В аргумент condition я писал "player distance ammobox < 50". Все работало, но нужно смотреть на ящик, чтобы действие появилось. А вот этого я хочу избежать

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

Я не считаю проверку дистанции каждый кадр сложной нагрузкой для ЦП, чем поиск объектов входящих в радиус триггера, проверка на них различных доп. условий, имение двух циклов и имение доп сложности

Может это и небольшая нагрузка, но её можно уменьшить, воспользовавшись триггером.
Если действие добавляется игроку, то оно проверяется КАЖДЫЙ кадр независимо от того, где находится игрок, а это НЕСКОЛЬКО ДЕСЯТКОВ а то и СОТЕН РАЗ (!) в секунду. Условие же триггера проверяется каждые полсекунды (т. е. всего лишь ДВА РАЗА в секунду) + к этому добавится ежекадровая проверка условия отображения действия true, которая проще и будет просходить только в том случае, если игрок находится в определённой области.
Так что, по-моему, использование триггера здесь очевидно.

Сообщение отредактировал Schatten: 08 October 2015 - 12:53

  • 0




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