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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

как получить инфу про ДО шмотки одетые на перса


testerov

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

как узнать что у человека за ДО шмот (например при осмотре)

unit.GetEquipmentItemIds( unitId, slotType ) возвращает только основной эквип (+ всякое ненужное про руны и пр)

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

Описание функции слабо прочитать?

Quote:
slotType: number (enum ITEM_CONT_...) - тип контейнера

..

ITEM_CONT_...

Тип контейнера с предметами, которые можно использовать (операции с рунами/разборка/очищение и др.).

Перечисление определено в коде, значения:

ITEM_CONT_DEPOSITE - банковская ячейка

ITEM_CONT_EQUIPMENT - одежда и руны

ITEM_CONT_EQUIPMENT_RITUAL - одежда ("драконий облик")

ITEM_CONT_INVENTORY - сумка

ITEM_CONT_INVENTORY_OVERFLOW - переполненная сумка

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

К сожалению в этой функции работают только ITEM_CONT_EQUIPMENT (0) и ITEM_CONT_EQUIPMENT_RITUAL (1).

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

Этого недостаточно чтобы "узнать что у человека за ДО шмот"?

Узнать какой хлам лежит в своей сумке, в своем банке можно другими функциями

ЗЫ. В документации дофигища устаревших функций-ивентов-перечислений.

А зечем ее чистить?

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

Я хочу узнавать что у других в сумке, в банке, плюс unit.GetEquipmentItemSlotUnlockedQualities( avatar.GetTarget(), DRESS_SLOT_EARRING2 )

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

Запуск инспекции при смене цели

Code:

function OnEventAvatarTargetChanged( pars )

--- новую цель берем

local aimId = unit.GetTarget(Me)

if aimId then

W("Stats_pan"):Show( true )

else

W("Stats_pan"):Show( false )

return

end

if pars.reason == CHANGE_TARGET_DEAD_TARGET then

return

end

local uSts, uInfo

uInfo = EN [aimId]  or FR [aimId] 

if not uInfo then return end

if uInfo.isPlayer and getPS("InspectStats") ~= OFF then

if aimId ~= Me  then

else

onEvent.EVENT_INSPECT_STARTED( { id = Me } )

end

uSts = tryToInspect( FromWS(object.GetName(aimId)), aimId )

end

myTargKillsShow( uInfo )

myTargStatsShow( uSts )

end

Запуск инспекции при наведении мышки на панельку

Code:
OnReactionElemOver = function( pars )

local key = pars.widget:GetName()

---LogToChat(" left_click "..key)

local plateType = string.sub(key,1,2)

if getPS(plateType,"ToolTip") == OFF then return end

--- тут обязательно такой лист должен быть! if not List [plateType]  then return end

local num = tonumber(string.sub(key,3,4))

if not num then return end

local unitInfo = List [plateType] [num] .Unit

if not unitInfo then LogToChat("unitId empty, please reload addon",nil,true); return end

if not unitInfo.isPlayer == true then return end

local unitId = unitInfo.id

if not unitId then return end

if pars.active then

if getVersionAO() > 2 and getPS("InspectStats") ~= OFF then

-- тут версия выше АТОЛЛ - может инспектировать любого игрока

tryToInspect( unitInfo.name, unitId )

end

toolTip.prepare( pars.widget, unitInfo, nil, { innCount = getPS(plateType,"TTStatsCount") } )

toolTip.Show( true )

else

toolTip.Show( false )

end

end

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

Code:

