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

Дайджесты за январь-февраль

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

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

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

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

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

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

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

Подробнее

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

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

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

UseItemOnItemAndTakeActions


Illium

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

Господа, добрый вечер. Снова ищу вашей помощи.
Я желаю чистить проклятые предметы свитком очищения и использую для этого, как вы вероятно уже догадались, avatar.UseItemOnItemAndTakeActions. Функция вызывается во время обхода таблицы предметов в инвентаре игрока в случае, если IsCursed=true.
Однако моя проблема заключается в том, что avatar (или мой цикл) не ожидает завершения почистки предмета.
И я не могу придумать, как заставить цикл подождать завершения почистки предмета. Варианты, которые я рассматривал, не подошли:
1. Подождать кулдауна свитка очищения и продолжить - у свитка очищения нет кулдауна.

2. Подождать ивента почистки предмета - нет такого ивента в api.

3. Завершение почистки логируется сервером в чат сообщением вида "Снято проклятие с предмета ...". Соответственно подождать EVENT_CHAT_MESSAGE_WITH_OBJECTS - но CHAT_MESSAGE в api - это прям message от игроков и только от игроков.

Идеи?

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

По пункту 2. Нашёл EVENT_GAME_ITEM_CURSED_CHANGED. Попробовал подписаться на ивент, почистить, прервать цикл, подождать event с нужным itemId, отписаться от ивента и запустить цикл почистки заново. Тем не менее, я всё равно получаю сообщение "Ещё не готово" в игре. Всё ещё нуждаюсь в совете.

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

чистил в цикле без проблем

local manu

function FindManu()
wtTestBtn:Show(false)
	local tab2=avatar.GetInventoryItemIds()
	for _,itemId in pairs( tab2 ) do
		local info=itemLib.GetItemInfo( itemId )
		if info and userMods.FromWString(info.name)=="Манускрипт очищения"  then
			manu=itemId
			wtTestBtn:SetBackgroundTexture(info.icon)
			wtTestBtn:Show(true)
			return
		end
	end
end

function TestBtn()
	local tab2=avatar.GetInventoryItemIds()
	for _,itemId in pairs( tab2 ) do
		if itemLib.IsCursed( itemId ) then
			avatar.UseItemOnItemAndTakeActions( manu, itemId, 1 )
		end
	end
end

 

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

Благодарю, обязательно посмотрю.
Тем не менее, у меня при использовании в таком варианте чистится только первый итем, и появляется куча сообщений "Ещё не готово". Причём именно это я сделал в первую очередь - как самое очевидное)
 

function TestBtn()
    local tab2=avatar.GetInventoryItemIds()
    for _,itemId in pairs( tab2 ) do
        if itemLib.IsCursed( itemId ) then
            avatar.UseItemOnItemAndTakeActions( manu, itemId, 1 )
        end
    end
end

 

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

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

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

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

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

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

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

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

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

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