По возможности отпишись как решил проблему. Могут придти люди из поисковиков и так и не узнают ответа.Нашел ответ сам.
Решение:Собственно вопрос, как убрать из списка выделенных юнитов одного?
Типа вот я имею героя и юнита, я хочу убрать из выделения только героя. Как это сделать? Ваще не представляю.
PlayerResource:SetOverrideSelectionEntity( Айди героя который будет выделять юнита, сам юнит для выделения)
Разве таким способом можно выделить несколько юнитов? Или тебе и не надо несколько?Решение:
Я просто взял и начал выделять того кто мне нужен вот этой командой:
Код:PlayerResource:SetOverrideSelectionEntity( Айди героя который будет выделять юнита, сам юнит для выделения)
Нужно было только одного, что у меня и получилось.Разве таким способом можно выделить несколько юнитов? Или тебе и не надо несколько?
Возьму на заметку.SetOverrideSelectionEntity не позволяет выделять других юнитов. Есть идея как сделать через клиент(js), суть ее в том, чтобы отправлять ивент клиенту, который соберет инфу и отправит ее серверу, а потом сервак еще раз отправит ивент клиенту для непосредственно самого выделения. Но такой способ не подойдет, если твой кейс про core механику т.е. если время обработки критично. При грубых расчетах скорость = 3 * пинг + время на обработку в самом коде. Если тебя устроит такой вариант, то вот суть идеи:
1) Отправляем клиенту ивент Send_ServerToPlayer.
2) Клиент принимает ивент (любой рабочий .js файл из панорамы, у которого есть код для приема ивента).
Он собирает инфу о выделенных юнитах (аналогичного метода для луа не нашел) Players.GetSelectedEntities( integer iPlayerID )
и отправляет ее серваку.
3) Сервак принимает ее и анализирует кого нужно выгнать из селекшина(entityIndex в луа и js одинаковые, дополнительная магия по конвертации не нужна). После анализа отправляет другой ивент клиенту со списком ид юнитов, которые должны быть выделены.
4) У клиента нет метода ан\деселект, зато есть обратный - GameUI.SelectUnit( integer nEntityIndex, boolean bAddToGroup )
первого из списка выделяешь с флагом false, остальных с тру, чтобы они добавились в группу к первому.
Подробнее про ивенты.
P.S. в идеале создать отдельный js файл для таких утильных кейсов. Так же для этого нужна будет xml заглушка в которой будет какой-нибудь элемент(Panel) с hittest=false и размерами(width hight) отличными от нуля. Если в хмл ничего не рисуется, то он не будет работать.
SetOverrideSelectionEntity не позволяет выделять других юнитов. Есть идея как сделать через клиент(js), суть ее в том, чтобы отправлять ивент клиенту, который соберет инфу и отправит ее серверу, а потом сервак еще раз отправит ивент клиенту для непосредственно самого выделения. Но такой способ не подойдет, если твой кейс про core механику т.е. если время обработки критично. При грубых расчетах скорость = 3 * пинг + время на обработку в самом коде. Если тебя устроит такой вариант, то вот суть идеи:
1) Отправляем клиенту ивент Send_ServerToPlayer.
2) Клиент принимает ивент (любой рабочий .js файл из панорамы, у которого есть код для приема ивента).
Он собирает инфу о выделенных юнитах (аналогичного метода для луа не нашел) Players.GetSelectedEntities( integer iPlayerID )
и отправляет ее серваку.
3) Сервак принимает ее и анализирует кого нужно выгнать из селекшина(entityIndex в луа и js одинаковые, дополнительная магия по конвертации не нужна). После анализа отправляет другой ивент клиенту со списком ид юнитов, которые должны быть выделены.
4) У клиента нет метода ан\деселект, зато есть обратный - GameUI.SelectUnit( integer nEntityIndex, boolean bAddToGroup )
первого из списка выделяешь с флагом false, остальных с тру, чтобы они добавились в группу к первому.
Подробнее про ивенты.
P.S. в идеале создать отдельный js файл для таких утильных кейсов. Так же для этого нужна будет xml заглушка в которой будет какой-нибудь элемент(Panel) с hittest=false и размерами(width hight) отличными от нуля. Если в хмл ничего не рисуется, то он не будет работать.
А можно ли теоретически написать свою селекцию через ордер фильтр?
Типо "выделенных" заносить в массив и давать им визуальный эффект селекции, а в фильре как-то отдавать приказ всем юнитам из массива?
Ну это если у тебя заранее известен список юнитов, а в вопросе было про "редактирование" группы уже выделенных юнитов.2 пункт считаю бессмысленным, т.к. Можно просто отправить сервером к клиенту эвент с нужными для выделения ентиндексами