---------------------------------------------------------------------------------
local function  calcStats(Sts)
---- для каждого слота одежки
local cnt, stsAll, rstAll, armAll, stsSum, rstSum, armSum, runeAtt, runeDef = 0, 0, 0, 0, 0, 0, 0, 0, 0
---local myDress = unit.GetEquipmentItemIds( Me, ITEM_CONT_EQUIPMENT )
local mySts, mySts1, val, itemId, myInfo
---exObj("Sts", Sts)
---LogInfo("calcStats")
local stsInn = {}
for slot, v in Sts do
if type(slot) == "number" then
cnt = cnt + 1
itemId = unit.GetEquipmentItemId( Me, slot, ITEM_CONT_EQUIPMENT )
if v.rune then
--- тут руна 28-29-30 слоты - атака, защита
---myInfo = avatar.GetItemInfo( itemId )
---exObj("myRune:"..slot, myInfo.runeInfo)
---LogToChat(slot..":"..v.rune.runeLevel)
if slot <31 then
--- это атакующие
runeAtt = runeAtt + v.rune.runeLevel
else
runeDef = runeDef + v.rune.runeLevel
end
else
--- тут обычная шмотка
mySts = itemId and avatar.GetItemBonus( itemId )
--innateStats.8.sysName="ENUM_IS_Intuition"
--innateStats.1.base=10
--innateStats.1.effective=10
--misc.armorBonus=95
--misc.spellPower
--resistances.1.sysName="ENUM_EDIVINE"
--resistances.0.base=15
--resistances.0.effective=15
--- по всем характеристикам одежки
mySts1 = mySts and mySts.innateStats
val = 0
for i, vv in v.innateStats do
stsSum = stsSum + vv.base
val = val + vv.base - (mySts1 and mySts1  .base or 0)
local indx = i + 1 --- 0й индекс не сортируется
if not stsInn [indx]  then stsInn [indx]  = { name = string.sub (vv.sysName, 9), val = 0 } end
stsInn [indx] .val = stsInn [indx] .val + vv.base
end
stsAll = stsAll + val
val = 0
mySts1 = mySts and mySts.resistances
for i, vv in v.resistances do
rstSum = rstSum + vv.base
val = val + vv.base - (mySts1 and mySts1  .base or 0)
end
rstAll = rstAll + val

---LogInfo(slot," targ:",v.misc.armor,"|",v.misc.armorBonus," my:",mySts.misc.armor,"|",mySts.misc.armorBonus)
armSum = armSum + v.misc.armor
armAll = armAll + v.misc.armor - (mySts and mySts.misc.armor or 0)
end
else
--- тут поля timer
end
end
if cnt > 0 then
stsAll = math.floor(stsAll/cnt)
rstAll = math.floor(rstAll/cnt)
armAll = math.floor(armAll/cnt)
table.sort( stsInn, function( a, B) return a.val > b.val end )
end
---if runeAtt > 0 then runeAtt = math.round(runeAtt * 3.333 ) end
---if runeDef > 0 then runeAtt = math.round(runeAtt * 3.333 ) end
return stsAll, rstAll, armAll, stsSum, rstSum, armSum, runeAtt, runeDef, stsInn
end

local tryToInspectON
----"EVENT_INSPECT_STARTED"] = function(pars)
--- тут надо пока в цели юнит содрать с него всю инфо по одетости и запонмить ее
local function Inspect(unitId, dressed)
local dress = dressed or {}

-- [[ -- пашет! - драконий облик:
for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT_RITUAL  ) do
--- ITEM_CONT_INVENTORY - не пашет
LogInfo( slot, ":", id)
end
--] ]

local info
for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT) do
info =  avatar.GetItemInfo( id )
---exObj("info",info)
if info and info.runeInfo then
--- это руна - она без бонусов
---exObj("bonus",avatar.GetItemBonus(id))
dress [slot]  = { rune = info.runeInfo }
---elseif info and FromWS(info.name) then
-- [[elseif info.sysClassName="Shield" then
dress[slot]  = avatar.GetItemBonus(id)
dress [slot]  = --]]
else
---exObj("info",info)
dress [slot]  = avatar.GetItemBonus(id)
end
end

if tryToInspectON then
--- если это аддон инициировал то закончим
avatar.EndInspect()
tryToInspectON = nil
end
---avatar.UnselectTarget()
---exObj("dress", dress)
return dress

end

onEvent.EVENT_INSPECT_STARTED = function( pars )
local id = pars.id or avatar.GetInspectInfo().playerId
if id and object.IsExist(id) then
local name = FromWS( object.GetName(id) )
local uSts = { info = Inspect(id, unitStats [id] ) }
unitStats [ name ]  = uSts
uSts.timer = getPS("InspectStatsTimer") or 3
uSts.sts, uSts.rst, uSts.arm, uSts.stsSum, uSts.rstSum, uSts.armSum, uSts.runeAtt, uSts.runeDef, uSts.innate = calcStats(unitStats [name] .info)
--- инспекция тех кто далеко - своих согрупников!
if not (EN [id]  or FR [id] ) then onSpawned( { unitId = id } ) end
---LogToChat( name .. " - "..uSts.sts ..":".. uSts.rst.. " ="..uSts.arm )
myTargStatsShow( uSts )
myTargKillsShow( EN [id]  or FR [id]  )
--exObj("EN",EN [id]  or FR [id] )
--exObj("inf",getAllInfo( id ) )

