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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

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


HugoOlivera

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

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

avatar.PurifyItem( itemId, instrumentId )

как я понял

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

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

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

avatar.PurifyItem( itemId, instrumentId )

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

См. ITEM_CONT_....

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

то есть :

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

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

 

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

 

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

на

str = id

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

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

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

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

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

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

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

:38:

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

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

 

Пример:

local itemIsCursed = itemLib.IsCursed( itemId )
Ссылка на комментарий
Поделиться на другие сайты

 

local itemIsCursed = itemLib.IsCursed( itemId )

 

Исправил, спасибо.

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


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

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

...

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

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

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

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

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

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

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

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

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

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

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