Susanin Posted April 25, 2015 Share Posted April 25, 2015 Как можно получить активного маунта юнита без открывания окна осмотра персонажа? Категория Inspect позволяет нам проинспектировать юнита и используя функцию avatar.GetInspectInfo() получить: 1.Ранг умения подсматривать чужие предметы; 2.Маунт юнита. Однако, тут есть различия. Если использовать следующий код: avatar.StartInspect( unitId ) local inspectInfo = avatar.GetInspectInfo() avatar.EndInspect() то, окошко инспектирования игрока в интерфейсе не открывается, ранг пристального взгляда в inspectInfo есть (поле rank заполнено), а вот маунта нет (поле mountId не заполнено). Получить маунта удалось только стартовав инспекцию и по событию EVENT_SECOND_TIMER получать inspectInfo и только после этого завершать инспектирование. То есть функция avatar.GetInspectInfo() возвращает mountId только спустя достаточное длительное время после начала инспектирования. При этом в интерфейсе на некоторое время открывается окно осмотра персонажа, что совсем не желательно. Пробовал использовать библиотеку LibGS от hal.dll, прописав там в методе GetFullInfo заполнение поля result.mountId = info.mountId. Однако маунт все равно nil. Может кто подсказать решение? Quote Link to comment Share on other sites More sharing options...
logg Posted April 25, 2015 Share Posted April 25, 2015 думаю это баг, надо передать разработчикам. либо как-то связано с тем, садился ли осматриваемый персонаж на маунта или нет. Quote Link to comment Share on other sites More sharing options...
Susanin Posted April 25, 2015 Author Share Posted April 25, 2015 Персонаж точно находится на маунте в момент осмотра Quote Link to comment Share on other sites More sharing options...
logg Posted April 25, 2015 Share Posted April 25, 2015 попробуй по EVENT_INSPECT_MOUNT_CHANGED вызвать avatar.GetInspectInfo() 1 Quote Link to comment Share on other sites More sharing options...
Nikon Posted April 25, 2015 Share Posted April 25, 2015 (edited) avatar.StartInspect( unitId ) local inspectInfo = avatar.GetInspectInfo() avatar.EndInspect() ЛоЛ. Ты это все в 1 функции зафигарил? Может кто подсказать решение? 1. Научиться читать 2. EVENT_INSPECT_STARTED 3. Быть готовым к конфликту с другими инспектирующими аддонами === Susanin, logg Разработчики аддонов еще раз ЛОЛ Edited April 25, 2015 by Nikon Quote Link to comment Share on other sites More sharing options...
logg Posted April 25, 2015 Share Posted April 25, 2015 Пробовал использовать библиотеку LibGS от hal.dll, прописав там в методе GetFullInfo заполнение поля result.mountId = info.mountId. Однако маунт все равно nil. Именно это заставило меня не писать про то, как работает инспект по эвентам, поскольку в либе это учитано. Если по EVENT_INSPECT_FINISHED нету mountId это баг. Nikon Пользователи Лол Quote Link to comment Share on other sites More sharing options...
Susanin Posted April 25, 2015 Author Share Posted April 25, 2015 ЛоЛ. Ты это все в 1 функции зафигарил? 1. Научиться читать 2. EVENT_INSPECT_STARTED 3. Быть готовым к конфликту с другими инспектирующими аддонами === Susanin, logg Разработчики аддонов еще раз ЛОЛ 1.Читать умею 2.Пробовал и не работает 3.Все аддоны кроме моего были отключены 4.Прежде чем обозвать кого-то дураком, попробуй это сделать сам Quote Link to comment Share on other sites More sharing options...
Susanin Posted April 25, 2015 Author Share Posted April 25, 2015 Пробовал использовать библиотеку LibGS от hal.dll, прописав там в методе GetFullInfo заполнение поля result.mountId = info.mountId. Однако маунт все равно nil. Именно это заставило меня не писать про то, как работает инспект по эвентам, поскольку в либе это учитано. Если по EVENT_INSPECT_FINISHED нету mountId это баг. Nikon Пользователи Лол Если напишите вкратце, как работает инспект по эвентам, буду признателен. Изучал его работу по LibGS, но мне не хватает, так сказать, сухой вытяжки основных принципов и моментов на русском языке для общего понимания Quote Link to comment Share on other sites More sharing options...
Susanin Posted April 25, 2015 Author Share Posted April 25, 2015 Спасибо, Илья! По EVENT_INSPECT_MOUNT_CHANGED avatar.GetInspectInfo() выдает mountId Делаю так: Стартую инспекцию и по EVENT_INSPECT_MOUNT_CHANGED получаю inspectInfo с маунтом и заканчиваю инспекцию. Окно осмотра персонажа не появляется. На глаз клиент где-то на 0,1 секунды замирает. Можно как-то эту задержку свести к 0? Quote Link to comment Share on other sites More sharing options...
logg Posted April 25, 2015 Share Posted April 25, 2015 Работает примерно так: вызываешь avatar.StartInspect( unitId ) приходит эвент EVENT_INSPECT_STARTED проверяешь твой ли это аддон запустил инспектирование и выполняешь какие-либо действия, по завершению вызываешь avatar.EndInspect() и приходит эвент EVENT_INSPECT_FINISHED 1 Quote Link to comment Share on other sites More sharing options...
Susanin Posted April 26, 2015 Author Share Posted April 26, 2015 Да, примерно так всё и понимал. Для определения маунта, получается, такая связка не подходит. Ни при EVENT_INSPECT_STARTED, ни при последующем EVENT_INSPECT_FINISHED маунт не определен. Только по событию EVENT_INSPECT_MOUNT_CHANGE. Еще раз, спасибо, за подсказку! Quote Link to comment Share on other sites More sharing options...
Recommended Posts