if toolTip.unitInfo and id == toolTip.unitInfo.id and toolTip.wt:IsVisible() then
toolTip.prepare()
else
local fade = getPS("myTargTTFade")
if fade and fade>0 then 
toolTip.prepare( getWTMyTargStats(), EN [id]  or FR [id] , getPS("myTargTTShift") or { dx =50, dy = 30 }, { innCount = 0 } )
toolTip.Show( true )
toolTip.Fade( fade*1000, false )
end
end

for pType, elems in List do
for i, elem in elems do
if elem.Unit and elem.Unit.id == id then
elemStatsShow(elem, pType) --- в случае если поменялись - обновим
end
end
end

end

end

function tryToInspect(name, id)
local uSts = unitStats [name] 
if uSts then return uSts end --- не каждый раз смотреть а раз в минуту примерно
tryToInspectON = true
if getVersionAO() <= 2 then avatar.StartInspect()
elseif object.IsExist(id) then avatar.StartInspect(id) -- в версии с Атолла можно всех персонажей смотреть без взятия в цель
else
tryToInspectON = nil
end
end
Ссылка на комментарий
Поделиться на другие сайты

getVersionAO() - смотри в библиотеке в AddonsTools - там много есть полезных функций

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

о!! а тут у меня закомментирован ДО! так как он тогда был выключен

а сейчас то он всегда включен. так что для его включения пишем так:

Code:

local function getDress01(itemId)

local info = avatar.GetItemInfo( itemId )

local dressInfo

if info and info.runeInfo then

--- это руна - она без бонусов

dressInfo = { rune = info.runeInfo }

else

dressInfo = avatar.GetItemBonus(itemId)

end

return dressInfo

end

local tryToInspectON

--- тут надо пока в цели юнит содрать с него всю инфо по одетости и запонмить ее

local function Inspect(unitId, dressed)

local dress = dressed or {}

local info

-- драконий облик:

for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT_RITUAL  ) do

dress [slot]  = getDress01( id )

end

for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT) do

dress [slot]  = getDress01( id )

end

if tryToInspectON then

--- если это аддон инициировал то закончим

avatar.EndInspect()

tryToInspectON = nil

end

return dress

end

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

По-моему ответ айси не более полезен чем никоновский Х)))

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

Да ты чо??

Человек захотел узнать "как получить инфу про ДО шмотки одетые на перса" (типа пробовал.... "Ну нипанимаю я!"(С))

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

Я бы так не смог

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

да еще тут надо слоты новые - так как они затирают данные - тоесть массив сделать так:

Code:
local dress = {  [ITEM_CONT_EQUIPMENT_RITUAL]  = {},  [ITEM_CONT_EQUIPMENT] ={} }

for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT_RITUAL  ) do

dress  [ITEM_CONT_EQUIPMENT_RITUAL] [slot]   = getDress01( id )

end

for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT) do

dress  [ITEM_CONT_EQUIPMENT] [slot]   = getDress01( id )

end

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

сухой остаток:

Code:

local function getDress01(itemId)

local info = avatar.GetItemInfo( itemId )

local dressInfo

if info and info.runeInfo then

--- это руна - она без бонусов

dressInfo = { rune = info.runeInfo }

else

dressInfo = avatar.GetItemBonus(itemId)

end

return dressInfo

end

........................

local dress = {   [ITEM_CONT_EQUIPMENT_RITUAL]   = {},   [ITEM_CONT_EQUIPMENT]  ={} }

for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT_RITUAL  ) do

dress   [ITEM_CONT_EQUIPMENT_RITUAL]   [slot]    = getDress01( id )

end

for slot, id in unit.GetEquipmentItemIds(unitId,ITEM_CONT_EQUIPMENT) do

dress   [ITEM_CONT_EQUIPMENT]   [slot]    = getDress01( id )

end

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

крайне полезно, учитывая, что исходник таргет менеджера не доступен. Спасибо)

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

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

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

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

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

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

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

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

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

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