Jump to content
Alloder.pro: about Allods with love
Search In
  • More options...
Find results that contain...
Find results in...

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

Read more

UseItemOnItemAndTakeActions


Illium
 Share

Recommended Posts

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

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

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

Идеи?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

 

Link to comment
Share on other sites

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

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

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use