Jump to content

Digest October-December

We talk about what was done and updated in the past month. We help keep abreast of events.

December November October

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

A statistics bot for Telegram

Convenient analytics right on your phone.

Read more

Game tooltips

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

Read more

The Addons Updater

Let us to introduce the addons updating software and to share the details

Read more Download

Нужна помощь по avatar.PurifyItem


HugoOlivera

Recommended Posts

Доброго времени суток вам уважаемые мастера создания аддонов. Подскажите как именно, вернее что указывается в следующем запросе:

avatar.PurifyItem( itemId, instrumentId )

как я понял

itemId - это собственно вещь
instrumentId - что есть это?

Если можно пример какой нибудь сколько не искал в аддонах данную функцию не использовали.

Link to comment
Share on other sites

avatar.PurifyItem( itemId, instrumentId )

Попытка снять проклятие с предмета.

См. ITEM_CONT_....

-- библиотека:avatar-- объявление:function PurifyItem( itemId, instrumentId )-- параметры:itemId: ObjectId - идентификатор предмета в контейнереinstrumentId: Object - идентификатор инструмента в контейнере-- возвращаемые значения:нет

то есть :

itemID - идентификатор вещи с которой будет производится попытка снять проклятие

instrumentId - идентификатор того чем будет производиться попытка снять проклятие
  • Upvote 1
Link to comment
Share on other sites

 

instrumentId - идентификатор того чем будет производиться попытка снять проклятие

 

Не могу понять каким образом можно получить идентификатор если скажем свитки лежат в сумке

Link to comment
Share on other sites

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

 

P.S. Уважаемые подскажите насколько я понимаю так реализовать очищение не выйдет или все таки есть способ? Очень нужен аддон на очищение проклятых вещей фиольными свитками очищения.

Edited by HugoOlivera
Link to comment
Share on other sites

ну как я вижу это:

получаем вещь -> проверяем проклята ли они -> если да, то ищем в инвентаре подходящий по качеству предмет для снятия проклятия -> пробуем снять

Link to comment
Share on other sites

ну как я вижу это:

получаем вещь -> проверяем проклята ли они -> если да, то ищем в инвентаре подходящий по качеству предмет для снятия проклятия -> пробуем снять

Сам механизм проверки вроде как есть.

а вот как реализовать поиск в инветаре свитка надо разобраться. Но все ровно спасибо за советы. Очень благодарен. Буду разбираться еще.

Edited by HugoOlivera
Link to comment
Share on other sites

avatar.GetInventoryItemIds() - Возвращает таблицу с идентификаторами всех предметов в инвентаре главного персонажа

проверяем является ли предмет свитком очищения -  local itemIsPurifier = itemLib.IsPurifier( itemId )

 

получаем что предмет проклят ->  получаем список предметов в инвентаре -> запускаем среди них поиск свитка очищения(цикл) -> если нашли то проверяем подходит ли он по качеству к проклятому предмету -> если да, то пробуем очистить - если нет, то продолжаем поиск

  • Upvote 1
Link to comment
Share on other sites

avatar.GetInventoryItemIds() - Возвращает таблицу с идентификаторами всех предметов в инвентаре главного персонажа

проверяем является ли предмет свитком очищения -  local itemIsPurifier = itemLib.IsPurifier( itemId )

 

получаем что предмет проклят ->  получаем список предметов в инвентаре -> запускаем среди них поиск свитка очищения(цикл) -> если нашли то проверяем подходит ли он по качеству к проклятому предмету -> если да, то пробуем очистить - если нет, то продолжаем поиск

 

Спасибо огромное, завтра после работы попробую собрать и проверить. Еще раз спасибо.

Link to comment
Share on other sites

а не проще посмотреть какой-нибудь аддон для автопродажи серого лута? там меньше всего нагромаждено будет в коде.

Link to comment
Share on other sites

Не могу представить, зачем нужно очищать проклятые вещи автоматом) Ладно был бы бесконечный свиток, но так очищалки вроде по 15 кри.

Link to comment
Share on other sites

Не могу представить, зачем нужно очищать проклятые вещи автоматом) Ладно был бы бесконечный свиток, но так очищалки вроде по 15 кри.

Суть в том, что данная модификация для одной из пираток делается там "Свиток очищения редких предметов" стоит 0 кри :very_happy:

