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

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

Лучший Ответ hipp0cat , 09 November 2013 - 19:13
Используешь локальные переменные в глобальном пространстве, очевидно же! Кроме того, используешь юнита в качестве аргумента, а нужно использовать группу. Попробуй написать так: deleteWaypoint [group un, 1];
Перейти к сообщению
#1
OFFLINE
Отправлено 07 November 2013 - 18:02
#2
OFFLINE
Отправлено 08 November 2013 - 16:24
используем соответствующую
где index соответствующий порядковый номер wp, а group группа или юнит, к которой принадлежит wp чтобы задать имя группы используем соответствующую .
#3
OFFLINE
Отправлено 08 November 2013 - 21:54
Что то у меня триггер ругается(Локальная переменная в глобальном пространстве), если я вставляю эту команду deleteWaypoint [_grp, 2]; . Она у меня выглядит так deleteWaypoint [_un, 1]; где un - название юнита, а 1 - название(или номер) маршрутной точки. Что я делаю не так?
#4
OFFLINE
Отправлено 09 November 2013 - 19:13 Лучший Ответ
Используешь локальные переменные в глобальном пространстве, очевидно же! Кроме того, используешь юнита в качестве аргумента, а нужно использовать группу. Попробуй написать так: deleteWaypoint [group un, 1];
#5
OFFLINE
Отправлено 09 November 2013 - 20:24
Используешь локальные переменные в глобальном пространстве, очевидно же! Кроме того, используешь юнита в качестве аргумента, а нужно использовать группу. Попробуй написать так: deleteWaypoint [group un, 1];
Ой спасибо!!! Наконец то увидел рабочую команду, а то Богемия что то мутит в своих туторах... Ещё раз спасибо всем!
#6
OFFLINE
Отправлено 07 October 2015 - 20:11
У меня вот такая же фигня (локальная переменная в глобальном пространстве), только с другой командой, переменную в которой не знаю как заменить.
в условиях: OPFOR, present
Активация: _gearmenu = player addaction ["gear menu", и т.д.]
Деактивация: player removeaction _gearmenu //// без этой строчки все работает, но нужно, чтобы действие удалялось. Если есть другие способы это сделать, поделитесь пожалуйста=)
#7
OFFLINE
Отправлено 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
#8
OFFLINE
Отправлено 08 October 2015 - 09:22
gearMenuActionId = player addaction ["gear menu", ...];On deact.
player removeaction gearMenuActionId; gearMenuActionId = nil;
Вот эту инфу я и не мог найти. Как делать из локальной переменной глобальную. Получается главный момент это окончание "....ID"?
Седня вечером попробую. Спасибо)
#10
OFFLINE
Отправлено 08 October 2015 - 10:11
_variable1 //local variable1 //Global
А почему тогда не работает вот так:
gearmenu = player addaction ["gear menu", и т.д.]
player removeaction gearmenu // команда "removeaction" на БИС вики описана только с локальной переменной. В итоге я запутался =(
Хотя я еще не испытал выриант Schatten'a.
#11
OFFLINE
Отправлено 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-файле будет выведена не цифра, то так и есть.
#13
OFFLINE
Отправлено 08 October 2015 - 11:32
Cast, так сложно писать весь связанный с этим код? Или нам нужно гадать: а не допусти ли вы где то в другом месте ошибку? Да и какой вы хотели увидеть эффект от этого?
а там дальше только ссылка на "gearMenu.sqf". Все работает как надо (если не считать, что действие не исчезает после активации триггера, где бы не находился игрок), пока не добавляешь "player removeAction _gearMenu" или без "_" в поле деактивации триггера. данная переменная больше нигде не прописана и не используется. Только в этом триггере
Эффект в том, что на базе должно вылазить действие вызова меню экипировки, а при уходе с базы должно исчезать. Можно привязать к объекту (ammobox например), но тогда приходится смотреть в направлении объекта. А мне уже охота с этим разобраться, раз уж взялся
#14
OFFLINE
Отправлено 08 October 2015 - 11:45
Cast,а поле деактивация очень зависит от условия которое ты выставил для триггера, а значит нужно ещё оно + все настройки триггера поэтому мы и прочим вас писать все что связано с эт
Сообщение отредактировал vlad333000: 08 October 2015 - 11:46
#15
OFFLINE
Отправлено 08 October 2015 - 11:56
на кой хрен дан аргумент condition в addAction?
Использование этого аргумента в данном случае весьма нерационально, так что пусть чел разбирается с триггером.
#16
OFFLINE
Отправлено 08 October 2015 - 12:00
#17
OFFLINE
Отправлено 08 October 2015 - 12:09
Нерационально - это использовать триггер в виде костыля цикла, который и так крутится в экшене
Неужели?
Т. е. по вашему рациональнее чтобы каждый кадр проверялось условие отображения действия, которое добавлено игроку и которое может "просаживать" FPS, чем использовать триггер, работа которого в меньшей степени сказывается на FPS, который добавляет/удаляет действие игроку с условием отображения true?! Ну... Я даже не знаю что написать...
#18
OFFLINE
Отправлено 08 October 2015 - 12:13
Триггер:
в условиях: OPFOR, present //////////////// это я выше уже писал
Активация: _gearmenu = player addaction ["gear menu", "gearMenu.sqf"] ////////// скрипт 100% работает
Деактивация: player removeaction _gearmenu ////////////// остальные поля не трогал.
В аргумент condition я писал "player distance ammobox < 50". Все работало, но нужно смотреть на ящик, чтобы действие появилось. А вот этого я хочу избежать
#19
OFFLINE
Отправлено 08 October 2015 - 12:28
#20
OFFLINE
Отправлено 08 October 2015 - 12:40
Если вы добавляли действие с этим условием ящику, то да, нужно смотреть на него, чтобы оно появилось. Если же вы добавляли это действие игроку, то смотреть на ящик необязательно.В аргумент condition я писал "player distance ammobox < 50". Все работало, но нужно смотреть на ящик, чтобы действие появилось. А вот этого я хочу избежать
Может это и небольшая нагрузка, но её можно уменьшить, воспользовавшись триггером.Я не считаю проверку дистанции каждый кадр сложной нагрузкой для ЦП, чем поиск объектов входящих в радиус триггера, проверка на них различных доп. условий, имение двух циклов и имение доп сложности
Если действие добавляется игроку, то оно проверяется КАЖДЫЙ кадр независимо от того, где находится игрок, а это НЕСКОЛЬКО ДЕСЯТКОВ а то и СОТЕН РАЗ (!) в секунду. Условие же триггера проверяется каждые полсекунды (т. е. всего лишь ДВА РАЗА в секунду) + к этому добавится ежекадровая проверка условия отображения действия true, которая проще и будет просходить только в том случае, если игрок находится в определённой области.
Так что, по-моему, использование триггера здесь очевидно.
Сообщение отредактировал Schatten: 08 October 2015 - 12:53