Перейти к содержанию

Дайджест за январь-март

Обновления гайдов и аддонов

Март Февраль Январь

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

Как можно распознать контекстное действие. Его тип


Metamorfius

Рекомендуемые сообщения

Есть малая функция
 

function OnContextActions()
	
	local test = ""
	
	-- https://alloder.pro/md/LuaApi/FunctionAvatarGetContextActionInfo.html
	-- пример использования
	-- параметры
	-- withMount: boolean or nil - true добавлять контекстные действия маунта; по-умолчанию true
	local contextActions = avatar.GetContextActions(false)
	--[[
	if #contextActions < 1 then
		return
	end
	]]
	for i = 1, #contextActions do
		local actionInfo = avatar.GetContextActionInfo( contextActions[ i ] )
		if actionInfo then
			-- local name = actionInfo.name
			test = test .. i .. "," .. userMods.FromWString( actionInfo.name )
			
			if i < #contextActions then
				test = test .. "|"
			end
		end
	end
	
	common.LogInfo("", test )
end


Практически у всех НПС пишет всегда "Поговорить", но тип его - Телепорт, Повторный квест, Уважаемый гоблин и т.д. не могу определить.
Изначально пытался ковырять actionInfo.image, но знания ограничили.
Далее пытался по ид, объекту, определить уникальность нпса. Без вариантов.
ENUM_CONTEXT_ACTION_TYPE_NPC_TALK - тоже подобию "Поговорить"

Вопрос: как определить контекстное действие "Поговорить" как телепорт и т.д. ?

Изменено пользователем Metamorfius
Ссылка на комментарий
Поделиться на другие сайты

Спс. В итоге выходит, что типаж в API не гарантируется, а вот по имени НПСа - придется отталкиваться.
https://alloder.pro/md/LuaApi/FunctionObjectGetName.html

Ссылка на комментарий
Поделиться на другие сайты

Нет какого-то конкретного типа. У вас один юнит (или даже устройство) может быть и телепортатором, и банком, и давать квест и что угодно еще. Проверить это можно через object.GetInteractorInfo, а сам objectId получить как написано выше

Ссылка на комментарий
Поделиться на другие сайты

unit.IsTrainer( id )

object.IsVendor( id )

и тд

object.GetInteractorInfo( objectId )

 

Смотря что вам нужно. Есть ид через контекст правда с метаморфами иногда глючит
а через ид уже смотрите.

 

из KadIteraction (хз открыт он или нет)
        local info = object.GetInteractorInfo( unitId )
         if info.hasInteraction then
            if info.isReputationVendor then
            
                UnitSpawned_01( {unitId=unitId} )
            
            end
        end

 

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования