Раньше не приходилось юзать эту функцию.
Допустим, я делаю так: ставлю спеллбуку хоткей L, выделяю игроку подконтрольного юнита с ним и пишу:
call ForceUIKey("L")
Десинка при сетевой игре же не будет? В самой функции это предусмотрено?
Никакими GetLocalPlayer эти действия вокруг дополнительно не опоясываются.

Принятый ответ

Если просто написать ForceUIKey(), то тогда L нажмётся у всех игроков. Смотри ForceUIKeyBJ.
Да и чтобы выделить юнита только конкретному игроку, нужно также написать перед SelectUnit() условие с GetLocalPlayer().
if GetLocalPlayer() == owner then
    call ClearSelection()
    call SelectUnit(u, true)
    call ForceUIKey("L")
endif
А десинк можно проверить с другом по сетке или через эмуляцию.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
28
6 лет назад
Отредактирован PT153
4
Если просто написать ForceUIKey(), то тогда L нажмётся у всех игроков. Смотри ForceUIKeyBJ.
Да и чтобы выделить юнита только конкретному игроку, нужно также написать перед SelectUnit() условие с GetLocalPlayer().
if GetLocalPlayer() == owner then
    call ClearSelection()
    call SelectUnit(u, true)
    call ForceUIKey("L")
endif
А десинк можно проверить с другом по сетке или через эмуляцию.
Принятый ответ
0
21
6 лет назад
Отредактирован ClotPh
0
PT153, я его выделю только конкретному игроку через call SelectUnitForPlayerSingle
ок, спасибо, нажму через ForceUIKeyBJ
это уж не опасно никак?
короче, ятп, что нет
вот через ForceUIKey без локального игрока - еще могло бы

PS Честно раздражает, и сильно, когда пишут "можно проверить"
Можно проверить все, но зачем тогда вообще другие люди, если все делать самостоятельно
4
21
6 лет назад
Отредактирован Raised
4
Проверить обычно получается быстрее чем дождаться ответа.
2
28
6 лет назад
2
вот через ForceUIKey без локального игрока - еще могло бы
Почему? Ты же не создаёшь хендл или что-то в этом роде.
через call SelectUnitForPlayerSingle
Дело в том, что чтобы нажать L только у конкретного игрока тоже нужно условие с GetLocalPlayer(), а если использовать эту функцию, то тогда одно и тоже условие вычислится два раза. Зачем? Потому я и написал
if GetLocalPlayer() == owner then
    call ClearSelection()
    call SelectUnit(u, true)
    call ForceUIKey("L")
endif
SelectUnit() ДОБАВЛЯЕТ юнита в выделение игрока, если flag == true, потому написал ещё и ClearSelection(), что очищает выделение у игрока. Но необходимость этой функции зависит от контекста.
Raised:
Проверить обычно быстрее чем дождаться ответа.
Я так на много своих вопросов и ответил.
0
21
6 лет назад
0
Raised, в этом случае нет
у меня сто лет на том, что когда-то было варкрафтом, не настроен нетплей
так что ни о каких "с другом по сетке" и речи не идет
JNGP с эмуляцией вообще только не так давно в ЛС прислали, спасибо, и вот прям ща устанавливать его и разбираться ни времени, ни желания
и вообще если задается вопрос очевидно что в данном случае проще ответ от других получить
PT153, "одно и тоже условие вычислится два раза" - т. е. тут речь только о производительности? Тогда не сильно важно, это все равно прелоад при загрузке карты всего и вся, если там на долю секунды какую-то он будет дольше - это не критично. Мне важно отсутствие десинка.
Ятп, десинка не будет. Да, даже через ForceUIKey без локального игрока не получается... просто подумалось, что у других игроков могли бы быть выделены юниты с абилами с хоткеем L (хотя у меня такие если и есть, то очень мало), но все равно десинка-то не получается, выделения-то эти не локальные.
Всё, спасибо.
2
28
6 лет назад
Отредактирован PT153
2
Вот статья про GetLocalPlayer, если нужно.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.