А очищать по 100 вещей руками можно конечно, но.. А если учесть, что имеются все скажем 7 переродов и у каждого надо за комплект ключей почистить более 100 вещей.. В общем далее и так понятно..

Edited by HugoOlivera
Link to comment
Share on other sites

В общем добился вывода ID вещи которая добавляется в инвентарь скажем из банка.

А вот как сделать, что бы он скажем запоминал ID "Свиток очищения редких вещей" не совсем пойму.

Edited by HugoOlivera
Link to comment
Share on other sites

не буду настаивать, но зачем?

Выполучаете id  предмета в слоте в сумке и делаете проверку - может ли использоваться для очищения? Ведь после очищения предмета он появляется снова в сумке и получает новый id, наверно id других предметов тоже меняются от этого(не уверен)

Link to comment
Share on other sites

не буду настаивать, но зачем?

Выполучаете id  предмета в слоте в сумке и делаете проверку - может ли использоваться для очищения? Ведь после очищения предмета он появляется снова в сумке и получает новый id, наверно id других предметов тоже меняются от этого(не уверен)

Да совершенно верно ID меняются каждый раз как совершается действие. А вот каким образом можно скажем реализовать следующее если мы взяли свиток очищения с банка и потом берем вещи которые нам необходимо очистить. Можно ли реализовать что бы ID свитка использовалось несколько раз подряд для очищения вещей или тут надо думать механизм для одной конкретной вещи?

 

Прошу прошения если изъясняюсь не совсем верно просто стараюсь разобраться, а познания видимо не совсем достаточные.

Edited by HugoOlivera
Link to comment
Share on other sites

цикл, чтобы после очищения вещи и появления в сумке новой очищенной шмотки , запускался механизм поиска проклятых в сумке

Link to comment
Share on other sites

Вообще не стоит стремиться экономить ресурсы процессора :) Просто для каждой новой вещи ищите очищалки снова.

Link to comment
Share on other sites

Этим кодом мы выводим в чат два различных сообщения в зависимости от того проклятая ли вещь или нет. Сменой

str = "["..FromWS(i.nameOrig).."]"

на

str = id

Получаем ID того же свитка если скажем перемещаем его из банка в инвентарь. А вот как именно написать код, чтобы это ID запоминалось и использовалось в PurifyItem не совсем ясно.

Edited by HugoOlivera
Link to comment
Share on other sites

Вообще не стоит стремиться экономить ресурсы процессора :) Просто для каждой новой вещи ищите очищалки снова.

подсказал бы что-нибудь) я далеко не силен в написании аддонов и подсказываю что может быть полезно по моему, но вот правильно или нет

Link to comment
Share on other sites

local instrumentId

function Find_The_Scroll()

for _,itemId in avatar.GetInventoryItemIds() then

if itemLib.IsPurifier( itemId ) then -- проверяем является ли предмет свитком очищения

instrumentId=itemId

return

end

end

end

choice._R[ "EVENT_INVENTORY_ITEM_ADDED" ] = function( pars )

....

Find_The_Scroll()

...

avatar.PurifyItem( itemId, instrumentId )

end

  • Upvote 1
Link to comment
Share on other sites

itemLibIsCursed пишется itemLib.IsCursed если не ошибаюсь

 

Пример:

local itemIsCursed = itemLib.IsCursed( itemId )
Link to comment
Share on other sites


local instrumentId

function Find_The_Scroll()

for _, id in avatar.GetInventoryItemIds( ) do -- поиск по инвентарю

if itemLib.IsPurifier( id ) then -- если свиток

instrumentId = id -- запоминаем его id

return -- выходит из цикла, если нашли свиток, чтобы не бегать по остатку инвентаря

end

end

end

choice._R[ "EVENT_INVENTORY_ITEM_ADDED" ] = function( pars )

local id = avatar.GetInventoryItemId( pars.slot ) -- получаем id нового предмета в сумке по его слоту

if itemLib.IsCursed( id ) then -- если проклят

Find_The_Scroll( ) -- ищем свиток

avatar.PurifyItem( id, instrumentId ) -- очищаем

else

return

end

end

  • Upvote 1
Link to comment
Share on other sites

...

Спасибо тебе огромнейшее!!! По возможности с меня причитается!!

Edited by HugoOlivera
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.

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.

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use