Враг на миникарте
Нужно что бы определенный юнит не отображался на миникарте.
P.S. Я делал поиск по сайту, но поиск не дал очевидных ответов.

Лучший ответ:
Araders, он включает альтернативную иконку для мини-карты у конкретного юнита.
Обычно эта иконка имеет вид "домика" или "круга", и включается для порталов, особых магазинов, или чего-то необычного на карте. Смысл отображения такой же как у золотых рудников и магазинов.
Суть данной манипуляции в том, что альтернативная иконка выставляется на пустое значение, а потом она включается у указанного юнита. В итоге - юнит отображается на карте как пустая картинка (т.е. ничего).
Обращение к локальному игроку позволяет сделать это изменение только для части игроков, т.е. кто-то будет видеть на мини-карте этого юнита как обычно, а кто-то - по новому.


Views: 139

XGM Bot #1 - 3 months ago 0
Голосов: +0 / -0
Похожие вопросы:

» ответ
с погоней всё легко(если ты конечно не хочешь чтобы аи прошёл Тест Тьюринга)
если юнит врага видим то запоминаем его координаты и идём к нему
если юнит врага исчез из области видимости (ушёл в туман/инвиз) то идём к последнему местонахождению врага(наши запомненные координаты)
стоит совместить это с проверкой на смерть цели погони(чтобы не бежать к трупу) и с проверкой на угрозу (чтобы не залезть под фонтан случайно)
добавить кода и специй по вкусу
» ответ
~8gabriel8:
Это пинг, но ты указал, что он через Alt, чего прежде не делал, потому и удивился. Ну вот всех врагов на карте выбираешь и пинг им ставишь)

Daro #2 - 3 months ago 0
Голосов: +0 / -0
Это на подобии пассивки мортры из доты, раньше все время думал что там просто уклонение и смена прозрачности, но оказалось действительно героя скрывают с миникарты. Вот нужное действие
if IsPlayerEnemy(GetOwningPlayer(u),GetLocalPlayer())==true  then
          call UnitSetUsesAltIcon(u,true)
        else
          call UnitSetUsesAltIcon(u,false)
   endif
Extremator #3 - 3 months ago 0
Голосов: +0 / -0
Что мешает сразу сделать так?
call UnitSetUsesAltIcon(u,IsPlayerEnemy(GetOwningPlayer(u),GetLocalPlayer()))
dondonchakka #4 - 3 months ago (изм. ) -1
Голосов: +0 / -1
Extremator:
Что мешает сразу сделать так?
call UnitSetUsesAltIcon(u,IsPlayerEnemy(GetOwningPlayer(u),GetLocalPlayer()))
а что мешает еще поставить переменные не запутаешься в скобках и лишний раз не выводит ошибки и лишний раз не сохраняешься
local player p = GetOwningPlayer(u)
local player glp = GetLocalPlayer()
call UnitSetUsesAltIcon(u,IsPlayerEnemy(p,glp))
set u = null
set p = null
set glp = null
Araders #5 - 3 months ago 0
Голосов: +0 / -0
Я конечно благодарю всех за помощь, но хоть бы кто объяснил как работает ваш способ?
МрачныйВорон #6 - 3 months ago (изм. ) 0
Голосов: +0 / -0
Araders, функция прячет иконку юнита на минимапе. Но тут предлагают скрыть это с помощью GetLocalPlayer() локально. Что не так работает?
dondonchakka, в скобках не возможно запутаться, если у вас есть соответствующий инструмент. В JNGPесть TESH или в любом текстовом редакторе, работающим с кодом должна быть такая штука. Когда выбираешь скобку, и она подсвечивает цветом, закрыто ли скобка или нет.
Extremator #7 - 3 months ago (изм. ) 1
Голосов: +1 / -0

Araders, он включает альтернативную иконку для мини-карты у конкретного юнита.
Обычно эта иконка имеет вид "домика" или "круга", и включается для порталов, особых магазинов, или чего-то необычного на карте. Смысл отображения такой же как у золотых рудников и магазинов.
Суть данной манипуляции в том, что альтернативная иконка выставляется на пустое значение, а потом она включается у указанного юнита. В итоге - юнит отображается на карте как пустая картинка (т.е. ничего).
Обращение к локальному игроку позволяет сделать это изменение только для части игроков, т.е. кто-то будет видеть на мини-карте этого юнита как обычно, а кто-то - по новому.
Araders #8 - 3 months ago 0
Голосов: +0 / -0
Ничего из написанного выше не работает. Ошибку выдает.
Extremator #9 - 3 months ago 0
Голосов: +0 / -0
Araders:
Ничего из написанного выше не работает. Ошибку выдает.
Ну ты видимо используешь u вместо того что нужно.
Araders #10 - 3 months ago 0
Голосов: +0 / -0
Extremator, А что собственно нужно вписать вместо "u"?
PT153 #11 - 3 months ago (изм. ) 0
Голосов: +0 / -0
Araders, своего юнита, разумеется. Вот готовая функция.
function HideUnitFromMinimapForEnemies takes unit u, boolean hide returns nothing
    call UnitSetUsesAltIcon(u, hide and IsPlayerEnemy(GetOwningPlayer(u), GetLocalPlayer()))
endfunction

А если нужно скрыть на миникарте всех юнитов такого типа, то есть специальное поле в РО для этого.
Araders #12 - 3 months ago 0
Голосов: +0 / -0
PT153, А как именно вписывать своего юнита? Нужно название или айди?
Extremator #13 - 3 months ago 0
Голосов: +0 / -0
Araders, нужна ссылка с типом "юнит".
Это может быть переменная, либо функция (в числе нативная).
GetTriggerUnit() например