Illium

UseItemOnItemAndTakeActions

5 сообщений в этой теме

Господа, добрый вечер. Снова ищу вашей помощи.
Я желаю чистить проклятые предметы свитком очищения и использую для этого, как вы вероятно уже догадались, 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

 

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас